[asterisk-commits] murf: branch group/CDRbatch r78328 - in /team/group/CDRbatch: ./ apps/ channe...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Aug 6 20:19:02 CDT 2007


Author: murf
Date: Mon Aug  6 20:19:01 2007
New Revision: 78328

URL: http://svn.digium.com/view/asterisk?view=rev&rev=78328
Log:
Merged revisions 78286,78316 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/team/group/CDRfix5

........
r78286 | automerge | 2007-08-06 16:27:32 -0600 (Mon, 06 Aug 2007) | 1 line

automerge commit
........
r78316 | automerge | 2007-08-06 17:26:39 -0600 (Mon, 06 Aug 2007) | 1 line

automerge commit
........

Modified:
    team/group/CDRbatch/   (props changed)
    team/group/CDRbatch/apps/app_dial.c
    team/group/CDRbatch/apps/app_senddtmf.c
    team/group/CDRbatch/apps/app_test.c
    team/group/CDRbatch/channels/chan_agent.c
    team/group/CDRbatch/include/asterisk/app.h
    team/group/CDRbatch/include/asterisk/channel.h
    team/group/CDRbatch/main/app.c
    team/group/CDRbatch/main/channel.c
    team/group/CDRbatch/res/res_features.c

Propchange: team/group/CDRbatch/
------------------------------------------------------------------------------
    automerge = yes

Propchange: team/group/CDRbatch/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Propchange: team/group/CDRbatch/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Aug  6 20:19:01 2007
@@ -1,1 +1,1 @@
-/team/group/CDRfix5:1-78278
+/team/group/CDRfix5:1-78327

Modified: team/group/CDRbatch/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/apps/app_dial.c?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/apps/app_dial.c (original)
+++ team/group/CDRbatch/apps/app_dial.c Mon Aug  6 20:19:01 2007
@@ -1527,7 +1527,7 @@
 			/* Ok, done. stop autoservice */
 			res = ast_autoservice_stop(chan);
 			if (digit > 0 && !res)
-				res = ast_senddigit(chan, digit); 
+				res = ast_senddigit(chan, digit, 0); 
 			else
 				res = digit;
 
@@ -1696,12 +1696,12 @@
 			if (!ast_strlen_zero(dtmfcalled)) { 
 				if (option_verbose > 2)
 					ast_verbose(VERBOSE_PREFIX_3 "Sending DTMF '%s' to the called party.\n", dtmfcalled);
-				res = ast_dtmf_stream(peer,chan,dtmfcalled,250);
+				res = ast_dtmf_stream(peer,chan,dtmfcalled,250,0);
 			}
 			if (!ast_strlen_zero(dtmfcalling)) {
 				if (option_verbose > 2)
 					ast_verbose(VERBOSE_PREFIX_3 "Sending DTMF '%s' to the calling party.\n", dtmfcalling);
-				res = ast_dtmf_stream(chan,peer,dtmfcalling,250);
+				res = ast_dtmf_stream(chan,peer,dtmfcalling,250,0);
 			}
 		}
 		

Modified: team/group/CDRbatch/apps/app_senddtmf.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/apps/app_senddtmf.c?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/apps/app_senddtmf.c (original)
+++ team/group/CDRbatch/apps/app_senddtmf.c Mon Aug  6 20:19:01 2007
@@ -60,10 +60,11 @@
 {
 	int res = 0;
 	char *data;
-	int timeout;
+	int timeout = 0, duration = 0;
 	AST_DECLARE_APP_ARGS(args,
 		AST_APP_ARG(digits);
 		AST_APP_ARG(timeout);
+		AST_APP_ARG(duration);
 	);
 
 	if (ast_strlen_zero(vdata)) {
@@ -74,8 +75,11 @@
 	data = ast_strdupa(vdata);
 	AST_STANDARD_APP_ARGS(args, data);
 
-	timeout = atoi(args.timeout);
-	res = ast_dtmf_stream(chan, NULL, args.digits, timeout <= 0 ? 250 : timeout);
+	if (!ast_strlen_zero(args.timeout))
+		timeout = atoi(args.timeout);
+	if (!ast_strlen_zero(args.duration))
+		duration = atoi(args.duration);
+	res = ast_dtmf_stream(chan, NULL, args.digits, timeout <= 0 ? 250 : timeout, duration);
 
 	return res;
 }
@@ -102,7 +106,7 @@
 		return 0;
 	}
 
-	ast_senddigit(chan, *digit);
+	ast_senddigit(chan, *digit, 0);
 
 	ast_mutex_unlock(&chan->lock);
 	astman_send_ack(s, m, "DTMF successfully queued");

Modified: team/group/CDRbatch/apps/app_test.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/apps/app_test.c?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/apps/app_test.c (original)
+++ team/group/CDRbatch/apps/app_test.c Mon Aug  6 20:19:01 2007
@@ -148,7 +148,7 @@
 	res = ast_safe_sleep(chan, 3000);
 	/* Transmit client version */
 	if (!res)
-		res = ast_dtmf_stream(chan, NULL, "8378*1#", 0);
+		res = ast_dtmf_stream(chan, NULL, "8378*1#", 0, 0);
 	ast_debug(1, "Transmit client version\n");
 	
 	/* Read server version */
@@ -166,9 +166,9 @@
 		res = ast_safe_sleep(chan, 1000);
 	/* Send test id */
 	if (!res) 
-		res = ast_dtmf_stream(chan, NULL, testid, 0);		
+		res = ast_dtmf_stream(chan, NULL, testid, 0, 0);		
 	if (!res) 
-		res = ast_dtmf_stream(chan, NULL, "#", 0);		
+		res = ast_dtmf_stream(chan, NULL, "#", 0, 0);		
 	ast_debug(1, "send test identifier: %s\n", testid);
 
 	if ((res >=0) && (!ast_strlen_zero(testid))) {
@@ -198,7 +198,7 @@
 			if (!res) {
 				/* Step 2: Send "2" */
 				ast_debug(1, "TestClient: 2.  Send DTMF 2\n");
-				res = ast_dtmf_stream(chan, NULL, "2", 0);
+				res = ast_dtmf_stream(chan, NULL, "2", 0, 0);
 				fprintf(f, "SEND DTMF 2:   %s\n", (res < 0) ? "FAIL" : "PASS");
 				if (res > 0)
 					res = 0;
@@ -265,7 +265,7 @@
 			if (!res) {
 				/* Step 10: Send "7" */
 				ast_debug(1, "TestClient: 7.  Send DTMF 7\n");
-				res = ast_dtmf_stream(chan, NULL, "7", 0);
+				res = ast_dtmf_stream(chan, NULL, "7", 0, 0);
 				fprintf(f, "SEND DTMF 7:   %s\n", (res < 0) ? "FAIL" : "PASS");
 				if (res > 0)
 					res =0;
@@ -318,7 +318,7 @@
 
 	res = ast_safe_sleep(chan, 1000);
 	if (!res)
-		res = ast_dtmf_stream(chan, NULL, "8378*1#", 0);
+		res = ast_dtmf_stream(chan, NULL, "8378*1#", 0, 0);
 	if (res > 0)
 		res = 0;
 
@@ -344,7 +344,7 @@
 			if (!res) {
 				/* Step 1: Send "1" */
 				ast_debug(1, "TestServer: 1.  Send DTMF 1\n");
-				res = ast_dtmf_stream(chan, NULL, "1", 0);
+				res = ast_dtmf_stream(chan, NULL, "1", 0,0 );
 				fprintf(f, "SEND DTMF 1:   %s\n", (res < 0) ? "FAIL" : "PASS");
 				if (res > 0)
 					res = 0;
@@ -370,7 +370,7 @@
 			if (!res) {
 				/* Step 4: Send "4" */
 				ast_debug(1, "TestServer: 4.  Send DTMF 4\n");
-				res = ast_dtmf_stream(chan, NULL, "4", 0);
+				res = ast_dtmf_stream(chan, NULL, "4", 0, 0);
 				fprintf(f, "SEND DTMF 4:   %s\n", (res < 0) ? "FAIL" : "PASS");
 				if (res > 0)
 					res = 0;
@@ -397,7 +397,7 @@
 			if (!res) {
 				/* Step 7: Send "5" */
 				ast_debug(1, "TestServer: 7.  Send DTMF 5\n");
-				res = ast_dtmf_stream(chan, NULL, "5", 0);
+				res = ast_dtmf_stream(chan, NULL, "5", 0, 0);
 				fprintf(f, "SEND DTMF 5:   %s\n", (res < 0) ? "FAIL" : "PASS");
 				if (res > 0)
 					res = 0;
@@ -426,7 +426,7 @@
 			if (!res) {
 				/* Step 10: Send "8" */
 				ast_debug(1, "TestServer: 10.  Send DTMF 8\n");
-				res = ast_dtmf_stream(chan, NULL, "8", 0);
+				res = ast_dtmf_stream(chan, NULL, "8", 0, 0);
 				fprintf(f, "SEND DTMF 8:   %s\n", (res < 0) ? "FAIL" : "PASS");
 				if (res > 0)
 					res = 0;

Modified: team/group/CDRbatch/channels/chan_agent.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/channels/chan_agent.c?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/channels/chan_agent.c (original)
+++ team/group/CDRbatch/channels/chan_agent.c Mon Aug  6 20:19:01 2007
@@ -1350,6 +1350,7 @@
 	struct agent_pvt *p;
 	char *username = NULL;
 	char *loginChan = NULL;
+	char *talkingto = NULL;
 	char *talkingtoChan = NULL;
 	char *status = NULL;
 
@@ -1373,6 +1374,7 @@
 
 		if (!ast_strlen_zero(p->loginchan) && !p->chan) {
 			loginChan = p->loginchan;
+			talkingto = "n/a";
 			talkingtoChan = "n/a";
 			status = "AGENT_IDLE";
 			if (p->acknowledged) {
@@ -1382,14 +1384,20 @@
 		} else if (p->chan) {
 			loginChan = ast_strdupa(p->chan->name);
 			if (p->owner && p->owner->_bridge) {
-        			talkingtoChan = p->chan->cid.cid_num;
+				talkingto = p->chan->cid.cid_num;
+				if (ast_bridged_channel(p->owner))
+					talkingtoChan = ast_strdupa(ast_bridged_channel(p->owner)->name);
+				else
+					talkingtoChan = "n/a";
         			status = "AGENT_ONCALL";
 			} else {
-        			talkingtoChan = "n/a";
+				talkingto = "n/a";
+				talkingtoChan = "n/a";
         			status = "AGENT_IDLE";
 			}
 		} else {
 			loginChan = "n/a";
+			talkingto = "n/a";
 			talkingtoChan = "n/a";
 			status = "AGENT_LOGGEDOFF";
 		}
@@ -1401,9 +1409,10 @@
 			"LoggedInChan: %s\r\n"
 			"LoggedInTime: %d\r\n"
 			"TalkingTo: %s\r\n"
+			"TalkingToChan: %s\r\n"
 			"%s"
 			"\r\n",
-			p->agent, username, status, loginChan, (int)p->loginstart, talkingtoChan, idText);
+			p->agent, username, status, loginChan, (int)p->loginstart, talkingto, talkingtoChan, idText);
 		ast_mutex_unlock(&p->lock);
 	}
 	AST_LIST_UNLOCK(&agents);

Modified: team/group/CDRbatch/include/asterisk/app.h
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/include/asterisk/app.h?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/include/asterisk/app.h (original)
+++ team/group/CDRbatch/include/asterisk/app.h Mon Aug  6 20:19:01 2007
@@ -157,8 +157,9 @@
   \param between This is the number of milliseconds to wait in between each
                  DTMF digit.  If zero milliseconds is specified, then the
                  default value of 100 will be used.
+  \param duration This is the duration that each DTMF digit should have.
 */
-int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const char *digits, int between);
+int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const char *digits, int between, unsigned int duration);
 
 /*! Stream a filename (or file descriptor) as a generator. */
 int ast_linear_stream(struct ast_channel *chan, const char *filename, int fd, int allowoverride);

Modified: team/group/CDRbatch/include/asterisk/channel.h
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/include/asterisk/channel.h?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/include/asterisk/channel.h (original)
+++ team/group/CDRbatch/include/asterisk/channel.h Mon Aug  6 20:19:01 2007
@@ -951,9 +951,10 @@
  * Send a DTMF digit to a channel.
  * \param chan channel to act upon
  * \param digit the DTMF digit to send, encoded in ASCII
+ * \param duration the duration of the digit ending in ms
  * \return Returns 0 on success, -1 on failure
  */
-int ast_senddigit(struct ast_channel *chan, char digit);
+int ast_senddigit(struct ast_channel *chan, char digit, unsigned int duration);
 
 /*! \brief Send a DTMF digit to a channel
  * Send a DTMF digit to a channel.

Modified: team/group/CDRbatch/main/app.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/main/app.c?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/main/app.c (original)
+++ team/group/CDRbatch/main/app.c Mon Aug  6 20:19:01 2007
@@ -245,7 +245,7 @@
 	return 0;
 }
 
-int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const char *digits, int between) 
+int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const char *digits, int between, unsigned int duration) 
 {
 	const char *ptr;
 	int res = 0;
@@ -274,7 +274,7 @@
 				/* ignore return values if not supported by channel */
 				ast_indicate(chan, AST_CONTROL_FLASH);
 			} else
-				ast_senddigit(chan, *ptr);
+				ast_senddigit(chan, *ptr, duration);
 			/* pause between digits */
 			if ((res = ast_safe_sleep(chan, between)))
 				break;

Modified: team/group/CDRbatch/main/channel.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/main/channel.c?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/main/channel.c (original)
+++ team/group/CDRbatch/main/channel.c Mon Aug  6 20:19:01 2007
@@ -2263,9 +2263,10 @@
 			 * However, only let emulation be forced if the other end cares about BEGIN frames */
 			if ( ast_test_flag(chan, AST_FLAG_DEFER_DTMF) ||
 				(ast_test_flag(chan, AST_FLAG_EMULATE_DTMF) && !ast_test_flag(chan, AST_FLAG_END_DTMF_ONLY)) ) {
-				if (strlen(chan->dtmfq) < sizeof(chan->dtmfq) - 2)
+				if (strlen(chan->dtmfq) < sizeof(chan->dtmfq) - 2) {
+					ast_log(LOG_DTMF, "DTMF end '%c' put into dtmf queue on %s\n", f->subclass, chan->name);
 					chan->dtmfq[strlen(chan->dtmfq)] = f->subclass;
-				else
+				} else
 					ast_log(LOG_WARNING, "Dropping deferred DTMF digits on %s\n", chan->name);
 				ast_frfree(f);
 				f = &ast_null_frame;
@@ -2273,9 +2274,10 @@
 				if (!ast_tvzero(chan->dtmf_tv) && 
 				    ast_tvdiff_ms(ast_tvnow(), chan->dtmf_tv) < AST_MIN_DTMF_GAP) {
 					/* If it hasn't been long enough, defer this digit */
-					if (strlen(chan->dtmfq) < sizeof(chan->dtmfq) - 2)
+					if (strlen(chan->dtmfq) < sizeof(chan->dtmfq) - 2) {
+						ast_log(LOG_DTMF, "DTMF end '%c' put into dtmf queue on %s\n", f->subclass, chan->name);
 						chan->dtmfq[strlen(chan->dtmfq)] = f->subclass;
-					else
+					} else
 						ast_log(LOG_WARNING, "Dropping deferred DTMF digits on %s\n", chan->name);
 					ast_frfree(f);
 					f = &ast_null_frame;
@@ -2297,18 +2299,24 @@
 			} else {
 				struct timeval now = ast_tvnow();
 				if (ast_test_flag(chan, AST_FLAG_IN_DTMF)) {
+					ast_log(LOG_DTMF, "DTMF end accepted with begin '%c' on %s\n", f->subclass, chan->name);
 					ast_clear_flag(chan, AST_FLAG_IN_DTMF);
 					if (!f->len)
 						f->len = ast_tvdiff_ms(now, chan->dtmf_tv);
-				} else if (!f->len)
+				} else if (!f->len) {
+					ast_log(LOG_DTMF, "DTMF end accepted without begin '%c' on %s\n", f->subclass, chan->name);
 					f->len = AST_MIN_DTMF_DURATION;
+				}
 				if (f->len < AST_MIN_DTMF_DURATION) {
+					ast_log(LOG_DTMF, "DTMF end '%c' has duration %ld but want minimum %d, emulating on %s\n", f->subclass, f->len, AST_MIN_DTMF_DURATION, chan->name);
 					ast_set_flag(chan, AST_FLAG_EMULATE_DTMF);
 					chan->emulate_dtmf_digit = f->subclass;
 					chan->emulate_dtmf_duration = AST_MIN_DTMF_DURATION - f->len;
 					f = &ast_null_frame;
-				} else
+				} else {
+					ast_log(LOG_DTMF, "DTMF end passthrough '%c' on %s\n", f->subclass, chan->name);
 					chan->dtmf_tv = now;
+				}
 			}
 			break;
 		case AST_FRAME_DTMF_BEGIN:
@@ -2319,9 +2327,11 @@
 			      ast_tvdiff_ms(ast_tvnow(), chan->dtmf_tv) < AST_MIN_DTMF_GAP) ) {
 				ast_frfree(f);
 				f = &ast_null_frame;
+				ast_log(LOG_DTMF, "DTMF begin ignored '%c' on %s\n", f->subclass, chan->name);
 			} else {
 				ast_set_flag(chan, AST_FLAG_IN_DTMF);
 				chan->dtmf_tv = ast_tvnow();
+				ast_log(LOG_DTMF, "DTMF begin passthrough '%c' on %s\n", f->subclass, chan->name);
 			}
 			break;
 		case AST_FRAME_NULL:
@@ -2630,14 +2640,14 @@
 	return 0;
 }
 
-int ast_senddigit(struct ast_channel *chan, char digit)
+int ast_senddigit(struct ast_channel *chan, char digit, unsigned int duration)
 {
 	if (chan->tech->send_digit_begin) {
 		ast_senddigit_begin(chan, digit);
-		ast_safe_sleep(chan, AST_DEFAULT_EMULATE_DTMF_DURATION);
-	}
-	
-	return ast_senddigit_end(chan, digit, AST_DEFAULT_EMULATE_DTMF_DURATION);
+		ast_safe_sleep(chan, (duration >= AST_DEFAULT_EMULATE_DTMF_DURATION ? duration : AST_DEFAULT_EMULATE_DTMF_DURATION));
+	}
+	
+	return ast_senddigit_end(chan, digit, (duration >= AST_DEFAULT_EMULATE_DTMF_DURATION ? duration : AST_DEFAULT_EMULATE_DTMF_DURATION));
 }
 
 int ast_prod(struct ast_channel *chan)

Modified: team/group/CDRbatch/res/res_features.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRbatch/res/res_features.c?view=diff&rev=78328&r1=78327&r2=78328
==============================================================================
--- team/group/CDRbatch/res/res_features.c (original)
+++ team/group/CDRbatch/res/res_features.c Mon Aug  6 20:19:01 2007
@@ -1747,11 +1747,11 @@
 					   digits to come in for features. */
 					ast_debug(1, "Timed out for feature!\n");
 					if (!ast_strlen_zero(peer_featurecode)) {
-						ast_dtmf_stream(chan, peer, peer_featurecode, 0);
+						ast_dtmf_stream(chan, peer, peer_featurecode, 0, 0);
 						memset(peer_featurecode, 0, sizeof(peer_featurecode));
 					}
 					if (!ast_strlen_zero(chan_featurecode)) {
-						ast_dtmf_stream(peer, chan, chan_featurecode, 0);
+						ast_dtmf_stream(peer, chan, chan_featurecode, 0, 0);
 						memset(chan_featurecode, 0, sizeof(chan_featurecode));
 					}
 					if (f)
@@ -1843,7 +1843,7 @@
 			res = ast_feature_interpret(chan, peer, config, featurecode, sense);
 			switch(res) {
 			case FEATURE_RETURN_PASSDIGITS:
-				ast_dtmf_stream(other, who, featurecode, 0);
+				ast_dtmf_stream(other, who, featurecode, 0, 0);
 				/* Fall through */
 			case FEATURE_RETURN_SUCCESS:
 				memset(featurecode, 0, sizeof(chan_featurecode));




More information about the asterisk-commits mailing list