int AddrParse::GetCskip(int id)
{
int rel;
if(M_MAXROUTER<1 || M_MAXDEPTH<1||M_MAXCHILDREN<1)//if wrong para
return -1;
if(id<0||id>M_MAXDEPTH)
return -2;
if(M_MAXROUTER ==1)//if 1 the ari is esay
{
rel = 1+M_MAXCHILDREN*(M_MAXDEPTH-id-1);
}
else if(M_MAXROUTER>1)//
{
int ml_increase=M_MAXDEPTH-id-1;
int ml_temp = 1;
if(ml_increase == -1)
{
rel=(1+ M_MAXCHILDREN-M_MAXROUTER-M_MAXCHILDREN/M_MAXROUTER)/(1-M_MAXROUTER);
}
else if(ml_increase>-1)
{
for(;ml_increase>0;ml_increase--)
{
ml_temp=M_MAXROUTER*ml_temp;
}
rel = (1+ M_MAXCHILDREN-M_MAXROUTER-M_MAXCHILDREN*ml_temp)/(1-M_MAXROUTER);
}
}
if(rel>-1)
return rel;
else return 0;
}
但是要注意的是:输入参数id为网络深度,取值为1~Depth,而对于公式的计算却是按照0~Depth-1。实际若用到Zigbee的树形路由必须写这个函数,用来计算加入节点的ip地址,然后分配给这个节点,具体的实现代码就更为复杂了!
本文深入解读Zigbee网络层的主要功能,包括组建、加入、离开网络,路由建立与数据传输等,并详细阐述了树形网络中的角色分配与路由机制。重点解析分布式地址分配策略,包括地址分配机制、网络深度与地址间隔计算,通过实例展示如何在给定参数下分配网络地址。
3366

被折叠的 条评论
为什么被折叠?



