Zigbee网关 Zstack增加串口功能2-修改应用层APP/ZigbeeGateWay.c
来源:互联网 发布:淘宝评价什么时候显示 编辑:程序博客网 时间:2024/05/29 19:20
1.定义串口消息结构体
typedef struct{ osal_event_hdr_t hdr; uint8 data; // } UartRx_t;
2.在初始化函数中添加
MT_UartInit (); // SPIMgr_RegisterTaskID( task_id ); MT_UartRegisterTaskID(ZigbeeGateWay_TaskID);
3.在消息处理函数中添加SPI_INCOMING_ZAPP_DATA消息到来的时候对应的消息处理函数
uint16 ZigbeeGateWay_ProcessEvent( uint8 task_id, uint16 events ){ afIncomingMSGPacket_t *MSGpkt; (void)task_id; // Intentionally unreferenced parameter if ( events & SYS_EVENT_MSG ) { MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( ZigbeeGateWay_TaskID ); while ( MSGpkt ) { switch ( MSGpkt->hdr.event ) {#if defined ( APP_UIP ) case UIP_INCOME: APP_uIP_Message_Process(((uIP_Msg_t *)MSGpkt)->msg,((uIP_Msg_t *)MSGpkt)->length); break;#endif // Received when a key is pressed case KEY_CHANGE: ZigbeeGateWay_HandleKeys(((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys); break; // Received when a uart rx data case SPI_INCOMING_ZAPP_DATA: ZigbeeGateWay_HandleUart(((UartRx_t *)MSGpkt)->hdr.status, &(((UartRx_t *)MSGpkt)->data)); break; // Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: ZigbeeGateWay_MessageMSGCB( MSGpkt ); break; // Received whenever the device changes state in the network case ZDO_STATE_CHANGE: ZigbeeGateWay_NwkState = (devStates_t)(MSGpkt->hdr.status); HalLedSet(HAL_LED_ALL,HAL_LED_MODE_ON); HalLedBlink( HAL_LED_ALL, 6, 50, 80); if ( //(ZigbeeGateWay_NwkState == DEV_ZB_COORD)|| (ZigbeeGateWay_NwkState == DEV_ROUTER) || (ZigbeeGateWay_NwkState == DEV_END_DEVICE) ) { // Start sending the periodic message in a regular interval. osal_start_timerEx( ZigbeeGateWay_TaskID, ZIGBEEGATEWAY_SEND_PERIODIC_MSG_EVT, ZIGBEEGATEWAY_SEND_PERIODIC_MSG_TIMEOUT ); } else { // Device is no longer in the network } break; default: break; } // Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); // Next - if one is available MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( ZigbeeGateWay_TaskID ); } // return unprocessed events return (events ^ SYS_EVENT_MSG); } // Send a message out - This event is generated by a timer // (setup in ZigbeeGateWay_Init()). if ( events & ZIGBEEGATEWAY_SEND_PERIODIC_MSG_EVT ) { // Send the periodic message ZigbeeGateWay_SendPeriodicMessage(); // Setup to send message again in normal period (+ a little jitter) osal_start_timerEx( ZigbeeGateWay_TaskID, ZIGBEEGATEWAY_SEND_PERIODIC_MSG_EVT, (ZIGBEEGATEWAY_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) ); // return unprocessed events return (events ^ ZIGBEEGATEWAY_SEND_PERIODIC_MSG_EVT); }#if defined ( APP_UIP ) if ( events & UIP_PROCESS_EVT ) { APP_uIP_Process(); return (events ^ UIP_PROCESS_EVT); }#endif // Discard unknown events return 0;}
4.写消息处理函数
void ZigbeeGateWay_HandleUart(uint8 length, uint8* data){ HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE); HalUARTWrite(HAL_UART_PORT,data,length);}
这里主要实现的回显功能,并且每收到一组字符串指示灯状态变化一下
测试
成功了
修改应用层之前应该先修改底层驱动,详见
Zigbee网关 Zstack增加串口功能1-修改底层驱动MT/MT_UART.c
http://blog.csdn.net/u010615629/article/details/49777767
0 0
- Zigbee网关 Zstack增加串口功能2-修改应用层APP/ZigbeeGateWay.c
- Zigbee网关 Zstack增加串口功能1-修改底层驱动MT/MT_UART.c
- Zigbee网关 上电时Zstack串口乱码
- ZigBee Home Automation --- zstack串口应用总结
- ZigBee ZStack OSAL层API功能函数汇总
- CC2530的ZigBee应用层加入串口
- Zigbee网关 Zstack开启AES加密
- Zigbee网关 cc2530 zstack添加1602驱动
- zigbee zstack 串口,按键,消息,定时器
- zigbee网关 java 串口通信
- zigbee网关 CC2530 zstack用手机控制1602显示
- zigbee网关 zstack CC2530添加iic温度传感器lm75a
- ZigBee,ZStack
- ZigBee TI ZStack CC2530 3.18 串口01-发送
- ZigBee TI ZStack CC2530 3.20 串口03-printf()函数移植
- ZigBee TI ZStack CC2530 3.19 串口02-接收
- 如何在zigbee的应用层修改PANID?
- zigbee网关 android客户端编写温度计功能
- swiper下loop模式点击事件无效的原因
- POJ 2178 (凸包 旋转卡壳)
- main()函数常用的格式:main(int argc,char **argv)
- java socket编程
- 初识CoreData
- Zigbee网关 Zstack增加串口功能2-修改应用层APP/ZigbeeGateWay.c
- 使用Cocos2d-lua开发植物大战僵尸11-植物类的实现下
- XStream两分钟教程(译)
- 服务器tcp连接timewait过多优化及详细分析
- UniFi - Set minimum RSSI for clients
- Activemq的topic发送和接收的例子
- Opengl深度精度问题及相应解决
- 递归和迭代
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项