<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/25679">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  fixeria: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved
  osmith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_provision_fsm: poweronoff_sent flag: track POWERON and POWEROFF separately<br><br>It helps better understanding the code, and will allow handling<br>situations where for instance a POWERON in in transit while the BTS is<br>instructed to shutdown, hence a POWEROFF needs to be sent.<br><br>Change-Id: Iaf62217ceab7420afa4140cba61e1c2f983c61b4<br>---<br>M include/osmo-bts/phy_link.h<br>M src/osmo-bts-trx/trx_provision_fsm.c<br>2 files changed, 11 insertions(+), 8 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmo-bts/phy_link.h b/include/osmo-bts/phy_link.h</span><br><span>index ac38c28..862ed48 100644</span><br><span>--- a/include/osmo-bts/phy_link.h</span><br><span>+++ b/include/osmo-bts/phy_link.h</span><br><span>@@ -50,7 +50,8 @@</span><br><span>                   bool use_legacy_setbsic;</span><br><span>                     uint8_t trxd_pdu_ver_max; /* Maximum TRXD PDU version to negotiate */</span><br><span>                        bool powered; /* last POWERON (true) or POWEROFF (false) confirmed */</span><br><span style="color: hsl(0, 100%, 40%);">-                   bool poweronoff_sent; /* is there a POWERON/POWEROFF in transit? (one or the other based on ->powered) */</span><br><span style="color: hsl(120, 100%, 40%);">+                  bool poweron_sent; /* is there a POWERON in transit? */</span><br><span style="color: hsl(120, 100%, 40%);">+                       bool poweroff_sent; /* is there a POWEROFF in transit? */</span><br><span>            } osmotrx;</span><br><span>           struct {</span><br><span>                     char *mcast_dev;                /* Network device for multicast */</span><br><span>diff --git a/src/osmo-bts-trx/trx_provision_fsm.c b/src/osmo-bts-trx/trx_provision_fsm.c</span><br><span>index 4ea6758..3d7eebf 100644</span><br><span>--- a/src/osmo-bts-trx/trx_provision_fsm.c</span><br><span>+++ b/src/osmo-bts-trx/trx_provision_fsm.c</span><br><span>@@ -50,12 +50,14 @@</span><br><span>        struct phy_link *plink = pinst->phy_link;</span><br><span> </span><br><span>     plink->u.osmotrx.powered = poweronoff;</span><br><span style="color: hsl(0, 100%, 40%);">-       plink->u.osmotrx.poweronoff_sent = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (poweronoff)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (poweronoff) {</span><br><span style="color: hsl(120, 100%, 40%);">+             plink->u.osmotrx.poweron_sent = false;</span><br><span>            osmo_fsm_inst_dispatch(l1h->provision_fi, TRX_PROV_EV_POWERON_CNF, (void*)(intptr_t)rc);</span><br><span style="color: hsl(0, 100%, 40%);">-     else</span><br><span style="color: hsl(120, 100%, 40%);">+  } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              plink->u.osmotrx.poweroff_sent = false;</span><br><span>           osmo_fsm_inst_dispatch(l1h->provision_fi, TRX_PROV_EV_POWEROFF_CNF, (void*)(intptr_t)rc);</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -520,7 +522,7 @@</span><br><span>         struct phy_instance *pinst = l1h->phy_inst;</span><br><span> </span><br><span>   trx_if_cmd_poweron(l1h, l1if_poweronoff_cb);</span><br><span style="color: hsl(0, 100%, 40%);">-    pinst->phy_link->u.osmotrx.poweronoff_sent = true;</span><br><span style="color: hsl(120, 100%, 40%);">+      pinst->phy_link->u.osmotrx.poweron_sent = true;</span><br><span> }</span><br><span> </span><br><span> static void st_open_wait_power_cnf(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -588,9 +590,9 @@</span><br><span>     switch (event) {</span><br><span>     case TRX_PROV_EV_CLOSE:</span><br><span>              /* power off transceiver, if not already */</span><br><span style="color: hsl(0, 100%, 40%);">-             if (pinst->num == 0 && plink->u.osmotrx.powered && !plink->u.osmotrx.poweronoff_sent) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                trx_if_cmd_poweroff(l1h, l1if_poweronoff_cb);</span><br><span style="color: hsl(0, 100%, 40%);">-                           plink->u.osmotrx.poweronoff_sent = true;</span><br><span style="color: hsl(120, 100%, 40%);">+           if (pinst->num == 0 && plink->u.osmotrx.powered && !plink->u.osmotrx.poweroff_sent) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        trx_if_cmd_poweroff(l1h, l1if_poweronoff_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+                 plink->u.osmotrx.poweroff_sent = true;</span><br><span>            }</span><br><span>            trx_prov_fsm_state_chg(fi, TRX_PROV_ST_OPEN_WAIT_POWEROFF_CNF);</span><br><span>              break;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/25679">change 25679</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-bts/+/25679"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Iaf62217ceab7420afa4140cba61e1c2f983c61b4 </div>
<div style="display:none"> Gerrit-Change-Number: 25679 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>