diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-09 16:55:27 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-09 16:55:27 +0000 |
commit | bb2608c817815697bf5eec6ee94eeac1d04855e1 (patch) | |
tree | 5710095af1ae13b22fe2e4594ee80daafeb53d5c /main | |
parent | 88456d6fa0cec68240f2778e0922fd8947599eb6 (diff) |
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: http://svn.digium.com/svn/asterisk/branches/1.4@63612 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r-- | main/channel.c | 75 |
1 files changed, 37 insertions, 38 deletions
diff --git a/main/channel.c b/main/channel.c index 1fae15efb..ac258dd34 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2594,46 +2594,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; |