<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/11249">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">layer23/common: merge l1ctl_ph_prim_cb() to L23SAP<br><br>Change-Id: Ic852b2b7f5a651b7a4debc83778ae24c687e85f8<br>---<br>M src/host/layer23/include/osmocom/bb/common/l1ctl.h<br>M src/host/layer23/include/osmocom/bb/common/l23sap.h<br>M src/host/layer23/src/common/Makefile.am<br>D src/host/layer23/src/common/l1ctl_lapdm_glue.c<br>M src/host/layer23/src/common/l23sap.c<br>M src/host/layer23/src/common/main.c<br>M src/host/layer23/src/mobile/app_mobile.c<br>7 files changed, 40 insertions(+), 69 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/49/11249/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/layer23/include/osmocom/bb/common/l1ctl.h b/src/host/layer23/include/osmocom/bb/common/l1ctl.h</span><br><span>index e4dbded..e9d5be5 100644</span><br><span>--- a/src/host/layer23/include/osmocom/bb/common/l1ctl.h</span><br><span>+++ b/src/host/layer23/include/osmocom/bb/common/l1ctl.h</span><br><span>@@ -67,9 +67,6 @@</span><br><span> int l1ctl_tx_traffic_req(struct osmocom_ms *ms, struct msgb *msg,</span><br><span>                        uint8_t chan_nr, uint8_t link_id);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* LAPDm wants to send a PH-* primitive to the physical layer (L1) */</span><br><span style="color: hsl(0, 100%, 40%);">-int l1ctl_ph_prim_cb(struct osmo_prim_hdr *oph, void *ctx);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Transmit L1CTL_NEIGH_PM_REQ */</span><br><span> int l1ctl_tx_neigh_pm_req(struct osmocom_ms *ms, int num, uint16_t *arfcn);</span><br><span> </span><br><span>diff --git a/src/host/layer23/include/osmocom/bb/common/l23sap.h b/src/host/layer23/include/osmocom/bb/common/l23sap.h</span><br><span>index eaa62c1..ede5620 100644</span><br><span>--- a/src/host/layer23/include/osmocom/bb/common/l23sap.h</span><br><span>+++ b/src/host/layer23/include/osmocom/bb/common/l23sap.h</span><br><span>@@ -10,6 +10,8 @@</span><br><span> #define CHAN_IS_SACCH(link_id) \</span><br><span>      ((link_id & 0xc0) == LID_SACCH)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int l23sap_lapdm_ph_prim_cb(struct osmo_prim_hdr *oph, void *ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> int l23sap_gsmtap_data_ind(struct osmocom_ms *ms, struct msgb *msg);</span><br><span> int l23sap_gsmtap_data_req(struct osmocom_ms *ms, struct msgb *msg);</span><br><span> </span><br><span>diff --git a/src/host/layer23/src/common/Makefile.am b/src/host/layer23/src/common/Makefile.am</span><br><span>index e1b7b44..2d26b49 100644</span><br><span>--- a/src/host/layer23/src/common/Makefile.am</span><br><span>+++ b/src/host/layer23/src/common/Makefile.am</span><br><span>@@ -3,4 +3,4 @@</span><br><span> </span><br><span> noinst_LIBRARIES = liblayer23.a</span><br><span> liblayer23_a_SOURCES = l1ctl.c l1l2_interface.c sap_interface.c \</span><br><span style="color: hsl(0, 100%, 40%);">-        logging.c networks.c sim.c sysinfo.c gps.c l1ctl_lapdm_glue.c utils.c l23sap.c</span><br><span style="color: hsl(120, 100%, 40%);">+        logging.c networks.c sim.c sysinfo.c gps.c utils.c l23sap.c</span><br><span>diff --git a/src/host/layer23/src/common/l1ctl_lapdm_glue.c b/src/host/layer23/src/common/l1ctl_lapdm_glue.c</span><br><span>deleted file mode 100644</span><br><span>index 0b2a8ed..0000000</span><br><span>--- a/src/host/layer23/src/common/l1ctl_lapdm_glue.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,62 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* Glue code between L1CTL and LAPDm */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* (C) 2011 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * All Rights Reserved</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; either version 2 of the License, or</span><br><span style="color: hsl(0, 100%, 40%);">- * (at your option) any later version.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * You should have received a copy of the GNU General Public License along</span><br><span style="color: hsl(0, 100%, 40%);">- * with this program; if not, write to the Free Software Foundation, Inc.,</span><br><span style="color: hsl(0, 100%, 40%);">- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</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%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <stdint.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <l1ctl_proto.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/prim.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bb/common/l1ctl.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/lapdm.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* LAPDm wants to send a PH-* primitive to the physical layer (L1) */</span><br><span style="color: hsl(0, 100%, 40%);">-int l1ctl_ph_prim_cb(struct osmo_prim_hdr *oph, void *ctx)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  struct osmocom_ms *ms = ctx;</span><br><span style="color: hsl(0, 100%, 40%);">-    struct osmo_phsap_prim *pp = (struct osmo_phsap_prim *) oph;</span><br><span style="color: hsl(0, 100%, 40%);">-    int rc = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     if (oph->sap != SAP_GSM_PH)</span><br><span style="color: hsl(0, 100%, 40%);">-          return -ENODEV;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (oph->operation != PRIM_OP_REQUEST)</span><br><span style="color: hsl(0, 100%, 40%);">-               return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- switch (oph->primitive) {</span><br><span style="color: hsl(0, 100%, 40%);">-    case PRIM_PH_DATA:</span><br><span style="color: hsl(0, 100%, 40%);">-              rc = l1ctl_tx_data_req(ms, oph->msg, pp->u.data.chan_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                  pp->u.data.link_id);</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case PRIM_PH_RACH:</span><br><span style="color: hsl(0, 100%, 40%);">-              l1ctl_tx_param_req(ms, pp->u.rach_req.ta,</span><br><span style="color: hsl(0, 100%, 40%);">-                               pp->u.rach_req.tx_power);</span><br><span style="color: hsl(0, 100%, 40%);">-         rc = l1ctl_tx_rach_req(ms, pp->u.rach_req.ra,</span><br><span style="color: hsl(0, 100%, 40%);">-                                       pp->u.rach_req.offset,</span><br><span style="color: hsl(0, 100%, 40%);">-                                       pp->u.rach_req.is_combined_ccch);</span><br><span style="color: hsl(0, 100%, 40%);">-             break;</span><br><span style="color: hsl(0, 100%, 40%);">-  default:</span><br><span style="color: hsl(0, 100%, 40%);">-                rc = -EINVAL;</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%);">-       return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/host/layer23/src/common/l23sap.c b/src/host/layer23/src/common/l23sap.c</span><br><span>index d034b27..a34f515 100644</span><br><span>--- a/src/host/layer23/src/common/l23sap.c</span><br><span>+++ b/src/host/layer23/src/common/l23sap.c</span><br><span>@@ -42,6 +42,7 @@</span><br><span> </span><br><span> #include <osmocom/bb/common/osmocom_data.h></span><br><span> #include <osmocom/bb/common/logging.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bb/common/l1ctl.h></span><br><span> #include <osmocom/bb/common/l23sap.h></span><br><span> </span><br><span> extern struct gsmtap_inst *gsmtap_inst;</span><br><span>@@ -155,3 +156,35 @@</span><br><span>       return lapdm_phsap_up(&pp.oph,</span><br><span>           &ms->lapdm_channel.lapdm_dcch);</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* LAPDm wants to send a PH-* primitive to the PHY (L1) */</span><br><span style="color: hsl(120, 100%, 40%);">+int l23sap_lapdm_ph_prim_cb(struct osmo_prim_hdr *oph, void *ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       struct osmocom_ms *ms = ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osmo_phsap_prim *pp = (struct osmo_phsap_prim *) oph;</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (oph->sap != SAP_GSM_PH)</span><br><span style="color: hsl(120, 100%, 40%);">+                return -ENODEV;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (oph->operation != PRIM_OP_REQUEST)</span><br><span style="color: hsl(120, 100%, 40%);">+             return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     switch (oph->primitive) {</span><br><span style="color: hsl(120, 100%, 40%);">+  case PRIM_PH_DATA:</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = l1ctl_tx_data_req(ms, oph->msg, pp->u.data.chan_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                        pp->u.data.link_id);</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case PRIM_PH_RACH:</span><br><span style="color: hsl(120, 100%, 40%);">+            l1ctl_tx_param_req(ms, pp->u.rach_req.ta,</span><br><span style="color: hsl(120, 100%, 40%);">+                             pp->u.rach_req.tx_power);</span><br><span style="color: hsl(120, 100%, 40%);">+               rc = l1ctl_tx_rach_req(ms, pp->u.rach_req.ra,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     pp->u.rach_req.offset,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     pp->u.rach_req.is_combined_ccch);</span><br><span style="color: hsl(120, 100%, 40%);">+           break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              rc = -EINVAL;</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%);">+   return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/host/layer23/src/common/main.c b/src/host/layer23/src/common/main.c</span><br><span>index 693b10e..c3c7992 100644</span><br><span>--- a/src/host/layer23/src/common/main.c</span><br><span>+++ b/src/host/layer23/src/common/main.c</span><br><span>@@ -22,7 +22,7 @@</span><br><span>  */</span><br><span> </span><br><span> #include <osmocom/bb/common/osmocom_data.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/bb/common/l1ctl.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bb/common/l23sap.h></span><br><span> #include <osmocom/bb/common/l1l2_interface.h></span><br><span> #include <osmocom/bb/common/sap_interface.h></span><br><span> #include <osmocom/bb/misc/layer3.h></span><br><span>@@ -266,7 +266,7 @@</span><br><span>        ms->lapdm_channel.lapdm_acch.l1_ctx = ms;</span><br><span>         ms->lapdm_channel.lapdm_acch.l3_ctx = ms;</span><br><span>         lapdm_channel_init(&ms->lapdm_channel, LAPDM_MODE_MS);</span><br><span style="color: hsl(0, 100%, 40%);">-   lapdm_channel_set_l1(&ms->lapdm_channel, l1ctl_ph_prim_cb, ms);</span><br><span style="color: hsl(120, 100%, 40%);">+        lapdm_channel_set_l1(&ms->lapdm_channel, l23sap_lapdm_ph_prim_cb, ms);</span><br><span> </span><br><span>    rc = l23_app_init(ms);</span><br><span>       if (rc < 0)</span><br><span>diff --git a/src/host/layer23/src/mobile/app_mobile.c b/src/host/layer23/src/mobile/app_mobile.c</span><br><span>index b0e2a13..f420530 100644</span><br><span>--- a/src/host/layer23/src/mobile/app_mobile.c</span><br><span>+++ b/src/host/layer23/src/mobile/app_mobile.c</span><br><span>@@ -28,6 +28,7 @@</span><br><span> #include <osmocom/bb/common/osmocom_data.h></span><br><span> #include <osmocom/bb/common/l1l2_interface.h></span><br><span> #include <osmocom/bb/common/l1ctl.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bb/common/l23sap.h></span><br><span> #include <osmocom/bb/common/logging.h></span><br><span> #include <osmocom/bb/common/gps.h></span><br><span> #include <osmocom/bb/mobile/gsm48_rr.h></span><br><span>@@ -195,7 +196,7 @@</span><br><span>    ms->lapdm_channel.lapdm_acch.datalink[DL_SAPI3].dl.t200_sec =</span><br><span>             T200_ACCH;</span><br><span>   ms->lapdm_channel.lapdm_acch.datalink[DL_SAPI3].dl.t200_usec = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    lapdm_channel_set_l1(&ms->lapdm_channel, l1ctl_ph_prim_cb, ms);</span><br><span style="color: hsl(120, 100%, 40%);">+        lapdm_channel_set_l1(&ms->lapdm_channel, l23sap_lapdm_ph_prim_cb, ms);</span><br><span> </span><br><span>    /* init SAP client before SIM card starts up */</span><br><span>      osmosap_init(ms);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11249">change 11249</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/11249"/><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: Ic852b2b7f5a651b7a4debc83778ae24c687e85f8 </div>
<div style="display:none"> Gerrit-Change-Number: 11249 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>