<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/10780">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Use uint8_t instead of int8_t for Timing Advance<br><br>According to the GSM specifications, Timing Advance value shall<br>be in range [0..63]. For some reason, a signed int8_t type was<br>used to store this value. Let's use an unsigned uint8_t in order<br>to avoid possible confusion and to prevent possible mistakes<br>of passing a negative value.<br><br>Change-Id: Ib2ffd24bfb5abb7cc03b20a99628ef18dd365c15<br>---<br>M include/l1ctl_proto.h<br>M src/host/trxcon/l1ctl.c<br>M src/host/trxcon/trx_if.c<br>M src/host/trxcon/trx_if.h<br>M src/host/virt_phy/src/l1ctl_sap.c<br>M src/target/firmware/include/layer1/sync.h<br>M src/target/firmware/layer1/l23_api.c<br>7 files changed, 11 insertions(+), 11 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/80/10780/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/l1ctl_proto.h b/include/l1ctl_proto.h</span><br><span>index 9d548bc..9992eae 100644</span><br><span>--- a/include/l1ctl_proto.h</span><br><span>+++ b/include/l1ctl_proto.h</span><br><span>@@ -241,7 +241,7 @@</span><br><span> </span><br><span> /* the l1_info_ul header is in front */</span><br><span> struct l1ctl_par_req {</span><br><span style="color: hsl(0, 100%, 40%);">-    int8_t ta;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t ta;</span><br><span>  uint8_t tx_power;</span><br><span>    uint8_t padding[2];</span><br><span> } __attribute__((packed));</span><br><span>diff --git a/src/host/trxcon/l1ctl.c b/src/host/trxcon/l1ctl.c</span><br><span>index 49d6a12..0efd0be 100644</span><br><span>--- a/src/host/trxcon/l1ctl.c</span><br><span>+++ b/src/host/trxcon/l1ctl.c</span><br><span>@@ -659,7 +659,7 @@</span><br><span>     par_req = (struct l1ctl_par_req *) ul->payload;</span><br><span> </span><br><span>       LOGP(DL1C, LOGL_NOTICE, "Received L1CTL_PARAM_REQ "</span><br><span style="color: hsl(0, 100%, 40%);">-           "(ta=%d, tx_power=%u)\n", par_req->ta, par_req->tx_power);</span><br><span style="color: hsl(120, 100%, 40%);">+            "(ta=%u, tx_power=%u)\n", par_req->ta, par_req->tx_power);</span><br><span> </span><br><span>       rc |= trx_if_cmd_setta(l1l->trx, par_req->ta);</span><br><span> </span><br><span>diff --git a/src/host/trxcon/trx_if.c b/src/host/trxcon/trx_if.c</span><br><span>index 89331f3..6fa4996 100644</span><br><span>--- a/src/host/trxcon/trx_if.c</span><br><span>+++ b/src/host/trxcon/trx_if.c</span><br><span>@@ -409,19 +409,19 @@</span><br><span>  * RSP SETTA <status> <TA></span><br><span>  */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int trx_if_cmd_setta(struct trx_instance *trx, int8_t ta)</span><br><span style="color: hsl(120, 100%, 40%);">+int trx_if_cmd_setta(struct trx_instance *trx, uint8_t ta)</span><br><span> {</span><br><span>         /* Do nothing, if requested TA value matches the current */</span><br><span>  if (trx->ta == ta)</span><br><span>                return 0;</span><br><span> </span><br><span>        /* Make sure that TA value is in valid range */</span><br><span style="color: hsl(0, 100%, 40%);">- if (ta < 0 || ta > 63) {</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DTRX, LOGL_ERROR, "TA value %d is out of allowed range\n", ta);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (ta > 63) {</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGP(DTRX, LOGL_ERROR, "TA value %u is out of allowed range\n", ta);</span><br><span>               return -ENOTSUP;</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   return trx_ctrl_cmd(trx, 0, "SETTA", "%d", ta);</span><br><span style="color: hsl(120, 100%, 40%);">+   return trx_ctrl_cmd(trx, 0, "SETTA", "%u", ta);</span><br><span> }</span><br><span> </span><br><span> /* Get response from CTRL socket */</span><br><span>diff --git a/src/host/trxcon/trx_if.h b/src/host/trxcon/trx_if.h</span><br><span>index ed6bd3f..9e2615f 100644</span><br><span>--- a/src/host/trxcon/trx_if.h</span><br><span>+++ b/src/host/trxcon/trx_if.h</span><br><span>@@ -34,7 +34,7 @@</span><br><span>         uint8_t tx_power;</span><br><span>    uint8_t bsic;</span><br><span>        uint8_t tsc;</span><br><span style="color: hsl(0, 100%, 40%);">-    int8_t ta;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t ta;</span><br><span> </span><br><span>      /* Scheduler stuff */</span><br><span>        struct trx_sched sched;</span><br><span>@@ -64,7 +64,7 @@</span><br><span> int trx_if_cmd_setpower(struct trx_instance *trx, int db);</span><br><span> int trx_if_cmd_adjpower(struct trx_instance *trx, int db);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int trx_if_cmd_setta(struct trx_instance *trx, int8_t ta);</span><br><span style="color: hsl(120, 100%, 40%);">+int trx_if_cmd_setta(struct trx_instance *trx, uint8_t ta);</span><br><span> </span><br><span> int trx_if_cmd_rxtune(struct trx_instance *trx, uint16_t band_arfcn);</span><br><span> int trx_if_cmd_txtune(struct trx_instance *trx, uint16_t band_arfcn);</span><br><span>diff --git a/src/host/virt_phy/src/l1ctl_sap.c b/src/host/virt_phy/src/l1ctl_sap.c</span><br><span>index aac49bf..df4ad64 100644</span><br><span>--- a/src/host/virt_phy/src/l1ctl_sap.c</span><br><span>+++ b/src/host/virt_phy/src/l1ctl_sap.c</span><br><span>@@ -399,7 +399,7 @@</span><br><span>      struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *)l1h->data;</span><br><span>     struct l1ctl_par_req *par_req = (struct l1ctl_par_req *)ul->payload;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     LOGPMS(DL1C, LOGL_INFO, ms, "Rx L1CTL_PARAM_REQ (ta=%d, tx_power=%d)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGPMS(DL1C, LOGL_INFO, ms, "Rx L1CTL_PARAM_REQ (ta=%u, tx_power=%d)\n",</span><br><span>           par_req->ta, par_req->tx_power);</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/target/firmware/include/layer1/sync.h b/src/target/firmware/include/layer1/sync.h</span><br><span>index dae85a1..ed305e9 100644</span><br><span>--- a/src/target/firmware/include/layer1/sync.h</span><br><span>+++ b/src/target/firmware/include/layer1/sync.h</span><br><span>@@ -75,7 +75,7 @@</span><br><span>         int32_t         tpu_offset_correction;</span><br><span> </span><br><span>   /* TX parameters */</span><br><span style="color: hsl(0, 100%, 40%);">-     int8_t          ta;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint8_t         ta;</span><br><span>  uint8_t         tx_power;</span><br><span> </span><br><span>        /* TCH */</span><br><span>diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c</span><br><span>index e53b0c8..5bfece7 100644</span><br><span>--- a/src/target/firmware/layer1/l23_api.c</span><br><span>+++ b/src/target/firmware/layer1/l23_api.c</span><br><span>@@ -337,7 +337,7 @@</span><br><span>         struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;</span><br><span>    struct l1ctl_par_req *par_req = (struct l1ctl_par_req *) ul->payload;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    printd("L1CTL_PARAM_REQ (ta=%d, tx_power=%d)\n", par_req->ta,</span><br><span style="color: hsl(120, 100%, 40%);">+    printd("L1CTL_PARAM_REQ (ta=%u, tx_power=%d)\n", par_req->ta,</span><br><span>           par_req->tx_power);</span><br><span> </span><br><span>   l1s.ta = par_req->ta;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10780">change 10780</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/10780"/><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: Ib2ffd24bfb5abb7cc03b20a99628ef18dd365c15 </div>
<div style="display:none"> Gerrit-Change-Number: 10780 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>