TI06版Zigbee协议栈学习03Word文档格式.docx
- 文档编号:4532742
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:7
- 大小:17.78KB
TI06版Zigbee协议栈学习03Word文档格式.docx
《TI06版Zigbee协议栈学习03Word文档格式.docx》由会员分享,可在线阅读,更多相关《TI06版Zigbee协议栈学习03Word文档格式.docx(7页珍藏版)》请在冰点文库上搜索。
//发送周期信息函数
voidWXL_SampleApp_SendFlashMessage(uint8*buffer);
//发送闪烁信息函数
voidWXL_SampleApp_SendData(uint8*buf,uint16addr,uint8Leng);
//发送数据函数
/************************************end***************************************/
/*********************************************************************
*@函数名SampleApp_Init
*
*函数功能:
任务初始化函数的功能是将该任务需要完成的功能的功能部件初始化,在每一个任务的初始化函数中,必须完成的功能是要得到设置任务的任务ID。
*@参数:
task_id-OS分配的任务ID.这个ID将用于发送数据和设置时间片.
*@returnnone
*/
voidWXL_SampleApp_Init(uint8task_id)
{
WXL_SampleApp_TaskID=task_id;
//任务ID
/**********************************************************/
/*通讯需要的参数*/
WXL_SampleApp_NwkState=DEV_INIT;
//网络类型
WXL_SampleApp_TransID=0;
//设置发送数据的方式和目的地址
//广播到所有的设备
WXL_SampleApp_All_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;
WXL_SampleApp_All_DstAddr.endPoint=WXL_SAMPLEAPP_ENDPOINT;
WXL_SampleApp_All_DstAddr.addr.shortAddr=0xFFFF;
//单播到一个设备
WXL_SampleApp_Single_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;
;
WXL_SampleApp_Single_DstAddr.endPoint=WXL_SAMPLEAPP_ENDPOINT;
//设置endpointdescription.端点描述符(endPoint,task_id,simpleDesc,latencyReq)
WXL_SampleApp_epDesc.endPoint=WXL_SAMPLEAPP_ENDPOINT;
WXL_SampleApp_epDesc.task_id=&
WXL_SampleApp_TaskID;
WXL_SampleApp_epDesc.simpleDesc
=(SimpleDescriptionFormat_t*)&
WXL_SampleApp_SimpleDesc;
WXL_SampleApp_epDesc.latencyReq=noLatencyReqs;
//登记endpointdescription到AF
afRegister(&
WXL_SampleApp_epDesc);
//登记所有的按键事件
RegisterForKeys(WXL_SampleApp_TaskID);
}
*@函数名WXL_SampleApp_ProcessEvent
一般应用任务事件处理,这个函数是处理所有的事件到任务,事件包括时间片、消息和所有其他使用者定义过的事件。
*events-处理的事件
uint16WXL_SampleApp_ProcessEvent(uint8task_id,uint16events)
afIncomingMSGPacket_t*MSGpkt;
if(events&
SYS_EVENT_MSG)//系统信息,
MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(WXL_SampleApp_TaskID);
//OS发送过来的信息,通过检测SYS_EVENT_MSG是否有事件信息发生。
while(MSGpkt)
switch(MSGpkt->
hdr.event)//判断事件类型
//按键事件
caseKEY_CHANGE:
//如果一个OSAL任务已经被登记注册,那么任何键盘事件都将接受一个KEY_CHANGE事件信息。
可能有如下几种方式得到键盘事件信息
//1)、HAL检测到键盘按下(中断或者查询检测)
//2)、HAL的OSAL任务检测到一个键盘状态改变调用回叫函数产生
//3)、OSAL键盘改变回叫函数发送一个OSAL系统事件信息(KEY_CHANGE)。
WXL_SampleApp_HandleKeys(((keyChange_t*)MSGpkt)->
keys);
break;
//接收数据事件
caseAF_INCOMING_MSG_CMD:
//接收数据的处理函数
WXL_SampleApp_MessageMSGCB(MSGpkt);
//网络状态发生变化事件
caseZDO_STATE_CHANGE:
WXL_SampleApp_NwkState=(devStates_t)(MSGpkt->
hdr.status);
//获取网络状态
if((WXL_SampleApp_NwkState==DEV_ZB_COORD)//判断网络类型
||(WXL_SampleApp_NwkState==DEV_ROUTER)
||(WXL_SampleApp_NwkState==DEV_END_DEVICE))
else
//设备不属于这个网络
default:
//释放存储器
osal_msg_deallocate((uint8*)MSGpkt);
//Next-如果有一个空闲的任务
//返回未处理的任务
return(events^SYS_EVENT_MSG);
//未处理的任务
return0;
*@函数名WXL_SampleApp_HandleKeys
*@函数功能:
处理所有的按键事件
*@参数:
keys-返回的按键值
*
voidWXL_SampleApp_HandleKeys(uint8keys)
if(keys&
HAL_KEY_SW_1)
if(WXL_SampleApp_NwkState==DEV_ZB_COORD)//如果是协调器
WXL_SampleApp_SendFlashMessage("
OPEN"
);
//发送数据
*@函数名:
WXL_SampleApp_MessageMSGCB
接收的数据处理量.根据不同的串ID实现不同的功能。
*@paramnone
*void*memcpy(void*dest,void*src,unsignedintcount);
功能:
由src所指内存区域复制count个字节到dest所指内存区域。
说明:
src和dest所指内存区域不能重叠,函数返回指向dest的指针
voidWXL_SampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt)
unsignedcharRx_Buf[4];
switch(pkt->
clusterId)
caseWXL_SAMPLEAPP_CLUSTERID1:
memcpy(Rx_Buf,pkt->
cmd.Data,3);
if((Rx_Buf[0]=='
Y'
)&
&
(Rx_Buf[1]=='
E'
(Rx_Buf[2]=='
S'
))
HalLedBlink(HAL_LED_4,4,50,250);
//小灯闪烁四次
}
caseWXL_SAMPLEAPP_CLUSTERID2:
cmd.Data,4);
O'
P'
(Rx_Buf[3]=='
N'
WXL_SampleApp_SendData("
YES"
pkt->
srcAddr.addr.shortAddr,3);
//以单播的方式回复信号
SampleApp_SendFlashMessage
广播发送一串数据。
voidWXL_SampleApp_SendFlashMessage(uint8*buffer)
if(AF_DataRequest(&
WXL_SampleApp_All_DstAddr,//发送的地址和模式
&
WXL_SampleApp_epDesc,//终端(比如操作系统中任务ID等)
WXL_SAMPLEAPP_CLUSTERID2,//发送串ID
4,//信息长度
buffer,//待发送的数据
WXL_SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS)==afStatus_SUCCESS)
//Erroroccurredinrequesttosend.
//**********************************************************************
//**以短地址方式发送数据
//buf:
:
发送的数据
//addr:
目的地址
//Leng:
数据长度
//********************************************************************
voidWXL_SampleApp_SendData(uint8*buf,uint16addr,uint8Leng)
WXL_SampleApp_Single_DstAddr.addr.shortAddr=addr;
WXL_SampleApp_Single_DstAddr,//发送的地址和模式
WXL_SAMPLEAPP_CLUSTERID1,//发送串ID
Leng,//信息长度
buf,//待发送的数据
WXL_SampleApp_TransID,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TI06 Zigbee 协议 学习 03