<p>Holger Freyther has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/10688">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">lua: Expose API to trigger a network reselection<br><br>Same as the "network search" VTY command but implemented as primitive<br>and exposed to LUA.<br><br>Change-Id: I096233a2ca9dd7daa358cebed0523cb8c0dbf593<br>---<br>M src/host/layer23/include/osmocom/bb/mobile/gsm322.h<br>M src/host/layer23/include/osmocom/bb/mobile/primitives.h<br>M src/host/layer23/src/mobile/primitives.c<br>M src/host/layer23/src/mobile/script_lua.c<br>4 files changed, 32 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/88/10688/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/layer23/include/osmocom/bb/mobile/gsm322.h b/src/host/layer23/include/osmocom/bb/mobile/gsm322.h</span><br><span>index 66bc852..d4caac9 100644</span><br><span>--- a/src/host/layer23/include/osmocom/bb/mobile/gsm322.h</span><br><span>+++ b/src/host/layer23/include/osmocom/bb/mobile/gsm322.h</span><br><span>@@ -1,6 +1,11 @@</span><br><span> #ifndef _GSM322_H</span><br><span> #define _GSM322_H</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bb/common/sysinfo.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/linuxlist.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/timer.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* 4.3.1.1 List of states for PLMN slection process (automatic mode) */</span><br><span> #define GSM322_A0_NULL                   0</span><br><span> #define    GSM322_A1_TRYING_RPLMN          1</span><br><span>diff --git a/src/host/layer23/include/osmocom/bb/mobile/primitives.h b/src/host/layer23/include/osmocom/bb/mobile/primitives.h</span><br><span>index 034b202..f07ae24 100644</span><br><span>--- a/src/host/layer23/include/osmocom/bb/mobile/primitives.h</span><br><span>+++ b/src/host/layer23/include/osmocom/bb/mobile/primitives.h</span><br><span>@@ -20,6 +20,7 @@</span><br><span>       PRIM_MOB_SHUTDOWN,</span><br><span>   PRIM_MOB_SMS,</span><br><span>        PRIM_MOB_MM,</span><br><span style="color: hsl(120, 100%, 40%);">+  PRIM_MOB_NETWORK_RESELECT,</span><br><span> };</span><br><span> </span><br><span> struct mobile_prim_intf {</span><br><span>diff --git a/src/host/layer23/src/mobile/primitives.c b/src/host/layer23/src/mobile/primitives.c</span><br><span>index aa46712..f562466 100644</span><br><span>--- a/src/host/layer23/src/mobile/primitives.c</span><br><span>+++ b/src/host/layer23/src/mobile/primitives.c</span><br><span>@@ -20,6 +20,7 @@</span><br><span> </span><br><span> #include <inttypes.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bb/mobile/gsm322.h></span><br><span> #include <osmocom/bb/mobile/primitives.h></span><br><span> #include <osmocom/bb/common/logging.h></span><br><span> </span><br><span>@@ -191,6 +192,17 @@</span><br><span>         return gsm411_tx_sms_submit(intf->ms, param->sca, sms);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static int network_reselect(struct mobile_prim_intf *intf)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct msgb *nmsg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  nmsg = gsm322_msgb_alloc(GSM322_EVENT_USER_RESEL);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!nmsg)</span><br><span style="color: hsl(120, 100%, 40%);">+            return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+    gsm322_plmn_sendmsg(intf->ms, nmsg);</span><br><span style="color: hsl(120, 100%, 40%);">+       return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> int mobile_prim_intf_req(struct mobile_prim_intf *intf, struct mobile_prim *prim)</span><br><span> {</span><br><span>     int rc = 0;</span><br><span>@@ -205,6 +217,9 @@</span><br><span>    case OSMO_PRIM(PRIM_MOB_SMS, PRIM_OP_REQUEST):</span><br><span>               rc = send_sms(intf, &prim->u.sms);</span><br><span>            break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case OSMO_PRIM(PRIM_MOB_NETWORK_RESELECT, PRIM_OP_REQUEST):</span><br><span style="color: hsl(120, 100%, 40%);">+           rc = network_reselect(intf);</span><br><span style="color: hsl(120, 100%, 40%);">+          break;</span><br><span>       default:</span><br><span>             LOGP(DPRIM, LOGL_ERROR, "Unknown primitive: %d\n", OSMO_PRIM_HDR(&prim->hdr));</span><br><span>              break;</span><br><span>diff --git a/src/host/layer23/src/mobile/script_lua.c b/src/host/layer23/src/mobile/script_lua.c</span><br><span>index 924ed6e..9117cdd 100644</span><br><span>--- a/src/host/layer23/src/mobile/script_lua.c</span><br><span>+++ b/src/host/layer23/src/mobile/script_lua.c</span><br><span>@@ -425,6 +425,16 @@</span><br><span>   return 1;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static int lua_reselect_network(lua_State *L)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  struct mobile_prim *prim;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   prim = mobile_prim_alloc(PRIM_MOB_NETWORK_RESELECT, PRIM_OP_REQUEST);</span><br><span style="color: hsl(120, 100%, 40%);">+ mobile_prim_intf_req(get_primitive(L), prim);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       return 1;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Expect a fd on the stack and enable SO_PASSCRED */</span><br><span> static int lua_unix_passcred(lua_State *L)</span><br><span> {</span><br><span>@@ -546,6 +556,7 @@</span><br><span>     { "stop", lua_ms_shutdown },</span><br><span>       { "sms_send_simple", lua_ms_sms_send_simple },</span><br><span>     { "number", lua_ms_name },</span><br><span style="color: hsl(120, 100%, 40%);">+  { "reselect_network", lua_reselect_network },</span><br><span>      { NULL, NULL },</span><br><span> };</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10688">change 10688</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/10688"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I096233a2ca9dd7daa358cebed0523cb8c0dbf593 </div>
<div style="display:none"> Gerrit-Change-Number: 10688 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Holger Freyther <holger@freyther.de> </div>