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