5#ifndef PICOSCENES_PLATFORM_SDRFRONTENDCONFIGURATIONS_HXX
6#define PICOSCENES_PLATFORM_SDRFRONTENDCONFIGURATIONS_HXX
38 PicoScenesDeviceType
deviceType{PicoScenesDeviceType::Unknown};
39 PicoScenesDeviceSubtype
subType{PicoScenesDeviceSubtype::Unknown};
56 PicoScenesDeviceType
deviceType{PicoScenesDeviceType::Unknown};
57 PicoScenesDeviceSubtype
subType{PicoScenesDeviceSubtype::Unknown};
SDRFrontEndTransferType
Enumeration for SDR frontend data transfer type.
Interface class for SDR frontend baseband configurations.
virtual double getTxResampleRatio()=0
Get the Tx resampling ratio.
virtual bool useConventionalPacketDetector() const =0
Check if conventional packet detector should be used.
virtual void setCarrierFrequencyOffset4RxDecoding(double carrierFrequencyOffset)=0
Set the carrier frequency offset for Rx decoding.
virtual bool isRxResampleBypassFIR()=0
Check if FIR filter is bypassed in Rx resampling.
virtual double getRxIqCrossTalkDegree()=0
Get the I/Q crosstalk angle for Rx.
virtual void setCarrierFrequencyOffset4TxEncoding(double carrierFrequencyOffset)=0
Set the carrier frequency offset for Tx encoding.
virtual std::optional< double > getCarrierFrequencyOffset4RxDecoding()=0
Get the carrier frequency offset for Rx decoding.
virtual double getTxIqRatioDB()=0
Get the I/Q ratio for Tx in dB.
virtual double getRxSensitivity()=0
Get the receiver sensitivity.
virtual double getRxOfdmSymbolOffset()=0
Get the Rx OFDM symbol offset.
virtual void setRxMergeHighLow(bool merge)=0
Set whether to merge high/low for Rx.
virtual void setRxSensitivity(double rxSensitivity)=0
Set the receiver sensitivity.
virtual double getSDRFrontEndTime()=0
Get the current SDR hardware time.
virtual bool isRxMergeHighLow()=0
Check if high/low merge is enabled for Rx.
virtual void setRxResampleRatio(double rxResampleRatio)=0
Set the Rx resampling ratio.
virtual double getRxResampleRatio()=0
Get the Rx resampling ratio.
virtual bool isTxSplitHighLow()=0
Check if high/low split is enabled for Tx.
virtual void setSamplingFrequencyOffset4RxDecoding(double samplingFrequencyOffset)=0
Set the sampling frequency offset for Rx decoding.
virtual void setRxOfdmSymbolOffset(double rxOfdmSymbolOffset)=0
Set the Rx OFDM symbol offset.
virtual double getTxIqCrossTalkDegree()=0
Get the I/Q crosstalk angle for Tx.
virtual void setRxChannelBandwidthMode(ChannelBandwidthEnum rxCbw)=0
Set the channel bandwidth mode for Rx.
virtual std::optional< double > getSamplingFrequencyOffset4TxEncoding()=0
Get the sampling frequency offset for Tx encoding.
virtual double getNumSamplesSavedBeforeStart()=0
Get the number of samples saved before start.
virtual void setFullDuplex(bool enableFullduplex)=0
Set full duplex mode.
virtual std::optional< double > getCarrierFrequencyOffset4TxEncoding()=0
Get the carrier frequency offset for Tx encoding.
virtual void setTxIQMismatch(double iq_ratio_db, double iq_crosstalk_degree)=0
Set I/Q mismatch parameters for Tx.
virtual void setRxIQMismatch(double iq_ratio_db, double iq_crosstalk_degree)=0
Set I/Q mismatch parameters for Rx.
virtual void setTxSplitHighLow(bool split)=0
Set whether to split high/low for Tx.
virtual void setTxResampleRatio(double txResampleRatio)=0
Set the Tx resampling ratio.
virtual ChannelBandwidthEnum getRxChannelBandwidthMode()=0
Get the current channel bandwidth mode for Rx.
virtual double getRxIqRatioDB()=0
Get the I/Q ratio for Rx in dB.
virtual bool isFullDuplexEnabled()=0
Check if full duplex mode is enabled.
virtual bool isReturnBasebandSignals() const =0
Check if baseband signals should be returned.
virtual void setRxResampleBypassFIR(bool bypass)=0
Set whether to bypass FIR filter in Rx resampling.
virtual void setSamplingFrequencyOffset4TxEncoding(double samplingFrequencyOffset)=0
Set the sampling frequency offset for Tx encoding.
virtual void getNumSamplesSavedBeforeStart(double numSamplesSavedBeforeStart)=0
Set the number of samples saved before start.
virtual ~SDRFrontEndBasebandConfigurations()=default
virtual std::optional< double > getSamplingFrequencyOffset4RxDecoding()=0
Get the sampling frequency offset for Rx decoding.
Configuration class for SDR frontend hardware settings.
virtual void setMasterClockRate(double masterClockRate)=0
Set the master clock rate.
virtual void skipMPDUDecoding4HESUHighDopplerFrame(bool skipDataDecoding)=0
Set whether to skip MPDU decoding for HE-SU high Doppler frames.
virtual void setTxAntennas(const std::vector< std::string > &txAnts)=0
Set antennas for all Tx chains.
virtual SDRFrontEndTransferType getTransferType() const =0
Get the current transfer type.
virtual const std::vector< size_t > & userSpecifiedRxChannels() const =0
Get the list of user-specified Rx channels.
virtual void setAGC(bool enableAGC)=0
Enable or disable AGC.
virtual void setRxSamplingRate(double rxRate)=0
Set the Rx sampling rate.
virtual void setRxAntenna(const std::string &rxAnt)=0
Set the Rx antenna.
virtual void setTxSamplingRate(double txRate)=0
Set the Tx sampling rate.
virtual double getTxSamplingRate()=0
Get the current Tx sampling rate.
virtual std::vector< std::string > getClockSources()=0
Get list of current clock sources.
virtual void setRxCarrierFrequencies(std::vector< double > carrierFreqs)=0
Set carrier frequencies for Rx channels.
virtual double getFilterBandwidth()=0
Get the current filter bandwidth.
virtual void setClockSources(const std::vector< std::string > &clockSources)=0
Set clock sources for multiple motherboards.
virtual void setTimeSource(const std::string &timeSource)=0
Set the time source.
virtual std::string getTimeSource()=0
Get the current time source.
virtual double getMasterClockRate()=0
Get the master clock rate.
virtual const std::vector< size_t > & userSpecifiedTxChannels() const =0
Get the list of user-specified Tx channels.
virtual double getRxBufferDuration() const =0
Get the Rx buffer duration.
virtual void setNumThreads4RxDecoding(uint8_t numThreads)=0
Set the number of threads for Rx decoding.
virtual bool supportAGC()=0
Check if AGC is supported.
virtual std::string getClockSource()=0
Get the current clock source.
virtual void setTransferType(SDRFrontEndTransferType transferType)=0
Set the transfer type.
virtual std::vector< std::string > getRxAntennas()=0
Get list of available Rx antennas.
virtual void setTimeSources(const std::vector< std::string > &timeSources)=0
Set time sources for multiple motherboards.
virtual void setTxAntenna(const std::string &txAnt)=0
Set the Tx antenna.
virtual void setTxCarrierFrequencies(std::vector< double > carrierFreqs)=0
Set carrier frequencies for Tx channels.
virtual std::vector< double > getTxCarrierFrequencies()=0
Get carrier frequencies for Tx channels.
virtual std::vector< double > getRxCarrierFrequencies()=0
Get carrier frequencies for Rx channels.
virtual std::vector< PipelineConfig > getPinelineConfig()=0
virtual void setClockSource(const std::string &clockSource)=0
Set the clock source.
virtual void setPinelineConfig(std::vector< PipelineConfig > cfgs)=0
virtual void setRxAntennas(const std::vector< std::string > &rxAnts)=0
Set antennas for all Rx chains.
virtual std::vector< std::string > getTxAntennas()=0
Get list of available Tx antennas.
virtual std::vector< std::string > getTimeSources()=0
Get list of current time sources.
virtual std::string getRxAntenna()=0
Get the current Rx antenna.
virtual std::string getTxAntenna()=0
Get the current Tx antenna.
virtual void initializeSDR()=0
Initialize the SDR hardware.
virtual void setRxPipelineChannels(std::vector< std::vector< size_t > > PipelineChannels)=0
virtual double getRxSamplingRate()=0
Get the current Rx sampling rate.
virtual void setFilterBandwidth(double bw)=0
Set the filter bandwidth.
virtual std::vector< std::vector< size_t > > getRxPipelineChannels()=0
std::vector< size_t > rx_channel
double rx_iq_mismatch_phase
double rx_iq_mismatch_mag
Structure containing reception status information for SDR frontend.
PicoScenesDeviceSubtype subType
PicoScenesDeviceType deviceType
Structure containing transmission status information for SDR frontend.
PicoScenesDeviceType deviceType
PicoScenesDeviceSubtype subType