云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > ZigBee无线通信网络软件毕业设计 - 图文

ZigBee无线通信网络软件毕业设计 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 23:56:55

层(应用层)进行启动进行确认,至此协调器的整个启动过程完成。其中详细代码如下:

? ZDO任务初始化:

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;//地址模式为16bit短地址

ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;//短地址=0xFFFE (void)NLME_GetExtAddr(); // Load the saveExtAddr pointer,API函数-》得到64bit IEEE地址

// Check for manual \

ZDAppCheckForHoldKey();//用户可以通过S5手动制止该设备自动启动

// 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 );//为设备注册端点0描述符

#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 )//根据上面函数ZDAppCheckForHoldKey()决定 {

ZDOInitDevice( 0 ); } else {

// Blink LED to indicate HOLD_START HalLedBlink ( HAL_LED_4, 0, 50, 500 ); }

ZDApp_RegisterCBs(); } /* ZDO_Init() */

16

? ZDO启动设备:

uint8 ZDOInitDevice( uint16 startDelay ) {

uint8 networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;//0x01,初始化该设备新的网络状态

uint16 extendedDelay = 0;

devState = DEV_INIT; // Remove the Hold state

//not connected to anything,无连接

// Initialize leave control logic ZDApp_LeaveCtrlInit();

// Check leave control reset settings

ZDApp_LeaveCtrlStartup( &devState, &startDelay );

// Leave may make the hold state come back if ( devState == DEV_HOLD )

return ( ZDO_INITDEV_LEAVE_NOT_STARTED ); // Don't join - (one time).

#if defined ( NV_RESTORE )//project->Options->C/C++ complier->defined symbols->xNV_RESTORE,此项预编译为无效

// Get Keypad directly to see if a reset nv is needed.

// Hold down the SW_BYPASS_NV key (defined in OnBoard.h) // while booting to skip past NV Restore. if ( HalKeyRead() == SW_BYPASS_NV )

networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE; else {

// Determine if NV should be restored

networkStateNV = ZDApp_ReadNetworkRestoreState(); }

if ( networkStateNV == ZDO_INITDEV_RESTORED_NETWORK_STATE ) {

networkStateNV = ZDApp_RestoreNetworkState(); } else {

// Wipe out the network state in NV NLME_InitNV();

NLME_SetDefaultNV(); } #endif

17

if ( networkStateNV == ZDO_INITDEV_NEW_NETWORK_STATE ) {

ZDAppDetermineDeviceType();//确定该设备的类型

// Only delay if joining network - not restoring network state

extendedDelay = (uint16)((NWK_START_DELAY + startDelay)

+ (osal_rand() & EXTENDED_JOINING_RANDOM_MASK));//加入网络的时延

}

// Initialize device security

ZDApp_SecInit( networkStateNV );//初始化设备的安全属性

// Trigger the network start

ZDApp_NetworkInit( extendedDelay );//开始形成网络。任务:ZDAppTaskID, 事件:ZDO_NETWORK_INIT

return ( networkStateNV ); }

? ZDO初始化网络:

void ZDApp_NetworkInit( uint16 delay ) {

if ( delay ) {

// Wait awhile before starting the device

osal_start_timerEx( ZDAppTaskID, ZDO_NETWORK_INIT, delay ); } else {

osal_set_event( ZDAppTaskID, ZDO_NETWORK_INIT );//ZDO_NETWORK_INIT事件处理函数查看ZDApp_event_loop()

} } ④ 处理ZDO网络初始化事件

UINT16 ZDApp_event_loop( byte task_id, UINT16 events ) {

……

if ( events & ZDO_NETWORK_INIT )//网络初始化事件处理 {

// Initialize apps and start the network devState = DEV_INIT;

ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER,

18

DEFAULT_SUPERFRAME_ORDER );//设备逻辑类型,启动模式,信标时间,超帧长度

//HalLedSet (HAL_LED_1, HAL_LED_MODE_ON);

// Return unprocessed events

return (events ^ ZDO_NETWORK_INIT); } …… } ⑤ ZDO启动设备

void ZDO_StartDevice( byte logicalType, devStartModes_t startMode, byte beaconOrder, byte superframeOrder )

{

……

#if defined(ZDO_COORDINATOR)

if ( logicalType == NODETYPE_COORDINATOR ) {

if ( startMode == MODE_HARD ) {

devState = DEV_COORD_STARTING;

ret = NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList, zgDefaultStartingScanDuration, beaconOrder,

superframeOrder, false );//0xFFFF,0x00000800,5,0,0,false

} …… } ⑥ 建立网络确认

void ZDO_NetworkFormationConfirmCB( ZStatus_t Status ) {

#if defined(ZDO_COORDINATOR)

……

osal_set_event( ZDAppTaskID, ZDO_NETWORK_START ); #endif //ZDO_COORDINATOR }

⑦ 处理ZDO网络启动事件

void ZDApp_NetworkStartEvt( void )

{

if ( nwkStatus == ZSuccess ) {

19

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

层(应用层)进行启动进行确认,至此协调器的整个启动过程完成。其中详细代码如下: ? ZDO任务初始化: 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;//地址模式为16bit短地址 ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;/

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com