|
| 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< PipelineConfig > | getPinelineConfig () override |
|
| 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 |
|
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 () |
|
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.
|
|
virtual std::vector< SDRMainBoardInfo > | getAllHardwareBoards (bool refresh=false) |
| Get all hardware boards information.
|
|
virtual const SDRMainBoardInfo & | getHardwareBoardByIndex (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 SDRMainBoardInfo & | getHardwareBoardInfo (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 SDRDaughterboardProfile & | getHardwareDaughterboardProfile (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 |
|