已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业编财会岗面试真题汇编
- 2026 财会岗面试考点梳理 事业编含答案
- 2026湖北省事业编水利岗面试高频题 题库 含解析
- 2026 江苏省事业编综合岗面试真题汇编 含答案
- 安全理念原则体系讲解
- 痹病护理标准化模版
- 2026下半年小学英语教资面试写作专项试卷及解析
- 2026年中国石油集团安全环保技术研究院有限公司人员招聘笔试参考试题及答案详解
- 2026年中山市规划设计院人员招聘考试题库及答案详解
- 老年患者麻醉诊疗专家共识(2026版)
- 《地球的公转》地理授课课件
- 智慧冷链物流平台设计建设方案
- 【完整版】铁路站场路基工程施工组织设计
- 雨课堂学堂在线学堂云《中国电影经典影片鉴赏(北京师范大学)》单元测试考核答案
- 彩钢瓦屋面施工应急方案
- 数独8宫格游戏(初级难度)题目100道
- 舞台灯光音箱施工方案
- 鹅圆环病毒感染
- 2025年内蒙古自治区中考物理试卷真题(含答案)
- 2025年上海市各区高三二模语文试题汇编《现代文二》含答案
- 礼品礼金管理制度
评论
0/150
提交评论