aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2021-06-03 12:59:31 +0200
committerHarald Welte <laforge@osmocom.org>2021-06-03 14:37:45 +0200
commitf69a60f2555fa0cd1b57759b43627e67dfd43773 (patch)
tree2bf063832cde8b94242b720c73003fb6f5b85268
parentdd5794c975ffbf58d05f8ddf6c463df567e4bf1e (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.c29
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: