zigbee网络形成:协议栈函数的解析

浅谈整个zigbee协议栈系统运行时,各函数的运行流程

协调器作为采集节点,如何形成网络

1.APP层

void SAPI_Init( byte task_id ) SAPI初始化

sapi_bindInProgress = 0xffff; //绑定标志位,默认不允许绑定

sapi_epDesc.endPoint = zb_SimpleDesc.EndPoint; //在sapi层定义的端口描述符,右侧是常量 sapi_epDesc.task_id = &sapi_TaskID;

sapi_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&zb_SimpleDesc;

sapi_epDesc.latencyReq = noLatencyReqs;//Beacon

afRegister( &sapi_epDesc );//在应用框架层(AF)注册端口描述符

afSetMatch(sapi_epDesc.simpleDesc->EndPoint, FALSE);// 默认关闭匹配描述符响应

ZDO_RegisterForZDOMsg( sapi_TaskID, NWK_addr_rsp );// 注册网络地址(16位)响应事件,簇ID=OX8000 ZDO_RegisterForZDOMsg( sapi_TaskID, Match_Desc_rsp ) //注册匹配描述符响应事件,簇ID=OX8006

osal_set_event(task_id, ZB_ENTRY_EVENT);//为该任务设置事件ZB_ENTRY_EVENT为常数(0X2000)

UINT16 SAPI_ProcessEvent( byte task_id, UINT16 events ) SAPI 事件处理函数

if ( events & ZB_ENTRY_EVENT ) //ox1000,进入事件

{

zb_HandleOsalEvent( ZB_ENTRY_EVENT );//用户自己定义(蜂鸣器响,LED亮…),提示用户设备已启动 zb_ReadConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );//从NV里面读取配置信息,从ZCD_NV_STARTUP_OPTION读取的值放在startOptions(启动选项)

}

if ( keys & HAL_KEY_SW_1 )//按下S1键,重启协调器

{

if ( myAppState == APP_INIT )

{

logicalType = ZG_DEVICETYPE_ENDDEVICE;//读取NV设备逻辑类型

zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType)

//将读取的logicalType写入NV(ZCD_NV_LOGICAL_TYPE)

zb_ReadConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );

startOptions = ZCD_STARTOPT_AUTO_START;//改变NV启动选项

zb_WriteConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), &startOptions );

zb_SystemReset();//系统重启

}

}

你可能喜欢

  • zigbee学习笔记
  • 实验指导书
  • 读书日记
  • 学习资料
  • IEEE802
  • 系统函数

zigbee网络形成:协议栈函数的解析相关文档

最新文档

返回顶部