<p>keith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sip-connector/+/15019">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Transmit Bearer Caps to MNCC with SETUP_REQ<br><br>This commit attempts to address:<br>https://osmocom.org/issues/1683<br><br>Section MT Call, Point 2.<br><br>Change-Id: I55cdc4b7c52730d7e998a1d692c7552fd07403ee<br>---<br>M src/mncc.c<br>1 file changed, 57 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-sip-connector refs/changes/19/15019/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mncc.c b/src/mncc.c</span><br><span>index ab2bed6..850377e 100644</span><br><span>--- a/src/mncc.c</span><br><span>+++ b/src/mncc.c</span><br><span>@@ -818,12 +818,63 @@</span><br><span> OSMO_STRLCPY_ARRAY(mncc.called.number, call->dest);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /*</span><br><span style="color: hsl(0, 100%, 40%);">- * TODO/FIXME:</span><br><span style="color: hsl(0, 100%, 40%);">- * - Determine/request channel based on offered audio codecs</span><br><span style="color: hsl(0, 100%, 40%);">- * - Screening, redirect?</span><br><span style="color: hsl(0, 100%, 40%);">- * - Synth. the bearer caps based on codecs?</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (call->initial->payload_type == 8) {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Full Rate GSM codec requested by SIP side. */</span><br><span style="color: hsl(120, 100%, 40%);">+ mncc.fields |= MNCC_F_BEARER_CAP;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm_mncc_bearer_cap bearer_cap = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .transfer = GSM48_BCAP_ITCAP_SPEECH,</span><br><span style="color: hsl(120, 100%, 40%);">+ .mode = GSM48_BCAP_TMOD_CIRCUIT,</span><br><span style="color: hsl(120, 100%, 40%);">+ .coding = GSM48_BCAP_CODING_GSM_STD,</span><br><span style="color: hsl(120, 100%, 40%);">+ .radio = GSM48_BCAP_RRQ_FR_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+ .speech_ver = { GSM48_BCAP_SV_FR,</span><br><span style="color: hsl(120, 100%, 40%);">+ -1},</span><br><span style="color: hsl(120, 100%, 40%);">+ .data = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .rate_adaption = GSM48_BCAP_RA_NONE,</span><br><span style="color: hsl(120, 100%, 40%);">+ .sig_access = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .async = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .nr_stop_bits = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .nr_data_bits = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .user_rate = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .parity = GSM48_BCAP_PAR_ODD,</span><br><span style="color: hsl(120, 100%, 40%);">+ .interm_rate = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .transp = GSM48_BCAP_TR_TRANSP,</span><br><span style="color: hsl(120, 100%, 40%);">+ .modem_type = GSM48_BCAP_MT_NONE,</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%);">+ mncc.bearer_cap = bearer_cap;</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%);">+ if (call->initial->payload_type == 98) {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* WARNING: Dynamic Payload type</span><br><span style="color: hsl(120, 100%, 40%);">+ * in use by current hacker...</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * FIXME: Store the codec name in the struct</span><br><span style="color: hsl(120, 100%, 40%);">+ * so that we can check it here.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+ mncc.fields |= MNCC_F_BEARER_CAP;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm_mncc_bearer_cap bearer_cap = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .transfer = GSM48_BCAP_ITCAP_SPEECH,</span><br><span style="color: hsl(120, 100%, 40%);">+ .mode = GSM48_BCAP_TMOD_CIRCUIT,</span><br><span style="color: hsl(120, 100%, 40%);">+ .coding = GSM48_BCAP_CODING_GSM_STD,</span><br><span style="color: hsl(120, 100%, 40%);">+ .radio = GSM48_BCAP_RRQ_DUAL_HR,</span><br><span style="color: hsl(120, 100%, 40%);">+ .speech_ver = { GSM48_BCAP_SV_AMR_H,</span><br><span style="color: hsl(120, 100%, 40%);">+ -1},</span><br><span style="color: hsl(120, 100%, 40%);">+ .data = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .rate_adaption = GSM48_BCAP_RA_NONE,</span><br><span style="color: hsl(120, 100%, 40%);">+ .sig_access = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .async = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .nr_stop_bits = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .nr_data_bits = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .user_rate = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .parity = GSM48_BCAP_PAR_ODD,</span><br><span style="color: hsl(120, 100%, 40%);">+ .interm_rate = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .transp = GSM48_BCAP_TR_TRANSP,</span><br><span style="color: hsl(120, 100%, 40%);">+ .modem_type = GSM48_BCAP_MT_NONE,</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%);">+ mncc.bearer_cap = bearer_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> rc = write(conn->fd.fd, &mncc, sizeof(mncc));</span><br><span> if (rc != sizeof(mncc)) {</span><br><span> LOGP(DMNCC, LOGL_ERROR, "Failed to send message leg(%u)\n",</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sip-connector/+/15019">change 15019</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-sip-connector/+/15019"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-sip-connector </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I55cdc4b7c52730d7e998a1d692c7552fd07403ee </div>
<div style="display:none"> Gerrit-Change-Number: 15019 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: keith <keith@rhizomatica.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>