




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*Filename: radio.cTarget: cc2430Revised: 16/12-2005Revision: 1.0*/#include cul.hextern volatile BYTE sppRxStatus;extern volatile BYTE sppTxStatus;_no_init SPP_RX_STRUCT rxData PM0_XDATA; /rxData_no_init SPP_TX_STRUCT txData PM0_XDATA; /txData/*typedef struct BYTE payloadLength; BYTE destAddress; BYTE flags; BYTE *payload;SPP_TX_STRUCT;typedef struct BYTE payloadLength; BYTE destAddress; BYTE srcAddress; BYTE flags; BYTE payloadSPP_MAX_PAYLOAD_LENGTH + SPP_FOOTER_LENGTH;SPP_RX_STRUCT;*/-/ See cul.h for a description of this function./*This function initializes the radio by calling sppInit.The frequency of operation is set andthis nodes address isstored. The radio is set up for handling non-IEEE 802.15.4 packets.这个函数初始化radio(运行SPP模式时):设置频率及节点地址。*/-void radioInit(UINT32 frequency, BYTE localAddress) sppInit(frequency,localAddress); return;/-/ See cul.h for a description of this function./*This function sends data of a given length either to a specified recipient (may be broadcast)using the radio. If the number of bytes to be transferred is larger than the size of the TX FIFO,the data is split over an adequate number of packets. The function uses the SPP library. If theradio is busy, or the packet is sent but not ACKed, the transmission is retried. If the retiresfails, the function returns FALSE. If the packet is ACKed correctly by the receiver, thefunction returns TRUE.transmitData:指向将被传送的数据。dataLenght:被传送数据的长度。remoteAddress:接收数据包的节点地址。doAck:设置是否需要应答。*/-/*contionuousMode()调用的radioSend():res = radioSend(sendBuffer, sizeof(sendBuffer), remoteAddr, DO_NOT_ACK );其中sendBuffer = Hello;即为所要发送的数据,transmitData指向sendBuffer首地址,然后通过指针transmitData为结构体txData进行配置(要注意txData为所发送数据的描述性结构体,要把结构体txData内各项都配置好);配置好后radioSend()调用sppSend(&txData),&txData即为结构体txData的首地址;而sppSend()形式为sppSend(SPP_TX_STRUCT* pPacketPointer),因此结构体指针pPacketPointer指向的是结构体txData的首地址,可以这么想象:结构体pPacketPointer等同于结构体txData;数据的传递过程是这样的: sendBuffer -*transmitData-txData-&txData-*pPacketPointer-pPacketPointer*/BOOL radioSend(BYTE* transmitData, WORD dataLength, BYTE remoteAddress, BYTE doAck) WORD sent = 0; /发送字节数 BOOL status = TRUE; /状态标志位 WORD remaining; /剩余字节数 BYTE retries; /重试次数 BYTE res; / txData.destAddress = remoteAddress; /接收数据的节点地址置为目的地址 txData.flags = doAck; /需要应答 while(sent SPP_MAX_PAYLOAD_LENGTH) /如果剩余数据长度SPP限定的最大数据长度 txData.payloadLength = SPP_MAX_PAYLOAD_LENGTH; /则此次发送中SPP数据包里的数据的长度=SPP限定的最大数据长度 sent += SPP_MAX_PAYLOAD_LENGTH; /已经发送了的数据长度=已经发送了的数据长度+此次发送的数据的长度 else /如果剩余数据长度dataLength,则必定跳出while();/也即当剩余数据小于SPP_MAX_PAYLOAD_LENGTH时,数据发送完后就跳出while了。 while(retries) /未到最大重发次数 res = sppSend(&txData);/*调用sppSend()发送数据,txData为所发送 数据的结构体,见开头*/ if(res = CHANNEL_BUSY) /如果当前通道状态为忙碌 halWait(10); /等待 retries-; if(retries = 0) status = FALSE; /所有重试完后仍忙碌,直接返回FALSE状态 else /不忙碌 retries = 0; /则停止重试,直接发送 while(sppTxStatus = TX_IN_PROGRESS); /正在发送过程中,等待 /发送完成,跳出 if(sppTxStatus = DEST_UNREACHABLE) /发送完,但返回未发送到目的地 status = FALSE; /返回FALSE状态 return status; /返回状态值/-/ See cul.h for a description of this function./*This function turns on the radio receiver and waits until either a correctly addressed packetpacket is received or the unit has been waiting for a specified time period. The function employsthe SPP library for radio access.receiveData:双指针指向接收数据length:指向接收数据的长度timeout:接收器接收等待时间;若在等待时间内未接收到数据间,则返回FALSE; 若设其值为0,则将会一直等到接收到数据。sender:函数将数据包源地址赋给此sender*/-BOOL radioReceive(BYTE* receiveData, BYTE* length, WORD timeout, BYTE* sender) BOOL status = TRUE; BOOL continueWaiting = TRUE; /是否连续等待状态字 BOOL useTimeout = FALSE; /是否使用超时状态字 if(timeout) /如果设置了等待时间,则useTimeout=TRUE useTimeout = TRUE; sppReceive(&rxData); /接收数据 while(sppRxStatus != RX_COMPLETE) & (continueWaiting) /接收未完成并且连续等待 if(useTimeout) /如果使用超时 halWait(0x01); timeout-; if(timeout = 0) /超时结束 continueWaiting = FALSE; status = FALSE; STOP_RADIO(); if(status = TRUE)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权培训课程安排课件
- 2025年工业互联网平台数字水印技术安全风险评估与控制报告
- 2025年绿色消费趋势下消费者行为引导与绿色消费理念传播效果评估报告
- 2025年移动端在线教育平台教学质量评估体系构建与应用实践
- 2025年安全知识考试题库及答案习题手册书
- 知识产权培训会领导讲话课件
- 2025年经济学专业期末考试题及答案
- 2025年注册化工工程师考试化工企业新可持续发展发展战略试题及答案
- 2025年安全生产管理C考试题及答案
- 知识产权保护培训报道课件
- 垫资过桥合同协议
- 规范化司法所模板
- 水泥混凝土旧路面拆除施工方案
- 食品安全自查制度
- 士林电机SS2变频器操作手册SS2-043-5.5K
- Unit 1 What's he like?单元整体教学设计(5个课时)
- 大学生职业生涯规划与就业指导(慕课版) 课件 第七章 职场适应与发展
- 《数字化样机技术》课件
- 教室里的安全隐患
- 内审首次会议上的讲话
- 全书课件:计算机网络技术
评论
0/150
提交评论