zigbee网络设备启动
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Zigbee网络设备启动—主要函数说明
2010-07-09 20:32:17| 分类:Zigbee|字号订阅
使用的协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.1
1、ZDApp_Init()及其中几个函数的说明.
(1)ZDApp_Init()****************************************
void ZDApp_Init( byte task_id )
{
uint8 capabilities;
// Save the task ID
ZDAppTaskID = task_id;
// Initialize the ZDO global device short address storage ZDAppNwkAddr.addrMode = Addr16Bit;
ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;
//0xFFFE(void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.
// Check for manual"Hold Auto Start"
//检测到有手动设置SW_1则会设置devState = DEV_HOLD,从而避开网络初始化
ZDAppCheckForHoldKey();
// Initialize ZDO items and setup the device - type of device to create.ZDO_Init(); //通过预编译来初始化一些功能函数.
// Register the endpoint description with the AF
// This task doesn't have a Simple description, but we still need // to register the endpoint.
afRegister( (endPointDesc_t *)&ZDApp_epDesc );
#if defined( ZDO_USERDESC_RESPONSE )
ZDApp_InitUserDesc();
#endif // ZDO_USERDESC_RESPONSE
// set broadcast address mask to support broadcast filtering
NLME_GetRequest(nwkCapabilityInfo, 0, &capabilities);
NLME_SetBroadcastFilter( capabilities );
// Start the device?
if ( devState != DEV_HOLD )
{
ZDOInitDevice( 0 );
} /*如果devState=DEV_HOLD,则不会调用ZDOInitDevice()来初始化网络
不组网也不进网.LED4闪烁指示这是一个非自动启动模式,等待应
用程序来开启是网络设备*/
else
{
// Blink LED to indicate HOLD_START
HalLedBlink ( HAL_LED_4, 0, 50, 500 );
}
ZDApp_RegisterCBs();
}
****************************************这里说明三个函数: ZDAppCheckForHoldKey()
ZDO_Init()
ZDOInitDevice( 0 )
(1)ZDAppCheckForHoldKey()
**************************
void ZDAppCheckForHoldKey( void )
{
#if (defined HAL_KEY) && (HAL_KEY == TRUE)
//个人认为:可以直接通过读取按键来看是否需要采用HOLD_START模式//如果发现SW_1按下(普通按键吧)/向上(Joystick up),则设置DEV_HOLD;
// Get Keypad directly to see if a HOLD_START is needed.
// Hold down the SW_BYPASS_START key (see OnBoard.h)
// while booting to avoid starting up the device.if ( HalKeyRead () == SW_BYPASS_START) //HAL_KEY_SW_1{
// Change the device state to HOLD on start up
devState = DEV_HOLD;
}
#endif // HAL_KEY
}参见基本问题说明3.
*************************
(2)、ZDO_Init()
*************************void ZDO_Init( void )
{
/*
//REFLECTOR如果定义了这个编译选项则使用“源绑定”,
In the Zigbee 2006 release,the binding mechanism is implemented in all devices and is called source binding.绑定机制可以在所有设备中实现, 04版的只能在协调器中实现.*/// Initialize ZD items
#if defined ( REFLECTOR )
ZDO_EDBind = NULL;
#endif