laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/simtrace2/+/30178 )

Change subject: firmware/sniffer: refactor setting TPDU state
......................................................................

firmware/sniffer: refactor setting TPDU state

In low-level debugging it might be useful to trace the TPDU state
changes, so let's factor-out the state-setting as a function that
can be amended with printf() or GPIO toggles or the like.

No logical change is introduced here, just assignments replaced with
calling a function that does the assignment. compiler should inline
that.

Change-Id: Ie61321404f3686234c61c68a07d6cb9f5830ddc1
---
M firmware/libcommon/source/sniffer.c
1 file changed, 21 insertions(+), 12 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Hoernchen: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/firmware/libcommon/source/sniffer.c 
b/firmware/libcommon/source/sniffer.c
index 13ef506..1647e17 100644
--- a/firmware/libcommon/source/sniffer.c
+++ b/firmware/libcommon/source/sniffer.c
@@ -255,6 +255,15 @@
        usb_buf_submit(usb_msg);
 }

+/*! Update the TPDU state
+ *  @param[in] tpdu_state_new new TPDU state to update to
+ */
+static void change_tpdu_state(enum tpdu_sniff_state tpdu_state_new)
+{
+       //TRACE_ERROR("TPDU state %u->%u\n\r", tpdu_state, tpdu_state_new);
+       tpdu_state = tpdu_state_new;
+}
+
 /*! Update the ISO 7816-3 state
  *  @param[in] iso_state_new new ISO 7816-3 state to update to
  */
@@ -286,7 +295,7 @@
                pps_state = PPS_S_WAIT_PPSS;
                break;
        case ISO7816_S_WAIT_TPDU:
-               tpdu_state = TPDU_S_CLA;
+               change_tpdu_state(TPDU_S_CLA);
                tpdu_packet_i = 0;
                break;
        default:
@@ -714,7 +723,7 @@
                }
                tpdu_packet_i = 0;
                tpdu_packet[tpdu_packet_i++] = byte;
-               tpdu_state = TPDU_S_INS;
+               change_tpdu_state(TPDU_S_INS);
                break;
        case TPDU_S_INS:
                if ((0x60 == (byte & 0xf0)) || (0x90 == (byte & 0xf0))) {
@@ -726,37 +735,37 @@
                }
                tpdu_packet_i = 1;
                tpdu_packet[tpdu_packet_i++] = byte;
-               tpdu_state = TPDU_S_P1;
+               change_tpdu_state(TPDU_S_P1);
                break;
        case TPDU_S_P1:
                tpdu_packet_i = 2;
                tpdu_packet[tpdu_packet_i++] = byte;
-               tpdu_state = TPDU_S_P2;
+               change_tpdu_state(TPDU_S_P2);
                break;
        case TPDU_S_P2:
                tpdu_packet_i = 3;
                tpdu_packet[tpdu_packet_i++] = byte;
-               tpdu_state = TPDU_S_P3;
+               change_tpdu_state(TPDU_S_P3);
                break;
        case TPDU_S_P3:
                tpdu_packet_i = 4;
                tpdu_packet[tpdu_packet_i++] = byte;
-               tpdu_state = TPDU_S_PROCEDURE;
+               change_tpdu_state(TPDU_S_PROCEDURE);
                break;
        case TPDU_S_PROCEDURE:
                if (0x60 == byte) { /* wait for next procedure byte */
                        break;
                } else if (tpdu_packet[1] == byte) { /* get all remaining data 
bytes */
-                       tpdu_state = TPDU_S_DATA_REMAINING;
+                       change_tpdu_state(TPDU_S_DATA_REMAINING);
                        break;
                } else if ((~tpdu_packet[1]) == byte) { /* get single data byte 
*/
-                       tpdu_state = TPDU_S_DATA_SINGLE;
+                       change_tpdu_state(TPDU_S_DATA_SINGLE);
                        break;
                }
        case TPDU_S_SW1:
                if ((0x60 == (byte & 0xf0)) || (0x90 == (byte & 0xf0))) { /* 
this procedure byte is SW1 */
                        tpdu_packet[tpdu_packet_i++] = byte;
-                       tpdu_state = TPDU_S_SW2;
+                       change_tpdu_state(TPDU_S_SW2);
                } else {
                        TRACE_WARNING("invalid SW1 0x%02x\n\r", byte);
                        led_blink(LED_RED, BLINK_2F_O); /* indicate error to 
user */
@@ -775,15 +784,15 @@
                tpdu_packet[tpdu_packet_i++] = byte;
                if (0 == tpdu_packet[4]) {
                        if (5+256 <= tpdu_packet_i) {
-                               tpdu_state = TPDU_S_PROCEDURE;
+                               change_tpdu_state(TPDU_S_PROCEDURE);
                        }
                } else {
                        if (5+tpdu_packet[4] <= tpdu_packet_i) {
-                               tpdu_state = TPDU_S_PROCEDURE;
+                               change_tpdu_state(TPDU_S_PROCEDURE);
                        }
                }
                if (TPDU_S_DATA_SINGLE == tpdu_state) {
-                       tpdu_state = TPDU_S_PROCEDURE;
+                       change_tpdu_state(TPDU_S_PROCEDURE);
                }
                break;
        default:

--
To view, visit https://gerrit.osmocom.org/c/simtrace2/+/30178
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: simtrace2
Gerrit-Branch: master
Gerrit-Change-Id: Ie61321404f3686234c61c68a07d6cb9f5830ddc1
Gerrit-Change-Number: 30178
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: Hoernchen <ew...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: tsaitgaist <kre...@sysmocom.de>
Gerrit-MessageType: merged

Reply via email to