zigbee学习总结

来源:互联网 发布:平面图纸制作软件 编辑:程序博客网 时间:2024/06/13 23:43
我们修改代码主要是在SampleApp.c这个文件夹下面,
SampleApp_ProcessEvent() 用户应用任务的事件处理函数 下面有两个系统消息


消息一SYS_EVENT_MSG 普通的事件
if ( events & SYS_EVENT_MSG ) //接收系统消息再进行判断
//接收属于本应用任务 SampleApp的消息,以 SampleApp_TaskID标记 
MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); 
case KEY_CHANGE://按键事件 
SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); 
case AF_INCOMING_MSG_CMD: //接收数据事件,调用函数 AF_DataRequest()接收数据
SampleApp_MessageMSGCB( MSGpkt );   //调用回调函数对收到的数据进行处理 
case ZDO_STATE_CHANGE: //只要网络状态发生改变,就通过 ZDO_STATE_CHANGE 事
件通知所有的任务。同时完成对协调器,路由器,终端的设置 
注意:ZDO_STATE_CHANGE只有当设备网络发生改变后才会触发,所以在此处可做一些
初始化工作;如果网络一直连接的就不会再次进入这个函数了,只执行1次。 


/*初始化定时事件,就是设置发送周期性事件*/
uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value )
//osal_start_timerEx三个参数决定着周期性发送数据的,timeout_value间隔时间ms,时间到
//才调用SampleApp_SendPeriodicMessage();


//判断SAMPLEAPP_SEND_PERIODIC_MSG_EVT有没有发生,如果有的就执行下面函数 
 
系统消息二SAMPLEAPP_SEND_PERIODIC_MSG_EVT// Send a message out - This event is generated by a timer
if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )//时间到了,就触发这个系统消息,然后调用发送周期函数


void SampleApp_SendPeriodicMessage( void )//周期发送函数
{
 调用afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
                           uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
                           uint8 options, uint8 radius )
  
}


void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//接受函数
void SampleApp_SendPeriodicMessage( void )//周期发送函数
SampleApp_SendFlashMessage(0);  //发数据  
调用 zb_BindDeviceRequest( )函数可以创建一个绑定条目
2 0
原创粉丝点击