mirror of https://gerrit.osmocom.org/simtrace2
simtrace2-cardem-pcsc: Move all logging into libosmocore
* drop log statements that are already in libosmo-simtrace2 * don't printf directly, but go via LOGCI * make LOGCI use libosmocore logging * configure libosmocore logging in a 'convenient' way Change-Id: I6fa0da966e6d8e723c187404c17e90cfb3f3dd9f
This commit is contained in:
parent
ab5b2ffe1d
commit
71ac54d7bf
|
@ -1,7 +1,7 @@
|
||||||
/* simtrace2-cardem-pcsc - main program for the host PC to provide a remote SIM
|
/* simtrace2-cardem-pcsc - main program for the host PC to provide a remote SIM
|
||||||
* using the SIMtrace 2 firmware in card emulation mode
|
* using the SIMtrace 2 firmware in card emulation mode
|
||||||
*
|
*
|
||||||
* (C) 2016-2021 by Harald Welte <hwelte@hmw-consulting.de>
|
* (C) 2016-2022 by Harald Welte <hwelte@hmw-consulting.de>
|
||||||
* (C) 2018, sysmocom -s.f.m.c. GmbH, Author: Kevin Redon <kredon@sysmocom.de>
|
* (C) 2018, sysmocom -s.f.m.c. GmbH, Author: Kevin Redon <kredon@sysmocom.de>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
#include <osmocom/sim/class_tables.h>
|
#include <osmocom/sim/class_tables.h>
|
||||||
#include <osmocom/sim/sim.h>
|
#include <osmocom/sim/sim.h>
|
||||||
|
|
||||||
#define LOGCI(ci, lvl, fmt, args ...) printf(fmt, ## args)
|
#define LOGCI(ci, lvl, fmt, args ...) LOGP(DLGLOBAL, lvl, fmt, ## args)
|
||||||
|
|
||||||
static void atr_update_csum(uint8_t *atr, unsigned int atr_len)
|
static void atr_update_csum(uint8_t *atr, unsigned int atr_len)
|
||||||
{
|
{
|
||||||
|
@ -93,6 +93,17 @@ static void update_status_flags(struct osmo_st2_cardem_inst *ci, uint32_t flags)
|
||||||
last_status_flags = flags;
|
last_status_flags = flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *cemu_data_flags2str(uint32_t flags)
|
||||||
|
{
|
||||||
|
static char out[64];
|
||||||
|
snprintf(out, sizeof(out), "%s%s%s%s",
|
||||||
|
flags & CEMU_DATA_F_TPDU_HDR ? "HDR " : "",
|
||||||
|
flags & CEMU_DATA_F_FINAL ? "FINAL " : "",
|
||||||
|
flags & CEMU_DATA_F_PB_AND_TX ? "PB_AND_TX " : "",
|
||||||
|
flags & CEMU_DATA_F_PB_AND_RX ? "PB_AND_RX" : "");
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* Incoming Messages
|
* Incoming Messages
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
@ -104,7 +115,7 @@ static int process_do_status(struct osmo_st2_cardem_inst *ci, uint8_t *buf, int
|
||||||
char fbuf[80];
|
char fbuf[80];
|
||||||
|
|
||||||
cemu_status_flags2str(fbuf, sizeof(fbuf), status->flags);
|
cemu_status_flags2str(fbuf, sizeof(fbuf), status->flags);
|
||||||
printf("=> STATUS: flags=0x%x, fi=%u, di=%u, wi=%u wtime=%u (%s)\n",
|
LOGCI(ci, LOGL_NOTICE, "=> STATUS: flags=0x%x, fi=%u, di=%u, wi=%u wtime=%u (%s)\n",
|
||||||
status->flags, status->fi, status->di, status->wi,
|
status->flags, status->fi, status->di, status->wi,
|
||||||
status->waiting_time, fbuf);
|
status->waiting_time, fbuf);
|
||||||
|
|
||||||
|
@ -119,7 +130,7 @@ static int process_do_pts(struct osmo_st2_cardem_inst *ci, uint8_t *buf, int len
|
||||||
struct cardemu_usb_msg_pts_info *pts;
|
struct cardemu_usb_msg_pts_info *pts;
|
||||||
pts = (struct cardemu_usb_msg_pts_info *) buf;
|
pts = (struct cardemu_usb_msg_pts_info *) buf;
|
||||||
|
|
||||||
printf("=> PTS req: %s\n", osmo_hexdump(pts->req, sizeof(pts->req)));
|
LOGCI(ci, LOGL_NOTICE, "=> PTS req: %s\n", osmo_hexdump(pts->req, pts->pts_len));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -133,8 +144,8 @@ static int process_do_rx_da(struct osmo_st2_cardem_inst *ci, uint8_t *buf, int l
|
||||||
|
|
||||||
data = (struct cardemu_usb_msg_rx_data *) buf;
|
data = (struct cardemu_usb_msg_rx_data *) buf;
|
||||||
|
|
||||||
printf("=> DATA: flags=%x, %s: ", data->flags,
|
LOGCI(ci, LOGL_INFO, "=> DATA: flags=0x%02x (%s), %s\n ", data->flags,
|
||||||
osmo_hexdump(data->data, data->data_len));
|
cemu_data_flags2str(data->flags), osmo_hexdump(data->data, data->data_len));
|
||||||
|
|
||||||
rc = osmo_apdu_segment_in(&ac, data->data, data->data_len,
|
rc = osmo_apdu_segment_in(&ac, data->data, data->data_len,
|
||||||
data->flags & CEMU_DATA_F_TPDU_HDR);
|
data->flags & CEMU_DATA_F_TPDU_HDR);
|
||||||
|
@ -163,7 +174,6 @@ static int process_do_rx_da(struct osmo_st2_cardem_inst *ci, uint8_t *buf, int l
|
||||||
msgb_apdu_sw(tmsg) = msgb_get_u16(tmsg);
|
msgb_apdu_sw(tmsg) = msgb_get_u16(tmsg);
|
||||||
ac.sw[0] = msgb_apdu_sw(tmsg) >> 8;
|
ac.sw[0] = msgb_apdu_sw(tmsg) >> 8;
|
||||||
ac.sw[1] = msgb_apdu_sw(tmsg) & 0xff;
|
ac.sw[1] = msgb_apdu_sw(tmsg) & 0xff;
|
||||||
printf("SW=0x%04x, len_rx=%d\n", msgb_apdu_sw(tmsg), msgb_l3len(tmsg));
|
|
||||||
if (msgb_l3len(tmsg))
|
if (msgb_l3len(tmsg))
|
||||||
osmo_st2_cardem_request_pb_and_tx(ci, ac.hdr.ins, tmsg->l3h, msgb_l3len(tmsg));
|
osmo_st2_cardem_request_pb_and_tx(ci, ac.hdr.ins, tmsg->l3h, msgb_l3len(tmsg));
|
||||||
osmo_st2_cardem_request_sw_tx(ci, ac.sw);
|
osmo_st2_cardem_request_sw_tx(ci, ac.sw);
|
||||||
|
@ -179,8 +189,6 @@ static int process_usb_msg(struct osmo_st2_cardem_inst *ci, uint8_t *buf, int le
|
||||||
struct simtrace_msg_hdr *sh = (struct simtrace_msg_hdr *)buf;
|
struct simtrace_msg_hdr *sh = (struct simtrace_msg_hdr *)buf;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
printf("-> %s\n", osmo_hexdump(buf, len));
|
|
||||||
|
|
||||||
buf += sizeof(*sh);
|
buf += sizeof(*sh);
|
||||||
|
|
||||||
switch (sh->msg_type) {
|
switch (sh->msg_type) {
|
||||||
|
@ -213,7 +221,7 @@ static int process_irq_status(struct osmo_st2_cardem_inst *ci, const uint8_t *bu
|
||||||
char fbuf[80];
|
char fbuf[80];
|
||||||
|
|
||||||
cemu_status_flags2str(fbuf, sizeof(fbuf), status->flags);
|
cemu_status_flags2str(fbuf, sizeof(fbuf), status->flags);
|
||||||
LOGCI(ci, LOGL_INFO, "=> IRQ STATUS: flags=0x%x, fi=%u, di=%u, wi=%u wtime=%u (%s)\n",
|
LOGCI(ci, LOGL_NOTICE, "=> IRQ STATUS: flags=0x%x, fi=%u, di=%u, wi=%u wtime=%u (%s)\n",
|
||||||
status->flags, status->fi, status->di, status->wi,
|
status->flags, status->fi, status->di, status->wi,
|
||||||
status->waiting_time, fbuf);
|
status->waiting_time, fbuf);
|
||||||
|
|
||||||
|
@ -227,8 +235,6 @@ static int process_usb_msg_irq(struct osmo_st2_cardem_inst *ci, const uint8_t *b
|
||||||
struct simtrace_msg_hdr *sh = (struct simtrace_msg_hdr *)buf;
|
struct simtrace_msg_hdr *sh = (struct simtrace_msg_hdr *)buf;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
LOGCI(ci, LOGL_INFO, "SIMtrace IRQ %s\n", osmo_hexdump(buf, len));
|
|
||||||
|
|
||||||
buf += sizeof(*sh);
|
buf += sizeof(*sh);
|
||||||
|
|
||||||
switch (sh->msg_type) {
|
switch (sh->msg_type) {
|
||||||
|
@ -351,7 +357,7 @@ static void allocate_and_submit_irq(struct osmo_st2_cardem_inst *ci)
|
||||||
static void print_welcome(void)
|
static void print_welcome(void)
|
||||||
{
|
{
|
||||||
printf("simtrace2-cardem-pcsc - Using PC/SC reader as SIM\n"
|
printf("simtrace2-cardem-pcsc - Using PC/SC reader as SIM\n"
|
||||||
"(C) 2010-2020, Harald Welte <laforge@gnumonks.org>\n"
|
"(C) 2010-2022, Harald Welte <laforge@gnumonks.org>\n"
|
||||||
"(C) 2018, sysmocom -s.f.m.c. GmbH, Author: Kevin Redon <kredon@sysmocom.de>\n\n");
|
"(C) 2018, sysmocom -s.f.m.c. GmbH, Author: Kevin Redon <kredon@sysmocom.de>\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue