]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm - improved default bearer-cap code
authorDavid Yat Sin <dyatsin@sangoma.com>
Wed, 19 Jan 2011 21:35:55 +0000 (16:35 -0500)
committerDavid Yat Sin <dyatsin@sangoma.com>
Wed, 19 Jan 2011 21:35:55 +0000 (16:35 -0500)
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c

index 9c1b7baf795f3e05ddb0d199f1bf394625638de1..64147b7d754669b9684a6a05ead383e27bfb5918 100644 (file)
@@ -881,18 +881,27 @@ ftdm_status_t set_bear_cap_ie(ftdm_channel_t *ftdmchan, BearCap *bearCap)
                bearCap->usrInfoLyr1Prot.pres = PRSNT_NODEF;
                bearCap->usrInfoLyr1Prot.val = sngisdn_get_usrInfoLyr1Prot_from_user(ftdmchan->caller_data.bearer_layer1);
 
-               if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN &&
-                       bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ULAW) {
-
-                       /* We are bridging a call from T1 */
-                       bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ALAW;
-
-               } else if (bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ALAW) {
-
-                       /* We are bridging a call from E1 */
-                       bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ULAW;
+               switch (signal_data->switchtype) {
+                       case SNGISDN_SWITCH_NI2:
+                       case SNGISDN_SWITCH_4ESS:
+                       case SNGISDN_SWITCH_5ESS:
+                       case SNGISDN_SWITCH_DMS100:
+                       case SNGISDN_SWITCH_INSNET:
+                               if (bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ALAW) {
+                                       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Overriding bearer cap to u-law\n");
+                                       bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ULAW;
+                               }
+                               break;
+                       case SNGISDN_SWITCH_EUROISDN:
+                       case SNGISDN_SWITCH_QSIG:
+                               if (bearCap->usrInfoLyr1Prot.val == IN_UIL1_G711ULAW) {
+                                       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Overriding bearer cap to a-law\n");
+                                       bearCap->usrInfoLyr1Prot.val = IN_UIL1_G711ALAW;
+                               }
+                               break;
                }
 
+               
                bearCap->lyr1Ident.pres = PRSNT_NODEF;
                bearCap->lyr1Ident.val = IN_L1_IDENT;
        }