You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.2 KiB
131 lines
3.2 KiB
/*
|
|
*********************************************************************************************************
|
|
*
|
|
* 模块名称 : 消息处理模块
|
|
* 文件名称 : bsp_msg.c
|
|
* 版 本 : V1.0
|
|
* 说 明 : 消息处理机制。
|
|
*
|
|
* 修改记录 :
|
|
* 版本号 日期 作者 说明
|
|
* V1.0 2015-03-27 armfly 正式发布
|
|
*
|
|
* Copyright (C), 2014-2015, 安富莱电子 www.armfly.com
|
|
*
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#include "bsp_msg.h"
|
|
|
|
MSG_FIFO_T g_tMsg;
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* 函 数 名: bsp_InitMsg
|
|
* 功能说明: 初始化消息缓冲区
|
|
* 形 参: 无
|
|
* 返 回 值: 无
|
|
*********************************************************************************************************
|
|
*/
|
|
void bsp_InitMsg(void)
|
|
{
|
|
bsp_ClearMsg();
|
|
}
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* 函 数 名: bsp_PutMsg
|
|
* 功能说明: 将1个消息压入消息FIFO缓冲区。
|
|
* 形 参: _MsgCode : 消息代码
|
|
* _pMsgParam : 消息参数,一般指向某个特定的结构体. 或者是0
|
|
* 返 回 值: 无
|
|
*********************************************************************************************************
|
|
*/
|
|
void bsp_PutMsg(uint16_t _MsgCode, uint32_t _MsgParam)
|
|
{
|
|
g_tMsg.Buf[g_tMsg.Write].MsgCode = _MsgCode;
|
|
g_tMsg.Buf[g_tMsg.Write].MsgParam = _MsgParam;
|
|
|
|
if (++g_tMsg.Write >= MSG_FIFO_SIZE)
|
|
{
|
|
g_tMsg.Write = 0;
|
|
}
|
|
}
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* 函 数 名: bsp_GetMsg
|
|
* 功能说明: 从消息FIFO缓冲区读取一个键值。
|
|
* 形 参: 无
|
|
* 返 回 值: 0 表示无消息; 1表示有消息
|
|
*********************************************************************************************************
|
|
*/
|
|
uint8_t bsp_GetMsg(MSG_T *_pMsg)
|
|
{
|
|
MSG_T *p;
|
|
|
|
if (g_tMsg.Read == g_tMsg.Write)
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
p = &g_tMsg.Buf[g_tMsg.Read];
|
|
|
|
if (++g_tMsg.Read >= MSG_FIFO_SIZE)
|
|
{
|
|
g_tMsg.Read = 0;
|
|
}
|
|
|
|
_pMsg->MsgCode = p->MsgCode;
|
|
_pMsg->MsgParam = p->MsgParam;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* 函 数 名: bsp_GetMsg2
|
|
* 功能说明: 从消息FIFO缓冲区读取一个键值。使用第2个读指针。可以2个进程同时访问消息区。
|
|
* 形 参: 无
|
|
* 返 回 值: 0 表示无消息; 1表示有消息
|
|
*********************************************************************************************************
|
|
*/
|
|
uint8_t bsp_GetMsg2(MSG_T *_pMsg)
|
|
{
|
|
MSG_T *p;
|
|
|
|
if (g_tMsg.Read2 == g_tMsg.Write)
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
p = &g_tMsg.Buf[g_tMsg.Read2];
|
|
|
|
if (++g_tMsg.Read2 >= MSG_FIFO_SIZE)
|
|
{
|
|
g_tMsg.Read2 = 0;
|
|
}
|
|
|
|
_pMsg->MsgCode = p->MsgCode;
|
|
_pMsg->MsgParam = p->MsgParam;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* 函 数 名: bsp_ClearMsg
|
|
* 功能说明: 清空消息FIFO缓冲区
|
|
* 形 参:无
|
|
* 返 回 值: 无
|
|
*********************************************************************************************************
|
|
*/
|
|
void bsp_ClearMsg(void)
|
|
{
|
|
g_tMsg.Read = g_tMsg.Write;
|
|
}
|
|
|
|
/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
|
|
|