
sample: examples\aliyun_iotkit_csdk_mqtt project: board\TencentOS_tiny_EVB_MX_Plus\KEIL\aliyun_iotkit_csdk_mqtt
97 lines
2.4 KiB
C
97 lines
2.4 KiB
C
/*
|
|
* Copyright (C) 2015-2019 Alibaba Group Holding Limited
|
|
*/
|
|
|
|
#ifndef _AT_CONN_MBOX_H_
|
|
#define _AT_CONN_MBOX_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define AT_CONN_NUM 3
|
|
#define AT_MBOX_TIMEOUT (~0)
|
|
#define AT_MBOX_EMPTY (~0)
|
|
|
|
typedef struct
|
|
{
|
|
void *hdl;
|
|
} at_mbox_t;
|
|
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Create a new mbox of specified size
|
|
* @param mbox pointer to the mbox to create
|
|
* @param size (minimum) number of messages in this mbox
|
|
* @return 0 if successful, another err_t otherwise
|
|
*/
|
|
int at_mbox_new(at_mbox_t *mbox, int size, void *buf);
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Post a message to an mbox - may not fail
|
|
* -> blocks if full, only used from tasks not from ISR
|
|
* @param mbox mbox to posts the message
|
|
* @param msg message to post (ATTENTION: can be NULL)
|
|
*/
|
|
void at_mbox_post(at_mbox_t *mbox, void *msg);
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Try to post a message to an mbox - may fail if full or ISR
|
|
* @param mbox mbox to posts the message
|
|
* @param msg message to post (ATTENTION: can be NULL)
|
|
*/
|
|
int at_mbox_trypost(at_mbox_t *mbox, void *msg);
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Wait for a new message to arrive in the mbox
|
|
* @param mbox mbox to get a message from
|
|
* @param msg pointer where the message is stored
|
|
* @param timeout maximum time (in milliseconds) to wait for a message (0 = wait forever)
|
|
* @return time (in milliseconds) waited for a message, may be 0 if not waited
|
|
or SYS_ARCH_TIMEOUT on timeout
|
|
* The returned time has to be accurate to prevent timer jitter!
|
|
*/
|
|
uint32_t at_mbox_fetch(at_mbox_t *mbox, void **msg, uint32_t timeout);
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Wait for a new message to arrive in the mbox
|
|
* @param mbox mbox to get a message from
|
|
* @param msg pointer where the message is stored
|
|
* @return 0 (milliseconds) if a message has been received
|
|
* or at_MBOX_EMPTY if the mailbox is empty
|
|
*/
|
|
uint32_t at_mbox_tryfetch(at_mbox_t *mbox, void **msg);
|
|
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Delete an mbox
|
|
* @param mbox mbox to delete
|
|
*/
|
|
void at_mbox_free(at_mbox_t *mbox);
|
|
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Check if an mbox is valid/allocated: return 1 for valid, 0 for invalid
|
|
*/
|
|
int at_mbox_valid(at_mbox_t *mbox);
|
|
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Set an mbox invalid so that sys_mbox_valid returns 0
|
|
*/
|
|
void at_mbox_set_invalid(at_mbox_t *mbox);
|
|
|
|
/**
|
|
* @ingroup sys_mbox
|
|
* Set an mbox invalid so that sys_mbox_valid returns 0
|
|
*/
|
|
int at_mbox_empty(at_mbox_t *mb);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /*_at_ARCH_H_*/
|
|
|
|
|