<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/15755">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ccid_slot_fsm: Convert from CCID msgb to TPDU msgb<br><br>Change-Id: I67f684ec098c0fdf4bf75c20d8cdf91b6e6411c2<br>---<br>M ccid_common/ccid_slot_fsm.c<br>1 file changed, 18 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/55/15755/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/ccid_common/ccid_slot_fsm.c b/ccid_common/ccid_slot_fsm.c</span><br><span>index 90899bd..7b513a5 100644</span><br><span>--- a/ccid_common/ccid_slot_fsm.c</span><br><span>+++ b/ccid_common/ccid_slot_fsm.c</span><br><span>@@ -3,6 +3,7 @@</span><br><span> </span><br><span> #include <unistd.h></span><br><span> #include <errno.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <string.h></span><br><span> </span><br><span> #include <osmocom/core/msgb.h></span><br><span> #include <osmocom/core/timer.h></span><br><span>@@ -111,10 +112,25 @@</span><br><span>                              const struct ccid_pc_to_rdr_xfr_block *xfb)</span><br><span> {</span><br><span>     struct iso_fsm_slot *ss = ccid_slot2iso_fsm_slot(cs);</span><br><span style="color: hsl(120, 100%, 40%);">+ struct msgb *tpdu;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  LOGPCS(cs, LOGL_DEBUG, "scheduling TPDU transfer\n");</span><br><span>      ss->seq = xfb->hdr.bSeq;</span><br><span style="color: hsl(0, 100%, 40%);">-  osmo_fsm_inst_dispatch(ss->fi, ISO7816_E_XCEIVE_TPDU_CMD, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* must be '0' for TPDU level exchanges or for short APDU */</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(xfb->wLevelParameter == 0x0000);</span><br><span style="color: hsl(120, 100%, 40%);">+       OSMO_ASSERT(msgb_length(msg) > xfb->hdr.dwLength);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* 'msg' contains the raw CCID message as received from USB. We could create</span><br><span style="color: hsl(120, 100%, 40%);">+   * a new message buffer for the ISO7816 side here or we could 'strip the CCID</span><br><span style="color: hsl(120, 100%, 40%);">+      * header off the start of the message. Let's KISS and do a copy here */</span><br><span style="color: hsl(120, 100%, 40%);">+  tpdu = msgb_alloc(512, "TPDU");</span><br><span style="color: hsl(120, 100%, 40%);">+     OSMO_ASSERT(tpdu);</span><br><span style="color: hsl(120, 100%, 40%);">+    memcpy(msgb_data(tpdu), xfb->abData, xfb->hdr.dwLength);</span><br><span style="color: hsl(120, 100%, 40%);">+        msgb_put(tpdu, xfb->hdr.dwLength);</span><br><span style="color: hsl(120, 100%, 40%);">+ msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     LOGPCS(cs, LOGL_DEBUG, "scheduling TPDU transfer: %s\n", msgb_hexdump(tpdu));</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo_fsm_inst_dispatch(ss->fi, ISO7816_E_XCEIVE_TPDU_CMD, tpdu);</span><br><span>  /* continues in iso_fsm_clot_user_cb once response/error/timeout is received */</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/15755">change 15755</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/c/osmo-ccid-firmware/+/15755"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ccid-firmware </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I67f684ec098c0fdf4bf75c20d8cdf91b6e6411c2 </div>
<div style="display:none"> Gerrit-Change-Number: 15755 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>