系统常用事件处理函数:
-按键事件
-接收消息事件
-网络状态改变事件
-绑定确认事件
-匹配响应事件
1、按键事件
Case KEY_CHANGE:
当有按键事件发生的时,调用按键事件处理函数Sample_HandleKeys()来处理按键事件。
在SampleApp例程中按键处理函数处理了以下2件事情
-如果按键1按下,将向网络中的其他设备发送LED闪烁命令
-如果按键2按下,检测组ID号为SAMPLEAPP_FLASH_GROUP的组是否已经注册。如果已经注册,调用aps_RemoveGroup()将其删除;如果没注册就在APS层注册
2、接收消息事件
Case:AF_INCOMING_MSG_CMD:
如果有接收消息事件发生,则调用函数SampleApp_MessageMSGCB(MSG)对接收的消息进行处理。一般的接收消息事件是通过用户自定义的端点输入簇和输出簇来处理的。
在LED闪烁命令的发送函数中的输出簇为SAMPLEAPP_FLASH_CLUSTERID,所以在接收消息事件的输入簇中为SAMPLEAPP_FLASH_CLUSTERID即收到LED闪烁命令
3、网络状态改变事件
Case:ZDO_STATE_CHANGE
当有网络状态改变事件发生后,会调用函数SampleApp_NwkState()来处理网络状态改变事件。在SampleApp例程中,网络状态改变事件主要处理了以下事件:
-判断设备类型(区分协调器、路由节点、终端节点)
-当协调器网络建立成功后或其他类型节点加入网络后点亮led1
-通过调用osal_start_timerEx()设置一个定时事件,当时间到达后启用用户自定义事件SampleApp_Send_PERIODIC_MSG_EVT
备注:在使用过程中这里的3种设备类型不是全选,写一个就可以了,其他的删除
4、绑定确认事件
caseEnd_Device_Bind_rsp:
当有绑定确认事件发生时,会调用ZDO_ParseBindRsp( inMsg )来处理绑定确认事件。在GeneericApp例程中绑定事件主要完成以下事件:
-如果绑定成功,则协调器led4常亮,否则如果绑定不成功,协调器led4的闪烁绑定事件分为2个部分,第一个是A设备发送给B设备一个绑定请求信息,第二个是B 设备对绑定请求信息的回应。
5消息确认事件:
数据收到确认:A设备发送数据,B设备收到数据后将返回应答ack给A,A如果收到此ack则触发AF_DATA_CONFIRM_CMD事件,F_DataRequest函数参数options如设AF_ACK_REQUEST则要求对方回复ack