diff options
author | Harald Welte <laforge@osmocom.org> | 2021-06-03 12:59:31 +0200 |
---|---|---|
committer | Harald Welte <laforge@osmocom.org> | 2021-06-03 14:37:45 +0200 |
commit | f69a60f2555fa0cd1b57759b43627e67dfd43773 (patch) | |
tree | 2bf063832cde8b94242b720c73003fb6f5b85268 | |
parent | dd5794c975ffbf58d05f8ddf6c463df567e4bf1e (diff) |
firmware: cardem: re-factor CARDINSERT command processing
move it out of the general command dispatch switch statement
and into a separate function.
Change-Id: Ia40c3d9999be68248da0dcc69d298450ca6e4869
-rw-r--r-- | firmware/libcommon/source/mode_cardemu.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c index 8a59e16..3863767 100644 --- a/firmware/libcommon/source/mode_cardemu.c +++ b/firmware/libcommon/source/mode_cardemu.c @@ -652,6 +652,22 @@ static void dispatch_usb_command_generic(struct msgb *msg, struct cardem_inst *c usb_buf_free(msg); } +static void process_card_insert(struct cardem_inst *ci, bool card_insert) +{ + TRACE_INFO("%u: set card_insert to %s\r\n", ci->num, card_insert ? "INSERTED" : "REMOVED"); + + if (!ci->pin_insert.pio) { + TRACE_INFO("%u: skipping unsupported card_insert to %s\r\n", + ci->num, card_insert ? "INSERTED" : "REMOVED"); + return; + } + + if (card_insert) + PIO_Set(&ci->pin_insert); + else + PIO_Clear(&ci->pin_insert); +} + /* handle a single USB command as received from the USB host */ static void dispatch_usb_command_cardem(struct msgb *msg, struct cardem_inst *ci) { @@ -675,18 +691,7 @@ static void dispatch_usb_command_cardem(struct msgb *msg, struct cardem_inst *ci break; case SIMTRACE_MSGT_DT_CEMU_CARDINSERT: cardins = (struct cardemu_usb_msg_cardinsert *) msg->l2h; - if (!ci->pin_insert.pio) { - TRACE_INFO("%u: skipping unsupported card_insert to %s\r\n", - ci->num, cardins->card_insert ? "INSERTED" : "REMOVED"); - usb_buf_free(msg); - break; - } - TRACE_INFO("%u: set card_insert to %s\r\n", ci->num, - cardins->card_insert ? "INSERTED" : "REMOVED"); - if (cardins->card_insert) - PIO_Set(&ci->pin_insert); - else - PIO_Clear(&ci->pin_insert); + process_card_insert(ci, cardins->card_insert); usb_buf_free(msg); break; case SIMTRACE_MSGT_BD_CEMU_STATUS: |