zigbee之SampleApp_ProcessEvent()

fourierr發表於2017-07-08
我們修改程式碼主要是在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( )函式可以建立一個繫結條目

相關文章