SimpleAPI协议应用程序分析Word文档下载推荐.docx
- 文档编号:15077527
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:19
- 大小:435.40KB
SimpleAPI协议应用程序分析Word文档下载推荐.docx
《SimpleAPI协议应用程序分析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SimpleAPI协议应用程序分析Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构
typedefstruct{
uint16myAddr;
短地址
uint16panId;
所在域网ID
uint8channel;
通信信道
uint8ackRequest;
应答请求设置(True或False);
#ifdefSECURITY_CCM安全设定(可选)
uint8*securityKey;
uint8*securityNonce;
#endif
}basicRfCfg_t;
操作流程
无线Zigbee网络协议栈SimpleAPI分析
网络设备类型:
(1)协调器
协调器是启动Zigbee网络的设备,它是网络中的一个设备,其选择信道和网络标号ID,然后启动网络。
协调器可选用作为辅助安全设置和网络中应用层的绑定。
协调器的主要作用是启动和配置网络,当网络建立完成后,协调器的操作和路由器类似。
基于Zigbee网络的分布式特性,网络的后继操作不再依靠协调器。
(2)路由器
路由器主要有两个作用:
(1)允许其他设备加入网络;
(2)多调通信;
(3)辅助电池供电的子设备通信。
通常情况下,路由器需要时时激活运行,因此需要主电源供电。
(3)端点设备
ZigbeeStackAPI:
寻址方式:
(1)长地址(64bit),又名MAC地址,Extended地址,物理地址
(2)短地址(16bit),又名网络地址,逻辑地址
怎样是一台设备加入网络
网络中每台设备都具有一组配置参数,分为网络参数和设备参数。
同一网络中的设备必须配置相同的网络参数,而设备参数可因功能各异而不相同。
ZCD_NV_LOGICAL_TYPE
ZCD_NV_CHANLIST
ZCD_NV_PANID
怎样绑定设备
绑定是网络设备在应用层中的逻辑连接。
(1)若绑定对象的长地址已知,采用zb_BindDevice()函数建立绑定
(2)若绑定对象的长地址未知,目标设备通过zb_AllowBindResponse()函数处于等待绑定状态,源设备启动zb_BindDevice()函数建立绑定。
注意:
绑定只能创建在两个互补设备之间,即它们必须在描述器中注册有相同的命令ID,而且一个为输出,另一个为输入。
怎样开发一个私有的应用
(1)划分应用中的设备类型
(2)划分应用中设备中相互交换的命令,并为命令赋予一个标识号ID
(3)针对每个命令,划分出设备对其是输入还是输出
(4)为每个设备建立一个描述结构
(5)为每个命令确定消息格式
(6)为每个设备编写应用程序
(7)确定一个绑定策略以便设备能够正确交换分组
Zigbee网络应用实例流程
zmain.c文件
intmain(void)
{
//Turnoffinterrupts
osal_int_disable(INTS_ALL);
关闭中断
//InitializationforboardrelatedstuffsuchasLEDs
HAL_BOARD_INIT();
板载硬件初始化
//Makesuresupplyvoltageishighenoughtorun
zmain_vdd_check();
检测节点电压(自定义函数)
//InitializeboardI/O
InitBoard(OB_COLD);
初始化节点板
//InitialzeHALdrivers
HalDriverInit();
初始化驱动
//InitializeNVSystem
osal_nv_init(NULL);
//InitializetheMAC
ZMacInit();
初始化MAC
//Determinetheextendedaddress
zmain_ext_addr();
确定外部地址
//InitializebasicNVitems
zgInit();
#ifndefNONWK
//SincetheAFisn'
tatask,callit'
sinitializationroutine
afInit();
#endif
//Initializetheoperatingsystem
osal_init_system();
操作系统初始化
//Allowinterrupts
osal_int_enable(INTS_ALL);
启动中断
//Finalboardinitialization
InitBoard(OB_READY);
初始化板
//Displayinformationaboutthisdevice
zmain_dev_info();
显示设备信息
/*DisplaythedeviceinfoontheLCD*/
#ifdefLCD_SUPPORTED
zmain_lcd_init();
#ifdefWDT_IN_PM1
/*IfWDTisused,thisisagoodplacetoenableit.*/
WatchDogEnable(WDTIMX);
启动看门狗
osal_start_system();
//NoReturnfromhere//启动系统
return0;
//Shouldn'
tgethere.
}//main()
simpleAPP.h
#ifndefSIMPLE_APP_H
#defineSIMPLE_APP_H
#defineMY_PROFILE_ID0x0F10
#defineMY_ENDPOINT_ID0x02
//Definedevices
#defineDEV_ID_SWITCH1定义设备ID
#defineDEV_ID_CONTROLLER2
#defineDEV_ID_SENSOR3
#defineDEV_ID_COLLECTOR4
#defineDEVICE_VERSION_SWITCH1
#defineDEVICE_VERSION_CONTROLLER1
#defineDEVICE_VERSION_SENSOR1
#defineDEVICE_VERSION_COLLECTOR1
//DefinetheCommandID'
susedinthisapplication定义命令ID
#defineTOGGLE_LIGHT_CMD_ID1
#defineSENSOR_REPORT_CMD_ID2
#endif//SIMPLE_APP_H
SimpleSwitch.cpp
//ApplicationStates应用程序状态
#defineAPP_INIT0//Initialstate
#defineAPP_START1//Devicehasstarted/joinednetwork
//Applicationosaleventidentifiers操作系统层事件ID
#defineMY_START_EVT0x0001
/*********************************************************************
*TYPEDEFS
*/
*LOCALVARIABLES
staticuint8myAppSeqNumber=0;
应用程序序号
staticuint8myAppState=APP_INIT;
应用程序状态
staticuint8myStartRetryDelay=10;
起动重试延时
*GLOBALVARIABLES
//InputsandOutputsforSwitchdevice//定义设备的输入输出命令数
#defineNUM_OUT_CMD_SWITCH1
#defineNUM_IN_CMD_SWITCH0
typedefstruct
byteEndPoint;
uint16AppProfId;
uint16AppDeviceId;
byteAppDevVer:
4;
byteReserved:
//AF_V1_SUPPORTusesforAppFlags:
4.
byteAppNumInClusters;
cId_t*pAppInClusterList;
byteAppNumOutClusters;
cId_t*pAppOutClusterList;
}SimpleDescriptionFormat_t;
//ListofoutputandinputcommandsforSwitchdevice//命令列表
constcId_tzb_OutCmdList[NUM_OUT_CMD_SWITCH]=
TOGGLE_LIGHT_CMD_ID
};
//DefineSimpleDescriptorforSwitchdevice//定义设备描述结构
constSimpleDescriptionFormat_tzb_SimpleDesc=
MY_ENDPOINT_ID,//Endpoint
MY_PROFILE_ID,//ProfileID
DEV_ID_SWITCH,//DeviceID
DEVICE_VERSION_SWITCH,//DeviceVersion
0,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SimpleAPI 协议 应用程序 分析