From: Russell Bryant Date: Wed, 9 May 2007 19:21:35 +0000 (+0000) Subject: Merged revisions 63612 via svnmerge from X-Git-Tag: 1.6.0-beta1~3^2~2714 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=56254ee49148abcaed6c01f0a84f6952d693a588;p=thirdparty%2Fasterisk.git Merged revisions 63612 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r63612 | russell | 2007-05-09 11:55:27 -0500 (Wed, 09 May 2007) | 5 lines Modify ast_senddigit_begin() to use the same assumptions used elsewhere in the code in that if a channel does not have a send_digit_begin() callback, it only cares about DTMF END events. (pointed out by Michael Neuhauser on the asterisk-dev list) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@63697 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/channel.c b/main/channel.c index 7bba24d8b6..17b85a20da 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2554,46 +2554,45 @@ int ast_sendtext(struct ast_channel *chan, const char *text) int ast_senddigit_begin(struct ast_channel *chan, char digit) { - int res = -1; + /* Device does not support DTMF tones, lets fake + * it by doing our own generation. */ + static const char* dtmf_tones[] = { + "941+1336", /* 0 */ + "697+1209", /* 1 */ + "697+1336", /* 2 */ + "697+1477", /* 3 */ + "770+1209", /* 4 */ + "770+1336", /* 5 */ + "770+1477", /* 6 */ + "852+1209", /* 7 */ + "852+1336", /* 8 */ + "852+1477", /* 9 */ + "697+1633", /* A */ + "770+1633", /* B */ + "852+1633", /* C */ + "941+1633", /* D */ + "941+1209", /* * */ + "941+1477" /* # */ + }; - if (chan->tech->send_digit_begin) - res = chan->tech->send_digit_begin(chan, digit); + if (!chan->tech->send_digit_begin) + return 0; - if (res) { - /* Device does not support DTMF tones, lets fake - * it by doing our own generation. */ - static const char* dtmf_tones[] = { - "941+1336", /* 0 */ - "697+1209", /* 1 */ - "697+1336", /* 2 */ - "697+1477", /* 3 */ - "770+1209", /* 4 */ - "770+1336", /* 5 */ - "770+1477", /* 6 */ - "852+1209", /* 7 */ - "852+1336", /* 8 */ - "852+1477", /* 9 */ - "697+1633", /* A */ - "770+1633", /* B */ - "852+1633", /* C */ - "941+1633", /* D */ - "941+1209", /* * */ - "941+1477" /* # */ - }; - - if (digit >= '0' && digit <='9') - ast_playtones_start(chan, 0, dtmf_tones[digit-'0'], 0); - else if (digit >= 'A' && digit <= 'D') - ast_playtones_start(chan, 0, dtmf_tones[digit-'A'+10], 0); - else if (digit == '*') - ast_playtones_start(chan, 0, dtmf_tones[14], 0); - else if (digit == '#') - ast_playtones_start(chan, 0, dtmf_tones[15], 0); - else { - /* not handled */ - if (option_debug) - ast_log(LOG_DEBUG, "Unable to generate DTMF tone '%c' for '%s'\n", digit, chan->name); - } + if (!chan->tech->send_digit_begin(chan, digit)) + return 0; + + if (digit >= '0' && digit <='9') + ast_playtones_start(chan, 0, dtmf_tones[digit-'0'], 0); + else if (digit >= 'A' && digit <= 'D') + ast_playtones_start(chan, 0, dtmf_tones[digit-'A'+10], 0); + else if (digit == '*') + ast_playtones_start(chan, 0, dtmf_tones[14], 0); + else if (digit == '#') + ast_playtones_start(chan, 0, dtmf_tones[15], 0); + else { + /* not handled */ + if (option_debug) + ast_log(LOG_DEBUG, "Unable to generate DTMF tone '%c' for '%s'\n", digit, chan->name); } return 0;