<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-mgw/+/18745">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
tnt: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">endp: add name generator function for E1 endpoints<br><br>Currently the endpoint name that is generated for an E1 endpoint is not<br>correct. Let's add an endpoint name generator function that derives a<br>full endpoint name for a given E1 index<br><br>Change-Id: I70e0c3f96aa3947165f9926666815ee5614c8f57<br>Related: OS#2547<br>---<br>M src/libosmo-mgcp/mgcp_endp.c<br>1 file changed, 39 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libosmo-mgcp/mgcp_endp.c b/src/libosmo-mgcp/mgcp_endp.c</span><br><span>index 3f1213b..db8898b 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_endp.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_endp.c</span><br><span>@@ -41,6 +41,44 @@</span><br><span> MGCP_ENDPOINT_PREFIX_VIRTUAL_TRUNK, index, domain);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Generate E1 endpoint name from given numeric parameters */</span><br><span style="color: hsl(120, 100%, 40%);">+static char *gen_e1_epname(void *ctx, uint8_t trunk_nr, uint8_t ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t ss_nr)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ /* A 64k timeslot on an E1 line can be subdevied into the following</span><br><span style="color: hsl(120, 100%, 40%);">+ * subslot combinations:</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * subslot: offset:</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ ][ ][ 16k ][8k_subslot] 0</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ ][ 32k ][_subslot__][8k_subslot] 1</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ ][ subslot ][ 16k ][8k_subslot] 2</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ 64k ][__________][_subslot__][8k_subslot] 3</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ timeslot ][ ][ 16k ][8k_subslot] 4</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ ][ 32K ][_subslot__][8k_subslot] 5</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ ][ subslot ][ 16k ][8k_subslot] 6</span><br><span style="color: hsl(120, 100%, 40%);">+ * [ ][ ][ subslot ][8k_subslot] 7</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Since overlapping assignment of subsolts is not possible there is</span><br><span style="color: hsl(120, 100%, 40%);">+ * a limited set of subsolt assignments possible. The rates array</span><br><span style="color: hsl(120, 100%, 40%);">+ * lists the possible assignments as depicted above. Also each subslot</span><br><span style="color: hsl(120, 100%, 40%);">+ * assignment comes along with a bit offset in the E1 bitstream. The</span><br><span style="color: hsl(120, 100%, 40%);">+ * offsets arrays lists the bit offsets. */</span><br><span style="color: hsl(120, 100%, 40%);">+ static const uint8_t rates[] =</span><br><span style="color: hsl(120, 100%, 40%);">+ { 64, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 8, 8, 8 };</span><br><span style="color: hsl(120, 100%, 40%);">+ static const uint8_t offsets[] =</span><br><span style="color: hsl(120, 100%, 40%);">+ { 0, 0, 4, 0, 2, 4, 6, 0, 1, 2, 3, 4, 5, 6, 7 };</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int rate;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int offset;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(ss_nr < sizeof(rates));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ rate = rates[ss_nr];</span><br><span style="color: hsl(120, 100%, 40%);">+ offset = offsets[ss_nr];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return talloc_asprintf(ctx, "%s%u/s-%u/su%u-%u",</span><br><span style="color: hsl(120, 100%, 40%);">+ MGCP_ENDPOINT_PREFIX_E1_TRUNK, trunk_nr, ts_nr, rate, offset);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! allocate an endpoint and set default values.</span><br><span> * \param[in] trunk configuration.</span><br><span> * \param[in] name endpoint index.</span><br><span>@@ -64,11 +102,8 @@</span><br><span> endp->name = gen_virtual_epname(endp, trunk->cfg->domain, index);</span><br><span> break;</span><br><span> case MGCP_TRUNK_E1:</span><br><span style="color: hsl(0, 100%, 40%);">- /* FIXME: E1 trunk implementation is work in progress, this endpoint</span><br><span style="color: hsl(0, 100%, 40%);">- * name is incomplete (subslots) */</span><br><span style="color: hsl(0, 100%, 40%);">- endp->name = talloc_asprintf(endp, "%s-1/%x", MGCP_ENDPOINT_PREFIX_E1_TRUNK, index);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLMGCP, LOGL_FATAL, "E1 trunks not implemented!\n");</span><br><span> endp->type = &ep_typeset.rtp;</span><br><span style="color: hsl(120, 100%, 40%);">+ endp->name = gen_e1_epname(endp, trunk->trunk_nr, index / 15, index % 15);</span><br><span> break;</span><br><span> default:</span><br><span> osmo_panic("Cannot allocate unimplemented trunk type %d! %s:%d\n",</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-mgw/+/18745">change 18745</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-mgw/+/18745"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I70e0c3f96aa3947165f9926666815ee5614c8f57 </div>
<div style="display:none"> Gerrit-Change-Number: 18745 </div>
<div style="display:none"> Gerrit-PatchSet: 7 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@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: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: tnt <tnt@246tNt.com> </div>
<div style="display:none"> Gerrit-CC: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>