PicoScenes API Docs
 
Loading...
Searching...
No Matches
IWLMVMFrontEnd Class Reference

#include <IWLMVMFrontEnd.hxx>

Inheritance diagram for IWLMVMFrontEnd:
Collaboration diagram for IWLMVMFrontEnd:

Public Member Functions

 IWLMVMFrontEnd (const std::string &referredInterfaceName)
 Constructor for IWLMVM front-end.
 
- Public Member Functions inherited from MAC80211CSIExtractableFrontEnd
 MAC80211CSIExtractableFrontEnd (const std::string &referredInterfaceName)
 Constructor for CSI-capable front-end.
 
int startRx () override
 Start the CSI reception service.
 
virtual void setFrameTypeFilter (const std::vector< uint8_t > &frameTypes)
 Set frame type filter for CSI collection.
 
- Public Member Functions inherited from MAC80211InjectionOnlyFrontEnd
int startTx () override
 Start transmission service.
 
int stopTx () override
 Stop transmission service.
 
int startRx () override
 Start reception service.
 
int stopRx () override
 Stop reception service.
 
int transmit (const ModularPicoScenesTxFrame &frame) override
 Transmit a single frame.
 
int transmitFramesInBatch (const std::vector< const ModularPicoScenesTxFrame * > &frames, uint32_t repeat) override
 Transmit multiple frames in batch mode.
 
int transmitFramesInBatch (const std::vector< ModularPicoScenesTxFrame > &frames, uint32_t repeat) override
 Transmit multiple frames in batch mode (vector version)
 
 ~MAC80211InjectionOnlyFrontEnd () override
 Destructor.
 
const std::string & getDevId () const
 Get device interface identifier.
 
const std::string & getMonId () const
 Get monitor interface identifier.
 
uint16_t getPhyIdNumber () const
 Get physical interface number.
 
const std::string & getPhyPath () const
 Get physical interface path.
 
const std::array< uint8_t, 6 > & getMacAddressMon () const
 Get monitor interface MAC address.
 
const std::array< uint8_t, 6 > & getMacAddressDev () const
 Get device interface MAC address.
 
std::tuple< double, double, double > getChannelAndBandwidth () override
 Get current channel and bandwidth configuration.
 
int setChannelAndBandwidth (double control, double bw, double center) override
 Set channel and bandwidth configuration.
 
int setChannelAndBandwidth (std::optional< double > control, std::optional< double > bw, std::optional< double > center) override
 Set channel and bandwidth with optional parameters.
 
double getCarrierFrequency () override
 Get carrier frequency.
 
void setCarrierFrequency (double carrierFrequency) override
 Set carrier frequency.
 
double getSamplingRate () override
 Get sampling rate.
 
void setSamplingRate (double samplingRate) override
 Set sampling rate.
 
double getControlChannelFrequency () override
 Get control channel frequency.
 
void setControlChannelFrequency (double controlFrequency) override
 Set control channel frequency.
 
double getRxChannelBandwidth () override
 Get receive channel bandwidth.
 
void setRxChannelBandwidth (double rxcbw) override
 Set receive channel bandwidth.
 
double getTxpower () override
 Get transmit power.
 
void setTxpower (double txpower) override
 Set transmit power.
 
double getRxGain () override
 Get receive gain.
 
void setRxGain (double rxGain) override
 Set receive gain.
 
void setRxGain (double rxGain, uint8_t channel) override
 Set receive gain for specific channel.
 
uint8_t getTxChainMask () override
 Get transmit chain mask.
 
void setTxChainMask (uint8_t txChainMask) override
 Set transmit chain mask.
 
uint8_t getRxChainMask () override
 Get receive chain mask.
 
void setRxChainMask (uint8_t rxChainMask) override
 Set receive chain mask.
 
std::vector< size_t > getTxChannels () override
 Get active transmit channels.
 
void setTxChannels (const std::vector< size_t > &txChannels) override
 Set active transmit channels.
 
std::vector< size_t > getRxChannels () override
 Get active receive channels.
 
void setRxChannels (const std::vector< size_t > &rxChannels) override
 Set active receive channels.
 
uint16_t getChannelFlags () override
 Get channel flags.
 
ExtraInfo buildExtraInfo () override
 Build extra information about the frontend.
 
const std::vector< double > & getSystemSupportedFrequencies () const
 Get system supported frequencies.
 
bool isMAC80211SupportedCarrierFrequency (double frequency) const
 Check if frequency is supported by MAC80211.
 
void printStatus () override
 Print current frontend status.
 
- Public Member Functions inherited from AbstractFrontEnd
 AbstractFrontEnd (const std::string &referredInterfaceName)
 Create AbstractFrontEnd object according to the user-specified frontend name referredInterfaceName.
 
virtual bool isTxServiceStarted () const
 Returns whether Tx service is started.
 
virtual int pauseTx ()
 Pause Tx service loop.
 
virtual int resumeTx ()
 Resume Tx service loop.
 
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 pauseRx ()
 Pause the Rx service loop, set rxPaused to true.
 
virtual int resumeRx ()
 Resuase the paused Rx service loop, set rxPaused to false.
 
void registerRxHandle (const std::function< void(const ModularPicoScenesRxFrame &)> &rxHandle)
 Register a handler for the received ModularPicoScenesRxFrame frames.
 
const std::string & getReferredInterfaceName () const
 Get the user-specified frontend name.
 
void setReferredInterfaceName (const std::string &name)
 Set the user-specified frontend name.
 
const std::string & getPhyId () const
 Return the PhyId for NIC frontend. This is a undefined behavior for SDR frontend.
 
PicoScenesDeviceType getFrontEndType () const
 Return the PicoScenesDeviceType of this frontend.
 
PicoScenesDeviceSubtype getFrontEndSubtype () const
 Return the PicoScenesDeviceType subtype of this frontend.
 
const std::array< uint8_t, 6 > & getMacAddressPhy () const
 Return the MAC address of this frontend. For SDR frontend, this method should generate a pseudo-MAC address.
 
PicoScenesFrameTxParameters & getUserSpecifiedTxParameters ()
 
ModularPicoScenesTxFrame initializeTxFrame () override
 
virtual ~AbstractFrontEnd ()=default
 
- Public Member Functions inherited from FrontEndConfigurations
virtual ~FrontEndConfigurations ()=default
 
virtual bool isHardwareSupportedPreset (const std::string &presetName)=0
 Check if a preset configuration is supported by the hardware.
 
virtual void applyPreset (const std::string &presetName, bool skipChangeRate=false)=0
 Apply a preset configuration to the frontend hardware.
 
void setNumTxChannels (const uint8_t numTxChannels)
 Set the number of Tx channels, the active channels start from 0.
 
void setNumRxChannels (const uint8_t numRxChannels)
 Set the number of Rx channels, the active channels start from 0.
 
std::vector< size_t > getAllChannels ()
 
virtual void setSourceMACAddressFilter (const std::vector< std::array< uint8_t, 6 > > &addresses)
 Set the SOURCE addresses that will be blocked by the frontend.
 
virtual void setDestinationMACAddressFilter (const std::vector< std::array< uint8_t, 6 > > &addresses)
 Set the DESTINATION addresses that will be blocked by the frontend.
 
virtual uint16_t getAndIncreasePerFrontEndTxFrameSequenceNumber ()
 

Static Public Member Functions

static std::shared_ptr< IWLMVMFrontEndgetInstance (const std::string &referredInterfaceName)
 Get or create an instance of IWLMVMFrontEnd.
 
- Static Public Member Functions inherited from MAC80211InjectionOnlyFrontEnd
static bool isMAC80211CompatibleFrontEnd (const std::string &referredInterfaceName)
 Check if a given interface is compatible with MAC80211.
 

Additional Inherited Members

- Protected Member Functions inherited from MAC80211CSIExtractableFrontEnd
virtual void startCSIExtractionAndParsingLoop ()=0
 Start the CSI extraction and parsing loop.
 
- Protected Member Functions inherited from MAC80211InjectionOnlyFrontEnd
 MAC80211InjectionOnlyFrontEnd (const std::string &referredName)
 Protected constructor.
 
- Protected Attributes inherited from MAC80211CSIExtractableFrontEnd
int csiPathPointer {}
 < File descriptor for CSI data port
 
- Protected Attributes inherited from MAC80211InjectionOnlyFrontEnd
std::string devId
 Device interface identifier.
 
std::string monId
 Monitor interface identifier.
 
uint16_t phyIdNumber = 0
 Physical interface number.
 
std::string phyPath
 Path to physical interface.
 
std::shared_ptr< uint8_t > txContext
 Transmission context.
 
std::array< uint8_t, 6 > macAddress_MON {0, 0, 0, 0, 0, 0}
 Monitor interface MAC address.
 
std::array< uint8_t, 6 > macAddress_DEV {0, 0, 0, 0, 0, 0}
 Device interface MAC address.
 
std::vector< double > systemSupportedFrequencies
 List of supported frequencies.
 
- Protected Attributes inherited from AbstractFrontEnd
std::string referredInterfaceName
 the user specified frontend name
 
std::string phyId
 phyId
 
std::array< uint8_t, 6 > macAddress_PHY {0, 0, 0, 0, 0, 0}
 macAddress of the frontend
 
PicoScenesDeviceType frontEndType = PicoScenesDeviceType::Unknown
 frontend type
 
PicoScenesDeviceSubtype frontEndSubtype = PicoScenesDeviceSubtype::Unknown
 frontend subtype
 
bool txServiceStarted = false
 indicate whether Tx service is running
 
PicoScenesFrameTxParameters userSpecifiedTxParameters
 user-specified Tx parameters
 
std::mutex txPauseMutex
 
std::condition_variable txPauseCV
 
bool txPaused = false
 indicate whether Tx serivce is paused
 
std::function< void(const ModularPicoScenesRxFrame &)> rxHandle = nullptr
 The Rx frame handler.
 
bool rxPaused = false
 indicate whether Rx service loop is paused
 
bool rxServiceStarted = false
 indicate whether Rx service loop is running
 
- Protected Attributes inherited from FrontEndConfigurations
std::vector< std::array< uint8_t, 6 > > sourceAddressFilterList
 the source addresses to be filtered
 
std::vector< std::array< uint8_t, 6 > > destinationAddressFilterList
 the destination addressed to be filtered
 
uint16_t currentTxSequenceNumber {0}
 current Tx sequence number
 

Detailed Description

Definition at line 10 of file IWLMVMFrontEnd.hxx.

Constructor & Destructor Documentation

◆ IWLMVMFrontEnd()

IWLMVMFrontEnd::IWLMVMFrontEnd ( const std::string &  referredInterfaceName)

Constructor for IWLMVM front-end.

Parameters
referredInterfaceNameName or identifier of the network interface
Exceptions
std::runtime_errorIf the interface is not an IWLMVM device
Note
Automatically detects and configures for specific device subtypes (AX200/AX210/AX211)

Member Function Documentation

◆ getInstance()

static std::shared_ptr< IWLMVMFrontEnd > IWLMVMFrontEnd::getInstance ( const std::string &  referredInterfaceName)
static

Get or create an instance of IWLMVMFrontEnd.

Implements a singleton pattern per physical device. If an instance already exists for the given interface, returns that instance. Otherwise, creates a new instance. The implementation includes:

  • Device type detection and configuration
  • Debugfs interface initialization
  • Filter configuration setup
  • License feature validation
Parameters
referredInterfaceNameName or identifier of the network interface
Returns
Shared pointer to IWLMVMFrontEnd instance, or nullptr if device is not supported

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