PicoScenes API Docs
 
Loading...
Searching...
No Matches
AbstractSDRFrontEnd Class Referenceabstract

The shared abstract frontend for SDR devices only. More...

#include <AbstractSDRFrontEnd.hxx>

Inheritance diagram for AbstractSDRFrontEnd:
Collaboration diagram for AbstractSDRFrontEnd:

Public Member Functions

 AbstractSDRFrontEnd (const std::string &referredInterfaceName)
 Create AbstractSDRFrontEnd object according to the user-specified frontend name referredInterfaceName.
 
virtual CS16Vector generateSignal (const ModularPicoScenesTxFrame &frame, uint8_t numTxAntenna)=0
 Generate the baseband signal for ModularPicoScenesTxFrame frame with an optional numTxAntenna specifying the number of Tx antennas (or channels)
 
virtual std::vector< CS16Vector > generateMultiChannelSignals (const ModularPicoScenesTxFrame &frame, const uint8_t numTxAntenna)
 Generate the baseband signal via AbstractSDRFrontEnd::generateSignal, convert to SignalType type, and return in multi-channel format.
 
virtual void prebuildSignals (ModularPicoScenesTxFrame &frame, const uint8_t numTxAntenna)
 Generate the baseband signal via AbstractSDRFrontEnd::generateSignal and save the data into the prebuilt signals buffer of the Tx frame.
 
virtual int transmitSignalsFromFile (const std::string &signalSourceFile, uint64_t repeat)=0
 Transmits baseband signals from a .bbsignals file.
 
virtual int32_t transmitSignals (const std::vector< const void * > &signals, int64_t bufferLength, double postfixDuration)=0
 
virtual int transmitSignalsContinuously (const std::vector< const void * > &multiChannelHeaders, int64_t numSignalsPerAntenna, bool burstStart, bool burstEnd)=0
 
int transmit (const ModularPicoScenesTxFrame &frame) override
 Transmit a ModularPicoScenesTxFrame frame via current frontend hardware.
 
virtual size_t transmitSignal (const CS16Vector &signals, const uint8_t numTxChannels, const double postfixDuration)
 
virtual size_t transmitSignal (const std::vector< CS16Vector > &multiChannelSignals, const double postfixDuration)
 
virtual int32_t transmitSignalInBatchedSingleBurst (const std::vector< std::vector< const void * > > &multipleSignals, const std::vector< int64_t > &signalLength, const std::vector< double > &postfixDurations, uint32_t repeat)=0
 
int transmitFramesInBatch (const std::vector< const ModularPicoScenesTxFrame * > &frames, const uint32_t repeat) override
 Transmit frames in batch with precise inter-frame timing.
 
template<int repeat = 1, typename... Frames, typename = std::enable_if_t<(std::is_same_v<std::remove_cvref_t<Frames>, ModularPicoScenesTxFrame*> && ...) || (std::is_same_v<std::remove_cvref_t<Frames>, ModularPicoScenesTxFrame> && ...) || ((std::is_same_v<std::remove_cvref_t<Frames>, std::shared_ptr<ModularPicoScenesTxFrame>> || std::is_same_v<std::remove_cvref_t<Frames>, std::unique_ptr<ModularPicoScenesTxFrame>>) && ...)>>
int transmitFramesInBatch (Frames &&... frames)
 
virtual std::optional< double > getCurrentNoiseFloor ()=0
 
virtual SDRFrontEndTxStatus getLastTxStatus () const =0
 
virtual void clearTxStatus ()=0
 
void setTxSignalDumpFilePath (const std::string &txSignalDumpFilePathV)
 
void setRxSignalDumpFilePath (const std::string &rxSignalDumpFilePathV)
 
void setRxSignalDumpDelayedStartDuration (const double delayedStartDuration)
 
void setSignalReplayFilePath (const std::string &signalReplayFilePath)
 
void setTxSignalReplayDelayMs (const std::optional< uint32_t > &txSignalReplayDelayMs)
 
ChannelBandwidthEnum getRxChannelBandwidthMode () override
 Get the current channel bandwidth mode for Rx.
 
void setRxChannelBandwidthMode (ChannelBandwidthEnum rxCbw) override
 Set the channel bandwidth mode for Rx.
 
void setTxIQMismatch (double iq_ratio_db, double iq_crosstalk_degree) override
 Set I/Q mismatch parameters for Tx.
 
void setRxIQMismatch (double iq_ratio_db, double iq_crosstalk_degree) override
 Set I/Q mismatch parameters for Rx.
 
double getTxIqRatioDB () override
 Get the I/Q ratio for Tx in dB.
 
double getTxIqCrossTalkDegree () override
 Get the I/Q crosstalk angle for Tx.
 
double getRxIqRatioDB () override
 Get the I/Q ratio for Rx in dB.
 
double getRxIqCrossTalkDegree () override
 Get the I/Q crosstalk angle for Rx.
 
double getRxSensitivity () override
 Get the receiver sensitivity.
 
void setRxSensitivity (const double rxSensitivityV) override
 Set the receiver sensitivity.
 
void setCarrierFrequencyOffset4TxEncoding (double carrierFrequencyOffset) override
 Set the carrier frequency offset for Tx encoding.
 
std::optional< double > getCarrierFrequencyOffset4TxEncoding () override
 Get the carrier frequency offset for Tx encoding.
 
void setSamplingFrequencyOffset4TxEncoding (double samplingFrequencyOffset) override
 Set the sampling frequency offset for Tx encoding.
 
std::optional< double > getSamplingFrequencyOffset4TxEncoding () override
 Get the sampling frequency offset for Tx encoding.
 
void setCarrierFrequencyOffset4RxDecoding (double rxCarrierFrequencyOffsetV) override
 Set the carrier frequency offset for Rx decoding.
 
std::optional< double > getCarrierFrequencyOffset4RxDecoding () override
 Get the carrier frequency offset for Rx decoding.
 
void setSamplingFrequencyOffset4RxDecoding (double samplingFrequencyOffset) override
 Set the sampling frequency offset for Rx decoding.
 
std::optional< double > getSamplingFrequencyOffset4RxDecoding () override
 Get the sampling frequency offset for Rx decoding.
 
double getSamplingRate () override
 Get the baseband sampling rate.
 
void setSamplingRate (double samplingRate) override
 set sampling rate (in Hz)
 
double getTxResampleRatio () override
 Get the Tx resampling ratio.
 
void setTxResampleRatio (double txResampleRatioV) override
 Set the Tx resampling ratio.
 
double getRxResampleRatio () override
 Get the Rx resampling ratio.
 
bool isRxResampleBypassFIR () override
 Check if FIR filter is bypassed in Rx resampling.
 
void setRxResampleBypassFIR (const bool bypass) override
 Set whether to bypass FIR filter in Rx resampling.
 
bool isTxSplitHighLow () override
 Check if high/low split is enabled for Tx.
 
void setTxSplitHighLow (const bool split) override
 Set whether to split high/low for Tx.
 
bool isRxMergeHighLow () override
 Check if high/low merge is enabled for Rx.
 
void setRxMergeHighLow (const bool merge) override
 Set whether to merge high/low for Rx.
 
void setRxResampleRatio (double rxResampleRatioV) override
 Set the Rx resampling ratio.
 
double getRxOfdmSymbolOffset () override
 Get the Rx OFDM symbol offset.
 
void setRxOfdmSymbolOffset (const double rxOfdmSymbolOffset) override
 Set the Rx OFDM symbol offset.
 
double getNumSamplesSavedBeforeStart () override
 Get the number of samples saved before start.
 
void getNumSamplesSavedBeforeStart (const double numSamplesSavedBeforeStartV) override
 Set the number of samples saved before start.
 
uint8_t getTxChainMask () override
 Get the Tx chain mask.
 
void setTxChainMask (const uint8_t txChainMask) override
 Set Tx chain mask. Setting Tx chain mask means to use only the selected Tx chain for signal transmission.
 
uint8_t getRxChainMask () override
 Get Rx chain mask.
 
void setRxChainMask (const uint8_t rxChainMask) override
 Set Rx chain mask. Setting Rx chain mask means to use only the selected Rx chains for signal reception.
 
const std::vector< size_t > & userSpecifiedTxChannels () const override
 Get the list of user-specified Tx channels.
 
std::vector< size_t > getTxChannels () override
 Get the numbers of the active Tx channels, starting from 0.
 
void setTxChannels (const std::vector< size_t > &txChannelsN) override
 This methods is fundamentally.
 
const std::vector< size_t > & userSpecifiedRxChannels () const override
 Get the list of user-specified Rx channels.
 
std::vector< size_t > getRxChannels () override
 Get the number of the active Rx channels, starting from 0.
 
void setRxChannels (const std::vector< size_t > &rxChannelsN) override
 Set the number of the active Rx channels, starting from 0.
 
bool isFullDuplexEnabled () override
 Check if full duplex mode is enabled.
 
void setFullDuplex (const bool enableFullDuplex) override
 Set full duplex mode.
 
SDRFrontEndTransferType getTransferType () const override
 Get the current transfer type.
 
void setTransferType (const SDRFrontEndTransferType transferTypeV) override
 Set the transfer type.
 
void setNumThreads4RxDecoding (const uint8_t numThreads) override
 Set the number of threads for Rx decoding.
 
void printStatus () override
 Print a status string to command line.
 
ExtraInfo buildExtraInfo () override
 Build an ExtraInfo object describing the current frontend status.
 
std::tuple< double, double, double > getChannelAndBandwidth () override
 Get the <contorlfreq-bandwidth-centerfreq> channel parameter.
 
int setChannelAndBandwidth (double control, double bw, double center) override
 Set the <contorlfreq-bandwidth-centerfreq> channel parameter.
 
int setChannelAndBandwidth (std::optional< double > control, std::optional< double > bw, std::optional< double > center) override
 Set the <contorlfreq-bandwidth-centerfreq> channel parameter, but with optional.
 
double getCarrierFrequency () override
 Get the RF carrier frequency.
 
void setCarrierFrequency (double carrierFrequency) override
 Get the RF carrier frequency.
 
double getControlChannelFrequency () override
 Get the control channel frequency of <contorlfreq-bandwidth-centerfreq> channel parameter.
 
void setControlChannelFrequency (double controlFrequency) override
 Get the control channel frequency of <contorlfreq-bandwidth-centerfreq> channel parameter.
 
double getRxChannelBandwidth () override
 Get the 802.11 Channel Bandwidth parameter (20e6/40e6/80e6/160e6/320e6) of the Rx path.
 
void setRxChannelBandwidth (double rxcbw) override
 Set the Rx channel bandwidth parameter of the <contorlfreq-bandwidth-centerfreq> channel parameters.
 
double getTxpower () override
 get the transmission power (Tx power)
 
void setTxpower (double txpower) override
 Set the Tx power (in dB)
 
double getRxGain () override
 Get the total Rx gain. However, currently only QCA9300 and SDR frontend support this method.
 
void setRxGain (double rxGain) override
 Set the total Rx gain. However, currently only QCA9300 and SDR frontend support this method.
 
void setRxGain (double rxGain, uint8_t channel) override
 Set the Rx gain for the specified channel. However, currently only QCA9300 and SDR frontend support this method.
 
uint16_t getChannelFlags () override
 Get the old ChannelFlags descriptor.
 
std::string getClockSource () override
 Get the current clock source.
 
void setClockSource (const std::string &clockSource) override
 Set the clock source.
 
void setClockSources (const std::vector< std::string > &clockSources) override
 Set clock sources for multiple motherboards.
 
std::vector< std::string > getClockSources () override
 Get list of current clock sources.
 
std::string getTimeSource () override
 Get the current time source.
 
void setTimeSource (const std::string &timeSource) override
 Set the time source.
 
void setTimeSources (const std::vector< std::string > &timeSources) override
 Set time sources for multiple motherboards.
 
std::vector< std::string > getTimeSources () override
 Get list of current time sources.
 
double getMasterClockRate () override
 Get the master clock rate.
 
void setMasterClockRate (double masterClockRate) override
 Set the master clock rate.
 
double getSDRFrontEndTime () override
 Get the current SDR hardware time.
 
std::string getTxAntenna () override
 Get the current Tx antenna.
 
void setTxAntenna (const std::string &txAnt) override
 Set the Tx antenna.
 
std::string getRxAntenna () override
 Get the current Rx antenna.
 
void setRxAntenna (const std::string &rxAnt) override
 Set the Rx antenna.
 
std::vector< std::string > getTxAntennas () override
 Get list of available Tx antennas.
 
void setTxAntennas (const std::vector< std::string > &txAnts) override
 Set antennas for all Tx chains.
 
std::vector< std::string > getRxAntennas () override
 Get list of available Rx antennas.
 
void setRxAntennas (const std::vector< std::string > &rxAnts) override
 Set antennas for all Rx chains.
 
double getFilterBandwidth () override
 Get the current filter bandwidth.
 
void setFilterBandwidth (double bw) override
 Set the filter bandwidth.
 
void setRxPipelineChannels (std::vector< std::vector< size_t > > PipelineChannels) override
 
std::vector< std::vector< size_t > > getRxPipelineChannels () override
 
void setPinelineConfig (std::vector< PipelineConfig > cfgs) override
 
std::vector< PipelineConfiggetPinelineConfig () override
 
- Public Member Functions inherited from AbstractFrontEnd
 AbstractFrontEnd (const std::string &referredInterfaceName)
 Create AbstractFrontEnd object according to the user-specified frontend name referredInterfaceName.
 
virtual int startTx ()
 Activate internal Tx service loop.
 
virtual int stopTx ()
 De-activate Tx service loop.
 
virtual bool isTxServiceStarted () const
 Returns whether Tx service is started.
 
virtual int pauseTx ()
 Pause Tx service loop.
 
virtual int resumeTx ()
 Resume Tx service loop.
 
virtual int transmitFramesInBatch (const std::vector< ModularPicoScenesTxFrame > &frames, const uint32_t repeat)
 
template<int repeat = 1, typename ... Frames, typename = std::enable_if_t<(std::is_same_v<std::remove_cvref_t<Frames>, ModularPicoScenesTxFrame *> &&...) || (std::is_same_v<std::remove_cvref_t<Frames>, ModularPicoScenesTxFrame> &&...) || ((std::is_same_v<std::remove_cvref_t<Frames>, std::shared_ptr<ModularPicoScenesTxFrame>> || std::is_same_v<std::remove_cvref_t<Frames>, std::unique_ptr<ModularPicoScenesTxFrame>>) &&...)>>
int transmitFramesInBatch (Frames &&... frames)
 
virtual int startRx ()=0
 Activiate the Rx service loop.
 
virtual int stopRx ()=0
 De-activate the Rx service loop, set rxServiceStarted to false.
 
virtual int pauseRx ()
 Pause the Rx service loop, set rxPaused to true.
 
virtual int resumeRx ()
 Resuase the paused Rx service loop, set rxPaused to false.
 
void registerRxHandle (const std::function< void(const ModularPicoScenesRxFrame &)> &rxHandle)
 Register a handler for the received ModularPicoScenesRxFrame frames.
 
const std::string & getReferredInterfaceName () const
 Get the user-specified frontend name.
 
void setReferredInterfaceName (const std::string &name)
 Set the user-specified frontend name.
 
const std::string & getPhyId () const
 Return the PhyId for NIC frontend. This is a undefined behavior for SDR frontend.
 
PicoScenesDeviceType getFrontEndType () const
 Return the PicoScenesDeviceType of this frontend.
 
PicoScenesDeviceSubtype getFrontEndSubtype () const
 Return the PicoScenesDeviceType subtype of this frontend.
 
const std::array< uint8_t, 6 > & getMacAddressPhy () const
 Return the MAC address of this frontend. For SDR frontend, this method should generate a pseudo-MAC address.
 
PicoScenesFrameTxParameters & getUserSpecifiedTxParameters ()
 
ModularPicoScenesTxFrame initializeTxFrame () override
 
virtual ~AbstractFrontEnd ()=default
 
- Public Member Functions inherited from FrontEndConfigurations
virtual ~FrontEndConfigurations ()=default
 
virtual bool isHardwareSupportedPreset (const std::string &presetName)=0
 Check if a preset configuration is supported by the hardware.
 
virtual void applyPreset (const std::string &presetName, bool skipChangeRate=false)=0
 Apply a preset configuration to the frontend hardware.
 
void setNumTxChannels (const uint8_t numTxChannels)
 Set the number of Tx channels, the active channels start from 0.
 
void setNumRxChannels (const uint8_t numRxChannels)
 Set the number of Rx channels, the active channels start from 0.
 
std::vector< size_t > getAllChannels ()
 
virtual void setSourceMACAddressFilter (const std::vector< std::array< uint8_t, 6 > > &addresses)
 Set the SOURCE addresses that will be blocked by the frontend.
 
virtual void setDestinationMACAddressFilter (const std::vector< std::array< uint8_t, 6 > > &addresses)
 Set the DESTINATION addresses that will be blocked by the frontend.
 
virtual uint16_t getAndIncreasePerFrontEndTxFrameSequenceNumber ()
 
- Public Member Functions inherited from SDRFrontEndConfigurations
virtual void initializeSDR ()=0
 Initialize the SDR hardware.
 
virtual void setTxCarrierFrequencies (std::vector< double > carrierFreqs)=0
 Set carrier frequencies for Tx channels.
 
virtual void setRxCarrierFrequencies (std::vector< double > carrierFreqs)=0
 Set carrier frequencies for Rx 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 void setTxSamplingRate (double txRate)=0
 Set the Tx sampling rate.
 
virtual void setRxSamplingRate (double rxRate)=0
 Set the Rx sampling rate.
 
virtual double getTxSamplingRate ()=0
 Get the current Tx sampling rate.
 
virtual double getRxSamplingRate ()=0
 Get the current Rx sampling rate.
 
virtual bool supportAGC ()=0
 Check if AGC is supported.
 
virtual void setAGC (bool enableAGC)=0
 Enable or disable AGC.
 
virtual double getRxBufferDuration () const =0
 Get the Rx buffer duration.
 
virtual void skipMPDUDecoding4HESUHighDopplerFrame (bool skipDataDecoding)=0
 Set whether to skip MPDU decoding for HE-SU high Doppler frames.
 
- Public Member Functions inherited from SDRFrontEndBasebandConfigurations
virtual ~SDRFrontEndBasebandConfigurations ()=default
 
virtual bool isReturnBasebandSignals () const =0
 Check if baseband signals should be returned.
 
virtual bool useConventionalPacketDetector () const =0
 Check if conventional packet detector should be used.
 
- Public Member Functions inherited from SDRDeviceHardwareInformation
virtual std::vector< SDRMainBoardInfogetAllHardwareBoards (bool refresh=false)
 Get all hardware boards information.
 
virtual const SDRMainBoardInfogetHardwareBoardByIndex (size_t boardIndex, bool refresh=false)
 Get information for a specific board.
 
virtual size_t getHardwareBoardCount (bool refresh=false)
 Get total number of hardware boards.
 
virtual const SDRMainBoardInfogetHardwareBoardInfo (bool refresh=false)
 Get main hardware board information.
 
virtual const std::vector< uint8_t > & getHardwareSupportedTxChannels (bool refresh=false)
 Get supported Tx channels.
 
virtual const std::vector< uint8_t > & getHardwareSupportedRxChannels (bool refresh=false)
 Get supported Rx channels.
 
virtual const std::vector< std::string > & getHardwareSupportedTxAntennas (uint8_t channel, bool refresh=false)
 Get supported Tx antennas for a specific channel.
 
virtual const std::vector< std::string > & getHardwareSupportedRxAntennas (uint8_t channel, bool refresh=false)
 Get supported Rx antennas for a specific channel.
 
virtual const std::vector< std::vector< std::string > > & getHardwareSupportedTxAntennas (bool refresh=false)
 Get all supported Tx antennas.
 
virtual const std::vector< std::vector< std::string > > & getHardwareSupportedRxAntennas (bool refresh=false)
 Get all supported Rx antennas.
 
virtual const std::pair< double, double > & getHardwareTxGainRange (uint8_t channel, bool refresh=false)
 Get Tx gain range for a specific channel.
 
virtual const std::pair< double, double > & getHardwareRxGainRange (uint8_t channel, bool refresh=false)
 Get Rx gain range for a specific channel.
 
virtual const std::vector< std::pair< double, double > > & getHardwareTxGainRanges (bool refresh=false)
 Get all Tx gain ranges.
 
virtual const std::vector< std::pair< double, double > > & getHardwareRxGainRanges (bool refresh=false)
 Get all Rx gain ranges.
 
virtual const std::pair< double, double > & getHardwareTxFrequencyRange (uint8_t channel, bool refresh=false)
 Get Tx frequency range for a specific channel.
 
virtual const std::pair< double, double > & getHardwareRxFrequencyRange (uint8_t channel, bool refresh=false)
 Get Rx frequency range for a specific channel.
 
virtual const std::vector< std::pair< double, double > > & getHardwareTxFrequencyRanges (bool refresh=false)
 Get all Tx frequency ranges.
 
virtual const std::vector< std::pair< double, double > > & getHardwareRxFrequencyRanges (bool refresh=false)
 Get all Rx frequency ranges.
 
virtual const std::pair< double, double > & getHardwareTxSamplingRateRange (uint8_t channel, bool refresh=false)
 Get Tx sampling rate range for a specific channel.
 
virtual const std::pair< double, double > & getHardwareRxSamplingRateRange (uint8_t channel, bool refresh=false)
 Get Rx sampling rate range for a specific channel.
 
virtual const std::vector< std::pair< double, double > > & getHardwareTxSamplingRateRanges (bool refresh=false)
 Get all Tx sampling rate ranges.
 
virtual const std::vector< std::pair< double, double > > & getHardwareRxSamplingRateRanges (bool refresh=false)
 Get all Rx sampling rate ranges.
 
virtual const std::vector< double > & getHardwareSupportedMasterClockRates (bool refresh=false)
 Get supported master clock rates.
 
virtual const std::vector< std::string > & getHardwareSupportedClockAndTimeSources (bool refresh=false)
 Get supported clock and time sources.
 
virtual const std::vector< std::string > & getHardwareSupportedSensors (uint8_t channel, bool refresh=false)
 Get supported sensors for a specific channel.
 
virtual const std::vector< std::vector< std::string > > & getAllHardwareSupportedSensors (bool refresh=false)
 Get all supported sensors.
 
virtual const std::vector< double > & getHardwareTemperatures (bool refresh=false)
 Get temperature readings.
 
virtual bool getHardwareAGCSupport (uint8_t channel, bool refresh=false)
 Get AGC support for a specific channel.
 
virtual const std::vector< bool > & getHardwareAGCSupport (bool refresh=false)
 Get AGC support for all channels.
 
virtual const std::shared_ptr< SDRFrontEndProfile > & getHardwareFrontEndProfile (uint8_t channel, bool refresh=false)
 Get frontend profile for a specific channel.
 
virtual const std::vector< std::shared_ptr< SDRFrontEndProfile > > & getHardwareFrontEndProfiles (bool refresh=false)
 Get all frontend profiles.
 
virtual const SDRDaughterboardProfilegetHardwareDaughterboardProfile (size_t index, bool refresh=false)
 Get daughterboard profile at specific index.
 
virtual const std::vector< SDRDaughterboardProfile > & getHardwareDaughterboardProfiles (bool refresh=false)
 Get all daughterboard profiles.
 
virtual void refreshAllHardwareInfo ()
 Refresh all hardware information.
 
std::string hardwareInformationSheet ()
 Generate a formatted information sheet about the hardware.
 
virtual ~SDRDeviceHardwareInformation ()=default
 

Protected Member Functions

void refreshHardwareInfoForSupportedChannels () override
 Refresh supported channels information.
 
void refreshHardwareInfoForBoards () override
 Refresh boards information.
 
void refreshHardwareInfoForSupportedAntennas () override
 Refresh supported antennas information.
 
void refreshHardwareInfoForGainRanges () override
 Refresh gain ranges information.
 
void refreshHardwareInfoForFrequencyRanges () override
 Refresh frequency ranges information.
 
void refreshHardwareInfoForSamplingRateRanges () override
 Refresh sampling rate ranges information.
 
void refreshHardwareInfoForMasterClockRates () override
 Refresh master clock rates information.
 
void refreshHardwareInfoForClockAndTimeSources () override
 Refresh clock and time sources information.
 
void refreshHardwareInfoForSensors () override
 Refresh sensors information.
 
void refreshHardwareInfoForTemperatures () override
 Refresh temperature readings.
 
void refreshHardwareInfoForAGCSupport () override
 Refresh AGC support information.
 
void refreshHardwareInfoForFrontEndProfiles () override
 Refresh frontend profiles information.
 
- Protected Member Functions inherited from SDRDeviceHardwareInformation
virtual void refreshHardwareInfoForConnectionProfile ()
 Refresh connection profile information.
 

Protected Attributes

std::optional< uint32_t > txSignalReplayDelay_ms
 
std::optional< std::string > txSignalDumpFilePath
 
std::optional< std::string > rxSignalDumpFilePath
 
std::optional< double > rxSignalDumpDelayedStartDuration
 
std::optional< std::string > rxSignalReplayFilePath
 
bool fullDuplex {false}
 
uint8_t numDecodingThreads {1}
 
SDRFrontEndTransferType transferType {SDRFrontEndTransferType::CS16}
 
std::vector< size_t > txChannels {}
 
std::vector< size_t > rxChannels {}
 
std::vector< std::vector< size_t > > rxPipelineChannels {}
 
std::vector< PipelineConfigrxPipelineConfigs {}
 
ChannelBandwidthEnum rxCBW {ChannelBandwidthEnum::CBW_20}
 
double rxResampleRatio {1.0}
 
bool rxResampleBypassFIR {false}
 
bool mergeHighLow {false}
 
double rxOFDMSymbolOffset {0.75}
 
double numSamplesSavedBeforeStart {5}
 
double rxSensitivity {10}
 
double rxIQMismatchRatioDb {0}
 
double rxIQMismatchRatioDegree {0}
 
std::optional< double > rxCarrierFrequencyOffset {}
 
std::optional< double > rxSamplingFrequencyOffset {}
 
- Protected Attributes inherited from AbstractFrontEnd
std::string referredInterfaceName
 the user specified frontend name
 
std::string phyId
 phyId
 
std::array< uint8_t, 6 > macAddress_PHY {0, 0, 0, 0, 0, 0}
 macAddress of the frontend
 
PicoScenesDeviceType frontEndType = PicoScenesDeviceType::Unknown
 frontend type
 
PicoScenesDeviceSubtype frontEndSubtype = PicoScenesDeviceSubtype::Unknown
 frontend subtype
 
bool txServiceStarted = false
 indicate whether Tx service is running
 
PicoScenesFrameTxParameters userSpecifiedTxParameters
 user-specified Tx parameters
 
std::mutex txPauseMutex
 
std::condition_variable txPauseCV
 
bool txPaused = false
 indicate whether Tx serivce is paused
 
std::function< void(const ModularPicoScenesRxFrame &)> rxHandle = nullptr
 The Rx frame handler.
 
bool rxPaused = false
 indicate whether Rx service loop is paused
 
bool rxServiceStarted = false
 indicate whether Rx service loop is running
 
- Protected Attributes inherited from FrontEndConfigurations
std::vector< std::array< uint8_t, 6 > > sourceAddressFilterList
 the source addresses to be filtered
 
std::vector< std::array< uint8_t, 6 > > destinationAddressFilterList
 the destination addressed to be filtered
 
uint16_t currentTxSequenceNumber {0}
 current Tx sequence number
 
- Protected Attributes inherited from SDRDeviceHardwareInformation
SDRMainBoardInfo boardInfo
 
bool boardInfoChanged {true}
 
std::vector< uint8_t > supportedTxChannels {}
 
std::vector< uint8_t > supportedRxChannels {}
 
bool supportedChannelsChanged {true}
 
std::vector< SDRDaughterboardProfiledaughterboardProfiles {}
 
std::vector< std::shared_ptr< SDRFrontEndProfile > > frontendProfiles {}
 
bool frontendProfilesChanged {true}
 
std::vector< std::vector< std::string > > supportedTxAntennas {}
 
std::vector< std::vector< std::string > > supportedRxAntennas {}
 
bool supportedAntennasChanged {true}
 
bool supportedAntennasMapChanged {true}
 
std::vector< std::pair< double, double > > txGainRanges {}
 
std::vector< std::pair< double, double > > rxGainRanges {}
 
bool gainRangesChanged {true}
 
bool gainRangesMapChanged {true}
 
std::vector< std::pair< double, double > > txFrequencyRanges {}
 
std::vector< std::pair< double, double > > rxFrequencyRanges {}
 
bool frequencyRangesChanged {true}
 
bool frequencyRangesMapChanged {true}
 
std::vector< std::pair< double, double > > txSamplingRateRanges {}
 
std::vector< std::pair< double, double > > rxSamplingRateRanges {}
 
bool samplingRateRangesChanged {true}
 
bool samplingRateRangesMapChanged {true}
 
std::vector< double > supportedMasterClockRates {}
 
bool masterClockRatesChanged {true}
 
std::vector< std::string > supportedClockAndTimeSources {}
 
bool clockAndTimeSourcesChanged {true}
 
std::vector< std::vector< std::string > > supportedSensors {}
 
bool sensorsChanged {true}
 
bool sensorsMapChanged {true}
 
std::vector< double > temperatureReadings {}
 
bool temperaturesChanged {true}
 
std::vector< bool > agcSupport {}
 
bool agcSupportChanged {true}
 
bool agcSupportMapChanged {true}
 

Detailed Description

The shared abstract frontend for SDR devices only.

Definition at line 25 of file AbstractSDRFrontEnd.hxx.

Constructor & Destructor Documentation

◆ AbstractSDRFrontEnd()

AbstractSDRFrontEnd::AbstractSDRFrontEnd ( const std::string &  referredInterfaceName)
inlineexplicit

Create AbstractSDRFrontEnd object according to the user-specified frontend name referredInterfaceName.

Note
For plugin developers, all types of frontend should only be obtained via FrontEndFactory::getFrontEndInstance method. Developer should NEVER invoke this method of AbstractSDRFrontEnd or its subclasses directly!
Parameters
referredInterfaceNameuser supplied frontend name, e.g., usrp192.168.10.2 / 3 / hackrf0 / virtualsdr0

Definition at line 32 of file AbstractSDRFrontEnd.hxx.

Member Function Documentation

◆ buildExtraInfo()

ExtraInfo AbstractSDRFrontEnd::buildExtraInfo ( )
inlineoverridevirtual

Build an ExtraInfo object describing the current frontend status.

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 529 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ clearTxStatus()

virtual void AbstractSDRFrontEnd::clearTxStatus ( )
pure virtual

◆ generateMultiChannelSignals()

virtual std::vector< CS16Vector > AbstractSDRFrontEnd::generateMultiChannelSignals ( const ModularPicoScenesTxFrame &  frame,
const uint8_t  numTxAntenna 
)
inlinevirtual

Generate the baseband signal via AbstractSDRFrontEnd::generateSignal, convert to SignalType type, and return in multi-channel format.

Returns

Definition at line 48 of file AbstractSDRFrontEnd.hxx.

References Intrinsics::fastCopyN(), and generateSignal().

Referenced by prebuildSignals(), transmit(), and transmitFramesInBatch().

◆ generateSignal()

virtual CS16Vector AbstractSDRFrontEnd::generateSignal ( const ModularPicoScenesTxFrame &  frame,
uint8_t  numTxAntenna 
)
pure virtual

Generate the baseband signal for ModularPicoScenesTxFrame frame with an optional numTxAntenna specifying the number of Tx antennas (or channels)

Parameters
framethe frame to have baseband signal generated
numTxAntennawhen this optional value is not supplied, the channels of baseband data equals to the size of getTxChannels, which is the number of channels of the SDR frontend; othersize, the supplied numTxAntenna overrides the hardware frontend number
Returns
the int16-complex type baseband signals. For the multi-antenna signal [N_{signal} x N_{channel}], the data is reshaped to a single-columned vector [N_{signal} x N_{channel}, 1].

Referenced by generateMultiChannelSignals().

◆ getCarrierFrequency()

double AbstractSDRFrontEnd::getCarrierFrequency ( )
inlineoverridevirtual

Get the RF carrier frequency.

Returns
the current RF carrier frequency

Implements FrontEndConfigurations.

Definition at line 546 of file AbstractSDRFrontEnd.hxx.

References SDRFrontEndConfigurations::getRxCarrierFrequencies(), SDRFrontEndConfigurations::getTxCarrierFrequencies(), userSpecifiedRxChannels(), and userSpecifiedTxChannels().

◆ getCarrierFrequencyOffset4RxDecoding()

std::optional< double > AbstractSDRFrontEnd::getCarrierFrequencyOffset4RxDecoding ( )
inlineoverridevirtual

Get the carrier frequency offset for Rx decoding.

Returns the carrier frequency offset used for received signal compensation

Returns
std::optional<double> Current Rx carrier frequency offset if set

Implements SDRFrontEndBasebandConfigurations.

Definition at line 335 of file AbstractSDRFrontEnd.hxx.

References rxCarrierFrequencyOffset.

Referenced by setCarrierFrequencyOffset4RxDecoding().

◆ getCarrierFrequencyOffset4TxEncoding()

std::optional< double > AbstractSDRFrontEnd::getCarrierFrequencyOffset4TxEncoding ( )
inlineoverridevirtual

Get the carrier frequency offset for Tx encoding.

Returns the deliberate carrier frequency offset added to transmitted signals

Returns
std::optional<double> Current Tx carrier frequency offset if set

Implements SDRFrontEndBasebandConfigurations.

Definition at line 317 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::userSpecifiedTxParameters.

Referenced by setCarrierFrequencyOffset4TxEncoding().

◆ getChannelAndBandwidth()

std::tuple< double, double, double > AbstractSDRFrontEnd::getChannelAndBandwidth ( )
inlineoverridevirtual

Get the <contorlfreq-bandwidth-centerfreq> channel parameter.

Note
The format of <contorlfreq-bandwidth-centerfreq> is the same as Linux iw command for 80/160 channel bandwidth case.
Returns
a tuple of three values (in Hz)

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 533 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getChannelFlags()

uint16_t AbstractSDRFrontEnd::getChannelFlags ( )
inlineoverridevirtual

Get the old ChannelFlags descriptor.

Deprecated:
This method is deprecated
Returns
the resulting channel flags

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 601 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getClockSource()

std::string AbstractSDRFrontEnd::getClockSource ( )
inlineoverridevirtual

Get the current clock source.

Returns
std::string Name of current clock source

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 605 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getClockSources()

std::vector< std::string > AbstractSDRFrontEnd::getClockSources ( )
inlineoverridevirtual

Get list of current clock sources.

Returns
std::vector<std::string> List of current clock source names

Implements SDRFrontEndConfigurations.

Definition at line 617 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getControlChannelFrequency()

double AbstractSDRFrontEnd::getControlChannelFrequency ( )
inlineoverridevirtual

Get the control channel frequency of <contorlfreq-bandwidth-centerfreq> channel parameter.

See also
getChannelAndBandwidth()
Returns

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 565 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getCurrentNoiseFloor()

virtual std::optional< double > AbstractSDRFrontEnd::getCurrentNoiseFloor ( )
pure virtual

◆ getFilterBandwidth()

double AbstractSDRFrontEnd::getFilterBandwidth ( )
inlineoverridevirtual

Get the current filter bandwidth.

Returns
double Current filter bandwidth in Hz

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 681 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getLastTxStatus()

virtual SDRFrontEndTxStatus AbstractSDRFrontEnd::getLastTxStatus ( ) const
pure virtual

Referenced by transmitFramesInBatch().

◆ getMasterClockRate()

double AbstractSDRFrontEnd::getMasterClockRate ( )
inlineoverridevirtual

Get the master clock rate.

Returns
double Current master clock rate in Hz

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 637 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getNumSamplesSavedBeforeStart() [1/2]

double AbstractSDRFrontEnd::getNumSamplesSavedBeforeStart ( )
inlineoverridevirtual

Get the number of samples saved before start.

Returns
double Number of samples saved before start

Implements SDRFrontEndBasebandConfigurations.

Definition at line 420 of file AbstractSDRFrontEnd.hxx.

References numSamplesSavedBeforeStart.

◆ getNumSamplesSavedBeforeStart() [2/2]

void AbstractSDRFrontEnd::getNumSamplesSavedBeforeStart ( const double  numSamplesSavedBeforeStart)
inlineoverridevirtual

Set the number of samples saved before start.

Parameters
numSamplesSavedBeforeStartDesired number of samples

Implements SDRFrontEndBasebandConfigurations.

Definition at line 424 of file AbstractSDRFrontEnd.hxx.

References numSamplesSavedBeforeStart.

◆ getPinelineConfig()

std::vector< PipelineConfig > AbstractSDRFrontEnd::getPinelineConfig ( )
inlineoverridevirtual

Implements SDRFrontEndConfigurations.

Definition at line 701 of file AbstractSDRFrontEnd.hxx.

References rxPipelineConfigs.

◆ getRxAntenna()

std::string AbstractSDRFrontEnd::getRxAntenna ( )
inlineoverridevirtual

Get the current Rx antenna.

Returns
std::string Name of current Rx antenna

Implements SDRFrontEndConfigurations.

Definition at line 657 of file AbstractSDRFrontEnd.hxx.

References getRxAntennas().

◆ getRxAntennas()

std::vector< std::string > AbstractSDRFrontEnd::getRxAntennas ( )
inlineoverridevirtual

Get list of available Rx antennas.

Returns
std::vector<std::string> List of available Rx antenna names

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 673 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

Referenced by getRxAntenna().

◆ getRxChainMask()

uint8_t AbstractSDRFrontEnd::getRxChainMask ( )
inlineoverridevirtual

Get Rx chain mask.

0/1/2/3-bit for the 0/1/2/3-th radio chain. This method should be based on setTxChannels() internally for SDR frontend.

Returns

Implements FrontEndConfigurations.

Definition at line 446 of file AbstractSDRFrontEnd.hxx.

References userSpecifiedRxChannels().

Referenced by VirtualSDRFrontEnd::printStatus().

◆ getRxChannelBandwidth()

double AbstractSDRFrontEnd::getRxChannelBandwidth ( )
inlineoverridevirtual

Get the 802.11 Channel Bandwidth parameter (20e6/40e6/80e6/160e6/320e6) of the Rx path.

Note
This value does NOT necessarily equals to getSamplingRate(), because the latter is the actual working sampling rate.
Returns
For NIC, this value is the channel bandwidth of current Wi-Fi connection or the bandwidth that you specify via array_prepare_for_picoscenes script; for SDR, this value is the CBW20/40/80/160 Rx decoding parameter

Implements FrontEndConfigurations.

Definition at line 573 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getRxChannelBandwidthMode()

ChannelBandwidthEnum AbstractSDRFrontEnd::getRxChannelBandwidthMode ( )
inlineoverridevirtual

Get the current channel bandwidth mode for Rx.

Returns
ChannelBandwidthEnum Current Rx channel bandwidth mode

Implements SDRFrontEndBasebandConfigurations.

Definition at line 266 of file AbstractSDRFrontEnd.hxx.

References rxCBW.

Referenced by setRxChannelBandwidthMode().

◆ getRxChannels()

std::vector< size_t > AbstractSDRFrontEnd::getRxChannels ( )
inlineoverridevirtual

Get the number of the active Rx channels, starting from 0.

Returns
the number array

Implements FrontEndConfigurations.

Definition at line 489 of file AbstractSDRFrontEnd.hxx.

References rxChannels.

◆ getRxGain()

double AbstractSDRFrontEnd::getRxGain ( )
inlineoverridevirtual

Get the total Rx gain. However, currently only QCA9300 and SDR frontend support this method.

Returns
the Rx gain (in dB)

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 589 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getRxIqCrossTalkDegree()

double AbstractSDRFrontEnd::getRxIqCrossTalkDegree ( )
inlineoverridevirtual

Get the I/Q crosstalk angle for Rx.

Returns
double Current Rx I/Q crosstalk angle in degrees

Implements SDRFrontEndBasebandConfigurations.

Definition at line 299 of file AbstractSDRFrontEnd.hxx.

References rxIQMismatchRatioDegree.

Referenced by setRxIQMismatch().

◆ getRxIqRatioDB()

double AbstractSDRFrontEnd::getRxIqRatioDB ( )
inlineoverridevirtual

Get the I/Q ratio for Rx in dB.

Returns
double Current Rx I/Q ratio in dB

Implements SDRFrontEndBasebandConfigurations.

Definition at line 295 of file AbstractSDRFrontEnd.hxx.

References rxIQMismatchRatioDb.

Referenced by setRxIQMismatch().

◆ getRxOfdmSymbolOffset()

double AbstractSDRFrontEnd::getRxOfdmSymbolOffset ( )
inlineoverridevirtual

Get the Rx OFDM symbol offset.

Returns
double Current Rx OFDM symbol offset

Implements SDRFrontEndBasebandConfigurations.

Definition at line 411 of file AbstractSDRFrontEnd.hxx.

References rxOFDMSymbolOffset.

Referenced by setRxOfdmSymbolOffset().

◆ getRxPipelineChannels()

std::vector< std::vector< size_t > > AbstractSDRFrontEnd::getRxPipelineChannels ( )
inlineoverridevirtual

Implements SDRFrontEndConfigurations.

Definition at line 693 of file AbstractSDRFrontEnd.hxx.

References rxPipelineChannels.

◆ getRxResampleRatio()

double AbstractSDRFrontEnd::getRxResampleRatio ( )
inlineoverridevirtual

Get the Rx resampling ratio.

Returns
double Current Rx resampling ratio

Implements SDRFrontEndBasebandConfigurations.

Definition at line 375 of file AbstractSDRFrontEnd.hxx.

References rxResampleRatio.

Referenced by setRxResampleRatio().

◆ getRxSensitivity()

double AbstractSDRFrontEnd::getRxSensitivity ( )
inlineoverridevirtual

Get the receiver sensitivity.

Rx sensitivity (in dB) is the lowest threshold that can trigger power-level detection and subsequent packet detection. Higher sensitivity may reject more packets with low SNR, while lower sensitivity may accept more packets but with slower baseband processing rate.

Returns
double Current receiver sensitivity in dB

Implements SDRFrontEndBasebandConfigurations.

Definition at line 303 of file AbstractSDRFrontEnd.hxx.

References rxSensitivity.

Referenced by setRxSensitivity().

◆ getSamplingFrequencyOffset4RxDecoding()

std::optional< double > AbstractSDRFrontEnd::getSamplingFrequencyOffset4RxDecoding ( )
inlineoverridevirtual

Get the sampling frequency offset for Rx decoding.

Returns the sampling frequency offset used for received signal compensation

Returns
std::optional<double> Current Rx sampling frequency offset if set

Implements SDRFrontEndBasebandConfigurations.

Definition at line 344 of file AbstractSDRFrontEnd.hxx.

References rxSamplingFrequencyOffset.

Referenced by setSamplingFrequencyOffset4RxDecoding().

◆ getSamplingFrequencyOffset4TxEncoding()

std::optional< double > AbstractSDRFrontEnd::getSamplingFrequencyOffset4TxEncoding ( )
inlineoverridevirtual

Get the sampling frequency offset for Tx encoding.

Returns the deliberate sampling frequency offset added to transmitted signals

Returns
std::optional<double> Current Tx sampling frequency offset if set

Implements SDRFrontEndBasebandConfigurations.

Definition at line 326 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::userSpecifiedTxParameters.

Referenced by setSamplingFrequencyOffset4TxEncoding().

◆ getSamplingRate()

double AbstractSDRFrontEnd::getSamplingRate ( )
inlineoverridevirtual

◆ getSDRFrontEndTime()

double AbstractSDRFrontEnd::getSDRFrontEndTime ( )
inlineoverridevirtual

Get the current SDR hardware time.

Returns
double Current hardware time

Implements SDRFrontEndBasebandConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 645 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getTimeSource()

std::string AbstractSDRFrontEnd::getTimeSource ( )
inlineoverridevirtual

Get the current time source.

Returns
std::string Name of current time source

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 621 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getTimeSources()

std::vector< std::string > AbstractSDRFrontEnd::getTimeSources ( )
inlineoverridevirtual

Get list of current time sources.

Returns
std::vector<std::string> List of current time source names

Implements SDRFrontEndConfigurations.

Definition at line 633 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getTransferType()

SDRFrontEndTransferType AbstractSDRFrontEnd::getTransferType ( ) const
inlineoverridevirtual

Get the current transfer type.

Returns
SDRFrontEndTransferType Current transfer type

Implements SDRFrontEndConfigurations.

Definition at line 512 of file AbstractSDRFrontEnd.hxx.

References transferType.

◆ getTxAntenna()

std::string AbstractSDRFrontEnd::getTxAntenna ( )
inlineoverridevirtual

Get the current Tx antenna.

Returns
std::string Name of current Tx antenna

Implements SDRFrontEndConfigurations.

Definition at line 649 of file AbstractSDRFrontEnd.hxx.

References getTxAntennas().

◆ getTxAntennas()

std::vector< std::string > AbstractSDRFrontEnd::getTxAntennas ( )
inlineoverridevirtual

Get list of available Tx antennas.

Returns
std::vector<std::string> List of available Tx antenna names

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 665 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

Referenced by getTxAntenna().

◆ getTxChainMask()

uint8_t AbstractSDRFrontEnd::getTxChainMask ( )
inlineoverridevirtual

Get the Tx chain mask.

0/1/2/3-bit for the 0/1/2/3-th radio chain; 1 for active and 0 for inactive This method should be based on getTxChannels() internally for SDR frontend.

See also
getRxChainMask()
Returns
current tx chain mask

Implements FrontEndConfigurations.

Definition at line 428 of file AbstractSDRFrontEnd.hxx.

References userSpecifiedTxChannels().

Referenced by VirtualSDRFrontEnd::printStatus().

◆ getTxChannels()

std::vector< size_t > AbstractSDRFrontEnd::getTxChannels ( )
inlineoverridevirtual

Get the numbers of the active Tx channels, starting from 0.

Returns
the number array

Implements FrontEndConfigurations.

Definition at line 469 of file AbstractSDRFrontEnd.hxx.

References txChannels.

◆ getTxIqCrossTalkDegree()

double AbstractSDRFrontEnd::getTxIqCrossTalkDegree ( )
inlineoverridevirtual

Get the I/Q crosstalk angle for Tx.

Returns
double Current Tx I/Q crosstalk angle in degrees

Implements SDRFrontEndBasebandConfigurations.

Definition at line 291 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getUserSpecifiedTxParameters().

Referenced by setTxIQMismatch().

◆ getTxIqRatioDB()

double AbstractSDRFrontEnd::getTxIqRatioDB ( )
inlineoverridevirtual

Get the I/Q ratio for Tx in dB.

Returns
double Current Tx I/Q ratio in dB

Implements SDRFrontEndBasebandConfigurations.

Definition at line 287 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getUserSpecifiedTxParameters().

Referenced by setTxIQMismatch().

◆ getTxpower()

double AbstractSDRFrontEnd::getTxpower ( )
inlineoverridevirtual

get the transmission power (Tx power)

Returns
the Tx power

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 581 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ getTxResampleRatio()

double AbstractSDRFrontEnd::getTxResampleRatio ( )
inlineoverridevirtual

Get the Tx resampling ratio.

Returns
double Current Tx resampling ratio

Implements SDRFrontEndBasebandConfigurations.

Definition at line 364 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getUserSpecifiedTxParameters().

Referenced by setTxResampleRatio().

◆ isFullDuplexEnabled()

bool AbstractSDRFrontEnd::isFullDuplexEnabled ( )
inlineoverridevirtual

Check if full duplex mode is enabled.

Returns
bool True if full duplex is enabled, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 504 of file AbstractSDRFrontEnd.hxx.

References fullDuplex.

◆ isRxMergeHighLow()

bool AbstractSDRFrontEnd::isRxMergeHighLow ( )
inlineoverridevirtual

Check if high/low merge is enabled for Rx.

Returns
bool True if high/low merge is enabled, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 398 of file AbstractSDRFrontEnd.hxx.

References mergeHighLow.

◆ isRxResampleBypassFIR()

bool AbstractSDRFrontEnd::isRxResampleBypassFIR ( )
inlineoverridevirtual

Check if FIR filter is bypassed in Rx resampling.

Returns
bool True if FIR filter is bypassed, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 379 of file AbstractSDRFrontEnd.hxx.

References rxResampleBypassFIR.

Referenced by setRxResampleBypassFIR().

◆ isTxSplitHighLow()

bool AbstractSDRFrontEnd::isTxSplitHighLow ( )
inlineoverridevirtual

Check if high/low split is enabled for Tx.

Returns
bool True if high/low split is enabled, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 390 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getUserSpecifiedTxParameters().

◆ prebuildSignals()

virtual void AbstractSDRFrontEnd::prebuildSignals ( ModularPicoScenesTxFrame &  frame,
const uint8_t  numTxAntenna 
)
inlinevirtual

Generate the baseband signal via AbstractSDRFrontEnd::generateSignal and save the data into the prebuilt signals buffer of the Tx frame.

The design of this method and the prebuilt signal buffers in ModularPicoScenesTxFrame (ModularPicoScenesTxFrame::prebuiltCS8Signals or ModularPicoScenesTxFrame::prebuiltCS16Signals) is an approach to short-cut the signal generation time.

Template Parameters
SignalTypecan be int8_t or int16_t, as the pre-built signal buffers (ModularPicoScenesTxFrame::prebuiltCS8Signals or ModularPicoScenesTxFrame::prebuiltCS16Signals) of ModularPicoScenesTxFrame only support 8 or 16-bit
Parameters
frame
numTxAntenna

Definition at line 69 of file AbstractSDRFrontEnd.hxx.

References generateMultiChannelSignals().

◆ printStatus()

void AbstractSDRFrontEnd::printStatus ( )
inlineoverridevirtual

Print a status string to command line.

Implements AbstractFrontEnd.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 525 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ refreshHardwareInfoForAGCSupport()

void AbstractSDRFrontEnd::refreshHardwareInfoForAGCSupport ( )
inlineoverrideprotectedvirtual

Refresh AGC support information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 775 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForBoards()

void AbstractSDRFrontEnd::refreshHardwareInfoForBoards ( )
inlineoverrideprotectedvirtual

Refresh boards information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 736 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForClockAndTimeSources()

void AbstractSDRFrontEnd::refreshHardwareInfoForClockAndTimeSources ( )
inlineoverrideprotectedvirtual

Refresh clock and time sources information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 763 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForFrequencyRanges()

void AbstractSDRFrontEnd::refreshHardwareInfoForFrequencyRanges ( )
inlineoverrideprotectedvirtual

Refresh frequency ranges information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 751 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForFrontEndProfiles()

void AbstractSDRFrontEnd::refreshHardwareInfoForFrontEndProfiles ( )
inlineoverrideprotectedvirtual

Refresh frontend profiles information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 779 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForGainRanges()

void AbstractSDRFrontEnd::refreshHardwareInfoForGainRanges ( )
inlineoverrideprotectedvirtual

Refresh gain ranges information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 747 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForMasterClockRates()

void AbstractSDRFrontEnd::refreshHardwareInfoForMasterClockRates ( )
inlineoverrideprotectedvirtual

Refresh master clock rates information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 759 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForSamplingRateRanges()

void AbstractSDRFrontEnd::refreshHardwareInfoForSamplingRateRanges ( )
inlineoverrideprotectedvirtual

Refresh sampling rate ranges information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 755 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForSensors()

void AbstractSDRFrontEnd::refreshHardwareInfoForSensors ( )
inlineoverrideprotectedvirtual

Refresh sensors information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 767 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForSupportedAntennas()

void AbstractSDRFrontEnd::refreshHardwareInfoForSupportedAntennas ( )
inlineoverrideprotectedvirtual

Refresh supported antennas information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 743 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForSupportedChannels()

void AbstractSDRFrontEnd::refreshHardwareInfoForSupportedChannels ( )
inlineoverrideprotectedvirtual

Refresh supported channels information.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 732 of file AbstractSDRFrontEnd.hxx.

◆ refreshHardwareInfoForTemperatures()

void AbstractSDRFrontEnd::refreshHardwareInfoForTemperatures ( )
inlineoverrideprotectedvirtual

Refresh temperature readings.

Reimplemented from SDRDeviceHardwareInformation.

Definition at line 771 of file AbstractSDRFrontEnd.hxx.

◆ setCarrierFrequency()

void AbstractSDRFrontEnd::setCarrierFrequency ( double  carrierFrequency)
inlineoverridevirtual

Get the RF carrier frequency.

Parameters
carrierFrequencythe carrier frequency to be set

Implements FrontEndConfigurations.

Definition at line 556 of file AbstractSDRFrontEnd.hxx.

References SDRFrontEndConfigurations::setRxCarrierFrequencies(), SDRFrontEndConfigurations::setTxCarrierFrequencies(), userSpecifiedRxChannels(), and userSpecifiedTxChannels().

◆ setCarrierFrequencyOffset4RxDecoding()

void AbstractSDRFrontEnd::setCarrierFrequencyOffset4RxDecoding ( double  carrierFrequencyOffset)
inlineoverridevirtual

Set the carrier frequency offset for Rx decoding.

Parameters
carrierFrequencyOffsetDesired carrier frequency offset

Implements SDRFrontEndBasebandConfigurations.

Definition at line 330 of file AbstractSDRFrontEnd.hxx.

References getCarrierFrequencyOffset4RxDecoding(), AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and rxCarrierFrequencyOffset.

◆ setCarrierFrequencyOffset4TxEncoding()

void AbstractSDRFrontEnd::setCarrierFrequencyOffset4TxEncoding ( double  carrierFrequencyOffset)
inlineoverridevirtual

Set the carrier frequency offset for Tx encoding.

Parameters
carrierFrequencyOffsetDesired carrier frequency offset

Implements SDRFrontEndBasebandConfigurations.

Definition at line 312 of file AbstractSDRFrontEnd.hxx.

References getCarrierFrequencyOffset4TxEncoding(), AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and AbstractFrontEnd::userSpecifiedTxParameters.

◆ setChannelAndBandwidth() [1/2]

int AbstractSDRFrontEnd::setChannelAndBandwidth ( double  control,
double  bw,
double  center 
)
inlineoverridevirtual

Set the <contorlfreq-bandwidth-centerfreq> channel parameter.

See also
getChannelAndBandwidth()
Parameters
controlthe control channel frequency (in Hz or MHz)
bwthe bandwidth (in Hz or MHz)
centerthe actual center frequency (in Hz or MHz)
Returns
0 for OK 1 for Error

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 537 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setChannelAndBandwidth() [2/2]

int AbstractSDRFrontEnd::setChannelAndBandwidth ( std::optional< double >  control,
std::optional< double >  bw,
std::optional< double >  center 
)
inlineoverridevirtual

Set the <contorlfreq-bandwidth-centerfreq> channel parameter, but with optional.

Note
This method will first find the optimal <contorlfreq-bandwidth-centerfreq> channel parameter, then invoke setChannelAndBandwidth(double control, double bw, double center) internally
Parameters
controlthe control channel frequency
bwthe bandwidth
centerthe actual center frequency
Returns
0 for OK 1 for Error

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 541 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setClockSource()

void AbstractSDRFrontEnd::setClockSource ( const std::string &  clockSource)
inlineoverridevirtual

Set the clock source.

Parameters
clockSourceName of desired clock source

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 609 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setClockSources()

void AbstractSDRFrontEnd::setClockSources ( const std::vector< std::string > &  clockSources)
inlineoverridevirtual

Set clock sources for multiple motherboards.

Parameters
clockSourcesVector of clock source names for each motherboard

Implements SDRFrontEndConfigurations.

Definition at line 613 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setControlChannelFrequency()

void AbstractSDRFrontEnd::setControlChannelFrequency ( double  controlFrequency)
inlineoverridevirtual

Get the control channel frequency of <contorlfreq-bandwidth-centerfreq> channel parameter.

Note
This method will first find the optimal <contorlfreq-bandwidth-centerfreq> channel parameter, then invoke setChannelAndBandwidth(double control, double bw, double center) internally
Parameters
controlFrequency

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 569 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setFilterBandwidth()

void AbstractSDRFrontEnd::setFilterBandwidth ( double  bw)
inlineoverridevirtual

Set the filter bandwidth.

Parameters
bwDesired filter bandwidth in Hz

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 685 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setFullDuplex()

void AbstractSDRFrontEnd::setFullDuplex ( const bool  enableFullduplex)
inlineoverridevirtual

Set full duplex mode.

When enabled, Tx and Rx operate simultaneously, allowing Rx to receive signals transmitted by the Tx path

Parameters
enableFullduplexTrue to enable full duplex, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 508 of file AbstractSDRFrontEnd.hxx.

References fullDuplex.

◆ setMasterClockRate()

void AbstractSDRFrontEnd::setMasterClockRate ( double  masterClockRate)
inlineoverridevirtual

Set the master clock rate.

Parameters
masterClockRateDesired master clock rate in Hz

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 641 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setNumThreads4RxDecoding()

void AbstractSDRFrontEnd::setNumThreads4RxDecoding ( const uint8_t  numThreads)
inlineoverridevirtual

Set the number of threads for Rx decoding.

Parameters
numThreadsNumber of threads to use

Implements SDRFrontEndConfigurations.

Definition at line 520 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and numDecodingThreads.

◆ setPinelineConfig()

void AbstractSDRFrontEnd::setPinelineConfig ( std::vector< PipelineConfig cfgs)
inlineoverridevirtual

Implements SDRFrontEndConfigurations.

Definition at line 697 of file AbstractSDRFrontEnd.hxx.

References rxPipelineConfigs.

◆ setRxAntenna()

void AbstractSDRFrontEnd::setRxAntenna ( const std::string &  rxAnt)
inlineoverridevirtual

Set the Rx antenna.

Parameters
rxAntName of desired Rx antenna

Implements SDRFrontEndConfigurations.

Definition at line 661 of file AbstractSDRFrontEnd.hxx.

References setRxAntennas().

◆ setRxAntennas()

void AbstractSDRFrontEnd::setRxAntennas ( const std::vector< std::string > &  rxAnts)
inlineoverridevirtual

Set antennas for all Rx chains.

Parameters
rxAntsVector of antenna names for each Rx chain

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 677 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

Referenced by setRxAntenna().

◆ setRxChainMask()

void AbstractSDRFrontEnd::setRxChainMask ( const uint8_t  rxChainMask)
inlineoverridevirtual

Set Rx chain mask. Setting Rx chain mask means to use only the selected Rx chains for signal reception.

0/1/2/3-bit for the 0/1/2/3-th radio chain. This method should be based on setRxChannels() internally for SDR frontend.

Returns

Implements FrontEndConfigurations.

Definition at line 454 of file AbstractSDRFrontEnd.hxx.

References setRxChannels().

◆ setRxChannelBandwidth()

void AbstractSDRFrontEnd::setRxChannelBandwidth ( double  rxcbw)
inlineoverridevirtual

Set the Rx channel bandwidth parameter of the <contorlfreq-bandwidth-centerfreq> channel parameters.

Note
This method will first find the optimal <contorlfreq-bandwidth-centerfreq> channel parameter, then invoke setChannelAndBandwidth(double control, double bw, double center) internally
Parameters
rxcbw

Implements FrontEndConfigurations.

Definition at line 577 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setRxChannelBandwidthMode()

void AbstractSDRFrontEnd::setRxChannelBandwidthMode ( ChannelBandwidthEnum  rxCbw)
inlineoverridevirtual

Set the channel bandwidth mode for Rx.

Parameters
rxCbwDesired Rx channel bandwidth mode

Implements SDRFrontEndBasebandConfigurations.

Definition at line 270 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getRxChannelBandwidthMode(), LoggingService_SDR_info_print, and rxCBW.

Referenced by VirtualSDRFrontEnd::applyPreset().

◆ setRxChannels()

void AbstractSDRFrontEnd::setRxChannels ( const std::vector< size_t > &  rxChannels)
inlineoverridevirtual

Set the number of the active Rx channels, starting from 0.

Returns
the number array

Implements FrontEndConfigurations.

Definition at line 493 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and rxChannels.

Referenced by setRxChainMask().

◆ setRxGain() [1/2]

void AbstractSDRFrontEnd::setRxGain ( double  rxGain)
inlineoverridevirtual

Set the total Rx gain. However, currently only QCA9300 and SDR frontend support this method.

This method calls the following method to set same Rx gain for all Rx channels.

Parameters
rxGainthe Rx Gain to be set (in dB)

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 593 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setRxGain() [2/2]

void AbstractSDRFrontEnd::setRxGain ( double  rxGain,
uint8_t  channel 
)
inlineoverridevirtual

Set the Rx gain for the specified channel. However, currently only QCA9300 and SDR frontend support this method.

Parameters
rxGainthe Rx Gain to be set (in dB)
channelthe specified channel (starting from 0)

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 597 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setRxIQMismatch()

void AbstractSDRFrontEnd::setRxIQMismatch ( double  iq_ratio_db,
double  iq_crosstalk_degree 
)
inlineoverridevirtual

Set I/Q mismatch parameters for Rx.

Parameters
iq_ratio_dbRatio between I and Q components in dB (default 1.0)
iq_crosstalk_degreeAngle between I and Q components in degrees (default 0.0)

Implements SDRFrontEndBasebandConfigurations.

Definition at line 281 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getRxIqCrossTalkDegree(), getRxIqRatioDB(), LoggingService_SDR_info_print, rxIQMismatchRatioDb, and rxIQMismatchRatioDegree.

◆ setRxMergeHighLow()

void AbstractSDRFrontEnd::setRxMergeHighLow ( const bool  merge)
inlineoverridevirtual

Set whether to merge high/low for Rx.

Parameters
mergeTrue to enable high/low merge, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 402 of file AbstractSDRFrontEnd.hxx.

References mergeHighLow.

◆ setRxOfdmSymbolOffset()

void AbstractSDRFrontEnd::setRxOfdmSymbolOffset ( const double  rxOfdmSymbolOffset)
inlineoverridevirtual

Set the Rx OFDM symbol offset.

Parameters
rxOfdmSymbolOffsetDesired Rx OFDM symbol offset

Implements SDRFrontEndBasebandConfigurations.

Definition at line 415 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getRxOfdmSymbolOffset(), LoggingService_SDR_info_print, and rxOFDMSymbolOffset.

◆ setRxPipelineChannels()

void AbstractSDRFrontEnd::setRxPipelineChannels ( std::vector< std::vector< size_t > >  PipelineChannels)
inlineoverridevirtual

Implements SDRFrontEndConfigurations.

Definition at line 689 of file AbstractSDRFrontEnd.hxx.

References rxPipelineChannels.

◆ setRxResampleBypassFIR()

void AbstractSDRFrontEnd::setRxResampleBypassFIR ( const bool  bypass)
inlineoverridevirtual

Set whether to bypass FIR filter in Rx resampling.

Parameters
bypassTrue to bypass FIR filter, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 383 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), isRxResampleBypassFIR(), LoggingService_SDR_info_print, rxChannels, and rxResampleBypassFIR.

◆ setRxResampleRatio()

void AbstractSDRFrontEnd::setRxResampleRatio ( double  rxResampleRatio)
inlineoverridevirtual

Set the Rx resampling ratio.

Used to down-sample received signals from higher hardware sampling rate to Wi-Fi baseband rate (20/40/80/160-MHz)

Parameters
rxResampleRatioDesired Rx resampling ratio

Implements SDRFrontEndBasebandConfigurations.

Definition at line 406 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getRxResampleRatio(), LoggingService_SDR_info_print, and rxResampleRatio.

Referenced by VirtualSDRFrontEnd::applyPreset().

◆ setRxSensitivity()

void AbstractSDRFrontEnd::setRxSensitivity ( const double  rxSensitivity)
inlineoverridevirtual

Set the receiver sensitivity.

Parameters
rxSensitivityNew sensitivity value in dB

Implements SDRFrontEndBasebandConfigurations.

Definition at line 307 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getRxSensitivity(), LoggingService_SDR_info_print, and rxSensitivity.

◆ setRxSignalDumpDelayedStartDuration()

void AbstractSDRFrontEnd::setRxSignalDumpDelayedStartDuration ( const double  delayedStartDuration)
inline

Definition at line 254 of file AbstractSDRFrontEnd.hxx.

References rxSignalDumpDelayedStartDuration.

◆ setRxSignalDumpFilePath()

void AbstractSDRFrontEnd::setRxSignalDumpFilePath ( const std::string &  rxSignalDumpFilePathV)
inline

Definition at line 250 of file AbstractSDRFrontEnd.hxx.

References rxSignalDumpFilePath.

◆ setSamplingFrequencyOffset4RxDecoding()

void AbstractSDRFrontEnd::setSamplingFrequencyOffset4RxDecoding ( double  samplingFrequencyOffset)
inlineoverridevirtual

Set the sampling frequency offset for Rx decoding.

Parameters
samplingFrequencyOffsetDesired sampling frequency offset

Implements SDRFrontEndBasebandConfigurations.

Definition at line 339 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getSamplingFrequencyOffset4RxDecoding(), LoggingService_SDR_info_print, and rxSamplingFrequencyOffset.

◆ setSamplingFrequencyOffset4TxEncoding()

void AbstractSDRFrontEnd::setSamplingFrequencyOffset4TxEncoding ( double  samplingFrequencyOffset)
inlineoverridevirtual

Set the sampling frequency offset for Tx encoding.

Parameters
samplingFrequencyOffsetDesired sampling frequency offset

Implements SDRFrontEndBasebandConfigurations.

Definition at line 321 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getSamplingFrequencyOffset4TxEncoding(), LoggingService_SDR_info_print, and AbstractFrontEnd::userSpecifiedTxParameters.

◆ setSamplingRate()

void AbstractSDRFrontEnd::setSamplingRate ( double  samplingRate)
inlineoverridevirtual

set sampling rate (in Hz)

Parameters
samplingRate

Implements FrontEndConfigurations.

Definition at line 359 of file AbstractSDRFrontEnd.hxx.

References SDRFrontEndConfigurations::setRxSamplingRate(), and SDRFrontEndConfigurations::setTxSamplingRate().

◆ setSignalReplayFilePath()

void AbstractSDRFrontEnd::setSignalReplayFilePath ( const std::string &  signalReplayFilePath)
inline

Definition at line 258 of file AbstractSDRFrontEnd.hxx.

References rxSignalReplayFilePath.

◆ setTimeSource()

void AbstractSDRFrontEnd::setTimeSource ( const std::string &  timeSource)
inlineoverridevirtual

Set the time source.

Parameters
timeSourceName of desired time source

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 625 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setTimeSources()

void AbstractSDRFrontEnd::setTimeSources ( const std::vector< std::string > &  timeSources)
inlineoverridevirtual

Set time sources for multiple motherboards.

Parameters
timeSourcesVector of time source names for each motherboard

Implements SDRFrontEndConfigurations.

Definition at line 629 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setTransferType()

void AbstractSDRFrontEnd::setTransferType ( const SDRFrontEndTransferType  transferType)
inlineoverridevirtual

Set the transfer type.

Parameters
transferTypeDesired transfer type

Implements SDRFrontEndConfigurations.

Definition at line 516 of file AbstractSDRFrontEnd.hxx.

References transferType.

◆ setTxAntenna()

void AbstractSDRFrontEnd::setTxAntenna ( const std::string &  txAnt)
inlineoverridevirtual

Set the Tx antenna.

Parameters
txAntName of desired Tx antenna

Implements SDRFrontEndConfigurations.

Definition at line 653 of file AbstractSDRFrontEnd.hxx.

References setTxAntennas().

◆ setTxAntennas()

void AbstractSDRFrontEnd::setTxAntennas ( const std::vector< std::string > &  txAnts)
inlineoverridevirtual

Set antennas for all Tx chains.

Parameters
txAntsVector of antenna names for each Tx chain

Implements SDRFrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 669 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

Referenced by setTxAntenna().

◆ setTxChainMask()

void AbstractSDRFrontEnd::setTxChainMask ( const uint8_t  txChainMask)
inlineoverridevirtual

Set Tx chain mask. Setting Tx chain mask means to use only the selected Tx chain for signal transmission.

0/1/2/3-bit for the 0/1/2/3-th radio chain. This method should be based on setTxChannels() internally for SDR frontend.

Parameters
txChainMask

Implements FrontEndConfigurations.

Definition at line 436 of file AbstractSDRFrontEnd.hxx.

References setTxChannels().

◆ setTxChannels()

void AbstractSDRFrontEnd::setTxChannels ( const std::vector< size_t > &  txChannels)
inlineoverridevirtual

This methods is fundamentally.

Parameters
txChannels

Implements FrontEndConfigurations.

Definition at line 473 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and txChannels.

Referenced by setTxChainMask().

◆ setTxIQMismatch()

void AbstractSDRFrontEnd::setTxIQMismatch ( double  iq_ratio_db,
double  iq_crosstalk_degree 
)
inlineoverridevirtual

Set I/Q mismatch parameters for Tx.

Parameters
iq_ratio_dbRatio between I and Q components in dB (default 1.0)
iq_crosstalk_degreeAngle between I and Q components in degrees (default 0.0)

Implements SDRFrontEndBasebandConfigurations.

Definition at line 275 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getTxIqCrossTalkDegree(), getTxIqRatioDB(), AbstractFrontEnd::getUserSpecifiedTxParameters(), and LoggingService_SDR_info_print.

◆ setTxpower()

void AbstractSDRFrontEnd::setTxpower ( double  txpower)
inlineoverridevirtual

Set the Tx power (in dB)

Note
When txpower is between [0, 1.0], the actual txpower should be scaled to txpower x MAX_TXPOWER

Implements FrontEndConfigurations.

Reimplemented in VirtualSDRFrontEnd.

Definition at line 585 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName().

◆ setTxResampleRatio()

void AbstractSDRFrontEnd::setTxResampleRatio ( double  txResampleRatio)
inlineoverridevirtual

Set the Tx resampling ratio.

Used to up-sample the generated Tx signal to match higher hardware sampling rate

Parameters
txResampleRatioDesired Tx resampling ratio

Implements SDRFrontEndBasebandConfigurations.

Definition at line 368 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getReferredInterfaceName(), getTxResampleRatio(), AbstractFrontEnd::getUserSpecifiedTxParameters(), LoggingService_SDR_info_print, and txChannels.

Referenced by VirtualSDRFrontEnd::applyPreset().

◆ setTxSignalDumpFilePath()

void AbstractSDRFrontEnd::setTxSignalDumpFilePath ( const std::string &  txSignalDumpFilePathV)
inline

Definition at line 246 of file AbstractSDRFrontEnd.hxx.

References txSignalDumpFilePath.

◆ setTxSignalReplayDelayMs()

void AbstractSDRFrontEnd::setTxSignalReplayDelayMs ( const std::optional< uint32_t > &  txSignalReplayDelayMs)
inline

Definition at line 262 of file AbstractSDRFrontEnd.hxx.

References txSignalReplayDelay_ms.

◆ setTxSplitHighLow()

void AbstractSDRFrontEnd::setTxSplitHighLow ( const bool  split)
inlineoverridevirtual

Set whether to split high/low for Tx.

Parameters
splitTrue to enable high/low split, false otherwise

Implements SDRFrontEndBasebandConfigurations.

Definition at line 394 of file AbstractSDRFrontEnd.hxx.

References AbstractFrontEnd::getUserSpecifiedTxParameters().

◆ transmit()

int AbstractSDRFrontEnd::transmit ( const ModularPicoScenesTxFrame &  frame)
inlineoverridevirtual

Transmit a ModularPicoScenesTxFrame frame via current frontend hardware.

For NIC frontend, the actual implemntations should (1) set the Tx modulation parameters according to ModularPicoScenesTxFrame::txParameters and (2) use the packet injection protocol to inject the buffer created by ModularPicoScenesTxFrame::toBuffer to the NIC driver;
For SDR frontend, please refer to AbstractSDRFrontEnd::transmit method.

Note
This method blocks current thread until the transmission finishes or fails.
Parameters
framethe ModularPicoScenesTxFrame frame to be transmitted.
Returns
This method

Implements AbstractFrontEnd.

Definition at line 95 of file AbstractSDRFrontEnd.hxx.

References generateMultiChannelSignals(), AbstractFrontEnd::getFrontEndSubtype(), License::LicenseService::getInstance(), AbstractFrontEnd::getReferredInterfaceName(), SDRFrontEndConfigurations::getTxSamplingRate(), LoggingService_SDR_debug_printf, License::FeatureNaming::SDR_Tx2File, AbstractFrontEnd::startTx(), transmitSignal(), AbstractFrontEnd::txServiceStarted, txSignalDumpFilePath, and userSpecifiedTxChannels().

◆ transmitFramesInBatch() [1/2]

◆ transmitFramesInBatch() [2/2]

template<int repeat = 1, typename... Frames, typename = std::enable_if_t<(std::is_same_v<std::remove_cvref_t<Frames>, ModularPicoScenesTxFrame*> && ...) || (std::is_same_v<std::remove_cvref_t<Frames>, ModularPicoScenesTxFrame> && ...) || ((std::is_same_v<std::remove_cvref_t<Frames>, std::shared_ptr<ModularPicoScenesTxFrame>> || std::is_same_v<std::remove_cvref_t<Frames>, std::unique_ptr<ModularPicoScenesTxFrame>>) && ...)>>
int AbstractSDRFrontEnd::transmitFramesInBatch ( Frames &&...  frames)
inline

This function shadows the identical function in AbstractFrontEnd, deliberately.

Definition at line 224 of file AbstractSDRFrontEnd.hxx.

◆ transmitSignal() [1/2]

virtual size_t AbstractSDRFrontEnd::transmitSignal ( const CS16Vector &  signals,
const uint8_t  numTxChannels,
const double  postfixDuration 
)
inlinevirtual

Definition at line 129 of file AbstractSDRFrontEnd.hxx.

References transmitSignals().

Referenced by transmit().

◆ transmitSignal() [2/2]

virtual size_t AbstractSDRFrontEnd::transmitSignal ( const std::vector< CS16Vector > &  multiChannelSignals,
const double  postfixDuration 
)
inlinevirtual

Definition at line 140 of file AbstractSDRFrontEnd.hxx.

References transmitSignals().

◆ transmitSignalInBatchedSingleBurst()

virtual int32_t AbstractSDRFrontEnd::transmitSignalInBatchedSingleBurst ( const std::vector< std::vector< const void * > > &  multipleSignals,
const std::vector< int64_t > &  signalLength,
const std::vector< double > &  postfixDurations,
uint32_t  repeat 
)
pure virtual

Referenced by transmitFramesInBatch().

◆ transmitSignals()

virtual int32_t AbstractSDRFrontEnd::transmitSignals ( const std::vector< const void * > &  signals,
int64_t  bufferLength,
double  postfixDuration 
)
pure virtual

Implemented in VirtualSDRFrontEnd.

Referenced by transmitSignal(), and transmitSignal().

◆ transmitSignalsContinuously()

virtual int AbstractSDRFrontEnd::transmitSignalsContinuously ( const std::vector< const void * > &  multiChannelHeaders,
int64_t  numSignalsPerAntenna,
bool  burstStart,
bool  burstEnd 
)
pure virtual

◆ transmitSignalsFromFile()

virtual int AbstractSDRFrontEnd::transmitSignalsFromFile ( const std::string &  signalSourceFile,
uint64_t  repeat 
)
pure virtual

Transmits baseband signals from a .bbsignals file.

Parameters
signalSourceFilePath to the .bbsignals file containing the baseband signals to transmit
repeatNumber of times to repeat the signal transmission (0 means transmit once)
Returns
0 on successful transmission, 1 if an error occurred

◆ userSpecifiedRxChannels()

const std::vector< size_t > & AbstractSDRFrontEnd::userSpecifiedRxChannels ( ) const
inlineoverridevirtual

Get the list of user-specified Rx channels.

Returns
const std::vector<size_t>& List of Rx channel indices

Implements SDRFrontEndConfigurations.

Definition at line 484 of file AbstractSDRFrontEnd.hxx.

References rxChannels.

Referenced by getCarrierFrequency(), getRxChainMask(), and setCarrierFrequency().

◆ userSpecifiedTxChannels()

const std::vector< size_t > & AbstractSDRFrontEnd::userSpecifiedTxChannels ( ) const
inlineoverridevirtual

Get the list of user-specified Tx channels.

Returns
const std::vector<size_t>& List of Tx channel indices

Implements SDRFrontEndConfigurations.

Definition at line 464 of file AbstractSDRFrontEnd.hxx.

References txChannels.

Referenced by getCarrierFrequency(), getTxChainMask(), setCarrierFrequency(), transmit(), and transmitFramesInBatch().

Member Data Documentation

◆ fullDuplex

bool AbstractSDRFrontEnd::fullDuplex {false}
protected

Definition at line 711 of file AbstractSDRFrontEnd.hxx.

Referenced by isFullDuplexEnabled(), and setFullDuplex().

◆ mergeHighLow

bool AbstractSDRFrontEnd::mergeHighLow {false}
protected

Definition at line 722 of file AbstractSDRFrontEnd.hxx.

Referenced by isRxMergeHighLow(), and setRxMergeHighLow().

◆ numDecodingThreads

uint8_t AbstractSDRFrontEnd::numDecodingThreads {1}
protected

Definition at line 712 of file AbstractSDRFrontEnd.hxx.

Referenced by setNumThreads4RxDecoding().

◆ numSamplesSavedBeforeStart

double AbstractSDRFrontEnd::numSamplesSavedBeforeStart {5}
protected

◆ rxCarrierFrequencyOffset

std::optional<double> AbstractSDRFrontEnd::rxCarrierFrequencyOffset {}
protected

◆ rxCBW

ChannelBandwidthEnum AbstractSDRFrontEnd::rxCBW {ChannelBandwidthEnum::CBW_20}
protected

◆ rxChannels

std::vector<size_t> AbstractSDRFrontEnd::rxChannels {}
protected

◆ rxIQMismatchRatioDb

double AbstractSDRFrontEnd::rxIQMismatchRatioDb {0}
protected

Definition at line 726 of file AbstractSDRFrontEnd.hxx.

Referenced by getRxIqRatioDB(), and setRxIQMismatch().

◆ rxIQMismatchRatioDegree

double AbstractSDRFrontEnd::rxIQMismatchRatioDegree {0}
protected

Definition at line 727 of file AbstractSDRFrontEnd.hxx.

Referenced by getRxIqCrossTalkDegree(), and setRxIQMismatch().

◆ rxOFDMSymbolOffset

double AbstractSDRFrontEnd::rxOFDMSymbolOffset {0.75}
protected

Definition at line 723 of file AbstractSDRFrontEnd.hxx.

Referenced by getRxOfdmSymbolOffset(), and setRxOfdmSymbolOffset().

◆ rxPipelineChannels

std::vector<std::vector<size_t> > AbstractSDRFrontEnd::rxPipelineChannels {}
protected

Definition at line 716 of file AbstractSDRFrontEnd.hxx.

Referenced by getRxPipelineChannels(), and setRxPipelineChannels().

◆ rxPipelineConfigs

std::vector<PipelineConfig> AbstractSDRFrontEnd::rxPipelineConfigs {}
protected

Definition at line 717 of file AbstractSDRFrontEnd.hxx.

Referenced by getPinelineConfig(), and setPinelineConfig().

◆ rxResampleBypassFIR

bool AbstractSDRFrontEnd::rxResampleBypassFIR {false}
protected

Definition at line 721 of file AbstractSDRFrontEnd.hxx.

Referenced by isRxResampleBypassFIR(), and setRxResampleBypassFIR().

◆ rxResampleRatio

double AbstractSDRFrontEnd::rxResampleRatio {1.0}
protected

Definition at line 720 of file AbstractSDRFrontEnd.hxx.

Referenced by getRxResampleRatio(), and setRxResampleRatio().

◆ rxSamplingFrequencyOffset

std::optional<double> AbstractSDRFrontEnd::rxSamplingFrequencyOffset {}
protected

◆ rxSensitivity

double AbstractSDRFrontEnd::rxSensitivity {10}
protected

Definition at line 725 of file AbstractSDRFrontEnd.hxx.

Referenced by getRxSensitivity(), and setRxSensitivity().

◆ rxSignalDumpDelayedStartDuration

std::optional<double> AbstractSDRFrontEnd::rxSignalDumpDelayedStartDuration
protected

Definition at line 708 of file AbstractSDRFrontEnd.hxx.

Referenced by setRxSignalDumpDelayedStartDuration().

◆ rxSignalDumpFilePath

std::optional<std::string> AbstractSDRFrontEnd::rxSignalDumpFilePath
protected

Definition at line 707 of file AbstractSDRFrontEnd.hxx.

Referenced by setRxSignalDumpFilePath().

◆ rxSignalReplayFilePath

std::optional<std::string> AbstractSDRFrontEnd::rxSignalReplayFilePath
protected

Definition at line 709 of file AbstractSDRFrontEnd.hxx.

Referenced by setSignalReplayFilePath().

◆ transferType

SDRFrontEndTransferType AbstractSDRFrontEnd::transferType {SDRFrontEndTransferType::CS16}
protected

Definition at line 713 of file AbstractSDRFrontEnd.hxx.

Referenced by getTransferType(), and setTransferType().

◆ txChannels

std::vector<size_t> AbstractSDRFrontEnd::txChannels {}
protected

◆ txSignalDumpFilePath

std::optional<std::string> AbstractSDRFrontEnd::txSignalDumpFilePath
protected

◆ txSignalReplayDelay_ms

std::optional<uint32_t> AbstractSDRFrontEnd::txSignalReplayDelay_ms
protected

Definition at line 705 of file AbstractSDRFrontEnd.hxx.

Referenced by setTxSignalReplayDelayMs().


The documentation for this class was generated from the following file: