zigbee总结

zigbee总结

zigbee分析如下

myApp_ProcessEvent 是event处理函数,从这里入手。

1. 首先当设备接入时 会触发 ZDO_STATE_CHANGE 事件,该事件回调函数

static void myApp_ZDOStateChange(afIncomingMSGPacket_t *pckt)

{

}

注意,这里面会区分当前设备,比如路由器,节点或者协调器,做不同的处理。

最常见是osal_start_timerEx 启动定时器,注意第二个参数event_id,这个在myApp_ProcessEvent会轮询。

if ( events & MYAPP_SEND_MSG_EVT )

{

}

2. 如果设备接入时,  ZDO_STATE_CHANGE 事件回调函数里面什么都不做, 那这时通常是等待别的触发,比如按键

KEY_CHANGE, 回调函数

myApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys )
{

}

以上两种回调函数里面多半会调用

myApp_SendxxxMessage,这个表示广播, 组播或者点播信息发布。

3. 一旦信息发布后,必然会触发AF_INCOMING_MSG_CMD, 信息接收,其回调函数

static void myApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
 
  switch ( pkt->clusterId )
  {
  case MYAPP_PERIODIC_CLUSTERID:// 广播
    myApp_Message_Periodic_Handler(pkt);
    break;
    
  case MYAPP_FLASH_CLUSTERID:  // 组播
    myApp_Message_Flash_Handler(pkt);
    break;
    
  case MYAPP_P2P_CLUSTERID:   // 点播
    myApp_Message_P2P_Handler(pkt);
    break;
    
  default:
    break;
  }
}

分别根据信息发布形式作对应处理。

以上,zigbee就完了。

猜你喜欢

转载自blog.csdn.net/qq_21353001/article/details/82841890