diff options
author | Harald Welte <laforge@osmocom.org> | 2019-12-16 10:23:32 +0100 |
---|---|---|
committer | Harald Welte <laforge@osmocom.org> | 2019-12-16 14:51:49 +0100 |
commit | 140f007c3e2a15f8bdea79b08fbe50a8673d4ebd (patch) | |
tree | 8ec59c69af1797630b179312fd82162cf4e3be16 | |
parent | 12c9b7ba02436435a7729d4c1042d91b9ac1b073 (diff) |
cardem: Make card_emu_report_status() optionally use IRQ endpoint
This just introduces the capability to report on IRQ, but we don't
actually use it yet.
Change-Id: I83db4463b7010ba243a8adbda3ac9393975b4814
-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: |