在这个协议栈中共有三种设备分别是协调器(COORDINATOR)、路由器(ROUTER)和终端节点(ENDDEVICE)。在ZGlobals.h 文件中;通过zgDeviceLogicalType 这个参数来设置设备的类型。
zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR //协调器;
zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER; //选择Zigbee 设备为路由器
zgDeviceLogicalType = ZG_DEVICETYPE_ENDDEVICE //选择Zigbee 设备为终端节点
zgDeviceLogicalType = ZG_DEVICETYPE_SOFT //选择Zigbee 设备变动的类型
[注: 设备定义为:ZG_DEVICETYPE_SOFT 这种类型的作用:当ZMAC_ASSOC_CAPINFO_FFD_TYPE定义为FFD时,设备启动上电检测网络中有无协调器,无协调器就申请成为协调器;如果有协调器,就成为路由器。当ZMAC_ASSOC_CAPINFO_FFD_TYPE定义别一种时,设备启动上电检测网络中有无协调器,无协调器就申请成为协调器;如果有协调器,就检测无路由器,成为路由器;如果有路由器,则申请成为别一个网络协调器。]
应用层最大只能发85个字节; ?
网络参数设置文件
f $PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wCoord.cfg -f $PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wRouter.cfg -f $PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wEndev.cfg
/* Common To All Applications */
-DCPU32MHZ // CC2430 运行的时钟
-DFORCE_MAC_NEAR // MAC code in NEAR
-DROOT=__near_func // MAC/ZMAC code in NEAR
-DMAC_CFG_APP_PENDING_QUEUE=TRUE
/* Coordinator Settings */
-DZDO_COORDINATOR // 协调器功能
-DRTR_NWK // 路由功能
/* Optional Settings */
-DBLINK_LEDS // LED 闪烁功能
/* Compiler keywords */
-DCONST="const __code"
-DGENERIC=__generic
? 获取网络地址>>返回物理地址
/* This function will return a pointer to the device's IEEE 64 bit address
*返回物理地址
* This function resides in nwk_util.c.
*/
extern byte *NLME_GetExtAddr( void );
>>? 返回物理地址
/* This function will return this device's 16 bit short address
*获取网络地址
extern uint16 NLME_GetShortAddr( void );
在nwk_globals.h文件修改
> 网络类型
#define STACK_PROFILE_ID GENERIC_STAR
HOME_CONTROLS 树状网络
GENERIC_STAR 星状网络
> 网络深度
#define MAX_NODE_DEPTH 网络路由深度
在F8wConfig.cfg; 修改网络通道和PAN ID
Zigbee的物理地址和网络地址作用
网络地址是用来在整个网络上识别某个设备的,工作于网络层。 物理地址用于局域网或相邻设备间寻址,工作于物理层。 物理地址(MAC地址)和IP地址同时存在是合理的。事实上,物理地址是“扁平”的,而IP地址是有层次的。打个比喻,在社会中,物理地址好比是一个人的身份证号码,它是唯一的;IP地址好比是一个人的地址,它是分层的,比如说“某某省某谋市某某区某某街道”,范围由大渐小,最终确定某一个人的确切地址。如果我要寄信给一个人,当然,我可以说“我要寄给一个人,他的身份证号码为***************”,理论上,该信的收件人是唯一的,收件人也应该收得到,但是当我把这封信交给邮递员,你是不是要邮递员跑遍全球去寻找这个人?(当然身份证号码中也有关于省市的信息,但谁能保证收件人不到其它省市出差,或是出国?)