• 消息队列msg_queue
    • tos_msg_queue_create
    • tos_msg_queue_destroy
    • tos_msg_queue_get
    • tos_msg_queue_put
    • tos_msg_queue_flush

    消息队列msg_queue

    tos_msg_queue_create

    1. k_err_t tos_msg_queue_create(k_msg_queue_t *msg_queue);
    • 功能描述

    创建一个消息队列。

    • 参数解释

    IN/OUT参数名描述[in]msg_queue消息队列句柄

    • 注意

    消息队列msg_queue与队列queue的区别在于,queue提供了一种同步等待机制。实际上,queue的底层实现采用了msg_queue的消息管理机制。

    • 返回值

    K_ERR_NONE 获取消息成功。

    K_ERR_OBJ_PTR_NULL msg_queue是空指针。

    tos_msg_queue_destroy

    1. k_err_t tos_msg_queue_destroy(k_msg_queue_t *msg_queue);
    • 功能描述

    销毁一个消息队列。

    • 参数解释

    IN/OUT参数名描述[in]msg_queue消息队列句柄

    • 返回值

    K_ERR_NONE 获取消息成功。

    K_ERR_OBJ_PTR_NULL msg_queue是空指针。

    K_ERR_OBJ_INVALID msg_queue指向的不是一个合法的消息队列。

    tos_msg_queue_get

    1. k_err_t tos_msg_queue_get(k_msg_queue_t *msg_queue, void **msg_addr, size_t *msg_size);
    • 功能描述

    从消息队列中获取一个消息。

    • 参数解释

    IN/OUT参数名描述[in]msg_queue消息队列句柄[out]msg_addr获取到的消息地址[out]msg_size获取到的消息长度

    • 返回值

    K_ERR_NONE 获取消息成功。

    K_ERR_QUEUE_EMPTY 消息队列已满。

    tos_msg_queue_put

    1. k_err_t tos_msg_queue_put(k_msg_queue_t *msg_queue, void *msg_addr, size_t msg_size, k_opt_t opt);
    • 功能描述

    向消息队列中放置一个消息。

    • 参数解释

    IN/OUT参数名描述[in]msg_queue消息队列句柄[in]msg_addr待放置的消息地址[in]msg_size待放置的消息长度[in]opt选项

    • 注意

    opt选项说明:

    1、TOS_OPT_MSG_PUT_LIFO

    ​消息队列采用last in first out策略,也就是最后入队的消息最先出队。

    2、TOS_OPT_MSG_PUT_FIFO

    ​消息队列采用first in first out策略,也就是最先入队的消息最先出队。

    • 返回值

    K_ERR_NONE 消息放置成功。

    K_ERR_QUEUE_FULL 消息队列已满。

    tos_msg_queue_flush

    1. void tos_msg_queue_flush(k_msg_queue_t *msg_queue);
    • 功能描述

    冲洗消息队列(复位消息队列,丢弃消息队列中的所有消息)。

    • 参数解释

    IN/OUT参数名描述[in]msg_queue消息队列句柄

    • 返回值