zigbee之SampleApp_ProcessEvent()
生活随笔
收集整理的這篇文章主要介紹了
zigbee之SampleApp_ProcessEvent()
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們修改代碼主要是在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( )函數可以創建一個綁定條目
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( )函數可以創建一個綁定條目
總結
以上是生活随笔為你收集整理的zigbee之SampleApp_ProcessEvent()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: app后台开发笔记-新手
- 下一篇: 网传梅姨照片竟然是电脑合成的!仅需 10