From d8908a3f52d4d0c300479fcf88577768ebe149f8 Mon Sep 17 00:00:00 2001
From: "Kevin P. Fleming" <kpfleming@digium.com>
Date: Sun, 29 Jan 2006 05:15:24 +0000
Subject: [PATCH] add channel-driver callbacks for variable length DTMF teach
 ast_write() to call those new callbacks

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8851 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channel.c                  | 11 +++++++++--
 include/asterisk/channel.h |  6 ++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/channel.c b/channel.c
index 3db38b6cc1..c961f575c7 100644
--- a/channel.c
+++ b/channel.c
@@ -2295,9 +2295,16 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
 		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);
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h
index 59fbee5fff..4b120d8cf2 100644
--- a/include/asterisk/channel.h
+++ b/include/asterisk/channel.h
@@ -189,6 +189,12 @@ struct ast_channel_tech {
 	/*! 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);
-- 
GitLab