ZIGBEE协调器启动Word下载.docx

上传人:b****2 文档编号:14967928 上传时间:2022-10-26 格式:DOCX 页数:11 大小:20.73KB
下载 相关 举报
ZIGBEE协调器启动Word下载.docx_第1页
第1页 / 共11页
ZIGBEE协调器启动Word下载.docx_第2页
第2页 / 共11页
ZIGBEE协调器启动Word下载.docx_第3页
第3页 / 共11页
ZIGBEE协调器启动Word下载.docx_第4页
第4页 / 共11页
ZIGBEE协调器启动Word下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

ZIGBEE协调器启动Word下载.docx

《ZIGBEE协调器启动Word下载.docx》由会员分享,可在线阅读,更多相关《ZIGBEE协调器启动Word下载.docx(11页珍藏版)》请在冰豆网上搜索。

ZIGBEE协调器启动Word下载.docx

-f$PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wCoord.cfg

-f$PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wConfig.cfg

即编译了ZDO_COORDINATOR和RTR_NWK.

Preprocessor->

Definedsymbols可以看到协调器预编译包含了:

CC2430EB;

ZTOOL_P1;

MT_TASK;

LCD_SUPPORTED=DEBUG;

MANAGED_SCAN

没有编译HOLD_AUTO_START和SOFT_START.

2、具体流程

main()->

osal_init_system()->

osalInitTasks()->

ZDApp_Init()

进入ZDApp_Init()函数:

**************************************

voidZDApp_Init(bytetask_id)

{

 

uint8capabilities;

//SavethetaskID

ZDAppTaskID=task_id;

//InitializetheZDOglobaldeviceshortaddressstorage

ZDAppNwkAddr.addrMode=Addr16Bit;

ZDAppNwkAddr.addr.shortAddr=INVALID_NODE_ADDR;

//0xFFFE

(void)NLME_GetExtAddr();

//LoadthesaveExtAddrpointer.

//Checkformanual"

HoldAutoStart"

//检测到有手工设置SW_1则会设置devState=DEV_HOLD,从而避开网络初始化

ZDAppCheckForHoldKey();

//InitializeZDOitemsandsetupthedevice-typeofdevicetocreate.

ZDO_Init();

//通过判断预编译来开启一些函数功能

//RegistertheendpointdescriptionwiththeAF

//Thistaskdoesn'

thaveaSimpledescription,butwestillneed

//toregistertheendpoint.

afRegister((endPointDesc_t*)&

ZDApp_epDesc);

#ifdefined(ZDO_USERDESC_RESPONSE)

ZDApp_InitUserDesc();

#endif//ZDO_USERDESC_RESPONSE

//setbroadcastaddressmasktosupportbroadcastfiltering

NLME_GetRequest(nwkCapabilityInfo,0,&

capabilities);

NLME_SetBroadcastFilter(capabilities);

//Startthedevice?

if(devState!

=DEV_HOLD)

 

ZDOInitDevice(0);

}

/*如果devState=DEV_HOLD,则不会调用ZDOInitDevice()来初始化网络

即不组网也不进网.LED4闪烁等待应用程序来开启设备并初始化网络

*/

else

//BlinkLEDtoindicateHOLD_START

HalLedBlink(HAL_LED_4,0,50,500);

ZDApp_RegisterCBs();

协调器没有编译HOLD_AUTO_START,也没有手工设置SW_1,初始化devState=DEV_INIT(参见基本问题说明3).因此直接在ZDApp_Init()中进入ZDOInitDevice(0)开启设备.

uint8ZDOInitDevice(uint16startDelay)

//初始化设备网络状态为ZDO_INITDEV_NEW_NETWORK_STATE:

新的网络状态.

//可能意味着ZCD_NV_STARTUP_OPTION不能恢复,或没有任何网络状态恢复

uint8networkStateNV=ZDO_INITDEV_NEW_NETWORK_STATE;

uint16extendedDelay=0;

devState=DEV_INIT;

//RemovetheHoldstate

//Initializeleavecontrollogic

//函数读取NV项目ZCD_NV_LEAVE_CTRL的值,ZDApp_LeaveCtrl指向这个值

ZDApp_LeaveCtrlInit();

//Checkleavecontrolresetsettings

ZDApp_LeaveCtrlStartup(&

devState,&

startDelay);

//Leavemaymaketheholdstatecomeback

//以上两个函数设置了对设备离开时的控制,如果有延时则延时,没有则

//把设备状态设为DEV_HOLD

if(devState==DEV_HOLD)

//ZDO_INITDEV_LEAVE_NOT_STARTED:

该设备没有在网络中,下次调用才启用.

return(ZDO_INITDEV_LEAVE_NOT_STARTED);

//Don'

tjoin-(onetime).

#ifdefined(NV_RESTORE)

//GetKeypaddirectlytoseeifaresetnvisneeded.

//HolddowntheSW_BYPASS_NVkey(definedinOnBoard.h)

//whilebooting(引导)toskippastNVRestore.

if(HalKeyRead()==SW_BYPASS_NV)

//SW_BYPASS_NV按键处于按下状态时,则避开网络层的NV存储

networkStateNV=ZDO_INITDEV_NEW_NETWORK_STATE;

//设备网络状态为新的网络状态

//DetermineifNVshouldberestored

//函数返回的设备网络状态要么是新的网络状态;

要么是恢复的网络状态;

以此

//来确定要不要读取NV里相应条目来恢复网络先前状态

networkStateNV=ZDApp_ReadNetworkRestoreState();

//如果设备的网络状态为恢复的网络状态

if(networkStateNV==ZDO_INITDEV_RESTORED_NETWORK_STATE)

//恢复设备先前的网络状态参数并且

//设置devStartMode=MODE_RESUME!

!

networkStateNV=ZDApp_RestoreNetworkState();

else 

//如果设备的网络状态为新的网络状态,在下面进行处理

//Wipeout(清除)thenetworkstateinNV

NLME_InitNV();

NLME_SetDefaultNV();

//设置默认NV条目

#endif

//如果设备的网络状态为新的网络状态

if(networkStateNV==ZDO_INITDEV_NEW_NETWORK_STATE)

//根据预编译来设置设备新的网络状态参数

ZDAppDetermineDeviceType();

/*!

//Onlydelayifjoiningnetwork-notrestoringnetworkstate

extendedDelay=(uint16)((NWK_START_DELAY+startDelay)

+(osal_rand()&

EXTENDED_JOINING_RANDOM_MASK));

//Initializedevicesecurity

ZDApp_SecInit(networkStateNV);

//Triggerthenetworkstart

ZDApp_NetworkInit(extendedDelay);

return(networkStateNV);

分两种情况:

(1)如果协调器预编译了NV_RESTORE,且函数ZDApp_ReadNetworkRestoreState()返回值为ZDO_INITDEV_RESTORED_NETWORK_STATE,则进入ZDApp_RestoreNetworkState()里设置ZDO_Config_Node_Descriptor.LogicalType=NODETYPE_COORDINATOR和devStartMode=MODE_RESUME.

****************

uint8ZDApp_RestoreNetworkState(void)

…………

//Areweacoordinator

//设备的网络状态为恢复的网络状态.则进入这个函数进行恢复

//先判断如果短地址为0则设置设备逻辑类型为协调器且devStartMode=MODE_RESUME

//否则设置devStartMode=MODE_RESUME

ZDAppNwkAddr.addr.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1