blob: 94e0f7c0bed5db64430c62a95df277bc1620d634 [file] [log] [blame]
#ifndef __WILC_EVENT_H__
#define __WILC_EVENT_H__
/*!
* @file wilc_event.h
* @brief Event OS wrapper functionality
* @author syounan
* @sa wilc_oswrapper.h top level OS wrapper file
* @date 10 Oct 2010
* @version 1.0
*/
#ifndef CONFIG_WILC_EVENT_FEATURE
#error the feature CONFIG_WILC_EVENT_FEATURE must be supported to include this file
#endif
/*!
* @struct tstrWILC_TimerAttrs
* @brief Timer API options
* @author syounan
* @date 10 Oct 2010
* @version 1.0
*/
typedef struct {
/* a dummy member to avoid compiler errors*/
WILC_Uint8 dummy;
#ifdef CONFIG_WILC_EVENT_TIMEOUT
/*!<
* Timeout for use with WILC_EventWait, 0 to return immediately and
* WILC_OS_INFINITY to wait forever. default is WILC_OS_INFINITY
*/
WILC_Uint32 u32TimeOut;
#endif
} tstrWILC_EventAttrs;
/*!
* @brief Fills the WILC_TimerAttrs with default parameters
* @param[out] pstrAttrs structure to be filled
* @sa WILC_TimerAttrs
* @author syounan
* @date 10 Oct 2010
* @version 1.0
*/
static void WILC_EventFillDefault(tstrWILC_EventAttrs *pstrAttrs)
{
#ifdef CONFIG_WILC_EVENT_TIMEOUT
pstrAttrs->u32TimeOut = WILC_OS_INFINITY;
#endif
}
/*!
* @brief Creates a new Event
* @details the Event is an object that allows a thread to wait until an external
* event occuers, Event objects have 2 states, either TRIGGERED or
* UNTRIGGERED
* @param[out] pHandle handle to the newly created event object
* @param[in] pstrAttrs Optional attributes, NULL for default
* @return Error code indicating sucess/failure
* @sa tstrWILC_EventAttrs
* @author syounan
* @date 10 Oct 2010
* @version 1.0
*/
WILC_ErrNo WILC_EventCreate(WILC_EventHandle *pHandle, tstrWILC_EventAttrs *pstrAttrs);
/*!
* @brief Destroys a given event
* @details This will destroy a given event freeing any resources used by it
* if there are any thread blocked by the WILC_EventWait call the the
* behaviour is undefined
* @param[in] pHandle handle to the event object
* @param[in] pstrAttrs Optional attributes, NULL for default
* @return Error code indicating sucess/failure
* @sa tstrWILC_EventAttrs
* @author syounan
* @date 10 Oct 2010
* @version 1.0
*/
WILC_ErrNo WILC_EventDestroy(WILC_EventHandle *pHandle,
tstrWILC_EventAttrs *pstrAttrs);
/*!
* @brief Triggers a given event
* @details This function will set the given event into the TRIGGERED state,
* if the event is already in TRIGGERED, this function will have no
* effect
* @param[in] pHandle handle to the event object
* @param[in] pstrAttrs Optional attributes, NULL for default
* @return Error code indicating sucess/failure
* @sa tstrWILC_EventAttrs
* @author syounan
* @date 10 Oct 2010
* @version 1.0
*/
WILC_ErrNo WILC_EventTrigger(WILC_EventHandle *pHandle,
tstrWILC_EventAttrs *pstrAttrs);
/*!
* @brief waits until a given event is triggered
* @details This function will block the calling thread until the event becomes
* in the TRIGGERED state. the call will retun the event into the
* UNTRIGGERED state upon completion
* if multible threads are waiting on the same event at the same time,
* behaviour is undefined
* @param[in] pHandle handle to the event object
* @param[in] pstrAttrs Optional attributes, NULL for default
* @return Error code indicating sucess/failure
* @sa tstrWILC_EventAttrs
* @author syounan
* @date 10 Oct 2010
* @version 1.0
*/
WILC_ErrNo WILC_EventWait(WILC_EventHandle *pHandle,
tstrWILC_EventAttrs *pstrAttrs);
#endif