<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>