<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/24536">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">firmware: octsimtest: Support SIMTRACE_MSGT_DT_CEMU_CARDINSERT<br><br>The octsimtest board can control the card-insert contact of the OCTSIM<br>under test via an external I2C gpio multiplexer; let's add support for<br>that.<br><br>Change-Id: I8c9b0c3d862a967832134b24252577739182da62<br>---<br>M firmware/libboard/octsimtest/include/board.h<br>M firmware/libboard/octsimtest/include/mcp23017.h<br>M firmware/libboard/octsimtest/source/board_octsimtest.c<br>M firmware/libboard/octsimtest/source/mcp23017.c<br>M firmware/libcommon/source/mode_cardemu.c<br>5 files changed, 35 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/36/24536/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/libboard/octsimtest/include/board.h b/firmware/libboard/octsimtest/include/board.h</span><br><span>index ad21a1f..530f27b 100644</span><br><span>--- a/firmware/libboard/octsimtest/include/board.h</span><br><span>+++ b/firmware/libboard/octsimtest/include/board.h</span><br><span>@@ -111,6 +111,10 @@</span><br><span> </span><br><span> #define HAVE_SLOT_MUX</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define HAVE_BOARD_CARDINSERT</span><br><span style="color: hsl(120, 100%, 40%);">+struct cardem_inst;</span><br><span style="color: hsl(120, 100%, 40%);">+void board_set_card_insert(struct cardem_inst *ci, bool card_insert);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /** Supported modes */</span><br><span> /* SIMtrace board supports sniffer mode */</span><br><span> //#define HAVE_SNIFFER</span><br><span>diff --git a/firmware/libboard/octsimtest/include/mcp23017.h b/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>index c0f4b13..190588f 100644</span><br><span>--- a/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>+++ b/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>@@ -21,5 +21,7 @@</span><br><span> int mcp23017_init(uint8_t slave, uint8_t iodira, uint8_t iodirb);</span><br><span> int mcp23017_test(uint8_t slave);</span><br><span> int mcp23017_toggle(uint8_t slave);</span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_set_output_a(uint8_t slave, uint8_t val);</span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_set_output_b(uint8_t slave, uint8_t val);</span><br><span> //int mcp23017_write_byte(uint8_t slave, uint8_t addr, uint8_t byte);</span><br><span> //int mcp23017_read_byte(uint8_t slave, uint8_t addr);</span><br><span>diff --git a/firmware/libboard/octsimtest/source/board_octsimtest.c b/firmware/libboard/octsimtest/source/board_octsimtest.c</span><br><span>index 404bef6..1c6a278 100644</span><br><span>--- a/firmware/libboard/octsimtest/source/board_octsimtest.c</span><br><span>+++ b/firmware/libboard/octsimtest/source/board_octsimtest.c</span><br><span>@@ -94,3 +94,18 @@</span><br><span>   } else</span><br><span>               return 0;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void board_set_card_insert(struct cardem_inst *ci, bool card_insert)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     int s = mux_get_slot();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* A0 .. A7 of the MCP are each connected to the gate of a FET which closes</span><br><span style="color: hsl(120, 100%, 40%);">+    * the sim-present signal of the respective slot */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (mcp2317_present) {</span><br><span style="color: hsl(120, 100%, 40%);">+                /* we must enable card-presence of the active slot and disable it on all others */</span><br><span style="color: hsl(120, 100%, 40%);">+            mcp23017_set_output_a(MCP23017_ADDRESS, (1 << s));</span><br><span style="color: hsl(120, 100%, 40%);">+      } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              TRACE_WARNING("No MCP23017 present; cannot set CARD_INSERT\r\n");</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/firmware/libboard/octsimtest/source/mcp23017.c b/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>index a4d055f..bc6bd49 100644</span><br><span>--- a/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>+++ b/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>@@ -126,6 +126,16 @@</span><br><span>     return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_set_output_a(uint8_t slave, uint8_t val)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  return mcp23017_write_byte(slave, MCP23017_OLATA, val);</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%);">+int mcp23017_set_output_b(uint8_t slave, uint8_t val)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        return mcp23017_write_byte(slave, MCP23017_OLATB, val);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> int mcp23017_toggle(uint8_t slave)</span><br><span> {</span><br><span>      // example writing MSB of gpio</span><br><span>diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c</span><br><span>index 3863767..a357f15 100644</span><br><span>--- a/firmware/libcommon/source/mode_cardemu.c</span><br><span>+++ b/firmware/libcommon/source/mode_cardemu.c</span><br><span>@@ -656,6 +656,9 @@</span><br><span> {</span><br><span>       TRACE_INFO("%u: set card_insert to %s\r\n", ci->num, card_insert ? "INSERTED" : "REMOVED");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_BOARD_CARDINSERT</span><br><span style="color: hsl(120, 100%, 40%);">+        board_set_card_insert(ci, card_insert);</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span>       if (!ci->pin_insert.pio) {</span><br><span>                TRACE_INFO("%u: skipping unsupported card_insert to %s\r\n",</span><br><span>                          ci->num, card_insert ? "INSERTED" : "REMOVED");</span><br><span>@@ -666,6 +669,7 @@</span><br><span>              PIO_Set(&ci->pin_insert);</span><br><span>     else</span><br><span>                 PIO_Clear(&ci->pin_insert);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> }</span><br><span> </span><br><span> /* handle a single USB command as received from the USB host */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/24536">change 24536</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/simtrace2/+/24536"/><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-Change-Id: I8c9b0c3d862a967832134b24252577739182da62 </div>
<div style="display:none"> Gerrit-Change-Number: 24536 </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>