SampleApp工程笔记
1.消息响应
消息响应在任务中进行,操作系统中有多个任务,如SampleApp工程中的应用层任务处理函数SampleApp_ProcessEvent对诸如KEY_CHANGE、AF_INCOMING_MSG_CMD等消息进行响应,因此要处理消息,首先要在操作系统中添加任务。这项工作由osalAddtasks函数进行,通过调用osalTaskAdd(SampleApp_Init,SampleApp_ProcessEvent,OSAL_TASK_PRIORITY_LOW)操作系统初始化了SampleApp任务(SampleApp_Init),并定义了处理函数SampleApp_ProcessEvent。这里不得不提到的是初始化给任务分配了一个任务号,SampleApp_TaskID = task_id。之后,在SampleApp_ProcessEvent中先获取一下消息MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ),然后使用switch-case逐个处理即可。关于消息的产生方法很多,如按键消息以如下方式与任务关联RegisterForKeys( SampleApp_TaskID ),操作系统也提供发送消息函数,如osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) ),或者 MSGpkt->hdr.event = AF_INCOMING_MSG_CMD;osal_msg_send( *(epDesc->task_id), (uint8 *)MSGpkt );总之方法很多,除非要自己定义消息,否则这些不需要深究。
2.广播组
添加组可以如下进行:
aps_Group_t SampleApp_Group;
SampleApp_Group.ID = 0x0001;
osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
3.LCD
系统运行时在LCD显示了部分结果:先Figure8 Wireless xxxx(64IEEE地址),然后是ZigBee Coord Network ID:xxxx(PANID)。搜索以上字符串,则在网络建立时候有调用
HalLcdWriteString( (char*)ZigbeeCoordStr, HAL_LCD_LINE_1 );
HalLcdWriteStringValue( (char*)NetworkIDStr, (uint32)statusValue, 16, HAL_LCD_LINE_2 );
BuzzerControl( BUZZER_BLIP );
HalLcdWriteString这个函数比较奇怪,可以好好看下,BuzzerControl函数体为空,可以根据应用添加代码。
文章评论(0条评论)
登录后参与讨论