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
1.6.0
Russell Bryant 18 years ago
parent 1804232548
commit 56254ee491

@ -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;

Loading…
Cancel
Save