diff options
-rw-r--r-- | firmware/libcommon/include/card_emu.h | 2 | ||||
-rw-r--r-- | firmware/libcommon/include/simtrace_usb.h | 2 | ||||
-rw-r--r-- | firmware/libcommon/source/card_emu.c | 9 | ||||
-rw-r--r-- | firmware/libcommon/source/mode_cardemu.c | 2 |
4 files changed, 9 insertions, 6 deletions
diff --git a/firmware/libcommon/include/card_emu.h b/firmware/libcommon/include/card_emu.h index e545593..aaa07c5 100644 --- a/firmware/libcommon/include/card_emu.h +++ b/firmware/libcommon/include/card_emu.h @@ -56,7 +56,7 @@ int card_emu_set_atr(struct card_handle *ch, const uint8_t *atr, uint8_t len); struct llist_head *card_emu_get_uart_tx_queue(struct card_handle *ch); void card_emu_have_new_uart_tx(struct card_handle *ch); -void card_emu_report_status(struct card_handle *ch); +void card_emu_report_status(struct card_handle *ch, bool report_on_irq); #define ENABLE_TX 0x01 #define ENABLE_RX 0x02 diff --git a/firmware/libcommon/include/simtrace_usb.h b/firmware/libcommon/include/simtrace_usb.h index c0da9c5..be2da9f 100644 --- a/firmware/libcommon/include/simtrace_usb.h +++ b/firmware/libcommon/include/simtrace_usb.h @@ -64,4 +64,4 @@ #define SIMTRACE_CARDEM_USB_EP_USIM2_INT 3 /*! Maximum number of endpoints */ -#define BOARD_USB_NUMENDPOINTS 6 +#define BOARD_USB_NUMENDPOINTS 7 /* 0 (control) + 2 (interfaces) * 3 (endpoints) */ diff --git a/firmware/libcommon/source/card_emu.c b/firmware/libcommon/source/card_emu.c index ced6b14..352284f 100644 --- a/firmware/libcommon/source/card_emu.c +++ b/firmware/libcommon/source/card_emu.c @@ -1051,13 +1051,16 @@ void card_emu_have_new_uart_tx(struct card_handle *ch) } } -void card_emu_report_status(struct card_handle *ch) +void card_emu_report_status(struct card_handle *ch, bool report_on_irq) { struct msgb *msg; struct cardemu_usb_msg_status *sts; + uint8_t ep = ch->in_ep; - msg = usb_buf_alloc_st(ch->in_ep, SIMTRACE_MSGC_CARDEM, - SIMTRACE_MSGT_BD_CEMU_STATUS); + if (report_on_irq) + ep = ch->irq_ep; + + msg = usb_buf_alloc_st(ep, SIMTRACE_MSGC_CARDEM, SIMTRACE_MSGT_BD_CEMU_STATUS); if (!msg) return; diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c index 1d074cb..fbc042f 100644 --- a/firmware/libcommon/source/mode_cardemu.c +++ b/firmware/libcommon/source/mode_cardemu.c @@ -538,7 +538,7 @@ static void dispatch_usb_command_cardem(struct msgb *msg, struct cardem_inst *ci usb_buf_free(msg); break; case SIMTRACE_MSGT_BD_CEMU_STATUS: - card_emu_report_status(ci->ch); + card_emu_report_status(ci->ch, false); usb_buf_free(msg); break; case SIMTRACE_MSGT_BD_CEMU_STATS: |