aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_misdn.c
diff options
context:
space:
mode:
authorcrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-19 09:31:55 +0000
committercrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-19 09:31:55 +0000
commit2352c4bd84407434ed736ce077c99890d0e5feb5 (patch)
treef38e5772251751c033858e89a89561f0486ef2f6 /channels/chan_misdn.c
parent3e1ff91e220bad33c3f606e3df509dca37212ba1 (diff)
added 'astdtmf' option to allow configuring the asterisk dtmf detector instead of the mISDN_dsp ones. also added the patch from irroot #10190, so that dtmf tones detected by the asterisk detector are passed outofband to asterisk, to make any use of dtmf tones at all.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@83023 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_misdn.c')
-rw-r--r--channels/chan_misdn.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index 339cec0d9..6e299ef15 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -1764,6 +1764,7 @@ static int read_config(struct chan_list *ch, int orig)
port=bc->port;
+
chan_misdn_log(1,port,"read_config: Getting Config\n");
misdn_cfg_get( port, MISDN_CFG_LANGUAGE, lang, BUFFERSIZE);
@@ -1780,6 +1781,12 @@ static int read_config(struct chan_list *ch, int orig)
misdn_cfg_get( port, MISDN_CFG_SENDDTMF, &bc->send_dtmf, sizeof(int));
+ misdn_cfg_get( port, MISDN_CFG_ASTDTMF, &ch->ast_dsp, sizeof(int));
+
+ if (ch->ast_dsp) {
+ ch->ignore_dtmf=1;
+ }
+
misdn_cfg_get( port, MISDN_CFG_NEED_MORE_INFOS, &bc->need_more_infos, sizeof(int));
misdn_cfg_get( port, MISDN_CFG_NTTIMEOUT, &ch->nttimeout, sizeof(int));
@@ -1954,12 +1961,16 @@ static int read_config(struct chan_list *ch, int orig)
ch->overlap_dial_task = -1;
- if (ch->faxdetect) {
+ if (ch->faxdetect || ch->ast_dsp) {
misdn_cfg_get( port, MISDN_CFG_FAXDETECT_TIMEOUT, &ch->faxdetect_timeout, sizeof(ch->faxdetect_timeout));
if (!ch->dsp)
ch->dsp = ast_dsp_new();
- if (ch->dsp)
- ast_dsp_set_features(ch->dsp, DSP_FEATURE_DTMF_DETECT | DSP_FEATURE_FAX_DETECT);
+ if (ch->dsp) {
+ if (ch->faxdetect)
+ ast_dsp_set_features(ch->dsp, DSP_FEATURE_DTMF_DETECT | DSP_FEATURE_FAX_DETECT);
+ else
+ ast_dsp_set_features(ch->dsp, DSP_FEATURE_DTMF_DETECT );
+ }
if (!ch->trans)
ch->trans=ast_translator_build_path(AST_FORMAT_SLINEAR, AST_FORMAT_ALAW);
}
@@ -2649,9 +2660,10 @@ static struct ast_frame *process_ast_dsp(struct chan_list *tmp, struct ast_frame
if (tmp->ast_dsp && (f->subclass != 'f')) {
chan_misdn_log(2, tmp->bc->port, " --> * SEND: DTMF (AST_DSP) :%c\n", f->subclass);
+ //ast_queue_frame(tmp->ast, f);
}
- return frame;
+ return f;
}