1 #ifndef __WILC_MSG_QUEUE_H__
2 #define __WILC_MSG_QUEUE_H__
5 * @file wilc_msgqueue.h
6 * @brief Message Queue OS wrapper functionality
8 * @sa wilc_oswrapper.h top level OS wrapper file
14 * @struct tstrWILC_MsgQueueAttrs
15 * @brief Message Queue API options
21 /* a dummy member to avoid compiler errors*/
24 } tstrWILC_MsgQueueAttrs;
27 * @brief Creates a new Message queue
28 * @details Creates a new Message queue, if the feature
29 * CONFIG_WILC_MSG_QUEUE_IPC_NAME is enabled and pstrAttrs->pcName
30 * is not Null, then this message queue can be used for IPC with
31 * any other message queue having the same name in the system
32 * @param[in,out] pHandle handle to the message queue object
33 * @param[in] pstrAttrs Optional attributes, NULL for default
34 * @return Error code indicating sucess/failure
35 * @sa tstrWILC_MsgQueueAttrs
40 WILC_ErrNo WILC_MsgQueueCreate(WILC_MsgQueueHandle *pHandle,
41 tstrWILC_MsgQueueAttrs *pstrAttrs);
45 * @brief Sends a message
46 * @details Sends a message, this API will block unil the message is
47 * actually sent or until it is timedout (as long as the feature
48 * CONFIG_WILC_MSG_QUEUE_TIMEOUT is enabled and pstrAttrs->u32Timeout
49 * is not set to WILC_OS_INFINITY), zero timeout is a valid value
50 * @param[in] pHandle handle to the message queue object
51 * @param[in] pvSendBuffer pointer to the data to send
52 * @param[in] u32SendBufferSize the size of the data to send
53 * @param[in] pstrAttrs Optional attributes, NULL for default
54 * @return Error code indicating sucess/failure
55 * @sa tstrWILC_MsgQueueAttrs
60 WILC_ErrNo WILC_MsgQueueSend(WILC_MsgQueueHandle *pHandle,
61 const void *pvSendBuffer, WILC_Uint32 u32SendBufferSize,
62 tstrWILC_MsgQueueAttrs *pstrAttrs);
66 * @brief Receives a message
67 * @details Receives a message, this API will block unil a message is
68 * received or until it is timedout (as long as the feature
69 * CONFIG_WILC_MSG_QUEUE_TIMEOUT is enabled and pstrAttrs->u32Timeout
70 * is not set to WILC_OS_INFINITY), zero timeout is a valid value
71 * @param[in] pHandle handle to the message queue object
72 * @param[out] pvRecvBuffer pointer to a buffer to fill with the received message
73 * @param[in] u32RecvBufferSize the size of the receive buffer
74 * @param[out] pu32ReceivedLength the length of received data
75 * @param[in] pstrAttrs Optional attributes, NULL for default
76 * @return Error code indicating sucess/failure
77 * @sa tstrWILC_MsgQueueAttrs
82 WILC_ErrNo WILC_MsgQueueRecv(WILC_MsgQueueHandle *pHandle,
83 void *pvRecvBuffer, WILC_Uint32 u32RecvBufferSize,
84 WILC_Uint32 *pu32ReceivedLength,
85 tstrWILC_MsgQueueAttrs *pstrAttrs);
89 * @brief Destroys an existing Message queue
90 * @param[in] pHandle handle to the message queue object
91 * @param[in] pstrAttrs Optional attributes, NULL for default
92 * @return Error code indicating sucess/failure
93 * @sa tstrWILC_MsgQueueAttrs
98 WILC_ErrNo WILC_MsgQueueDestroy(WILC_MsgQueueHandle *pHandle,
99 tstrWILC_MsgQueueAttrs *pstrAttrs);