forked from Mirrors/freeswitch
freetdm: ftdmod_gsm: Allow hwdtmf parameter to accept detect or generate
You can now enable the hardware dtmf detection and/or generation
This commit is contained in:
parent
ff935bb1d9
commit
4bc1b731cb
@ -913,6 +913,8 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling)
|
|||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
ftdm_channel_t *dchan = NULL;
|
ftdm_channel_t *dchan = NULL;
|
||||||
ftdm_channel_t *bchan = NULL;
|
ftdm_channel_t *bchan = NULL;
|
||||||
|
ftdm_bool_t hwdtmf_detect = FTDM_FALSE;
|
||||||
|
ftdm_bool_t hwdtmf_generate = FTDM_FALSE;
|
||||||
|
|
||||||
unsigned paramindex = 0;
|
unsigned paramindex = 0;
|
||||||
const char *var = NULL;
|
const char *var = NULL;
|
||||||
@ -999,8 +1001,15 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling)
|
|||||||
span_config.debug_mask = wat_str2debug(val);
|
span_config.debug_mask = wat_str2debug(val);
|
||||||
ftdm_log(FTDM_LOG_DEBUG, "Configuring GSM span %s with debug mask %s == 0x%X\n", span->name, val, span_config.debug_mask);
|
ftdm_log(FTDM_LOG_DEBUG, "Configuring GSM span %s with debug mask %s == 0x%X\n", span->name, val, span_config.debug_mask);
|
||||||
} else if (!strcasecmp(var, "hwdtmf")) {
|
} else if (!strcasecmp(var, "hwdtmf")) {
|
||||||
if (ftdm_true(val)) {
|
hwdtmf_detect = FTDM_FALSE;
|
||||||
span_config.hardware_dtmf = WAT_TRUE;
|
hwdtmf_generate = FTDM_FALSE;
|
||||||
|
if (!strcasecmp(val, "generate")) {
|
||||||
|
hwdtmf_generate = FTDM_TRUE;
|
||||||
|
} else if (!strcasecmp(val, "detect")) {
|
||||||
|
hwdtmf_detect = FTDM_TRUE;
|
||||||
|
} else if (!strcasecmp(val, "both") || ftdm_true(val)) {
|
||||||
|
hwdtmf_detect = FTDM_TRUE;
|
||||||
|
hwdtmf_generate = FTDM_TRUE;
|
||||||
} else {
|
} else {
|
||||||
span_config.hardware_dtmf = WAT_FALSE;
|
span_config.hardware_dtmf = WAT_FALSE;
|
||||||
}
|
}
|
||||||
@ -1015,11 +1024,15 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling)
|
|||||||
span->stop = ftdm_gsm_stop;
|
span->stop = ftdm_gsm_stop;
|
||||||
span->sig_read = NULL;
|
span->sig_read = NULL;
|
||||||
span->sig_write = NULL;
|
span->sig_write = NULL;
|
||||||
if (span_config.hardware_dtmf == WAT_TRUE) {
|
if (hwdtmf_detect || hwdtmf_generate) {
|
||||||
span->sig_send_dtmf = ftdm_gsm_send_dtmf;
|
span_config.hardware_dtmf = WAT_TRUE;
|
||||||
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_SIG_DTMF_DETECTION);
|
if (hwdtmf_generate) {
|
||||||
|
span->sig_send_dtmf = ftdm_gsm_send_dtmf;
|
||||||
|
}
|
||||||
|
if (hwdtmf_detect) {
|
||||||
|
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_SIG_DTMF_DETECTION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
span->signal_cb = sig_cb;
|
span->signal_cb = sig_cb;
|
||||||
span->signal_type = FTDM_SIGTYPE_GSM;
|
span->signal_type = FTDM_SIGTYPE_GSM;
|
||||||
span->signal_data = gsm_data;
|
span->signal_data = gsm_data;
|
||||||
|
Loading…
Reference in New Issue
Block a user