ast_log(LOG_WARNING, "Don't know how to handle control frames yet\n");
break;
case AST_FRAME_DTMF_BEGIN:
+ if (chan->tech->send_digit_begin)
+ res = chan->tech->send_digit_begin(chan, fr->subclass);
+ else
+ res = 0;
+ break;
case AST_FRAME_DTMF_END:
- /* nothing to do with these yet */
- res = 0;
+ if (chan->tech->send_digit_end)
+ res = chan->tech->send_digit_end(chan);
+ else
+ res = 0;
break;
case AST_FRAME_DTMF:
ast_clear_flag(chan, AST_FLAG_BLOCKING);
/*! Send a literal DTMF digit */
int (* const send_digit)(struct ast_channel *chan, char digit);
+ /*! Start sending a literal DTMF digit */
+ int (* const send_digit_begin)(struct ast_channel *chan, char digit);
+
+ /*! Stop sending the last literal DTMF digit */
+ int (* const send_digit_end)(struct ast_channel *chan);
+
/*! Call a given phone number (address, etc), but don't
take longer than timeout seconds to do so. */
int (* const call)(struct ast_channel *chan, char *addr, int timeout);