|
| 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 CBW value of Wi-Fi baseband decoder.
|
|
void | setRxChannelBandwidthMode (ChannelBandwidthEnum rxCbw) override |
| Set the CBW value for Wi-Fi baseband decoder, invoked by "--rx-cbw" option.
|
|
void | setTxIQMismatch (double iq_ratio_db, double iq_crosstalk_degree) override |
| Set Tx I/Q mismatch.
|
|
void | setRxIQMismatch (double iq_ratio_db, double iq_crosstalk_degree) override |
| Set Rx I/Q mismatch.
|
|
double | getTxIqRatioDB () override |
| Get the I/Q mismatch ratio of the user-specified Tx I/Q mismatch.
|
|
double | getTxIqCrossTalkDegree () override |
| Get the I/Q mismatch angle of the user-specified Tx I/Q mismatch.
|
|
double | getRxIqRatioDB () override |
| Get the I/Q mismatch ratio of the user-specified Rx I/Q mismatch.
|
|
double | getRxIqCrossTalkDegree () override |
| Get the I/Q mismatch degree of the user-specified Tx I/Q mismatch.
|
|
double | getRxSensitivity () override |
| Get the Rx sensitivity of SDR baseband implemntation.
|
|
void | setRxSensitivity (const double rxSensitivityV) override |
| Set Rx sensitivity.
|
|
void | setCarrierFrequencyOffset4TxEncoding (double carrierFrequencyOffset) override |
| Set the current carrier frequency offset (CFO) value for the baseband signal generation.
|
|
std::optional< double > | getCarrierFrequencyOffset4TxEncoding () override |
| Get the current carrier frequency offset (CFO) value for the baseband signal generation.
|
|
void | setSamplingFrequencyOffset4TxEncoding (double samplingFrequencyOffset) override |
| Set the current sampling frequency offset (SFO) value for the baseband signal generation.
|
|
std::optional< double > | getSamplingFrequencyOffset4TxEncoding () override |
| Get the current sampilng frequency offset (SFO) value for the baseband signal generation.
|
|
void | setCarrierFrequencyOffset4RxDecoding (double rxCarrierFrequencyOffsetV) override |
| Set the CFO value for baseband decoding.
|
|
std::optional< double > | getCarrierFrequencyOffset4RxDecoding () override |
| Check if user specifies the Rx path CFO; if specified, return the Rx path CFO.
|
|
void | setSamplingFrequencyOffset4RxDecoding (double samplingFrequencyOffset) override |
| Set the user-specified Rx path SFO,.
|
|
std::optional< double > | getSamplingFrequencyOffset4RxDecoding () override |
| Get the user-specified Rx path SFO, default is 0.
|
|
double | getSamplingRate () override |
| Get the baseband sampling rate.
|
|
void | setSamplingRate (double samplingRate) override |
| set sampling rate (in Hz)
|
|
double | getTxResampleRatio () override |
| Get the user-specified Tx signal resample ratio.
|
|
void | setTxResampleRatio (double txResampleRatioV) override |
| Set Tx signal resample ratio.
|
|
double | getRxResampleRatio () override |
| Get the user-specified Rx resampling ratio.
|
|
bool | isRxResampleBypassFIR () override |
|
void | setRxResampleBypassFIR (const bool bypass) override |
|
bool | isTxSplitHighLow () override |
|
void | setTxSplitHighLow (const bool split) override |
|
bool | isRxMergeHighLow () override |
|
void | setRxMergeHighLow (const bool merge) override |
|
void | setRxResampleRatio (double rxResampleRatioV) override |
| Set the Rx signal rasample ratio.
|
|
double | getRxOfdmSymbolOffset () override |
| Get the user-specified Rx OFDM symbol offset value.
|
|
void | setRxOfdmSymbolOffset (const double rxOfdmSymbolOffset) override |
| Set Rx OFDM symbol offset, default is 0.
|
|
double | getNumSamplesSavedBeforeStart () override |
|
void | getNumSamplesSavedBeforeStart (const double numSamplesSavedBeforeStartV) override |
|
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 |
|
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 |
|
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 whether the Frontend is in Tx/Rx loopback mode.
|
|
void | setFullDuplex (const bool enableFullDuplex) override |
| Set the Frontend is in Tx/Rx loopback mode, in this mode Tx and Rx are open simultaneously, so that Rx end can receive the transmitted signal by Tx path.
|
|
SDRFrontEndTransferType | getTransferType () const override |
|
void | setTransferType (const SDRFrontEndTransferType transferTypeV) override |
|
void | setNumThreads4RxDecoding (const uint8_t numThreads) override |
|
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 clock source.
|
|
void | setClockSource (const std::string &clockSource) override |
| Set the clock source. For USRP, it can be "external", "mimo", "internal".
|
|
void | setClockSources (const std::vector< std::string > &clockSources) override |
| Set multiple clock sources for different motherboards.
|
|
std::vector< std::string > | getClockSources () override |
| Get the list of currently set clock sources.
|
|
std::string | getTimeSource () override |
| Get the timing source.
|
|
void | setTimeSource (const std::string &timeSource) override |
| Set the timing source. For USRP, it can be "external", "mimo", "internal".
|
|
void | setTimeSources (const std::vector< std::string > &timeSources) override |
| Set multiple time sources for different motherboards.
|
|
std::vector< std::string > | getTimeSources () override |
| Get the list of currently set time sources.
|
|
double | getMasterClockRate () override |
| Get the USRP master clock rate (in Hz)
|
|
void | setMasterClockRate (double masterClockRate) override |
| Set the USRP master clock rate (in Hz)
|
|
double | getSDRFrontEndTime () override |
| Obtain the SDR hardware time.
|
|
std::string | getTxAntenna () override |
| Get the Tx antenna.
|
|
void | setTxAntenna (const std::string &txAnt) override |
| Set the Tx antenna.
|
|
std::string | getRxAntenna () override |
| Get the Rx antenna.
|
|
void | setRxAntenna (const std::string &rxAnt) override |
| Set the Rx antenna.
|
|
std::vector< std::string > | getTxAntennas () override |
|
void | setTxAntennas (const std::vector< std::string > &txAnts) override |
| Specify antenna for each Tx chain.
|
|
std::vector< std::string > | getRxAntennas () override |
|
void | setRxAntennas (const std::vector< std::string > &rxAnts) override |
| Specify antenna for each Rx chain.
|
|
double | getFilterBandwidth () override |
| get the hardware-frontend filter bandwidth
|
|
void | setFilterBandwidth (double bw) override |
| Set the hardware frontend filter bandwidth.
|
|
| 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 |
|
virtual void | setTxCarrierFrequencies (std::vector< double > carrierFreqs)=0 |
|
virtual void | setRxCarrierFrequencies (std::vector< double > carrierFreqs)=0 |
|
virtual std::vector< double > | getTxCarrierFrequencies ()=0 |
|
virtual std::vector< double > | getRxCarrierFrequencies ()=0 |
|
virtual void | setTxSamplingRate (double txRate)=0 |
|
virtual void | setRxSamplingRate (double rxRate)=0 |
|
virtual double | getTxSamplingRate ()=0 |
|
virtual double | getRxSamplingRate ()=0 |
|
virtual bool | supportAGC ()=0 |
|
virtual void | setAGC (bool enableAGC)=0 |
|
virtual double | getRxBufferDuration () const =0 |
|
virtual void | skipMPDUDecoding4HESUHighDopplerFrame (bool skipDataDecoding)=0 |
|
Public Member Functions inherited from SDRFrontEndBasebandConfigurations |
virtual | ~SDRFrontEndBasebandConfigurations ()=default |
|
virtual bool | isReturnBasebandSignals () const =0 |
|
virtual bool | useConventionalPacketDetector () const =0 |
|
virtual std::vector< SDRMainBoardInfo > | getAllHardwareBoards (bool refresh=false) |
| Get all hardware boards information including the main board and connected boards.
|
|
virtual const SDRMainBoardInfo & | getHardwareBoardByIndex (size_t boardIndex, bool refresh=false) |
| Get a specific board's information by its index (0 is main board).
|
|
virtual size_t | getHardwareBoardCount (bool refresh=false) |
| Get the total number of boards (main + connected).
|
|
virtual const SDRMainBoardInfo & | getHardwareBoardInfo (bool refresh=false) |
| Get the hardware board information.
|
|
virtual const std::vector< uint8_t > & | getHardwareSupportedTxChannels (bool refresh=false) |
| Get the hardware supported Tx channels.
|
|
virtual const std::vector< uint8_t > & | getHardwareSupportedRxChannels (bool refresh=false) |
| Get the hardware supported Rx channels.
|
|
virtual const std::vector< std::string > & | getHardwareSupportedTxAntennas (uint8_t channel, bool refresh=false) |
| Get the supported Tx antennas for a specific channel.
|
|
virtual const std::vector< std::string > & | getHardwareSupportedRxAntennas (uint8_t channel, bool refresh=false) |
| Get the supported Rx antennas for a specific channel.
|
|
virtual const std::vector< std::vector< std::string > > & | getHardwareSupportedTxAntennas (bool refresh=false) |
| Get the hardware supported Tx antennas for all channels.
|
|
virtual const std::vector< std::vector< std::string > > & | getHardwareSupportedRxAntennas (bool refresh=false) |
| Get the hardware supported Rx antennas for all channels.
|
|
virtual const std::pair< double, double > & | getHardwareTxGainRange (uint8_t channel, bool refresh=false) |
| Get the Tx gain range for a specific channel.
|
|
virtual const std::pair< double, double > & | getHardwareRxGainRange (uint8_t channel, bool refresh=false) |
| Get the Rx gain range for a specific channel.
|
|
virtual const std::vector< std::pair< double, double > > & | getHardwareTxGainRanges (bool refresh=false) |
| Get the hardware Tx gain range for all channels.
|
|
virtual const std::vector< std::pair< double, double > > & | getHardwareRxGainRanges (bool refresh=false) |
| Get the hardware Rx gain range for all channels.
|
|
virtual const std::pair< double, double > & | getHardwareTxFrequencyRange (uint8_t channel, bool refresh=false) |
| Get the Tx frequency range for a specific channel.
|
|
virtual const std::pair< double, double > & | getHardwareRxFrequencyRange (uint8_t channel, bool refresh=false) |
| Get the Rx frequency range for a specific channel.
|
|
virtual const std::vector< std::pair< double, double > > & | getHardwareTxFrequencyRanges (bool refresh=false) |
| Get the Tx frequency range for all channels.
|
|
virtual const std::vector< std::pair< double, double > > & | getHardwareRxFrequencyRanges (bool refresh=false) |
| Get the Rx frequency range for all channels.
|
|
virtual const std::pair< double, double > & | getHardwareTxSamplingRateRange (uint8_t channel, bool refresh=false) |
| Get the Tx sampling rate range for a specific channel.
|
|
virtual const std::pair< double, double > & | getHardwareRxSamplingRateRange (uint8_t channel, bool refresh=false) |
| Get the Rx sampling rate range for a specific channel.
|
|
virtual const std::vector< std::pair< double, double > > & | getHardwareTxSamplingRateRanges (bool refresh=false) |
| Get the Tx sampling rate range for all channels.
|
|
virtual const std::vector< std::pair< double, double > > & | getHardwareRxSamplingRateRanges (bool refresh=false) |
| Get the Rx sampling rate range for all channels.
|
|
virtual const std::vector< double > & | getHardwareSupportedMasterClockRates (bool refresh=false) |
| Get the supported master clock rates.
|
|
virtual const std::vector< std::string > & | getHardwareSupportedClockAndTimeSources (bool refresh=false) |
| Get the supported clock sources.
|
|
virtual const std::vector< std::string > & | getHardwareSupportedSensors (uint8_t channel, bool refresh=false) |
| Get the supported sensor names for a specific channel.
|
|
virtual const std::vector< std::vector< std::string > > & | getAllHardwareSupportedSensors (bool refresh=false) |
| Get all supported sensors for all channels.
|
|
virtual const std::vector< double > & | getHardwareTemperatures (bool refresh=false) |
| Get the hardware's temperature sensors readings.
|
|
virtual bool | getHardwareAGCSupport (uint8_t channel, bool refresh=false) |
| Get the AGC support for a specific channel.
|
|
virtual const std::vector< bool > & | getHardwareAGCSupport (bool refresh=false) |
| Get the AGC support for all channels.
|
|
virtual const std::shared_ptr< SDRFrontEndProfile > & | getHardwareFrontEndProfile (uint8_t channel, bool refresh=false) |
| Get the 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 the daughterboard profile at a specific index.
|
|
virtual const std::vector< SDRDaughterboardProfile > & | getHardwareDaughterboardProfiles (bool refresh=false) |
| Get all daughterboard profiles.
|
|
virtual void | refreshAllHardwareInfo () |
|
std::string | hardwareInformationSheet () |
|
virtual | ~SDRDeviceHardwareInformation ()=default |
|