keith has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-sip-connector/+/15019


Change subject: Transmit Bearer Caps to MNCC with SETUP_REQ
......................................................................

Transmit Bearer Caps to MNCC with SETUP_REQ

This commit attempts to address:
https://osmocom.org/issues/1683

Section MT Call, Point 2.

Change-Id: I55cdc4b7c52730d7e998a1d692c7552fd07403ee
---
M src/mncc.c
1 file changed, 57 insertions(+), 6 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-sip-connector 
refs/changes/19/15019/1

diff --git a/src/mncc.c b/src/mncc.c
index ab2bed6..850377e 100644
--- a/src/mncc.c
+++ b/src/mncc.c
@@ -818,12 +818,63 @@
                OSMO_STRLCPY_ARRAY(mncc.called.number, call->dest);
        }

-       /*
-        * TODO/FIXME:
-        *  - Determine/request channel based on offered audio codecs
-        *  - Screening, redirect?
-        *  - Synth. the bearer caps based on codecs?
-        */
+       if (call->initial->payload_type == 8) {
+               /* Full Rate GSM codec requested by SIP side. */
+               mncc.fields |= MNCC_F_BEARER_CAP;
+               struct gsm_mncc_bearer_cap bearer_cap = {
+                       .transfer =     GSM48_BCAP_ITCAP_SPEECH,
+                       .mode =         GSM48_BCAP_TMOD_CIRCUIT,
+                       .coding =       GSM48_BCAP_CODING_GSM_STD,
+                       .radio =        GSM48_BCAP_RRQ_FR_ONLY,
+                       .speech_ver = { GSM48_BCAP_SV_FR,
+                                       -1},
+                       .data = {
+                               .rate_adaption =        GSM48_BCAP_RA_NONE,
+                               .sig_access =           0,
+                               .async =                0,
+                               .nr_stop_bits =         0,
+                               .nr_data_bits =         0,
+                               .user_rate =            0,
+                               .parity =               GSM48_BCAP_PAR_ODD,
+                               .interm_rate =          0,
+                               .transp =               GSM48_BCAP_TR_TRANSP,
+                               .modem_type =           GSM48_BCAP_MT_NONE,
+                       },
+               };
+               mncc.bearer_cap = bearer_cap;
+       }
+
+       if (call->initial->payload_type == 98) {
+               /* WARNING: Dynamic Payload type
+                * in use by current hacker...
+                *
+                * FIXME: Store the codec name in the struct
+                * so that we can check it here.
+               */
+               mncc.fields |= MNCC_F_BEARER_CAP;
+               struct gsm_mncc_bearer_cap bearer_cap = {
+                       .transfer =     GSM48_BCAP_ITCAP_SPEECH,
+                       .mode =         GSM48_BCAP_TMOD_CIRCUIT,
+                       .coding =       GSM48_BCAP_CODING_GSM_STD,
+                       .radio =        GSM48_BCAP_RRQ_DUAL_HR,
+                       .speech_ver = { GSM48_BCAP_SV_AMR_H,
+                                       -1},
+                       .data = {
+                               .rate_adaption =        GSM48_BCAP_RA_NONE,
+                               .sig_access =           0,
+                               .async =                0,
+                               .nr_stop_bits =         0,
+                               .nr_data_bits =         0,
+                               .user_rate =            0,
+                               .parity =               GSM48_BCAP_PAR_ODD,
+                               .interm_rate =          0,
+                               .transp =               GSM48_BCAP_TR_TRANSP,
+                               .modem_type =           GSM48_BCAP_MT_NONE,
+                       },
+               };
+               mncc.bearer_cap = bearer_cap;
+       }
+
        rc = write(conn->fd.fd, &mncc, sizeof(mncc));
        if (rc != sizeof(mncc)) {
                LOGP(DMNCC, LOGL_ERROR, "Failed to send message leg(%u)\n",

--
To view, visit https://gerrit.osmocom.org/c/osmo-sip-connector/+/15019
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-sip-connector
Gerrit-Branch: master
Gerrit-Change-Id: I55cdc4b7c52730d7e998a1d692c7552fd07403ee
Gerrit-Change-Number: 15019
Gerrit-PatchSet: 1
Gerrit-Owner: keith <ke...@rhizomatica.org>
Gerrit-MessageType: newchange

Reply via email to