mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-06-06 13:08:55 +00:00
Merge remote-tracking branch 'smgfs/master'
This commit is contained in:
commit
dc61e08e5d
@ -40,14 +40,6 @@ library_includedir = $(prefix)/include
|
|||||||
|
|
||||||
INCS = -I$(FT_SRCDIR)/$(SRC)/include -I$(FT_SRCDIR)/$(SRC)/include/private
|
INCS = -I$(FT_SRCDIR)/$(SRC)/include -I$(FT_SRCDIR)/$(SRC)/include/private
|
||||||
|
|
||||||
if HAVE_SNG_SS7
|
|
||||||
INCS += -I/usr/include/sng_ss7
|
|
||||||
endif
|
|
||||||
|
|
||||||
if HAVE_SNG_ISDN
|
|
||||||
INCS += -I/usr/include/sng_isdn
|
|
||||||
endif
|
|
||||||
|
|
||||||
# we needed to separate CFLAGS in FTDM_COMPAT_CFLAGS and FTDM_CFLAGS due to -c99 which causes problems with wanpipe headers
|
# we needed to separate CFLAGS in FTDM_COMPAT_CFLAGS and FTDM_CFLAGS due to -c99 which causes problems with wanpipe headers
|
||||||
FTDM_COMPAT_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_COMPAT_CFLAGS@ @DEFS@
|
FTDM_COMPAT_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_COMPAT_CFLAGS@ @DEFS@
|
||||||
FTDM_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_CFLAGS@ @DEFS@
|
FTDM_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_CFLAGS@ @DEFS@
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
#include "private/ftdm_core.h"
|
#include "private/ftdm_core.h"
|
||||||
#include "ftmod_sangoma_isdn_user.h"
|
#include "ftmod_sangoma_isdn_user.h"
|
||||||
|
|
||||||
#include <sng_isdn.h>
|
#include <sng_isdn/sng_isdn.h>
|
||||||
|
|
||||||
/* Theoretical limit for MAX_SPANS_PER_NFAS_LINK is 31,
|
/* Theoretical limit for MAX_SPANS_PER_NFAS_LINK is 31,
|
||||||
but set to 8 for now to save some memory */
|
but set to 8 for now to save some memory */
|
||||||
|
@ -584,6 +584,20 @@ ftdm_status_t handle_con_cfm(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
|
case FTDM_CHANNEL_STATE_HANGUP_COMPLETE:
|
||||||
|
|
||||||
|
/* already hangup complete, just ignore it */
|
||||||
|
/*
|
||||||
|
* i.e. collision REL & ANM
|
||||||
|
* IAM ->
|
||||||
|
* <- ACM
|
||||||
|
* REL -> <- ANM (if REL gets processed first, ANM needs to be ignored)
|
||||||
|
* <- RLC
|
||||||
|
*/
|
||||||
|
SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Rx ANM/CON Ignoring it because we already hung up\n", sngss7_info->circuit->cic);
|
||||||
|
|
||||||
|
break;
|
||||||
|
/**************************************************************************/
|
||||||
default: /* incorrect state...reset the CIC */
|
default: /* incorrect state...reset the CIC */
|
||||||
|
|
||||||
SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Rx ANM/CON\n", sngss7_info->circuit->cic);
|
SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Rx ANM/CON\n", sngss7_info->circuit->cic);
|
||||||
@ -1267,7 +1281,7 @@ ftdm_status_t handle_resume(uint32_t suInstId, uint32_t spInstId, uint32_t circu
|
|||||||
|
|
||||||
/* confirm that the circuit is active on our side otherwise move to the next circuit */
|
/* confirm that the circuit is active on our side otherwise move to the next circuit */
|
||||||
if (!sngss7_test_flag(&g_ftdm_sngss7_data.cfg.isupCkt[i], SNGSS7_ACTIVE)) {
|
if (!sngss7_test_flag(&g_ftdm_sngss7_data.cfg.isupCkt[i], SNGSS7_ACTIVE)) {
|
||||||
SS7_ERROR("[CIC:%d]Circuit is not active yet, skipping!\n",g_ftdm_sngss7_data.cfg.isupCkt[i].cic);
|
ftdm_log(FTDM_LOG_DEBUG, "[CIC:%d]Circuit is not active yet, skipping!\n",g_ftdm_sngss7_data.cfg.isupCkt[i].cic);
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -532,9 +532,9 @@ move_along:
|
|||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
default:
|
default:
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != VOICE) {
|
||||||
SS7_ERROR("Rx %s on circuit that is not a voice CIC (%d)\n",
|
ftdm_log(FTDM_LOG_DEBUG, "Rx %s on circuit that is not a voice CIC (%d) (circuit:%d)\n",
|
||||||
DECODE_LCC_EVENT(evntType),
|
DECODE_LCC_EVENT(evntType),
|
||||||
g_ftdm_sngss7_data.cfg.isupCkt[circuit].cic);
|
g_ftdm_sngss7_data.cfg.isupCkt[circuit].cic, circuit);
|
||||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
#include "private/ftdm_core.h"
|
#include "private/ftdm_core.h"
|
||||||
|
|
||||||
#include "sng_ss7.h"
|
#include "sng_ss7/sng_ss7.h"
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
@ -60,6 +60,10 @@
|
|||||||
|
|
||||||
#define MAX_SIZEOF_SUBADDR_IE 24 /* as per Q931 4.5.9 */
|
#define MAX_SIZEOF_SUBADDR_IE 24 /* as per Q931 4.5.9 */
|
||||||
|
|
||||||
|
#define SNGSS7_SWITCHTYPE_ANSI(switchtype) (switchtype == LSI_SW_ANS88) || \
|
||||||
|
(switchtype == LSI_SW_ANS92) || \
|
||||||
|
(switchtype == LSI_SW_ANS95)
|
||||||
|
|
||||||
typedef struct ftdm2trillium
|
typedef struct ftdm2trillium
|
||||||
{
|
{
|
||||||
uint8_t ftdm_val;
|
uint8_t ftdm_val;
|
||||||
|
@ -92,8 +92,10 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
|
|||||||
/* Transmission medium requirements */
|
/* Transmission medium requirements */
|
||||||
copy_txMedReq_to_sngss7(ftdmchan, &iam.txMedReq);
|
copy_txMedReq_to_sngss7(ftdmchan, &iam.txMedReq);
|
||||||
|
|
||||||
/* User Service Info A */
|
if (SNGSS7_SWITCHTYPE_ANSI(g_ftdm_sngss7_data.cfg.isupCkt[sngss7_info->circuit->id].switchType)) {
|
||||||
copy_usrServInfoA_to_sngss7(ftdmchan, &iam.usrServInfoA);
|
/* User Service Info A */
|
||||||
|
copy_usrServInfoA_to_sngss7(ftdmchan, &iam.usrServInfoA);
|
||||||
|
}
|
||||||
|
|
||||||
/* Called Number information */
|
/* Called Number information */
|
||||||
copy_cdPtyNum_to_sngss7(ftdmchan, &iam.cdPtyNum);
|
copy_cdPtyNum_to_sngss7(ftdmchan, &iam.cdPtyNum);
|
||||||
|
@ -641,39 +641,32 @@ ftdm_status_t copy_txMedReq_to_sngss7(ftdm_channel_t *ftdmchan, SiTxMedReq *txMe
|
|||||||
|
|
||||||
ftdm_status_t copy_usrServInfoA_to_sngss7(ftdm_channel_t *ftdmchan, SiUsrServInfo *usrServInfoA)
|
ftdm_status_t copy_usrServInfoA_to_sngss7(ftdm_channel_t *ftdmchan, SiUsrServInfo *usrServInfoA)
|
||||||
{
|
{
|
||||||
sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
|
usrServInfoA->eh.pres = PRSNT_NODEF;
|
||||||
|
|
||||||
if ((g_ftdm_sngss7_data.cfg.isupCkt[sngss7_info->circuit->id].switchType == LSI_SW_ANS88) ||
|
usrServInfoA->infoTranCap.pres = PRSNT_NODEF;
|
||||||
(g_ftdm_sngss7_data.cfg.isupCkt[sngss7_info->circuit->id].switchType == LSI_SW_ANS92) ||
|
|
||||||
(g_ftdm_sngss7_data.cfg.isupCkt[sngss7_info->circuit->id].switchType == LSI_SW_ANS95)) {
|
|
||||||
|
|
||||||
usrServInfoA->eh.pres = PRSNT_NODEF;
|
usrServInfoA->infoTranCap.val = get_trillium_val(bc_cap_codes, ftdmchan->caller_data.bearer_capability, ITC_SPEECH);
|
||||||
|
|
||||||
usrServInfoA->infoTranCap.pres = PRSNT_NODEF;
|
usrServInfoA->cdeStand.pres = PRSNT_NODEF;
|
||||||
|
usrServInfoA->cdeStand.val = 0x0; /* ITU-T standardized coding */
|
||||||
usrServInfoA->infoTranCap.val = get_trillium_val(bc_cap_codes, ftdmchan->caller_data.bearer_capability, ITC_SPEECH);
|
usrServInfoA->tranMode.pres = PRSNT_NODEF;
|
||||||
|
usrServInfoA->tranMode.val = 0x0; /* circuit mode */
|
||||||
usrServInfoA->cdeStand.pres = PRSNT_NODEF;
|
usrServInfoA->infoTranRate0.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->cdeStand.val = 0x0; /* ITU-T standardized coding */
|
usrServInfoA->infoTranRate0.val = 0x10; /* 64kbps origination to destination */
|
||||||
usrServInfoA->tranMode.pres = PRSNT_NODEF;
|
usrServInfoA->infoTranRate1.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->tranMode.val = 0x0; /* circuit mode */
|
usrServInfoA->infoTranRate1.val = 0x10; /* 64kbps destination to origination */
|
||||||
usrServInfoA->infoTranRate0.pres = PRSNT_NODEF;
|
usrServInfoA->chanStruct.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->infoTranRate0.val = 0x10; /* 64kbps origination to destination */
|
usrServInfoA->chanStruct.val = 0x1; /* 8kHz integrity */
|
||||||
usrServInfoA->infoTranRate1.pres = PRSNT_NODEF;
|
usrServInfoA->config.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->infoTranRate1.val = 0x10; /* 64kbps destination to origination */
|
usrServInfoA->config.val = 0x0; /* point to point configuration */
|
||||||
usrServInfoA->chanStruct.pres = PRSNT_NODEF;
|
usrServInfoA->establish.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->chanStruct.val = 0x1; /* 8kHz integrity */
|
usrServInfoA->establish.val = 0x0; /* on demand */
|
||||||
usrServInfoA->config.pres = PRSNT_NODEF;
|
usrServInfoA->symmetry.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->config.val = 0x0; /* point to point configuration */
|
usrServInfoA->symmetry.val = 0x0; /* bi-directional symmetric */
|
||||||
usrServInfoA->establish.pres = PRSNT_NODEF;
|
usrServInfoA->usrInfLyr1Prot.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->establish.val = 0x0; /* on demand */
|
usrServInfoA->usrInfLyr1Prot.val = 0x2; /* G.711 ulaw */
|
||||||
usrServInfoA->symmetry.pres = PRSNT_NODEF;
|
usrServInfoA->rateMultiplier.pres = PRSNT_NODEF;
|
||||||
usrServInfoA->symmetry.val = 0x0; /* bi-directional symmetric */
|
usrServInfoA->rateMultiplier.val = 0x1; /* 1x rate multipler */
|
||||||
usrServInfoA->usrInfLyr1Prot.pres = PRSNT_NODEF;
|
|
||||||
usrServInfoA->usrInfLyr1Prot.val = 0x2; /* G.711 ulaw */
|
|
||||||
usrServInfoA->rateMultiplier.pres = PRSNT_NODEF;
|
|
||||||
usrServInfoA->rateMultiplier.val = 0x1; /* 1x rate multipler */
|
|
||||||
} /* if ANSI */
|
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2205,7 +2205,7 @@ static int ftmod_ss7_fill_in_mtp2_link(sng_mtp2_link_t *mtp2Link)
|
|||||||
if ( mtp2Link->t7 != 0 ) {
|
if ( mtp2Link->t7 != 0 ) {
|
||||||
g_ftdm_sngss7_data.cfg.mtp2Link[i].t7 = mtp2Link->t7;
|
g_ftdm_sngss7_data.cfg.mtp2Link[i].t7 = mtp2Link->t7;
|
||||||
}else {
|
}else {
|
||||||
g_ftdm_sngss7_data.cfg.mtp2Link[i].t7 = 40;
|
g_ftdm_sngss7_data.cfg.mtp2Link[i].t7 = 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user