![Dean Lee](/assets/img/avatar_default.png)
rework line '#include "wilc_oswrapper.h"' it does not used anywhere after change own data type to common data type. Signed-off-by: Dean Lee <dean.lee@atmel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
130 lines
5.1 KiB
C
130 lines
5.1 KiB
C
#ifndef __WILC_TIMER_H__
|
|
#define __WILC_TIMER_H__
|
|
|
|
/*!
|
|
* @file wilc_timer.h
|
|
* @brief Timer (One Shot and Periodic) OS wrapper functionality
|
|
* @author syounan
|
|
* @sa wilc_oswrapper.h top level OS wrapper file
|
|
* @date 16 Aug 2010
|
|
* @version 1.0
|
|
*/
|
|
|
|
#include "wilc_platform.h"
|
|
#include "wilc_errorsupport.h"
|
|
|
|
typedef void (*tpfWILC_TimerFunction)(void *);
|
|
|
|
/*!
|
|
* @struct tstrWILC_TimerAttrs
|
|
* @brief Timer API options
|
|
* @author syounan
|
|
* @date 16 Aug 2010
|
|
* @version 1.0
|
|
*/
|
|
typedef struct {
|
|
/* a dummy member to avoid compiler errors*/
|
|
u8 dummy;
|
|
} tstrWILC_TimerAttrs;
|
|
|
|
/*!
|
|
* @brief Creates a new timer
|
|
* @details Timers are a useful utility to execute some callback function
|
|
* in the future.
|
|
* A timer object has 3 states : IDLE, PENDING and EXECUTING
|
|
* IDLE : initial timer state after creation, no execution for the
|
|
* callback function is planned
|
|
* PENDING : a request to execute the callback function is made
|
|
* using WILC_TimerStart.
|
|
* EXECUTING : the timer has expired and its callback is now
|
|
* executing, when execution is done the timer returns to PENDING
|
|
* if the feature CONFIG_WILC_TIMER_PERIODIC is enabled and
|
|
* the flag tstrWILC_TimerAttrs.bPeriodicTimer is set. otherwise the
|
|
* timer will return to IDLE
|
|
* @param[out] pHandle handle to the newly created timer object
|
|
* @param[in] pfEntry pointer to the callback function to be called when the
|
|
* timer expires
|
|
* the underlaying OS may put many restrictions on what can be
|
|
* called inside a timer's callback, as a general rule no blocking
|
|
* operations (IO or semaphore Acquision) should be perfomred
|
|
* It is recommended that the callback will be as short as possible
|
|
* and only flags other threads to do the actual work
|
|
* also it should be noted that the underlaying OS maynot give any
|
|
* guarentees on which contect this callback will execute in
|
|
* @param[in] pstrAttrs Optional attributes, NULL for default
|
|
* @return Error code indicating sucess/failure
|
|
* @sa WILC_TimerAttrs
|
|
* @author syounan
|
|
* @date 16 Aug 2010
|
|
* @version 1.0
|
|
*/
|
|
WILC_ErrNo WILC_TimerCreate(WILC_TimerHandle *pHandle,
|
|
tpfWILC_TimerFunction pfCallback, tstrWILC_TimerAttrs *pstrAttrs);
|
|
|
|
|
|
/*!
|
|
* @brief Destroys a given timer
|
|
* @details This will destroy a given timer freeing any resources used by it
|
|
* if the timer was PENDING Then must be cancelled as well(i.e.
|
|
* goes to IDLE, same effect as calling WILC_TimerCancel first)
|
|
* if the timer was EXECUTING then the callback will be allowed to
|
|
* finish first then all resources are freed
|
|
* @param[in] pHandle handle to the timer object
|
|
* @param[in] pstrAttrs Optional attributes, NULL for default
|
|
* @return Error code indicating sucess/failure
|
|
* @sa WILC_TimerAttrs
|
|
* @author syounan
|
|
* @date 16 Aug 2010
|
|
* @version 1.0
|
|
*/
|
|
WILC_ErrNo WILC_TimerDestroy(WILC_TimerHandle *pHandle,
|
|
tstrWILC_TimerAttrs *pstrAttrs);
|
|
|
|
/*!
|
|
* @brief Starts a given timer
|
|
* @details This function will move the timer to the PENDING state until the
|
|
* given time expires (in msec) then the callback function will be
|
|
* executed (timer in EXECUTING state) after execution is dene the
|
|
* timer either goes to IDLE (if bPeriodicTimer==false) or
|
|
* PENDING with same timeout value (if bPeriodicTimer==true)
|
|
* @param[in] pHandle handle to the timer object
|
|
* @param[in] u32Timeout timeout value in msec after witch the callback
|
|
* function will be executed. Timeout value of 0 is not allowed for
|
|
* periodic timers
|
|
* @param[in] pstrAttrs Optional attributes, NULL for default,
|
|
* set bPeriodicTimer to run this timer as a periodic timer
|
|
* @return Error code indicating sucess/failure
|
|
* @sa WILC_TimerAttrs
|
|
* @author syounan
|
|
* @date 16 Aug 2010
|
|
* @version 1.0
|
|
*/
|
|
WILC_ErrNo WILC_TimerStart(WILC_TimerHandle *pHandle, u32 u32Timeout, void *pvArg,
|
|
tstrWILC_TimerAttrs *pstrAttrs);
|
|
|
|
|
|
/*!
|
|
* @brief Stops a given timer
|
|
* @details This function will move the timer to the IDLE state cancelling
|
|
* any sheduled callback execution.
|
|
* if this function is called on a timer already in the IDLE state
|
|
* it will have no effect.
|
|
* if this function is called on a timer in EXECUTING state
|
|
* (callback has already started) it will wait until executing is
|
|
* done then move the timer to the IDLE state (which is trivial
|
|
* work if the timer is non periodic)
|
|
* @param[in] pHandle handle to the timer object
|
|
* @param[in] pstrAttrs Optional attributes, NULL for default,
|
|
* @return Error code indicating sucess/failure
|
|
* @sa WILC_TimerAttrs
|
|
* @author syounan
|
|
* @date 16 Aug 2010
|
|
* @version 1.0
|
|
*/
|
|
WILC_ErrNo WILC_TimerStop(WILC_TimerHandle *pHandle,
|
|
tstrWILC_TimerAttrs *pstrAttrs);
|
|
|
|
|
|
|
|
#endif
|