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

#include <MAC80211InjectionOnlyFrontEnd.hxx>

Inheritance diagram for MAC80211InjectionOnlyFrontEnd:
Collaboration diagram for MAC80211InjectionOnlyFrontEnd:

Public Member Functions

int startTx () override
 Activate internal Tx service loop.
 
int stopTx () override
 De-activate Tx service loop.
 
int startRx () override
 Activiate the Rx service loop.
 
int stopRx () override
 De-activate the Rx service loop, set rxServiceStarted to false.
 
int transmit (const ModularPicoScenesTxFrame &frame) override
 
int transmitFramesInBatch (const std::vector< const ModularPicoScenesTxFrame * > &frames, uint32_t repeat) override
 Transmit frames in batch with precise inter-frame timing.
 
int transmitFramesInBatch (const std::vector< ModularPicoScenesTxFrame > &frames, uint32_t repeat) override
 
 ~MAC80211InjectionOnlyFrontEnd () override
 
const std::string & getDevId () const
 
const std::string & getMonId () const
 
uint16_t getPhyIdNumber () const
 
const std::string & getPhyPath () const
 
const std::array< uint8_t, 6 > & getMacAddressMon () const
 
const std::array< uint8_t, 6 > & getMacAddressDev () const
 
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 getSamplingRate () override
 Get the baseband sampling rate.
 
void setSamplingRate (double samplingRate) override
 set sampling rate (in Hz)
 
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.
 
uint8_t getTxChainMask () override
 Get the Tx chain mask.
 
void setTxChainMask (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 (uint8_t rxChainMask) override
 Set Rx chain mask. Setting Rx chain mask means to use only the selected Rx chains for signal reception.
 
std::vector< size_t > getTxChannels () override
 Get the numbers of the active Tx channels, starting from 0.
 
void setTxChannels (const std::vector< size_t > &txChannels) override
 This methods is fundamentally.
 
std::vector< size_t > getRxChannels () override
 Get the number of the active Rx channels, starting from 0.
 
void setRxChannels (const std::vector< size_t > &rxChannels) override
 Set the number of the active Rx channels, starting from 0.
 
uint16_t getChannelFlags () override
 Get the old ChannelFlags descriptor.
 
ExtraInfo buildExtraInfo () override
 Build an ExtraInfo object describing the current frontend status.
 
const std::vector< double > & getSystemSupportedFrequencies () const
 
bool isMAC80211SupportedCarrierFrequency (double frequency) const
 
void printStatus () override
 Print a status string to command line.
 
- 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 bool isMAC80211CompatibleFrontEnd (const std::string &referredInterfaceName)
 

Protected Member Functions

 MAC80211InjectionOnlyFrontEnd (const std::string &referredName)
 

Protected Attributes

std::string devId
 
std::string monId
 
uint16_t phyIdNumber = 0
 
std::string phyPath
 
std::shared_ptr< uint8_t > txContext
 
std::array< uint8_t, 6 > macAddress_MON {0, 0, 0, 0, 0, 0}
 
std::array< uint8_t, 6 > macAddress_DEV {0, 0, 0, 0, 0, 0}
 
std::vector< double > systemSupportedFrequencies
 
- 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 12 of file MAC80211InjectionOnlyFrontEnd.hxx.

Constructor & Destructor Documentation

◆ ~MAC80211InjectionOnlyFrontEnd()

MAC80211InjectionOnlyFrontEnd::~MAC80211InjectionOnlyFrontEnd ( )
override

◆ MAC80211InjectionOnlyFrontEnd()

MAC80211InjectionOnlyFrontEnd::MAC80211InjectionOnlyFrontEnd ( const std::string &  referredName)
explicitprotected

Member Function Documentation

◆ buildExtraInfo()

ExtraInfo MAC80211InjectionOnlyFrontEnd::buildExtraInfo ( )
overridevirtual

Build an ExtraInfo object describing the current frontend status.

Implements FrontEndConfigurations.

◆ getCarrierFrequency()

double MAC80211InjectionOnlyFrontEnd::getCarrierFrequency ( )
overridevirtual

Get the RF carrier frequency.

Returns
the current RF carrier frequency

Implements FrontEndConfigurations.

◆ getChannelAndBandwidth()

std::tuple< double, double, double > MAC80211InjectionOnlyFrontEnd::getChannelAndBandwidth ( )
overridevirtual

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

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

Implements FrontEndConfigurations.

◆ getChannelFlags()

uint16_t MAC80211InjectionOnlyFrontEnd::getChannelFlags ( )
overridevirtual

Get the old ChannelFlags descriptor.

Deprecated:
This method is deprecated
Returns
the resulting channel flags

Implements FrontEndConfigurations.

◆ getControlChannelFrequency()

double MAC80211InjectionOnlyFrontEnd::getControlChannelFrequency ( )
overridevirtual

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

See also
getChannelAndBandwidth()
Returns

Implements FrontEndConfigurations.

◆ getDevId()

const std::string & MAC80211InjectionOnlyFrontEnd::getDevId ( ) const

◆ getMacAddressDev()

const std::array< uint8_t, 6 > & MAC80211InjectionOnlyFrontEnd::getMacAddressDev ( ) const

◆ getMacAddressMon()

const std::array< uint8_t, 6 > & MAC80211InjectionOnlyFrontEnd::getMacAddressMon ( ) const

◆ getMonId()

const std::string & MAC80211InjectionOnlyFrontEnd::getMonId ( ) const

◆ getPhyIdNumber()

uint16_t MAC80211InjectionOnlyFrontEnd::getPhyIdNumber ( ) const

◆ getPhyPath()

const std::string & MAC80211InjectionOnlyFrontEnd::getPhyPath ( ) const

◆ getRxChainMask()

uint8_t MAC80211InjectionOnlyFrontEnd::getRxChainMask ( )
overridevirtual

Get Rx chain mask.

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

Returns

Implements FrontEndConfigurations.

◆ getRxChannelBandwidth()

double MAC80211InjectionOnlyFrontEnd::getRxChannelBandwidth ( )
overridevirtual

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

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

Implements FrontEndConfigurations.

◆ getRxChannels()

std::vector< size_t > MAC80211InjectionOnlyFrontEnd::getRxChannels ( )
overridevirtual

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

Returns
the number array

Implements FrontEndConfigurations.

◆ getRxGain()

double MAC80211InjectionOnlyFrontEnd::getRxGain ( )
overridevirtual

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

Returns
the Rx gain (in dB)

Implements FrontEndConfigurations.

◆ getSamplingRate()

double MAC80211InjectionOnlyFrontEnd::getSamplingRate ( )
overridevirtual

Get the baseband sampling rate.

Returns
the working sampling rate (in Hz)

Implements FrontEndConfigurations.

◆ getSystemSupportedFrequencies()

const std::vector< double > & MAC80211InjectionOnlyFrontEnd::getSystemSupportedFrequencies ( ) const

◆ getTxChainMask()

uint8_t MAC80211InjectionOnlyFrontEnd::getTxChainMask ( )
overridevirtual

Get the Tx chain mask.

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

See also
getRxChainMask()
Returns
current tx chain mask

Implements FrontEndConfigurations.

◆ getTxChannels()

std::vector< size_t > MAC80211InjectionOnlyFrontEnd::getTxChannels ( )
overridevirtual

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

Returns
the number array

Implements FrontEndConfigurations.

◆ getTxpower()

double MAC80211InjectionOnlyFrontEnd::getTxpower ( )
overridevirtual

get the transmission power (Tx power)

Returns
the Tx power

Implements FrontEndConfigurations.

◆ isMAC80211CompatibleFrontEnd()

static bool MAC80211InjectionOnlyFrontEnd::isMAC80211CompatibleFrontEnd ( const std::string &  referredInterfaceName)
static

◆ isMAC80211SupportedCarrierFrequency()

bool MAC80211InjectionOnlyFrontEnd::isMAC80211SupportedCarrierFrequency ( double  frequency) const

◆ printStatus()

void MAC80211InjectionOnlyFrontEnd::printStatus ( )
overridevirtual

Print a status string to command line.

Implements AbstractFrontEnd.

◆ setCarrierFrequency()

void MAC80211InjectionOnlyFrontEnd::setCarrierFrequency ( double  carrierFrequency)
overridevirtual

Get the RF carrier frequency.

Parameters
carrierFrequencythe carrier frequency to be set

Implements FrontEndConfigurations.

◆ setChannelAndBandwidth() [1/2]

int MAC80211InjectionOnlyFrontEnd::setChannelAndBandwidth ( double  control,
double  bw,
double  center 
)
overridevirtual

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

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

Implements FrontEndConfigurations.

◆ setChannelAndBandwidth() [2/2]

int MAC80211InjectionOnlyFrontEnd::setChannelAndBandwidth ( std::optional< double >  control,
std::optional< double >  bw,
std::optional< double >  center 
)
overridevirtual

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

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

Implements FrontEndConfigurations.

◆ setControlChannelFrequency()

void MAC80211InjectionOnlyFrontEnd::setControlChannelFrequency ( double  controlFrequency)
overridevirtual

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

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

Implements FrontEndConfigurations.

◆ setRxChainMask()

void MAC80211InjectionOnlyFrontEnd::setRxChainMask ( uint8_t  rxChainMask)
overridevirtual

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

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

Returns

Implements FrontEndConfigurations.

◆ setRxChannelBandwidth()

void MAC80211InjectionOnlyFrontEnd::setRxChannelBandwidth ( double  rxcbw)
overridevirtual

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

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

Implements FrontEndConfigurations.

◆ setRxChannels()

void MAC80211InjectionOnlyFrontEnd::setRxChannels ( const std::vector< size_t > &  rxChannels)
overridevirtual

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

Returns
the number array

Implements FrontEndConfigurations.

◆ setRxGain() [1/2]

void MAC80211InjectionOnlyFrontEnd::setRxGain ( double  rxGain)
overridevirtual

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

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

Parameters
rxGainthe Rx Gain to be set (in dB)

Implements FrontEndConfigurations.

◆ setRxGain() [2/2]

void MAC80211InjectionOnlyFrontEnd::setRxGain ( double  rxGain,
uint8_t  channel 
)
overridevirtual

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

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

Implements FrontEndConfigurations.

◆ setSamplingRate()

void MAC80211InjectionOnlyFrontEnd::setSamplingRate ( double  samplingRate)
overridevirtual

set sampling rate (in Hz)

Parameters
samplingRate

Implements FrontEndConfigurations.

◆ setTxChainMask()

void MAC80211InjectionOnlyFrontEnd::setTxChainMask ( uint8_t  txChainMask)
overridevirtual

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

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

Parameters
txChainMask

Implements FrontEndConfigurations.

◆ setTxChannels()

void MAC80211InjectionOnlyFrontEnd::setTxChannels ( const std::vector< size_t > &  txChannels)
overridevirtual

This methods is fundamentally.

Parameters
txChannels

Implements FrontEndConfigurations.

◆ setTxpower()

void MAC80211InjectionOnlyFrontEnd::setTxpower ( double  txpower)
overridevirtual

Set the Tx power (in dB)

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

Implements FrontEndConfigurations.

◆ startRx()

int MAC80211InjectionOnlyFrontEnd::startRx ( )
overridevirtual

Activiate the Rx service loop.

the internal service loop performs four things:

  1. setup a ModularPicoScenesRxFrame queue to hold all received frames, set rxServiceStarted to true;
  2. use a while( rxServiceStarted ) loop to fetch the ModularPicoScenesRxFrame frame from NIC or SDR frontend and added them to the buffer;
  3. for each ModularPicoScenesRxFrame frame of the queue, invoke the frame handler (AbstractFrontEnd::rxHandle) to process the frame;
  4. After the process, pop the frame from the queue;
Note
this method is not a blocking method. It starts the Rx service loop in another thread and returns 0 immediately.

Implements AbstractFrontEnd.

◆ startTx()

int MAC80211InjectionOnlyFrontEnd::startTx ( )
overridevirtual

Activate internal Tx service loop.

Reimplemented from AbstractFrontEnd.

◆ stopRx()

int MAC80211InjectionOnlyFrontEnd::stopRx ( )
overridevirtual

De-activate the Rx service loop, set rxServiceStarted to false.

Returns

Implements AbstractFrontEnd.

◆ stopTx()

int MAC80211InjectionOnlyFrontEnd::stopTx ( )
overridevirtual

De-activate Tx service loop.

Reimplemented from AbstractFrontEnd.

◆ transmit()

int MAC80211InjectionOnlyFrontEnd::transmit ( const ModularPicoScenesTxFrame &  frame)
overridevirtual

Implements AbstractFrontEnd.

◆ transmitFramesInBatch() [1/2]

int MAC80211InjectionOnlyFrontEnd::transmitFramesInBatch ( const std::vector< const ModularPicoScenesTxFrame * > &  frames,
uint32_t  repeat 
)
overridevirtual

Transmit frames in batch with precise inter-frame timing.

Implements AbstractFrontEnd.

◆ transmitFramesInBatch() [2/2]

int MAC80211InjectionOnlyFrontEnd::transmitFramesInBatch ( const std::vector< ModularPicoScenesTxFrame > &  frames,
uint32_t  repeat 
)
overridevirtual

Reimplemented from AbstractFrontEnd.

Member Data Documentation

◆ devId

std::string MAC80211InjectionOnlyFrontEnd::devId
protected

Definition at line 107 of file MAC80211InjectionOnlyFrontEnd.hxx.

◆ macAddress_DEV

std::array<uint8_t, 6> MAC80211InjectionOnlyFrontEnd::macAddress_DEV {0, 0, 0, 0, 0, 0}
protected

Definition at line 114 of file MAC80211InjectionOnlyFrontEnd.hxx.

◆ macAddress_MON

std::array<uint8_t, 6> MAC80211InjectionOnlyFrontEnd::macAddress_MON {0, 0, 0, 0, 0, 0}
protected

Definition at line 113 of file MAC80211InjectionOnlyFrontEnd.hxx.

◆ monId

std::string MAC80211InjectionOnlyFrontEnd::monId
protected

Definition at line 108 of file MAC80211InjectionOnlyFrontEnd.hxx.

◆ phyIdNumber

uint16_t MAC80211InjectionOnlyFrontEnd::phyIdNumber = 0
protected

Definition at line 109 of file MAC80211InjectionOnlyFrontEnd.hxx.

◆ phyPath

std::string MAC80211InjectionOnlyFrontEnd::phyPath
protected

Definition at line 110 of file MAC80211InjectionOnlyFrontEnd.hxx.

◆ systemSupportedFrequencies

std::vector<double> MAC80211InjectionOnlyFrontEnd::systemSupportedFrequencies
protected

Definition at line 116 of file MAC80211InjectionOnlyFrontEnd.hxx.

◆ txContext

std::shared_ptr<uint8_t> MAC80211InjectionOnlyFrontEnd::txContext
protected

Definition at line 111 of file MAC80211InjectionOnlyFrontEnd.hxx.


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