[svn-commits] russell: trunk r122923 - in /trunk: include/asterisk/ main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jun 16 07:48:12 CDT 2008


Author: russell
Date: Mon Jun 16 07:48:11 2008
New Revision: 122923

URL: http://svn.digium.com/view/asterisk?view=rev&rev=122923
Log:
 - Fix a typo in a timing API call
 - Convert the last part of channel.c over to use the timing API.  This would
   not have made a difference when using the dahdi timing module.  I noticed
   it when trying to use another timing source.  Oops.  :)

Modified:
    trunk/include/asterisk/timing.h
    trunk/main/channel.c
    trunk/main/timing.c

Modified: trunk/include/asterisk/timing.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/timing.h?view=diff&rev=122923&r1=122922&r2=122923
==============================================================================
--- trunk/include/asterisk/timing.h (original)
+++ trunk/include/asterisk/timing.h Mon Jun 16 07:48:11 2008
@@ -161,7 +161,7 @@
  * \retval -1 failure, with errno set
  * \retval 0 success
  */
-int ast_timer_disable_continous(int handle);
+int ast_timer_disable_continuous(int handle);
 
 /*!
  * \brief Determine timing event

Modified: trunk/main/channel.c
URL: http://svn.digium.com/view/asterisk/trunk/main/channel.c?view=diff&rev=122923&r1=122922&r2=122923
==============================================================================
--- trunk/main/channel.c (original)
+++ trunk/main/channel.c Mon Jun 16 07:48:11 2008
@@ -2407,26 +2407,17 @@
 		read(chan->alertpipe[0], &blah, sizeof(blah));
 	}
 
-#ifdef HAVE_DAHDI
-	if (chan->timingfd > -1 && chan->fdno == AST_TIMING_FD && ast_test_flag(chan, AST_FLAG_EXCEPTION)) {
-		int res;
+	if (chan->timingfd > -1 && chan->fdno == AST_TIMING_FD) {
+		enum ast_timing_event res;
 
 		ast_clear_flag(chan, AST_FLAG_EXCEPTION);
-		blah = -1;
-		/* IF we can't get event, assume it's an expired as-per the old interface */
-		res = ioctl(chan->timingfd, DAHDI_GETEVENT, &blah);
-		if (res)
-			blah = DAHDI_EVENT_TIMER_EXPIRED;
-
-		if (blah == DAHDI_EVENT_TIMER_PING) {
-			if (AST_LIST_EMPTY(&chan->readq) || !AST_LIST_NEXT(AST_LIST_FIRST(&chan->readq), frame_list)) {
-				/* Acknowledge PONG unless we need it again */
-				if (ioctl(chan->timingfd, DAHDI_TIMERPONG, &blah)) {
-					ast_log(LOG_WARNING, "Failed to pong timer on '%s': %s\n", chan->name, strerror(errno));
-				}
-			}
-		} else if (blah == DAHDI_EVENT_TIMER_EXPIRED) {
-			ioctl(chan->timingfd, DAHDI_TIMERACK, &blah);
+
+		res = ast_timer_get_event(chan->timingfd);
+
+		switch (res) {
+		case AST_TIMING_EVENT_EXPIRED:
+			ast_timer_ack(chan->timingfd, 1);
+
 			if (chan->timingfunc) {
 				/* save a copy of func/data before unlocking the channel */
 				int (*func)(const void *) = chan->timingfunc;
@@ -2434,18 +2425,22 @@
 				ast_channel_unlock(chan);
 				func(data);
 			} else {
-				blah = 0;
-				ioctl(chan->timingfd, DAHDI_TIMERCONFIG, &blah);
-				chan->timingdata = NULL;
+				ast_timer_set_rate(chan->timingfd, 0);
 				ast_channel_unlock(chan);
 			}
+
 			/* cannot 'goto done' because the channel is already unlocked */
 			return &ast_null_frame;
-		} else
-			ast_log(LOG_NOTICE, "No/unknown event '%d' on timer for '%s'?\n", blah, chan->name);
-	} else
-#endif
-	if (chan->fds[AST_GENERATOR_FD] > -1 && chan->fdno == AST_GENERATOR_FD) {
+
+		case AST_TIMING_EVENT_CONTINUOUS:
+			if (AST_LIST_EMPTY(&chan->readq) || 
+				!AST_LIST_NEXT(AST_LIST_FIRST(&chan->readq), frame_list)) {
+				ast_timer_disable_continuous(chan->timingfd);
+			}
+			break;
+		}
+
+	} else if (chan->fds[AST_GENERATOR_FD] > -1 && chan->fdno == AST_GENERATOR_FD) {
 		/* if the AST_GENERATOR_FD is set, call the generator with args
 		 * set to -1 so it can do whatever it needs to.
 		 */

Modified: trunk/main/timing.c
URL: http://svn.digium.com/view/asterisk/trunk/main/timing.c?view=diff&rev=122923&r1=122922&r2=122923
==============================================================================
--- trunk/main/timing.c (original)
+++ trunk/main/timing.c Mon Jun 16 07:48:11 2008
@@ -157,7 +157,7 @@
 	return result;
 }
 
-int ast_timer_disable_continous(int handle)
+int ast_timer_disable_continuous(int handle)
 {
 	int result;
 




More information about the svn-commits mailing list