Zigbee之TICC2530开发笔记(1)
来源:互联网 发布:淘宝商务男装品牌 编辑:程序博客网 时间:2024/06/05 00:45
TI CC2530协议栈开发:
几个重要的函数:
1.uint8 osal_set_event( uint8 task_id, uint16 event_flag ) //发送任务事件。
UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ){......... if(GenericApp_NwkState == DEV_ZB_COORD){osal_set_event(GenericApp_TaskID,GenericApp_SEND_MSG_EVT);}if ( events & GenericApp_SEND_MSG_EVT ){RedLED=1;//点亮LED
return (events ^ GenericApp_SEND_MSG_EVT);}}如果模块变为协调器 C,则发送任务事件 GenericApp_SEND_MSG_EVT 下面为处理该任务事件函数,点亮一个灯。
2.uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value ) //定时发送任务事件。
UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ){......... if(GenericApp_NwkState == DEV_ZB_COORD){osal_start_timerEx(GenericApp_TaskID,GenericApp_SEND_MSG_EVT,3000);}if ( events & GenericApp_SEND_MSG_EVT ){RedLED=1;//点亮LEDreturn (events ^ GenericApp_SEND_MSG_EVT);}}
和上一个函数功能基本一样,只是这个是3S后发出任务事件,即:模块变为协调器 C,3S后LED点亮
3.uint8 osal_msg_send( uint8 destination_task, uint8 *msg_ptr )//发送消息
UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ){if ( events & SYS_EVENT_MSG ) { MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );//从消息队列里取出来引发系统事件的消息 while ( MSGpkt ) { switch ( MSGpkt->hdr.event ) { case ZDO_CB_MSG: GenericApp_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt ); break; case KEY_CHANGE: GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break;}} } if(GenericApp_NwkState == DEV_ZB_COORD) {//如果本模块成为了协调器,会进入到这来来 keyChange_t *msgPtr; msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) );//定义个按钮改变的消息 if ( msgPtr ) { msgPtr->hdr.event = KEY_CHANGE;//给这个消息填写相关的值,类型是按钮状态改变KEY_CHANGE msgPtr->keys=3;//消息里面的内容是3 osal_msg_send( GenericApp_TaskID, (uint8 *)msgPtr );//把发送给应用层GenericApp_TaskID的消息投到消息队列,并且osal_set_event( GenericApp_TaskID, SYS_EVENT_MSG ); }}}void GenericApp_HandleKeys( byte shift, byte keys ){ void GenericApp_HandleKeys( byte shift, byte keys ){ LS164_BYTE(keys);}}如果模块变为协调器 C,则发送keyChange_t 类型的消息,判断:case KEY_CHANGE:
GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
条件成立,LED点亮;
4.AF_DataRequest()//发送函数
SDApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; SDApp_DstAddr.addr.shortAddr = 0x0000;//接收模块的网络地址 // Take the first endpoint, Can be changed to search through endpoints SDApp_DstAddr.endPoint =SDApp_ENDPOINT ;//接收模块的端点房间号 SDApp_epDesc.endPoint = SDApp_ENDPOINT; SDApp_epDesc.task_id = &SDApp_TaskID; SDApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&SDApp_SimpleDesc; SDApp_epDesc.latencyReq = noLatencyReqs; // Register the endpoint description with the AF afRegister( &SDApp_epDesc ); AF_DataRequest( &SDApp_DstAddr, &SDApp_epDesc,//SDApp_epDesc 结构体 端点描述符有源端点的信息,也是10 SDApp_CLUSTERID,//目标端点镞,房间里的接收人数据宏是1,2个字节,所以在射频0x0001 (byte)osal_strlen( theMessageData ) + 1,//发送字符串的长度 (byte *)&theMessageData,//字符串内容数组的首地址 &SDApp_TransID,//全局变量,每发送一次,+1 AF_DISCV_ROUTE, AF_DEFAULT_RADIUS );
阅读全文
0 0
- Zigbee之TICC2530开发笔记(1)
- zigbee学习笔记(一)之 zigbee简介
- Zigbee开发板学习笔记(一)
- Zigbee开发板学习笔记(二)
- Zigbee开发板学习笔记(三)
- zigbee学习笔记(二) 开发环境
- zigbee开发笔记
- CC2530与zigbee学习笔记の初识zigbee(1)
- Zigbee学习之路1(初识Zigbee)
- ZigBee无线协议学习笔记(1)
- ZigBee无线协议学习笔记(1)
- zigbee 原理学习笔记(1)
- ZigBee学习笔记(1)
- ZigBee学习笔记1
- zigbee协议及开发(1)- 基础知识
- zigbee开发连载系列(1)
- zigbee协议及开发(1)- 基础知识
- ZigBee-CC2530学习心得(1) --------ZigBee开发工具
- 用Python满足满足自己的“小虚荣”
- [简单逻辑学]学习逻辑学的思想准备——观念联系事实
- SELinux
- python数学计算模块之math常用函数学习使用
- mysql数据库连接的最原始的方式
- Zigbee之TICC2530开发笔记(1)
- 【贪心】CodeChef(PROTEPOI)[Protecting The Poison]题解
- Bootstrap Table 实现简单的查询和显示功能
- Java集合类框架汇总
- Android Material Design 之 BottomNavigationView
- hdu6070 Dirt Ratio (线段树:二分+多次建树+构造难想)
- Visual Stdio 2017 无法找到资源编译器rcdll.dll
- C语言基础程序汇总
- html/CSS笔试习题总结1