概述
* 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判断首次入网所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复