]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 63612 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Wed, 9 May 2007 19:21:35 +0000 (19:21 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 9 May 2007 19:21:35 +0000 (19:21 +0000)
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

main/channel.c

index 7bba24d8b68b491cdbdede6b08b04e896c59cf38..17b85a20da8eaf10ffe279ece45c85d381993213 100644 (file)
@@ -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;