aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-05-09 16:55:27 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-05-09 16:55:27 +0000
commitbb2608c817815697bf5eec6ee94eeac1d04855e1 (patch)
tree5710095af1ae13b22fe2e4594ee80daafeb53d5c /main
parent88456d6fa0cec68240f2778e0922fd8947599eb6 (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.c75
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;