The shared abstract frontend for SDR devices only. More...
#include <AbstractSDRFrontEnd.hxx>
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< 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. | |
![]() | |
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 |
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. | |
![]() | |
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< PipelineConfig > | rxPipelineConfigs {} |
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 {} |
![]() | |
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 | |
![]() | |
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 | |
![]() | |
SDRMainBoardInfo | boardInfo |
bool | boardInfoChanged {true} |
std::vector< uint8_t > | supportedTxChannels {} |
std::vector< uint8_t > | supportedRxChannels {} |
bool | supportedChannelsChanged {true} |
std::vector< SDRDaughterboardProfile > | daughterboardProfiles {} |
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} |
The shared abstract frontend for SDR devices only.
Definition at line 25 of file AbstractSDRFrontEnd.hxx.
|
inlineexplicit |
Create AbstractSDRFrontEnd object according to the user-specified frontend name referredInterfaceName
.
referredInterfaceName | user supplied frontend name, e.g., usrp192.168.10.2 / 3 / hackrf0 / virtualsdr0 |
Definition at line 32 of file AbstractSDRFrontEnd.hxx.
|
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().
|
pure virtual |
|
inlinevirtual |
Generate the baseband signal via AbstractSDRFrontEnd::generateSignal, convert to SignalType
type, and return in multi-channel format.
Definition at line 48 of file AbstractSDRFrontEnd.hxx.
References Intrinsics::fastCopyN(), and generateSignal().
Referenced by prebuildSignals(), transmit(), and transmitFramesInBatch().
|
pure virtual |
Generate the baseband signal for ModularPicoScenesTxFrame frame
with an optional numTxAntenna
specifying the number of Tx antennas (or channels)
frame | the frame to have baseband signal generated |
numTxAntenna | when 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 |
Referenced by generateMultiChannelSignals().
|
inlineoverridevirtual |
Get the RF carrier frequency.
Implements FrontEndConfigurations.
Definition at line 546 of file AbstractSDRFrontEnd.hxx.
References SDRFrontEndConfigurations::getRxCarrierFrequencies(), SDRFrontEndConfigurations::getTxCarrierFrequencies(), userSpecifiedRxChannels(), and userSpecifiedTxChannels().
|
inlineoverridevirtual |
Get the carrier frequency offset for Rx decoding.
Returns the carrier frequency offset used for received signal compensation
Implements SDRFrontEndBasebandConfigurations.
Definition at line 335 of file AbstractSDRFrontEnd.hxx.
References rxCarrierFrequencyOffset.
Referenced by setCarrierFrequencyOffset4RxDecoding().
|
inlineoverridevirtual |
Get the carrier frequency offset for Tx encoding.
Returns the deliberate carrier frequency offset added to transmitted signals
Implements SDRFrontEndBasebandConfigurations.
Definition at line 317 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::userSpecifiedTxParameters.
Referenced by setCarrierFrequencyOffset4TxEncoding().
|
inlineoverridevirtual |
Get the <contorlfreq-bandwidth-centerfreq> channel parameter.
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 533 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the old ChannelFlags descriptor.
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 601 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the current clock source.
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 605 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get list of current clock sources.
Implements SDRFrontEndConfigurations.
Definition at line 617 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the control channel frequency of <contorlfreq-bandwidth-centerfreq> channel parameter.
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 565 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
pure virtual |
|
inlineoverridevirtual |
Get the current filter bandwidth.
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 681 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
pure virtual |
Referenced by transmitFramesInBatch().
|
inlineoverridevirtual |
Get the master clock rate.
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 637 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the number of samples saved before start.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 420 of file AbstractSDRFrontEnd.hxx.
References numSamplesSavedBeforeStart.
|
inlineoverridevirtual |
Set the number of samples saved before start.
numSamplesSavedBeforeStart | Desired number of samples |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 424 of file AbstractSDRFrontEnd.hxx.
References numSamplesSavedBeforeStart.
|
inlineoverridevirtual |
Implements SDRFrontEndConfigurations.
Definition at line 701 of file AbstractSDRFrontEnd.hxx.
References rxPipelineConfigs.
|
inlineoverridevirtual |
Get the current Rx antenna.
Implements SDRFrontEndConfigurations.
Definition at line 657 of file AbstractSDRFrontEnd.hxx.
References getRxAntennas().
|
inlineoverridevirtual |
Get list of available Rx antennas.
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 673 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
Referenced by getRxAntenna().
|
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.
Implements FrontEndConfigurations.
Definition at line 446 of file AbstractSDRFrontEnd.hxx.
References userSpecifiedRxChannels().
Referenced by VirtualSDRFrontEnd::printStatus().
|
inlineoverridevirtual |
Get the 802.11 Channel Bandwidth parameter (20e6/40e6/80e6/160e6/320e6) of the Rx path.
Implements FrontEndConfigurations.
Definition at line 573 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the current channel bandwidth mode for Rx.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 266 of file AbstractSDRFrontEnd.hxx.
References rxCBW.
Referenced by setRxChannelBandwidthMode().
|
inlineoverridevirtual |
Get the number of the active Rx channels, starting from 0.
Implements FrontEndConfigurations.
Definition at line 489 of file AbstractSDRFrontEnd.hxx.
References rxChannels.
|
inlineoverridevirtual |
Get the total Rx gain. However, currently only QCA9300 and SDR frontend support this method.
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 589 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the I/Q crosstalk angle for Rx.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 299 of file AbstractSDRFrontEnd.hxx.
References rxIQMismatchRatioDegree.
Referenced by setRxIQMismatch().
|
inlineoverridevirtual |
Get the I/Q ratio for Rx in dB.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 295 of file AbstractSDRFrontEnd.hxx.
References rxIQMismatchRatioDb.
Referenced by setRxIQMismatch().
|
inlineoverridevirtual |
Get the Rx OFDM symbol offset.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 411 of file AbstractSDRFrontEnd.hxx.
References rxOFDMSymbolOffset.
Referenced by setRxOfdmSymbolOffset().
|
inlineoverridevirtual |
Implements SDRFrontEndConfigurations.
Definition at line 693 of file AbstractSDRFrontEnd.hxx.
References rxPipelineChannels.
|
inlineoverridevirtual |
Get the Rx resampling ratio.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 375 of file AbstractSDRFrontEnd.hxx.
References rxResampleRatio.
Referenced by setRxResampleRatio().
|
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.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 303 of file AbstractSDRFrontEnd.hxx.
References rxSensitivity.
Referenced by setRxSensitivity().
|
inlineoverridevirtual |
Get the sampling frequency offset for Rx decoding.
Returns the sampling frequency offset used for received signal compensation
Implements SDRFrontEndBasebandConfigurations.
Definition at line 344 of file AbstractSDRFrontEnd.hxx.
References rxSamplingFrequencyOffset.
Referenced by setSamplingFrequencyOffset4RxDecoding().
|
inlineoverridevirtual |
Get the sampling frequency offset for Tx encoding.
Returns the deliberate sampling frequency offset added to transmitted signals
Implements SDRFrontEndBasebandConfigurations.
Definition at line 326 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::userSpecifiedTxParameters.
Referenced by setSamplingFrequencyOffset4TxEncoding().
|
inlineoverridevirtual |
Get the baseband sampling rate.
Implements FrontEndConfigurations.
Definition at line 348 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), SDRFrontEndConfigurations::getRxSamplingRate(), SDRFrontEndConfigurations::getTxSamplingRate(), and LoggingService_SDR_warning_print.
Referenced by VirtualSDRFrontEnd::printStatus().
|
inlineoverridevirtual |
Get the current SDR hardware time.
Implements SDRFrontEndBasebandConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 645 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the current time source.
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 621 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get list of current time sources.
Implements SDRFrontEndConfigurations.
Definition at line 633 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the current transfer type.
Implements SDRFrontEndConfigurations.
Definition at line 512 of file AbstractSDRFrontEnd.hxx.
References transferType.
|
inlineoverridevirtual |
Get the current Tx antenna.
Implements SDRFrontEndConfigurations.
Definition at line 649 of file AbstractSDRFrontEnd.hxx.
References getTxAntennas().
|
inlineoverridevirtual |
Get list of available Tx antennas.
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 665 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
Referenced by getTxAntenna().
|
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.
Implements FrontEndConfigurations.
Definition at line 428 of file AbstractSDRFrontEnd.hxx.
References userSpecifiedTxChannels().
Referenced by VirtualSDRFrontEnd::printStatus().
|
inlineoverridevirtual |
Get the numbers of the active Tx channels, starting from 0.
Implements FrontEndConfigurations.
Definition at line 469 of file AbstractSDRFrontEnd.hxx.
References txChannels.
|
inlineoverridevirtual |
Get the I/Q crosstalk angle for Tx.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 291 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getUserSpecifiedTxParameters().
Referenced by setTxIQMismatch().
|
inlineoverridevirtual |
Get the I/Q ratio for Tx in dB.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 287 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getUserSpecifiedTxParameters().
Referenced by setTxIQMismatch().
|
inlineoverridevirtual |
get the transmission power (Tx power)
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 581 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the Tx resampling ratio.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 364 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getUserSpecifiedTxParameters().
Referenced by setTxResampleRatio().
|
inlineoverridevirtual |
Check if full duplex mode is enabled.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 504 of file AbstractSDRFrontEnd.hxx.
References fullDuplex.
|
inlineoverridevirtual |
Check if high/low merge is enabled for Rx.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 398 of file AbstractSDRFrontEnd.hxx.
References mergeHighLow.
|
inlineoverridevirtual |
Check if FIR filter is bypassed in Rx resampling.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 379 of file AbstractSDRFrontEnd.hxx.
References rxResampleBypassFIR.
Referenced by setRxResampleBypassFIR().
|
inlineoverridevirtual |
Check if high/low split is enabled for Tx.
Implements SDRFrontEndBasebandConfigurations.
Definition at line 390 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getUserSpecifiedTxParameters().
|
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.
SignalType | can 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 |
frame | |
numTxAntenna |
Definition at line 69 of file AbstractSDRFrontEnd.hxx.
References generateMultiChannelSignals().
|
inlineoverridevirtual |
Print a status string to command line.
Implements AbstractFrontEnd.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 525 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverrideprotectedvirtual |
Refresh AGC support information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 775 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh boards information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 736 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh clock and time sources information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 763 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh frequency ranges information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 751 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh frontend profiles information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 779 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh gain ranges information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 747 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh master clock rates information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 759 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh sampling rate ranges information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 755 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh sensors information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 767 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh supported antennas information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 743 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh supported channels information.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 732 of file AbstractSDRFrontEnd.hxx.
|
inlineoverrideprotectedvirtual |
Refresh temperature readings.
Reimplemented from SDRDeviceHardwareInformation.
Definition at line 771 of file AbstractSDRFrontEnd.hxx.
|
inlineoverridevirtual |
Get the RF carrier frequency.
carrierFrequency | the carrier frequency to be set |
Implements FrontEndConfigurations.
Definition at line 556 of file AbstractSDRFrontEnd.hxx.
References SDRFrontEndConfigurations::setRxCarrierFrequencies(), SDRFrontEndConfigurations::setTxCarrierFrequencies(), userSpecifiedRxChannels(), and userSpecifiedTxChannels().
|
inlineoverridevirtual |
Set the carrier frequency offset for Rx decoding.
carrierFrequencyOffset | Desired carrier frequency offset |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 330 of file AbstractSDRFrontEnd.hxx.
References getCarrierFrequencyOffset4RxDecoding(), AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and rxCarrierFrequencyOffset.
|
inlineoverridevirtual |
Set the carrier frequency offset for Tx encoding.
carrierFrequencyOffset | Desired carrier frequency offset |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 312 of file AbstractSDRFrontEnd.hxx.
References getCarrierFrequencyOffset4TxEncoding(), AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and AbstractFrontEnd::userSpecifiedTxParameters.
|
inlineoverridevirtual |
Set the <contorlfreq-bandwidth-centerfreq> channel parameter.
control | the control channel frequency (in Hz or MHz) |
bw | the bandwidth (in Hz or MHz) |
center | the actual center frequency (in Hz or MHz) |
0
for OK 1
for Error Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 537 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set the <contorlfreq-bandwidth-centerfreq> channel parameter, but with optional.
control | the control channel frequency |
bw | the bandwidth |
center | the actual center frequency |
0
for OK 1
for Error Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 541 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set the clock source.
clockSource | Name of desired clock source |
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 609 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set clock sources for multiple motherboards.
clockSources | Vector of clock source names for each motherboard |
Implements SDRFrontEndConfigurations.
Definition at line 613 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Get the control channel frequency of <contorlfreq-bandwidth-centerfreq> channel parameter.
controlFrequency |
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 569 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set the filter bandwidth.
bw | Desired filter bandwidth in Hz |
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 685 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set full duplex mode.
When enabled, Tx and Rx operate simultaneously, allowing Rx to receive signals transmitted by the Tx path
enableFullduplex | True to enable full duplex, false otherwise |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 508 of file AbstractSDRFrontEnd.hxx.
References fullDuplex.
|
inlineoverridevirtual |
Set the master clock rate.
masterClockRate | Desired master clock rate in Hz |
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 641 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set the number of threads for Rx decoding.
numThreads | Number of threads to use |
Implements SDRFrontEndConfigurations.
Definition at line 520 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and numDecodingThreads.
|
inlineoverridevirtual |
Implements SDRFrontEndConfigurations.
Definition at line 697 of file AbstractSDRFrontEnd.hxx.
References rxPipelineConfigs.
|
inlineoverridevirtual |
Set the Rx antenna.
rxAnt | Name of desired Rx antenna |
Implements SDRFrontEndConfigurations.
Definition at line 661 of file AbstractSDRFrontEnd.hxx.
References setRxAntennas().
|
inlineoverridevirtual |
Set antennas for all Rx chains.
rxAnts | Vector 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().
|
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.
Implements FrontEndConfigurations.
Definition at line 454 of file AbstractSDRFrontEnd.hxx.
References setRxChannels().
|
inlineoverridevirtual |
Set the Rx channel bandwidth parameter of the <contorlfreq-bandwidth-centerfreq> channel parameters.
rxcbw |
Implements FrontEndConfigurations.
Definition at line 577 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set the channel bandwidth mode for Rx.
rxCbw | Desired 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().
|
inlineoverridevirtual |
Set the number of the active Rx channels, starting from 0.
Implements FrontEndConfigurations.
Definition at line 493 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and rxChannels.
Referenced by setRxChainMask().
|
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.
rxGain | the Rx Gain to be set (in dB) |
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 593 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set the Rx gain for the specified channel. However, currently only QCA9300 and SDR frontend support this method.
rxGain | the Rx Gain to be set (in dB) |
channel | the specified channel (starting from 0) |
Implements FrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 597 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set I/Q mismatch parameters for Rx.
iq_ratio_db | Ratio between I and Q components in dB (default 1.0) |
iq_crosstalk_degree | Angle 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.
|
inlineoverridevirtual |
Set whether to merge high/low for Rx.
merge | True to enable high/low merge, false otherwise |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 402 of file AbstractSDRFrontEnd.hxx.
References mergeHighLow.
|
inlineoverridevirtual |
Set the Rx OFDM symbol offset.
rxOfdmSymbolOffset | Desired Rx OFDM symbol offset |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 415 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), getRxOfdmSymbolOffset(), LoggingService_SDR_info_print, and rxOFDMSymbolOffset.
|
inlineoverridevirtual |
Implements SDRFrontEndConfigurations.
Definition at line 689 of file AbstractSDRFrontEnd.hxx.
References rxPipelineChannels.
|
inlineoverridevirtual |
Set whether to bypass FIR filter in Rx resampling.
bypass | True 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.
|
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)
rxResampleRatio | Desired 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().
|
inlineoverridevirtual |
Set the receiver sensitivity.
rxSensitivity | New sensitivity value in dB |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 307 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), getRxSensitivity(), LoggingService_SDR_info_print, and rxSensitivity.
|
inline |
Definition at line 254 of file AbstractSDRFrontEnd.hxx.
References rxSignalDumpDelayedStartDuration.
|
inline |
Definition at line 250 of file AbstractSDRFrontEnd.hxx.
References rxSignalDumpFilePath.
|
inlineoverridevirtual |
Set the sampling frequency offset for Rx decoding.
samplingFrequencyOffset | Desired sampling frequency offset |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 339 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), getSamplingFrequencyOffset4RxDecoding(), LoggingService_SDR_info_print, and rxSamplingFrequencyOffset.
|
inlineoverridevirtual |
Set the sampling frequency offset for Tx encoding.
samplingFrequencyOffset | Desired sampling frequency offset |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 321 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), getSamplingFrequencyOffset4TxEncoding(), LoggingService_SDR_info_print, and AbstractFrontEnd::userSpecifiedTxParameters.
|
inlineoverridevirtual |
set sampling rate (in Hz)
samplingRate |
Implements FrontEndConfigurations.
Definition at line 359 of file AbstractSDRFrontEnd.hxx.
References SDRFrontEndConfigurations::setRxSamplingRate(), and SDRFrontEndConfigurations::setTxSamplingRate().
|
inline |
Definition at line 258 of file AbstractSDRFrontEnd.hxx.
References rxSignalReplayFilePath.
|
inlineoverridevirtual |
Set the time source.
timeSource | Name of desired time source |
Implements SDRFrontEndConfigurations.
Reimplemented in VirtualSDRFrontEnd.
Definition at line 625 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set time sources for multiple motherboards.
timeSources | Vector of time source names for each motherboard |
Implements SDRFrontEndConfigurations.
Definition at line 629 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName().
|
inlineoverridevirtual |
Set the transfer type.
transferType | Desired transfer type |
Implements SDRFrontEndConfigurations.
Definition at line 516 of file AbstractSDRFrontEnd.hxx.
References transferType.
|
inlineoverridevirtual |
Set the Tx antenna.
txAnt | Name of desired Tx antenna |
Implements SDRFrontEndConfigurations.
Definition at line 653 of file AbstractSDRFrontEnd.hxx.
References setTxAntennas().
|
inlineoverridevirtual |
Set antennas for all Tx chains.
txAnts | Vector 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().
|
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.
txChainMask |
Implements FrontEndConfigurations.
Definition at line 436 of file AbstractSDRFrontEnd.hxx.
References setTxChannels().
|
inlineoverridevirtual |
This methods is fundamentally.
txChannels |
Implements FrontEndConfigurations.
Definition at line 473 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getReferredInterfaceName(), LoggingService_SDR_info_print, and txChannels.
Referenced by setTxChainMask().
|
inlineoverridevirtual |
Set I/Q mismatch parameters for Tx.
iq_ratio_db | Ratio between I and Q components in dB (default 1.0) |
iq_crosstalk_degree | Angle 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.
|
inlineoverridevirtual |
Set the Tx power (in dB)
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().
|
inlineoverridevirtual |
Set the Tx resampling ratio.
Used to up-sample the generated Tx signal to match higher hardware sampling rate
txResampleRatio | Desired 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().
|
inline |
Definition at line 246 of file AbstractSDRFrontEnd.hxx.
References txSignalDumpFilePath.
|
inline |
Definition at line 262 of file AbstractSDRFrontEnd.hxx.
References txSignalReplayDelay_ms.
|
inlineoverridevirtual |
Set whether to split high/low for Tx.
split | True to enable high/low split, false otherwise |
Implements SDRFrontEndBasebandConfigurations.
Definition at line 394 of file AbstractSDRFrontEnd.hxx.
References AbstractFrontEnd::getUserSpecifiedTxParameters().
|
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.
frame | the ModularPicoScenesTxFrame frame to be transmitted. |
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().
|
inlineoverridevirtual |
Transmit frames in batch with precise inter-frame timing.
Implements AbstractFrontEnd.
Definition at line 154 of file AbstractSDRFrontEnd.hxx.
References generateMultiChannelSignals(), AbstractFrontEnd::getFrontEndType(), License::LicenseService::getInstance(), getLastTxStatus(), AbstractFrontEnd::getReferredInterfaceName(), SDRFrontEndConfigurations::getTxSamplingRate(), LoggingService_SDR_debug_printf, LoggingService_SDR_warning_printf, License::FeatureNaming::SDR_Tx2File, AbstractFrontEnd::startTx(), transmitSignalInBatchedSingleBurst(), AbstractFrontEnd::txServiceStarted, txSignalDumpFilePath, and userSpecifiedTxChannels().
|
inline |
This function shadows the identical function in AbstractFrontEnd, deliberately.
Definition at line 224 of file AbstractSDRFrontEnd.hxx.
|
inlinevirtual |
Definition at line 129 of file AbstractSDRFrontEnd.hxx.
References transmitSignals().
Referenced by transmit().
|
inlinevirtual |
Definition at line 140 of file AbstractSDRFrontEnd.hxx.
References transmitSignals().
|
pure virtual |
Referenced by transmitFramesInBatch().
|
pure virtual |
Implemented in VirtualSDRFrontEnd.
Referenced by transmitSignal(), and transmitSignal().
|
pure virtual |
|
pure virtual |
Transmits baseband signals from a .bbsignals file.
signalSourceFile | Path to the .bbsignals file containing the baseband signals to transmit |
repeat | Number of times to repeat the signal transmission (0 means transmit once) |
|
inlineoverridevirtual |
Get the list of user-specified Rx channels.
Implements SDRFrontEndConfigurations.
Definition at line 484 of file AbstractSDRFrontEnd.hxx.
References rxChannels.
Referenced by getCarrierFrequency(), getRxChainMask(), and setCarrierFrequency().
|
inlineoverridevirtual |
Get the list of user-specified Tx channels.
Implements SDRFrontEndConfigurations.
Definition at line 464 of file AbstractSDRFrontEnd.hxx.
References txChannels.
Referenced by getCarrierFrequency(), getTxChainMask(), setCarrierFrequency(), transmit(), and transmitFramesInBatch().
|
protected |
Definition at line 711 of file AbstractSDRFrontEnd.hxx.
Referenced by isFullDuplexEnabled(), and setFullDuplex().
|
protected |
Definition at line 722 of file AbstractSDRFrontEnd.hxx.
Referenced by isRxMergeHighLow(), and setRxMergeHighLow().
|
protected |
Definition at line 712 of file AbstractSDRFrontEnd.hxx.
Referenced by setNumThreads4RxDecoding().
|
protected |
Definition at line 724 of file AbstractSDRFrontEnd.hxx.
Referenced by getNumSamplesSavedBeforeStart(), and getNumSamplesSavedBeforeStart().
|
protected |
Definition at line 728 of file AbstractSDRFrontEnd.hxx.
Referenced by getCarrierFrequencyOffset4RxDecoding(), and setCarrierFrequencyOffset4RxDecoding().
|
protected |
Definition at line 719 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxChannelBandwidthMode(), and setRxChannelBandwidthMode().
|
protected |
Definition at line 715 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxChannels(), setRxChannels(), setRxResampleBypassFIR(), and userSpecifiedRxChannels().
|
protected |
Definition at line 726 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxIqRatioDB(), and setRxIQMismatch().
|
protected |
Definition at line 727 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxIqCrossTalkDegree(), and setRxIQMismatch().
|
protected |
Definition at line 723 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxOfdmSymbolOffset(), and setRxOfdmSymbolOffset().
|
protected |
Definition at line 716 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxPipelineChannels(), and setRxPipelineChannels().
|
protected |
Definition at line 717 of file AbstractSDRFrontEnd.hxx.
Referenced by getPinelineConfig(), and setPinelineConfig().
|
protected |
Definition at line 721 of file AbstractSDRFrontEnd.hxx.
Referenced by isRxResampleBypassFIR(), and setRxResampleBypassFIR().
|
protected |
Definition at line 720 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxResampleRatio(), and setRxResampleRatio().
|
protected |
Definition at line 729 of file AbstractSDRFrontEnd.hxx.
Referenced by getSamplingFrequencyOffset4RxDecoding(), and setSamplingFrequencyOffset4RxDecoding().
|
protected |
Definition at line 725 of file AbstractSDRFrontEnd.hxx.
Referenced by getRxSensitivity(), and setRxSensitivity().
|
protected |
Definition at line 708 of file AbstractSDRFrontEnd.hxx.
Referenced by setRxSignalDumpDelayedStartDuration().
|
protected |
Definition at line 707 of file AbstractSDRFrontEnd.hxx.
Referenced by setRxSignalDumpFilePath().
|
protected |
Definition at line 709 of file AbstractSDRFrontEnd.hxx.
Referenced by setSignalReplayFilePath().
|
protected |
Definition at line 713 of file AbstractSDRFrontEnd.hxx.
Referenced by getTransferType(), and setTransferType().
|
protected |
Definition at line 714 of file AbstractSDRFrontEnd.hxx.
Referenced by getTxChannels(), setTxChannels(), setTxResampleRatio(), and userSpecifiedTxChannels().
|
protected |
Definition at line 706 of file AbstractSDRFrontEnd.hxx.
Referenced by setTxSignalDumpFilePath(), transmit(), and transmitFramesInBatch().
|
protected |
Definition at line 705 of file AbstractSDRFrontEnd.hxx.
Referenced by setTxSignalReplayDelayMs().