1. 代码架构
top_level
runTransceiver.cpp初始化设备对象,radio接口以及transceiver对象,启动trx相关线程
transceiver
Transceiver.h/cpp
TRX层,主要实现收发控制功能和对上层协议栈的接口,共分为四个线程:
mReceiveFIFOServiceLoopThread负责驱动USRP接收,并将数据存入RxFIFO中;mTransmitFIFOServiceLoopThread负责从TxFIFO中获取数据,并驱动USRP发送;mTransmitDataQueueServiceLoopThread负责与上层协议栈的连接,准备发送数据,并存入TxFIFO;
mReceiveDataQueueProcessLoopThread负责从RxFIFO中取出接收数据,并交给上层协议栈处理。
radioInterface.h/cpp
无线设备接口,用于驱动设备进行基本的收发,并返回接收buffer
driveTransmitRadio() 将tx databuf存入radiointerface的sendbuf中,并驱动usrp writesamples();
driveReceiveRadio() 驱动usrp readsamples()并将数据存如RxFIFO中,实际上,radiointerface的fifo和tranceiver的fifo是一个fifo,在runTranceiver中通过引用联系在一起。
arch
radioDevice.h/cpp 抽象的设备类,提供设备收发,控制等接口
UHDDevice.h/cpp 实现USRP2的各种操作,初始化,收发数据,打印异步信息等
common
Parameters.h 提供系统参数,如采样率,一个subframe的采样点数等宏定义
Common目录下提供了常用的数据类封装,如Thread类/FIFO类/Log类等
2. 关键数据结构
定点数据的FIFO