diff options
author | Tom Tsou <tom.tsou@ettus.com> | 2016-06-24 14:25:39 -0700 |
---|---|---|
committer | Tom Tsou <tom.tsou@ettus.com> | 2016-07-01 03:14:15 -0700 |
commit | 76764278169d252980853251daeb9f1ba0c246e1 (patch) | |
tree | 0d1631e938ae48d72d0b2b5d5e102116ab2d5b9d /Transceiver52M/radioInterface.h | |
parent | 35222296fef378977a83a4ee89d8c3ef9bc62a3f (diff) |
mcbts: Add multi-ARFCN radio support
Add new radio interface "radioInterfaceMulti" for multi-carrier
support.
Only USRP B200/B210 devices are supported because of sample
rate requirements (3.2 Msps).
Only 4 SPS operation Tx/RX is supported.
8-PSK is supported.
Other options may be added at a later time
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Diffstat (limited to 'Transceiver52M/radioInterface.h')
-rw-r--r-- | Transceiver52M/radioInterface.h | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h index 1f225a2..b63cc4c 100644 --- a/Transceiver52M/radioInterface.h +++ b/Transceiver52M/radioInterface.h @@ -22,6 +22,8 @@ #include "radioClock.h" #include "radioBuffer.h" #include "Resampler.h" +#include "Channelizer.h" +#include "Synthesis.h" static const unsigned gSlotLen = 148; ///< number of symbols per slot, not counting guard periods @@ -101,7 +103,7 @@ public: RadioClock* getClock(void) { return &mClock;}; /** set transmit frequency */ - bool tuneTx(double freq, size_t chan = 0); + virtual bool tuneTx(double freq, size_t chan = 0); /** set receive frequency */ virtual bool tuneRx(double freq, size_t chan = 0); @@ -164,6 +166,34 @@ public: void close(); }; +class RadioInterfaceMulti : public RadioInterface { +private: + bool pushBuffer(); + void pullBuffer(); + + signalVector *outerSendBuffer; + signalVector *outerRecvBuffer; + std::vector<signalVector *> history; + std::vector<bool> active; + + Resampler *dnsampler; + Resampler *upsampler; + Channelizer *channelizer; + Synthesis *synthesis; + +public: + RadioInterfaceMulti(RadioDevice* radio, size_t tx_sps, + size_t rx_sps, size_t chans = 1); + ~RadioInterfaceMulti(); + + bool init(int type); + void close(); + + bool tuneTx(double freq, size_t chan); + bool tuneRx(double freq, size_t chan); + double setRxGain(double dB, size_t chan); +}; + class RadioInterfaceDiversity : public RadioInterface { public: RadioInterfaceDiversity(RadioDevice* wRadio, |