1.PAN ID 和Channel(f8wConfig.cfg)
ZigBee協議使用一個14位的個域網標志符(PAN ID)來標識一個網絡。ZStack允許用兩種方式配置PAN ID,當ZDAPP_CONFIG_PAN_ID值不設置為0xFFFF時,那么設備建立或加入網絡的PAN ID由ZDAPP_CONFIG_PAN_ID指定;如果設置ZDAPP_CONFIG_PAN_ID為0xFFFF,那么設備就將建立或加入一個“最優”的網絡。
//-DZDAPP_CONFIG_PAN_ID=0xFFFF
-DZDAPP_CONFIG_PAN_ID=0x2FFF
IEEE 802.15.4/ZIGBEE規范在2.4G頻段上規定了16各頻道,用戶可以通過選擇DEFAULT_CHANLIST不同的值選擇不同的頻道,協議默認頻道為0xB即0x00000800。
//-DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A
//-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19
-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18
//-DDEFAULT_CHANLIST=0x00800000 // 23 - 0x17
//-DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16
//-DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15
//-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14
//-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13
//-DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12
//-DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11
//-DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10
//-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F
//-DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E
//-DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D
//-DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C
//-DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B
2.網絡結構(nwk_globals.h,nwk_globals.c)
STACK_PROFILE_ID定義為NETWORK_SPECIFIC、 HOME_CONTROLS、BUILDING_AUTOMATION、GENERIC_STAR、GENERIC_TREE中的一個,默認為HOME_CONTROLS,並據此設置MAX_NODE_DEPTH、NWK_MODE等,具體如下:
#define STACK_PROFILE_ID HOME_CONTROLS
#if ( STACK_PROFILE_ID == HOME_CONTROLS )
#define MAX_NODE_DEPTH 5
#define NWK_MODE NWK_MODE_MESH
#define SECURITY_MODE SECURITY_RESIDENTIAL
#if ( SECURE != 0 )
#define USE_NWK_SECURITY 1 // true or false
#define SECURITY_LEVEL 5
#else
#define USE_NWK_SECURITY 0 // true or false
#define SECURITY_LEVEL 0
#endif
網絡最大設備數設定:
#if !defined( NWK_MAX_DEVICE_LIST )
#define NWK_MAX_DEVICE_LIST 20 // Maximum number of devices in the
// Assoc/Device list.
#endif
路由器和終端設備數設定:
#if defined ( RTR_NWK )
// change this if using a different stack profile...
// Cskip array
uint16 *Cskip;
#if ( STACK_PROFILE_ID == HOME_CONTROLS )
byte CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0};
byte CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};
#elif ( STACK_PROFILE_ID == GENERIC_STAR )
byte CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
byte CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
byte CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
byte CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#endif // STACK_PROFILE_ID
#endif // RTR_NWK
其中CskipRtrs和CskipChldrn分別為每一級的最大路由器數和最大節點數,前者是后者的子集。