- Fix a typo in a timing API call
authorRussell Bryant <russell@russellbryant.com>
Mon, 16 Jun 2008 12:48:11 +0000 (12:48 +0000)
committerRussell Bryant <russell@russellbryant.com>
Mon, 16 Jun 2008 12:48:11 +0000 (12:48 +0000)
 - 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.  :)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@122923 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/timing.h
main/channel.c
main/timing.c

index 6fe4927..f235e22 100644 (file)
@@ -161,7 +161,7 @@ int ast_timer_enable_continuous(int handle);
  * \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
index e73e121..f8b61ad 100644 (file)
@@ -2407,26 +2407,17 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
                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 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
                                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.
                 */
index 6de1a29..a1801fa 100644 (file)
@@ -157,7 +157,7 @@ int ast_timer_enable_continuous(int handle)
        return result;
 }
 
-int ast_timer_disable_continous(int handle)
+int ast_timer_disable_continuous(int handle)
 {
        int result;