网络管理

     地址分配机制

           Z-stack 采用分布式分配机制,整个网络架构由 3 个值决定

              Lm :网络的最大深度

              Cm :每个父设备拥有子设备数

              Rm :  每个父设备拥有路由子设备数

              d :  父设备所在的网络深度 

      则父设备下的路由器子设备间地址间隔:

          当 Rm = 1

                   1 + Cm * (Lm - d - 1)

           当 Rm != 1

                    Cskip(d)= (1 + Cm -Rm - Cm *(Rm) ^ (Lm - d -1))/(1 - Rm)

      父设备给路由器分配的网络地址

           Achild = Aparent + (n - 1) *Cskip(d) +1

      父设备给终端分配的网络地址

          Achild = Aparent + Rm * Cskip(d)+ n

 

    对协调器来说     

          Cskip(d)= (1 + Cm - Rm - Cm * (Rm) ^ (Lm - d - 1)) / (1 - Rm)

                            =  (1 + 5 - 3 - 5 * 3 ^ (3 - 0 - 1)) / (1 - 3)

                           = 21

           路由器地址 = Aparent + (n - 1)* Cskip(d) + 1

           路由器1 = 0x0000 + 1 = 0x0001

           路由器2 = 0x0000 + 21 + 1 = 0x0016

           路由器3 = 0x0000 + 2 * 21 +1 = 0x002b

 

           终端地址 = Aparent + Rm * Cskip(d) + n

           终端1 = 0x0000 + 3 * 21 +1 = 0x0040

           终端2 = 0x0000 + 3 * 21 + 2 = 0x0041

     对路由器1来说

          Cskip (d)= (1 + Cm - Rm - Cm * (Rm)^ (Lm - d - 1))/ (1 - Rm)

                             =  (1 + 5 - 3 - 5 * 3 ^ (3 - 1 - 1 )) / (1 - 3)

                             = 6

           路由地址 = Aparent + (n + 1) * Cskip(d)+1 

           路由器1 = 0x0001 + 1 = 0x0002

           路由器2 = 0x0001 + 1 + 6 = 0x0008

           路由器3 = 0x0001 + 1 + 2 * 6 = 0x000E

 

           终端地址 = Aparent + Rm* Cskip(d)+ n

           终端1 = 0x0001 + 3 * 6 + 1 = 0x0014

           终端2 = 0x0001 + 3 * 6 + 2 = 0x0015

网络管理函数

         在NLMED.h 里有 4 个网络管理函数

//返回指向本设备的MAC地址的指针
byte * NLME_GetExtAddr(void);

//返回本设备的网络地址
uint16 NLME_GetShortAddr(void);

//返回父设备的网络地址函数
uint16 NLME_GetCoordShortAddr(void);

//参数是指向父设备的MAC地址的指针
void NLME_GetCoordExtAddr(byte * buf);