os_mailbox_query
所属模块:通信机制 | 类型:邮箱状态查询函数
函数简介
os_mailbox_query 用于查询当前邮箱中的数据内容,
是一种非阻塞的只读接口。
该函数不会修改邮箱状态,可用于状态监测或调试场景。
函数原型
int os_mailbox_query(u8 mid);
参数说明
| 参数 |
说明 |
| mid |
邮箱ID(0 ~ OS_RESOURCE_MAX-1) |
返回值
≥0 - 返回邮箱当前数据
-1 - 参数错误
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : mailbox_query.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include "hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 查询指定邮箱当前保存的数据。
*
* @param[in] mid 邮箱资源槽位编号。
*
* @return 邮箱当前保存的数据。
* @retval -1 邮箱资源槽位编号无效。
* @retval 其他 邮箱当前保存的数据。
*
* @note 该接口为非阻塞操作,仅读取邮箱当前数据,不修改邮箱状态。
*/
int os_mailbox_query(u8 mid)
{
if (mid >= OS_RESOURCE_MAX)
{
return -1;
}
return OS_RES[mid].value;
}
/*------------------------------------------------------------------------
| END OF FILE: mailbox_query.c |
------------------------------------------------------------------------*/
使用示例
void monitor_task()
{
int val = os_mailbox_query(0);
if(val != 0)
{
// 邮箱有数据
}
}
注意事项
该函数为非阻塞读取接口,不会改变邮箱状态。
若需清空邮箱,请使用 os_mailbox_clear。