Merge changes from timing branch

- Convert chan_iax2 to use the timing API
 - Convert usage of timing in the core to use the timing API instead of
   using DAHDI directly
 - Make a change to the timing API to add the set_rate() function
 - change the timing core to use a rwlock
 - merge a timing implementation, res_timing_dahdi

Basic testing was successful using res_timing_dahdi


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@122523 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2008-06-13 12:45:50 +00:00
parent a68a160b75
commit b6457ecf4c
8 changed files with 319 additions and 161 deletions

View File

@@ -1423,9 +1423,17 @@ int ast_autoservice_start(struct ast_channel *chan);
*/
int ast_autoservice_stop(struct ast_channel *chan);
/* If built with dahdi optimizations, force a scheduled expiration on the
timer fd, at which point we call the callback function / data */
int ast_settimeout(struct ast_channel *c, int samples, int (*func)(const void *data), void *data);
/*!
* \brief Enable or disable timer ticks for a channel
*
* \arg rate number of timer ticks per second
*
* If timers are supported, force a scheduled expiration on the
* timer fd, at which point we call the callback function / data
*
* Call this function with a rate of 0 to turn off the timer ticks
*/
int ast_settimeout(struct ast_channel *c, unsigned int rate, int (*func)(const void *data), void *data);
/*! \brief Transfer a channel (if supported). Returns -1 on error, 0 if not supported
and 1 if supported and requested

View File

@@ -65,8 +65,9 @@ enum ast_timing_event {
* public API calls.
*/
struct ast_timing_functions {
int (*timer_open)(unsigned int rate);
int (*timer_open)(void);
void (*timer_close)(int handle);
int (*timer_set_rate)(int handle, unsigned int rate);
void (*timer_ack)(int handle, unsigned int quantity);
int (*timer_enable_continuous)(int handle);
int (*timer_disable_continuous)(int handle);
@@ -97,12 +98,10 @@ void ast_uninstall_timing_functions(void *handle);
/*!
* \brief Open a timing fd
*
* \arg rate number of timer ticks per second
*
* \retval -1 error, with errno set
* \retval >=0 success
*/
int ast_timer_open(unsigned int rate);
int ast_timer_open(void);
/*!
* \brief Close an opened timing handle
@@ -113,6 +112,21 @@ int ast_timer_open(unsigned int rate);
*/
void ast_timer_close(int handle);
/*!
* \brief Set the timing tick rate
*
* \arg handle timing fd returned from timer_open()
* \arg rate ticks per second, 0 turns the ticks off if needed
*
* Use this function if you want the timing fd to show input at a certain
* rate. The other alternative use of a timing fd, is using the continuous
* mode.
*
* \retval -1 error, with errno set
* \retval 0 success
*/
int ast_timer_set_rate(int handle, unsigned int rate);
/*!
* \brief Acknowledge a timer event
*