<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12610">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trxcon/trxcon.h: introduce and use struct 'trxcon_inst'<br><br>Change-Id: Id868dac54693be9a67527dba06a2b80c0ecb7bd4<br>---<br>M src/host/trxcon/trxcon.c<br>M src/host/trxcon/trxcon.h<br>2 files changed, 48 insertions(+), 22 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/10/12610/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/trxcon/trxcon.c b/src/host/trxcon/trxcon.c</span><br><span>index 6b4c989..ab29412 100644</span><br><span>--- a/src/host/trxcon/trxcon.c</span><br><span>+++ b/src/host/trxcon/trxcon.c</span><br><span>@@ -63,11 +63,9 @@</span><br><span> int quit;</span><br><span> </span><br><span> /* L1CTL specific */</span><br><span style="color: hsl(0, 100%, 40%);">- struct l1ctl_link *l1l;</span><br><span> const char *bind_socket;</span><br><span> </span><br><span> /* TRX specific */</span><br><span style="color: hsl(0, 100%, 40%);">- struct trx_instance *trx;</span><br><span> const char *trx_bind_ip;</span><br><span> const char *trx_remote_ip;</span><br><span> uint16_t trx_base_port;</span><br><span>@@ -184,7 +182,7 @@</span><br><span> </span><br><span> int main(int argc, char **argv)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct osmo_fsm_inst *trxcon_fsm;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct trxcon_inst *trxcon = NULL;</span><br><span> int rc = 0;</span><br><span> </span><br><span> printf("%s", COPYRIGHT);</span><br><span>@@ -207,31 +205,41 @@</span><br><span> /* Init logging system */</span><br><span> trx_log_init(tall_trxcon_ctx, app_data.debug_mask);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* Allocate a trxcon state machine */</span><br><span style="color: hsl(0, 100%, 40%);">- trxcon_fsm = osmo_fsm_inst_alloc(&trxcon_fsm_def,</span><br><span style="color: hsl(0, 100%, 40%);">- tall_trxcon_ctx, NULL, LOGL_DEBUG, "main");</span><br><span style="color: hsl(0, 100%, 40%);">- if (trxcon_fsm == NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Allocate a single trxcon instance */</span><br><span style="color: hsl(120, 100%, 40%);">+ trxcon = talloc_zero(tall_trxcon_ctx, struct trxcon_inst);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (trxcon == NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DAPP, LOGL_ERROR, "Failed to allocate a trxcon instance\n");</span><br><span> goto exit;</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%);">+ /* Allocate an associated trxcon state machine */</span><br><span style="color: hsl(120, 100%, 40%);">+ trxcon->fi = osmo_fsm_inst_alloc(&trxcon_fsm_def,</span><br><span style="color: hsl(120, 100%, 40%);">+ tall_trxcon_ctx, trxcon, LOGL_DEBUG, "main");</span><br><span style="color: hsl(120, 100%, 40%);">+ if (trxcon->fi == NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DAPP, LOGL_ERROR, "Failed to allocate trxcon FSM\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ goto exit;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span> /* Init L1CTL server */</span><br><span style="color: hsl(0, 100%, 40%);">- app_data.l1l = l1ctl_link_init(trxcon_fsm,</span><br><span style="color: hsl(120, 100%, 40%);">+ trxcon->l1l = l1ctl_link_init(trxcon->fi,</span><br><span> app_data.bind_socket);</span><br><span style="color: hsl(0, 100%, 40%);">- if (app_data.l1l == NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (trxcon->l1l == NULL)</span><br><span> goto exit;</span><br><span> </span><br><span> /* Init transceiver interface */</span><br><span style="color: hsl(0, 100%, 40%);">- app_data.trx = trx_if_open(trxcon_fsm,</span><br><span style="color: hsl(120, 100%, 40%);">+ trxcon->trx = trx_if_open(trxcon->fi,</span><br><span> app_data.trx_bind_ip, app_data.trx_remote_ip,</span><br><span> app_data.trx_base_port);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!app_data.trx)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (trxcon->trx == NULL)</span><br><span> goto exit;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* Bind L1CTL with TRX and vice versa */</span><br><span style="color: hsl(0, 100%, 40%);">- app_data.l1l->trx = app_data.trx;</span><br><span style="color: hsl(0, 100%, 40%);">- app_data.trx->l1l = app_data.l1l;</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Bind L1CTL with TRX and vice versa</span><br><span style="color: hsl(120, 100%, 40%);">+ * TODO: get rid of this, they should be abstracted */</span><br><span style="color: hsl(120, 100%, 40%);">+ trxcon->l1l->trx = trxcon->trx;</span><br><span style="color: hsl(120, 100%, 40%);">+ trxcon->trx->l1l = trxcon->l1l;</span><br><span> </span><br><span> /* Init scheduler */</span><br><span style="color: hsl(0, 100%, 40%);">- rc = sched_trx_init(app_data.trx, app_data.trx_fn_advance);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = sched_trx_init(trxcon->trx, app_data.trx_fn_advance);</span><br><span> if (rc)</span><br><span> goto exit;</span><br><span> </span><br><span>@@ -252,14 +260,21 @@</span><br><span> osmo_select_main(0);</span><br><span> </span><br><span> exit:</span><br><span style="color: hsl(0, 100%, 40%);">- /* Close active connections */</span><br><span style="color: hsl(0, 100%, 40%);">- l1ctl_link_shutdown(app_data.l1l);</span><br><span style="color: hsl(0, 100%, 40%);">- sched_trx_shutdown(app_data.trx);</span><br><span style="color: hsl(0, 100%, 40%);">- trx_if_close(app_data.trx);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (trxcon != NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Shutdown scheduler */</span><br><span style="color: hsl(120, 100%, 40%);">+ sched_trx_shutdown(trxcon->trx);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* Shutdown main state machine */</span><br><span style="color: hsl(0, 100%, 40%);">- if (trxcon_fsm != NULL)</span><br><span style="color: hsl(0, 100%, 40%);">- osmo_fsm_inst_free(trxcon_fsm);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Close active connections */</span><br><span style="color: hsl(120, 100%, 40%);">+ l1ctl_link_shutdown(trxcon->l1l);</span><br><span style="color: hsl(120, 100%, 40%);">+ trx_if_close(trxcon->trx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Shutdown main state machine */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (trxcon->fi != NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_fsm_inst_free(trxcon->fi);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Release trxcon instance */</span><br><span style="color: hsl(120, 100%, 40%);">+ talloc_free(trxcon);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span> /* Deinitialize logging */</span><br><span> log_fini();</span><br><span>diff --git a/src/host/trxcon/trxcon.h b/src/host/trxcon/trxcon.h</span><br><span>index 2259931..fa48d0b 100644</span><br><span>--- a/src/host/trxcon/trxcon.h</span><br><span>+++ b/src/host/trxcon/trxcon.h</span><br><span>@@ -32,3 +32,14 @@</span><br><span> TRXCON_EV_SCHED_DL_TF_IND, /*!< DL Traffic Frame INDication */</span><br><span> TRXCON_EV_SCHED_UL_TF_CONF, /*!< UL Traffic Frame CONFirmation */</span><br><span> };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Represents a single L1CTL <-> TRX connection */</span><br><span style="color: hsl(120, 100%, 40%);">+struct trxcon_inst {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Associated instance of trxcon_fsm */</span><br><span style="color: hsl(120, 100%, 40%);">+ struct osmo_fsm_inst *fi;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Connection with transceiver */</span><br><span style="color: hsl(120, 100%, 40%);">+ struct trx_instance *trx;</span><br><span style="color: hsl(120, 100%, 40%);">+ /* L1CTL server */</span><br><span style="color: hsl(120, 100%, 40%);">+ struct l1ctl_link *l1l;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12610">change 12610</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/12610"/><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: Id868dac54693be9a67527dba06a2b80c0ecb7bd4 </div>
<div style="display:none"> Gerrit-Change-Number: 12610 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>