5#ifndef PICOSCENES_PLATFORM_SDRFRONTENDCONFIGURATIONS_HXX
6#define PICOSCENES_PLATFORM_SDRFRONTENDCONFIGURATIONS_HXX
29 PicoScenesDeviceType
deviceType{PicoScenesDeviceType::Unknown};
30 PicoScenesDeviceSubtype
subType{PicoScenesDeviceSubtype::Unknown};
41 PicoScenesDeviceType
deviceType{PicoScenesDeviceType::Unknown};
42 PicoScenesDeviceSubtype
subType{PicoScenesDeviceSubtype::Unknown};
SDRFrontEndTransferType
The SDRFrontEndTransferType enum denotes the 8-bit or 16-bit SDR frontend data depth.
@ CS16
16-bit complex sign
This interfaces hold all the Tx/Rx baseband configurations of PicoScenes Wi-Fi baseband implementatio...
virtual double getTxResampleRatio()=0
Get the user-specified Tx signal resample ratio.
virtual bool useConventionalPacketDetector() const =0
virtual void setCarrierFrequencyOffset4RxDecoding(double carrierFrequencyOffset)=0
Set the CFO value for baseband decoding.
virtual bool isRxResampleBypassFIR()=0
virtual double getRxIqCrossTalkDegree()=0
Get the I/Q mismatch degree of the user-specified Tx I/Q mismatch.
virtual void setCarrierFrequencyOffset4TxEncoding(double carrierFrequencyOffset)=0
Set the current carrier frequency offset (CFO) value for the baseband signal generation.
virtual std::optional< double > getCarrierFrequencyOffset4RxDecoding()=0
Check if user specifies the Rx path CFO; if specified, return the Rx path CFO.
virtual double getTxIqRatioDB()=0
Get the I/Q mismatch ratio of the user-specified Tx I/Q mismatch.
virtual double getRxSensitivity()=0
Get the Rx sensitivity of SDR baseband implemntation.
virtual double getRxOfdmSymbolOffset()=0
Get the user-specified Rx OFDM symbol offset value.
virtual void setRxMergeHighLow(bool merge)=0
virtual void setRxSensitivity(double rxSensitivity)=0
Set Rx sensitivity.
virtual double getSDRFrontEndTime()=0
Obtain the SDR hardware time.
virtual bool isRxMergeHighLow()=0
virtual void setRxResampleRatio(double rxResampleRatio)=0
Set the Rx signal rasample ratio.
virtual double getRxResampleRatio()=0
Get the user-specified Rx resampling ratio.
virtual bool isTxSplitHighLow()=0
virtual void setSamplingFrequencyOffset4RxDecoding(double samplingFrequencyOffset)=0
Set the user-specified Rx path SFO,.
virtual void setRxOfdmSymbolOffset(double rxOfdmSymbolOffset)=0
Set Rx OFDM symbol offset, default is 0.
virtual double getTxIqCrossTalkDegree()=0
Get the I/Q mismatch angle of the user-specified Tx I/Q mismatch.
virtual void setRxChannelBandwidthMode(ChannelBandwidthEnum rxCbw)=0
Set the CBW value for Wi-Fi baseband decoder, invoked by "--rx-cbw" option.
virtual std::optional< double > getSamplingFrequencyOffset4TxEncoding()=0
Get the current sampilng frequency offset (SFO) value for the baseband signal generation.
virtual double getNumSamplesSavedBeforeStart()=0
virtual void setFullDuplex(bool enableFullduplex)=0
Set the Frontend is in Tx/Rx loopback mode, in this mode Tx and Rx are open simultaneously,...
virtual std::optional< double > getCarrierFrequencyOffset4TxEncoding()=0
Get the current carrier frequency offset (CFO) value for the baseband signal generation.
virtual void setTxIQMismatch(double iq_ratio_db, double iq_crosstalk_degree)=0
Set Tx I/Q mismatch.
virtual void setRxIQMismatch(double iq_ratio_db, double iq_crosstalk_degree)=0
Set Rx I/Q mismatch.
virtual void setTxSplitHighLow(bool split)=0
virtual void setTxResampleRatio(double txResampleRatio)=0
Set Tx signal resample ratio.
virtual ChannelBandwidthEnum getRxChannelBandwidthMode()=0
Get the current CBW value of Wi-Fi baseband decoder.
virtual double getRxIqRatioDB()=0
Get the I/Q mismatch ratio of the user-specified Rx I/Q mismatch.
virtual bool isFullDuplexEnabled()=0
Check whether the Frontend is in Tx/Rx loopback mode.
virtual bool isReturnBasebandSignals() const =0
virtual void setRxResampleBypassFIR(bool bypass)=0
virtual void setSamplingFrequencyOffset4TxEncoding(double samplingFrequencyOffset)=0
Set the current sampling frequency offset (SFO) value for the baseband signal generation.
virtual void getNumSamplesSavedBeforeStart(double numSamplesSavedBeforeStart)=0
virtual ~SDRFrontEndBasebandConfigurations()=default
virtual std::optional< double > getSamplingFrequencyOffset4RxDecoding()=0
Get the user-specified Rx path SFO, default is 0.
This class holds all the configuration (including the SDR hardware related settings) of SDR frontend.
virtual void setMasterClockRate(double masterClockRate)=0
Set the USRP master clock rate (in Hz)
virtual void skipMPDUDecoding4HESUHighDopplerFrame(bool skipDataDecoding)=0
virtual void setTxAntennas(const std::vector< std::string > &txAnts)=0
Specify antenna for each Tx chain.
virtual SDRFrontEndTransferType getTransferType() const =0
virtual const std::vector< size_t > & userSpecifiedRxChannels() const =0
virtual void setAGC(bool enableAGC)=0
virtual void setRxSamplingRate(double rxRate)=0
virtual void setRxAntenna(const std::string &rxAnt)=0
Set the Rx antenna.
virtual void setTxSamplingRate(double txRate)=0
virtual double getTxSamplingRate()=0
virtual std::vector< std::string > getClockSources()=0
Get the list of currently set clock sources.
virtual void setRxCarrierFrequencies(std::vector< double > carrierFreqs)=0
virtual double getFilterBandwidth()=0
get the hardware-frontend filter bandwidth
virtual void setClockSources(const std::vector< std::string > &clockSources)=0
Set multiple clock sources for different motherboards.
virtual void setTimeSource(const std::string &timeSource)=0
Set the timing source. For USRP, it can be "external", "mimo", "internal".
virtual std::string getTimeSource()=0
Get the timing source.
virtual double getMasterClockRate()=0
Get the USRP master clock rate (in Hz)
virtual const std::vector< size_t > & userSpecifiedTxChannels() const =0
virtual double getRxBufferDuration() const =0
virtual void setNumThreads4RxDecoding(uint8_t numThreads)=0
virtual bool supportAGC()=0
virtual std::string getClockSource()=0
Get the clock source.
virtual void setTransferType(SDRFrontEndTransferType transferType)=0
virtual std::vector< std::string > getRxAntennas()=0
virtual void setTimeSources(const std::vector< std::string > &timeSources)=0
Set multiple time sources for different motherboards.
virtual void setTxAntenna(const std::string &txAnt)=0
Set the Tx antenna.
virtual void setTxCarrierFrequencies(std::vector< double > carrierFreqs)=0
virtual std::vector< double > getTxCarrierFrequencies()=0
virtual std::vector< double > getRxCarrierFrequencies()=0
virtual void setClockSource(const std::string &clockSource)=0
Set the clock source. For USRP, it can be "external", "mimo", "internal".
virtual void setRxAntennas(const std::vector< std::string > &rxAnts)=0
Specify antenna for each Rx chain.
virtual std::vector< std::string > getTxAntennas()=0
virtual std::vector< std::string > getTimeSources()=0
Get the list of currently set time sources.
virtual std::string getRxAntenna()=0
Get the Rx antenna.
virtual std::string getTxAntenna()=0
Get the Tx antenna.
virtual void initializeSDR()=0
virtual double getRxSamplingRate()=0
virtual void setFilterBandwidth(double bw)=0
Set the hardware frontend filter bandwidth.
PicoScenesDeviceSubtype subType
PicoScenesDeviceType deviceType
PicoScenesDeviceType deviceType
PicoScenesDeviceSubtype subType