[asterisk-commits] tilghman: trunk r61324 - in /trunk: configs/ include/asterisk/ main/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue Apr 10 16:55:27 MST 2007


Author: tilghman
Date: Tue Apr 10 18:55:26 2007
New Revision: 61324

URL: http://svn.digium.com/view/asterisk?view=rev&rev=61324
Log:
Issue 6082 - New DTMF event for manager

Modified:
    trunk/configs/manager.conf.sample
    trunk/include/asterisk/manager.h
    trunk/main/channel.c
    trunk/main/manager.c

Modified: trunk/configs/manager.conf.sample
URL: http://svn.digium.com/view/asterisk/trunk/configs/manager.conf.sample?view=diff&rev=61324&r1=61323&r2=61324
==============================================================================
--- trunk/configs/manager.conf.sample (original)
+++ trunk/configs/manager.conf.sample Tue Apr 10 18:55:26 2007
@@ -58,5 +58,5 @@
 ; writetimeout = 100
 ;
 ; Authorization for various classes 
-;read = system,call,log,verbose,command,agent,user,config
-;write = system,call,log,verbose,command,agent,user,config
+;read = system,call,log,verbose,command,agent,user,config,dtmf
+;write = system,call,log,verbose,command,agent,user,config,dtmf

Modified: trunk/include/asterisk/manager.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/manager.h?view=diff&rev=61324&r1=61323&r2=61324
==============================================================================
--- trunk/include/asterisk/manager.h (original)
+++ trunk/include/asterisk/manager.h Tue Apr 10 18:55:26 2007
@@ -55,6 +55,7 @@
 #define EVENT_FLAG_AGENT		(1 << 5) /* Ability to read/set agent info */
 #define EVENT_FLAG_USER                 (1 << 6) /* Ability to read/set user info */
 #define EVENT_FLAG_CONFIG		(1 << 7) /* Ability to modify configurations */
+#define EVENT_FLAG_DTMF  		(1 << 8) /* Ability to read DTMF events */
 
 /* Export manager structures */
 #define AST_MAX_MANHEADERS 128

Modified: trunk/main/channel.c
URL: http://svn.digium.com/view/asterisk/trunk/main/channel.c?view=diff&rev=61324&r1=61323&r2=61324
==============================================================================
--- trunk/main/channel.c (original)
+++ trunk/main/channel.c Tue Apr 10 18:55:26 2007
@@ -2030,6 +2030,19 @@
 	return 0; /* Time is up */
 }
 
+static void send_dtmf_event(const struct ast_channel *chan, const char *direction, const char digit, const char *begin, const char *end)
+{
+	manager_event(EVENT_FLAG_DTMF,
+			"DTMF",
+			"Channel: %s\r\n"
+			"Uniqueid: %s\r\n"
+			"Digit: %c\r\n"
+			"Direction: %s\r\n"
+			"Begin: %s\r\n"
+			"End: %s\r\n",
+			chan->name, chan->uniqueid, digit, direction, begin, end);
+}
+
 static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
 {
 	struct ast_frame *f = NULL;	/* the return value */
@@ -2196,6 +2209,7 @@
 			}
 			break;
 		case AST_FRAME_DTMF_END:
+			send_dtmf_event(chan, "Received", f->subclass, "No", "Yes");
 			ast_log(LOG_DTMF, "DTMF end '%c' received on %s, duration %ld ms\n", f->subclass, chan->name, f->len);
 			/* Queue it up if DTMF is deffered, or if DTMF emulation is forced.
 			 * However, only let emulation be forced if the other end cares about BEGIN frames */
@@ -2223,6 +2237,7 @@
 			}
 			break;
 		case AST_FRAME_DTMF_BEGIN:
+			send_dtmf_event(chan, "Received", f->subclass, "Yes", "No");
 			ast_log(LOG_DTMF, "DTMF begin '%c' received on %s\n", f->subclass, chan->name);
 			if (ast_test_flag(chan, AST_FLAG_DEFER_DTMF | AST_FLAG_END_DTMF_ONLY)) {
 				ast_frfree(f);
@@ -2617,6 +2632,7 @@
 			chan->tech->indicate(chan, fr->subclass, fr->data, fr->datalen);
 		break;
 	case AST_FRAME_DTMF_BEGIN:
+		send_dtmf_event(chan, "Sent", fr->subclass, "Yes", "No");
 		ast_clear_flag(chan, AST_FLAG_BLOCKING);
 		ast_channel_unlock(chan);
 		res = ast_senddigit_begin(chan, fr->subclass);
@@ -2624,6 +2640,7 @@
 		CHECK_BLOCKING(chan);
 		break;
 	case AST_FRAME_DTMF_END:
+		send_dtmf_event(chan, "Sent", fr->subclass, "No", "Yes");
 		ast_clear_flag(chan, AST_FLAG_BLOCKING);
 		ast_channel_unlock(chan);
 		res = ast_senddigit_end(chan, fr->subclass, fr->len);

Modified: trunk/main/manager.c
URL: http://svn.digium.com/view/asterisk/trunk/main/manager.c?view=diff&rev=61324&r1=61323&r2=61324
==============================================================================
--- trunk/main/manager.c (original)
+++ trunk/main/manager.c Tue Apr 10 18:55:26 2007
@@ -308,6 +308,7 @@
 	{ EVENT_FLAG_AGENT, "agent" },
 	{ EVENT_FLAG_USER, "user" },
 	{ EVENT_FLAG_CONFIG, "config" },
+	{ EVENT_FLAG_DTMF, "dtmf" },
 	{ -1, "all" },
 	{ 0, "none" },
 };



More information about the asterisk-commits mailing list