<p>Kévin Redon has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/10211">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sniff: ensure the checksum error flag is also printed<br><br>the firmware now also use a generic value_string array (as does the<br>host application)<br><br>Change-Id: I861bd8b52e8f2f2a4786bbe1cc834917119dc394<br>---<br>M firmware/libcommon/source/sniffer.c<br>M host/simtrace2-sniff.c<br>2 files changed, 36 insertions(+), 18 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/11/10211/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/libcommon/source/sniffer.c b/firmware/libcommon/source/sniffer.c</span><br><span>index e800216..5cf96fd 100644</span><br><span>--- a/firmware/libcommon/source/sniffer.c</span><br><span>+++ b/firmware/libcommon/source/sniffer.c</span><br><span>@@ -302,6 +302,38 @@</span><br><span>        //TRACE_INFO("Changed to ISO 7816-3 state %u\n\r", iso_state); /* don't print since this is function is also called by ISRs */</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const struct value_string data_flags[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+     {</span><br><span style="color: hsl(120, 100%, 40%);">+             .value = SNIFF_DATA_FLAG_ERROR_INCOMPLETE,</span><br><span style="color: hsl(120, 100%, 40%);">+            .str = "incomplete",</span><br><span style="color: hsl(120, 100%, 40%);">+        },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .value = SNIFF_DATA_FLAG_ERROR_MALFORMED,</span><br><span style="color: hsl(120, 100%, 40%);">+             .str = "malformed",</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .value = SNIFF_DATA_FLAG_ERROR_CHECKSUM,</span><br><span style="color: hsl(120, 100%, 40%);">+              .str = "checksum error",</span><br><span style="color: hsl(120, 100%, 40%);">+    },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+             .value = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+           .str = NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+  },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void print_flags(const struct value_string* flag_meanings, uint32_t nb_flags, uint32_t flags) {</span><br><span style="color: hsl(120, 100%, 40%);">+      uint32_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+   for (i = 0; i < nb_flags; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+           if (flags & flag_meanings[i].value) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     printf(flag_meanings[i].str);</span><br><span style="color: hsl(120, 100%, 40%);">+                 flags &= ~flag_meanings[i].value;</span><br><span style="color: hsl(120, 100%, 40%);">+                 if (flags) {</span><br><span style="color: hsl(120, 100%, 40%);">+                          printf(", ");</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void usb_send_data(enum simtrace_msg_type_sniff type, const uint8_t* data, uint16_t length, uint32_t flags)</span><br><span> {</span><br><span>    /* Sanity check */</span><br><span>@@ -329,20 +361,7 @@</span><br><span>    }</span><br><span>    if (flags) {</span><br><span>                 printf(" (");</span><br><span style="color: hsl(0, 100%, 40%);">-         if (flags & SNIFF_DATA_FLAG_ERROR_INCOMPLETE) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     printf("incomplete");</span><br><span style="color: hsl(0, 100%, 40%);">-                 flags &= ~SNIFF_DATA_FLAG_ERROR_INCOMPLETE;</span><br><span style="color: hsl(0, 100%, 40%);">-                 if (flags) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            printf(", ");</span><br><span style="color: hsl(0, 100%, 40%);">-                 }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-               if (flags & SNIFF_DATA_FLAG_ERROR_MALFORMED) {</span><br><span style="color: hsl(0, 100%, 40%);">-                      printf("malformed");</span><br><span style="color: hsl(0, 100%, 40%);">-                  flags &= ~SNIFF_DATA_FLAG_ERROR_MALFORMED;</span><br><span style="color: hsl(0, 100%, 40%);">-                  if (flags) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            printf(", ");</span><br><span style="color: hsl(0, 100%, 40%);">-                 }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(120, 100%, 40%);">+             print_flags(data_flags, ARRAY_SIZE(data_flags), flags);</span><br><span>              putchar(')');</span><br><span>        }</span><br><span>    printf(": ");</span><br><span>diff --git a/host/simtrace2-sniff.c b/host/simtrace2-sniff.c</span><br><span>index aeacc6b..4ba43f4 100644</span><br><span>--- a/host/simtrace2-sniff.c</span><br><span>+++ b/host/simtrace2-sniff.c</span><br><span>@@ -131,14 +131,13 @@</span><br><span>                 .value = SNIFF_DATA_FLAG_ERROR_MALFORMED,</span><br><span>            .str = "malformed",</span><br><span>        },</span><br><span style="color: hsl(120, 100%, 40%);">+            .value = SNIFF_DATA_FLAG_ERROR_CHECKSUM,</span><br><span style="color: hsl(120, 100%, 40%);">+              .str = "checksum error",</span><br><span style="color: hsl(120, 100%, 40%);">+    },</span><br><span>   {</span><br><span>            .value = 0,</span><br><span>          .str = NULL,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               .value = SNIFF_DATA_FLAG_ERROR_CHECKSUM,</span><br><span style="color: hsl(0, 100%, 40%);">-                .str = "checksum error",</span><br><span style="color: hsl(0, 100%, 40%);">-      },</span><br><span> };</span><br><span> </span><br><span> static void print_flags(const struct value_string* flag_meanings, uint32_t nb_flags, uint32_t flags) {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10211">change 10211</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/10211"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: simtrace2 </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I861bd8b52e8f2f2a4786bbe1cc834917119dc394 </div>
<div style="display:none"> Gerrit-Change-Number: 10211 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Kévin Redon <kredon@sysmocom.de> </div>