我是靠谱客的博主 伶俐小猫咪,最近开发中收集的这篇文章主要介绍zigbee判断首次入网,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

 * Initialize the Nwk, Assoc device list, and binding NV Items
 *   returns ZSUCCESS if successful, NV_ITEM_UNINIT if item did not
 *          exist in NV, NV_OPER_FAILED if failure.
 */
extern byte NLME_InitNV( void ); //初始化NV

返回值如下:NV_ITEM_UNINIT表示没有入网,是首次入网 ;SUCESS表示已经入过网  

注意:获取网络状态时,路由器,协调器和终端都不一样

uint8 Get_NWK_Sta(void)
{
   uint8 nvStat;
   static uint8 Sta_Flag = OTHER_STA; //初始化为其它状态
   
   if(Sta_Flag == OTHER_STA)  //判断首次入网
   {
     nvStat = NLME_InitNV();
     
     if ( nvStat != NV_OPER_FAILED )  //如果没有初始化失败
     {
       if(nvStat == ZSUCCESS) //已经入过网
         Sta_Flag = JOIN_SECOND; //不进行首次入网判断
       else   //NV里面没东西
         Sta_Flag = JOIN_FIRST;
     }
   }
   else if(Sta_Flag == JOIN_FIRST)  //如果是首次入网判断是否连接上协调器/组网成功 时入网失败认为是NV没东西 
   {
     if(SampleApp_NwkState == DEV_ROUTER) //组网成功
     {
       Sta_Flag = JOIN_SUCESS;
     }
     if(SampleApp_NwkState == DEV_INIT)  //组网失败
     {
       Sta_Flag = JOIN_FIRST;
     }
   }
   else if(Sta_Flag == JOIN_SECOND)  //如果是二次入网判断是否连接上协调器/组网成功   
   {
     if(SampleApp_NwkState == DEV_ROUTER) //组网成功
     {
       Sta_Flag = JOIN_SUCESS;
     }
     if(SampleApp_NwkState == DEV_INIT)  //组网失败
     {
       Sta_Flag = JOIN_FAIL;
     }
   } 
   else if(Sta_Flag == JOIN_SUCESS) // 如果入网成功,判断后续会不会失去协调器,通过ACK方式判断
   {
    // if(SampleApp_NwkState == DEV_HOLD)
     if(AF_NOACK_Flag) //丢失协调器
       Sta_Flag = COOR_LOSE;
     else Sta_Flag = JOIN_SUCESS;
       
   }
   
   return Sta_Flag;
  
}
 

最后

以上就是伶俐小猫咪为你收集整理的zigbee判断首次入网的全部内容,希望文章能够帮你解决zigbee判断首次入网所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部