参考:ZIGBEE 工程内区分终端与协调器_zdo_coordinator-CSDN博客
在IAR的工程中,不同workspace编译不同的f8wConfig.cfg文件
在ZGlobal.h文件中,以下这段代码通过ZSTACK_DEVICE_BUILD对其进行了区分:
// Setup to work with the existing (old) compile flags
#if !defined ( ZSTACK_DEVICE_BUILD )
#if defined ( ZDO_COORDINATOR )
#define ZSTACK_DEVICE_BUILD (DEVICE_BUILD_COORDINATOR)
#elif defined ( RTR_NWK )
#define ZSTACK_DEVICE_BUILD (DEVICE_BUILD_ROUTER)
#else
#define ZSTACK_DEVICE_BUILD (DEVICE_BUILD_ENDDEVICE)
#endif
#endif
在ZComDef.h中对类型进行了宏定义
#define DEVICE_BUILD_COORDINATOR 0x01
#define DEVICE_BUILD_ROUTER 0x02
#define DEVICE_BUILD_ENDDEVICE 0x04
并且在该文件中,以下代码段对各种类型进行了宏定义
// Use the following to macros to make device type decisions
#define ZG_BUILD_COORDINATOR_TYPE (ZSTACK_DEVICE_BUILD & DEVICE_BUILD_COORDINATOR)
#define ZG_BUILD_RTR_TYPE (ZSTACK_DEVICE_BUILD & (DEVICE_BUILD_COORDINATOR | DEVICE_BUILD_ROUTER))
#define ZG_BUILD_ENDDEVICE_TYPE (ZSTACK_DEVICE_BUILD & DEVICE_BUILD_ENDDEVICE)
#define ZG_BUILD_RTRONLY_TYPE (ZSTACK_DEVICE_BUILD == DEVICE_BUILD_ROUTER)
#define ZG_BUILD_JOINING_TYPE (ZSTACK_DEVICE_BUILD & (DEVICE_BUILD_ROUTER | DEVICE_BUILD_ENDDEVICE))