INET Framework for OMNeT++/OMNEST
inet::ieee80211::Ieee80211Mac Class Reference

Implements the IEEE 802.11 MAC. More...

#include <Ieee80211Mac.h>

Inheritance diagram for inet::ieee80211::Ieee80211Mac:
inet::MACProtocolBase inet::LayeredProtocolBase inet::OperationalBase inet::ILifecycle

Public Member Functions

 Ieee80211Mac ()
 
virtual ~Ieee80211Mac ()
 
virtual const MACAddressgetAddress () const
 
virtual void sendUp (cMessage *message) override
 
virtual void sendFrame (Ieee80211Frame *frameToSend)
 
virtual void sendDownPendingRadioConfigMsg ()
 
- Public Member Functions inherited from inet::OperationalBase
 OperationalBase ()
 
- Public Member Functions inherited from inet::ILifecycle
virtual ~ILifecycle ()
 

Protected Member Functions

virtual int numInitStages () const override
 
virtual void initialize (int) override
 
void receiveSignal (cComponent *source, simsignal_t signalID, long value, cObject *details) override
 
void configureRadioMode (IRadio::RadioMode radioMode)
 
virtual InterfaceEntrycreateInterfaceEntry () override
 
virtual const MACAddressisInterfaceRegistered ()
 
virtual void handleUpperCommand (cMessage *msg) override
 Handle commands (msg kind+control info) coming from upper layers. More...
 
virtual void handleSelfMessage (cMessage *msg) override
 Handle timer self messages. More...
 
virtual void handleUpperPacket (cPacket *msg) override
 Handle messages from upper layer. More...
 
virtual void handleLowerPacket (cPacket *msg) override
 Handle messages from lower (physical) layer. More...
 
virtual bool handleNodeStart (IDoneCallback *doneCallback) override
 
virtual bool handleNodeShutdown (IDoneCallback *doneCallback) override
 
virtual void handleNodeCrash () override
 
virtual void processUpperFrame (Ieee80211DataOrMgmtFrame *frame)
 
virtual void processLowerFrame (Ieee80211Frame *frame)
 
- Protected Member Functions inherited from inet::MACProtocolBase
 MACProtocolBase ()
 
virtual void registerInterface ()
 
virtual void sendDown (cMessage *message)
 
virtual bool isUpperMessage (cMessage *message) override
 
virtual bool isLowerMessage (cMessage *message) override
 
virtual bool isInitializeStage (int stage) override
 
virtual bool isNodeStartStage (int stage) override
 
virtual bool isNodeShutdownStage (int stage) override
 
- Protected Member Functions inherited from inet::LayeredProtocolBase
virtual void handleMessageWhenUp (cMessage *message) override
 
virtual void handleLowerCommand (cMessage *message)
 
- Protected Member Functions inherited from inet::OperationalBase
virtual void handleMessage (cMessage *msg) override
 
virtual void handleMessageWhenDown (cMessage *msg)
 
virtual bool handleOperationStage (LifecycleOperation *operation, int stage, IDoneCallback *doneCallback) override
 Perform one stage of a lifecycle operation. More...
 
virtual void setOperational (bool isOperational)
 

Protected Attributes

MACAddress address
 
bool qosSta = false
 
IRxrx = nullptr
 
ITxtx = nullptr
 
IRadioradio = nullptr
 
const Ieee80211ModeSetmodeSet = nullptr
 
IRadio::TransmissionState transmissionState = IRadio::TransmissionState::TRANSMISSION_STATE_UNDEFINED
 
Dcfdcf = nullptr
 
Pcfpcf = nullptr
 
Hcfhcf = nullptr
 
Mcfmcf = nullptr
 
cMessage * pendingRadioConfigMsg = nullptr
 
- Protected Attributes inherited from inet::OperationalBase
bool isOperational
 
simtime_t lastChange
 

Static Protected Attributes

static simsignal_t stateSignal = SIMSIGNAL_NULL
 
static simsignal_t radioStateSignal = SIMSIGNAL_NULL
 

Additional Inherited Members

- Public Attributes inherited from inet::MACProtocolBase
InterfaceEntryinterfaceEntry
 
int upperLayerInGateId
 Gate ids. More...
 
int upperLayerOutGateId
 
int lowerLayerInGateId
 
int lowerLayerOutGateId
 
- Static Public Attributes inherited from inet::LayeredProtocolBase
static simsignal_t packetSentToUpperSignal = registerSignal("packetSentToUpper")
 
static simsignal_t packetReceivedFromUpperSignal = registerSignal("packetReceivedFromUpper")
 
static simsignal_t packetFromUpperDroppedSignal = registerSignal("packetFromUpperDropped")
 
static simsignal_t packetSentToLowerSignal = registerSignal("packetSentToLower")
 
static simsignal_t packetReceivedFromLowerSignal = registerSignal("packetReceivedFromLower")
 
static simsignal_t packetFromLowerDroppedSignal = registerSignal("packetFromLowerDropped")
 

Detailed Description

Implements the IEEE 802.11 MAC.

The features, standards compliance and exact operation of the MAC depend on the plugged-in components (see IUpperMac, IRx, ITx, IContention and other interface classes).

Constructor & Destructor Documentation

inet::ieee80211::Ieee80211Mac::Ieee80211Mac ( )
38 {
39 }
inet::ieee80211::Ieee80211Mac::~Ieee80211Mac ( )
virtual
42 {
44  delete pendingRadioConfigMsg;
45 }
cMessage * pendingRadioConfigMsg
Definition: Ieee80211Mac.h:65

Member Function Documentation

void inet::ieee80211::Ieee80211Mac::configureRadioMode ( IRadio::RadioMode  radioMode)
protected

Referenced by receiveSignal(), and sendFrame().

198 {
199  if (radio->getRadioMode() != radioMode) {
200  ConfigureRadioCommand *configureCommand = new ConfigureRadioCommand();
201  configureCommand->setRadioMode(radioMode);
202  cMessage *message = new cMessage("configureRadioMode", RADIO_C_CONFIGURE);
203  message->setControlInfo(configureCommand);
204  sendDown(message);
205  }
206 }
virtual RadioMode getRadioMode() const =0
Returns the current radio mode, This is the same mode as the one emitted with the last radioModeChang...
virtual void setRadioMode(int radioMode)
virtual void sendDown(cMessage *message)
Definition: MACProtocolBase.cc:59
IRadio * radio
Definition: Ieee80211Mac.h:55
Definition: RadioControlInfo_m.h:56
Class generated from inet/physicallayer/contract/packetlevel/RadioControlInfo.msg:45 by nedtool...
Definition: RadioControlInfo_m.h:76
InterfaceEntry * inet::ieee80211::Ieee80211Mac::createInterfaceEntry ( )
overrideprotectedvirtual

Implements inet::MACProtocolBase.

103 {
104  InterfaceEntry *e = new InterfaceEntry(this);
105  // address
106  e->setMACAddress(address);
107  e->setInterfaceToken(address.formInterfaceIdentifier());
108  e->setMtu(par("mtu").longValue());
109  // capabilities
110  e->setBroadcast(true);
111  e->setMulticast(true);
112  e->setPointToPoint(false);
113  return e;
114 }
MACAddress address
Definition: Ieee80211Mac.h:50
const value< double, units::C > e(1.602176487e-19)
InterfaceToken formInterfaceIdentifier() const
Create interface identifier (IEEE EUI-64) which can be used by IPv6 stateless address autoconfigurati...
Definition: MACAddress.cc:136
void inet::ieee80211::Ieee80211Mac::handleLowerPacket ( cPacket *  msg)
overrideprotectedvirtual

Handle messages from lower (physical) layer.

Implements inet::LayeredProtocolBase.

127 {
128  auto frame = check_and_cast<Ieee80211Frame *>(msg);
129  if (rx->lowerFrameReceived(frame)) {
130  processLowerFrame(frame);
131  }
132  else { // corrupted frame received
133  if (qosSta)
135  else
137  }
138 }
virtual bool lowerFrameReceived(Ieee80211Frame *frame)=0
Class generated from inet/linklayer/ieee80211/mac/Ieee80211Frame.msg:105 by nedtool.
Definition: Ieee80211Frame_m.h:172
virtual void processLowerFrame(Ieee80211Frame *frame)
Definition: Ieee80211Mac.cc:243
IRx * rx
Definition: Ieee80211Mac.h:53
virtual void corruptedFrameReceived() override
Definition: Hcf.cc:674
Dcf * dcf
Definition: Ieee80211Mac.h:59
bool qosSta
Definition: Ieee80211Mac.h:51
Hcf * hcf
Definition: Ieee80211Mac.h:61
virtual void corruptedFrameReceived() override
Definition: Dcf.cc:315
void inet::ieee80211::Ieee80211Mac::handleNodeCrash ( )
overrideprotectedvirtual

Reimplemented from inet::OperationalBase.

Referenced by handleNodeShutdown().

274 {
275 }
bool inet::ieee80211::Ieee80211Mac::handleNodeShutdown ( IDoneCallback doneCallback)
overrideprotectedvirtual

Reimplemented from inet::OperationalBase.

266 {
267  bool ret = MACProtocolBase::handleNodeStart(doneCallback);
268  handleNodeCrash();
269  return ret;
270 }
virtual bool handleNodeStart(IDoneCallback *doneCallback)
Definition: OperationalBase.cc:87
virtual void handleNodeCrash() override
Definition: Ieee80211Mac.cc:273
bool inet::ieee80211::Ieee80211Mac::handleNodeStart ( IDoneCallback doneCallback)
overrideprotectedvirtual

Reimplemented from inet::OperationalBase.

255 {
256  if (!doneCallback)
257  return true; // do nothing when called from initialize()
258 
259  bool ret = MACProtocolBase::handleNodeStart(doneCallback);
261  return ret;
262 }
virtual void setRadioMode(RadioMode radioMode)=0
Changes the current radio mode.
The radio is prepared for frame reception, frame transmission is not possible, power consumption is l...
Definition: IRadio.h:109
virtual bool handleNodeStart(IDoneCallback *doneCallback)
Definition: OperationalBase.cc:87
IRadio * radio
Definition: Ieee80211Mac.h:55
void inet::ieee80211::Ieee80211Mac::handleSelfMessage ( cMessage *  msg)
overrideprotectedvirtual

Handle timer self messages.

Reimplemented from inet::LayeredProtocolBase.

117 {
118  ASSERT(false);
119 }
void inet::ieee80211::Ieee80211Mac::handleUpperCommand ( cMessage *  msg)
overrideprotectedvirtual

Handle commands (msg kind+control info) coming from upper layers.

Reimplemented from inet::LayeredProtocolBase.

141 {
142  if (msg->getKind() == RADIO_C_CONFIGURE) {
143  EV_DEBUG << "Passing on command " << msg->getName() << " to physical layer\n";
144  if (pendingRadioConfigMsg != nullptr) {
145  // merge contents of the old command into the new one, then delete it
146  Ieee80211ConfigureRadioCommand *oldConfigureCommand = check_and_cast<Ieee80211ConfigureRadioCommand *>(pendingRadioConfigMsg->getControlInfo());
147  Ieee80211ConfigureRadioCommand *newConfigureCommand = check_and_cast<Ieee80211ConfigureRadioCommand *>(msg->getControlInfo());
148  if (newConfigureCommand->getChannelNumber() == -1 && oldConfigureCommand->getChannelNumber() != -1)
149  newConfigureCommand->setChannelNumber(oldConfigureCommand->getChannelNumber());
150  if (std::isnan(newConfigureCommand->getBitrate().get()) && !std::isnan(oldConfigureCommand->getBitrate().get()))
151  newConfigureCommand->setBitrate(oldConfigureCommand->getBitrate());
152  delete pendingRadioConfigMsg;
153  pendingRadioConfigMsg = nullptr;
154  }
155 
156  if (rx->isMediumFree()) { // TODO: this should be just the physical channel sense!!!!
157  EV_DEBUG << "Sending it down immediately\n";
158  // PhyControlInfo *phyControlInfo = dynamic_cast<PhyControlInfo *>(msg->getControlInfo());
159  // if (phyControlInfo)
160  // phyControlInfo->setAdaptiveSensitivity(true);
161  // end dynamic power
162  sendDown(msg);
163  }
164  else {
165  // TODO: waiting potentially indefinitely?! wtf?!
166  EV_DEBUG << "Delaying " << msg->getName() << " until next IDLE or DEFER state\n";
167  pendingRadioConfigMsg = msg;
168  }
169  }
170  else {
171  throw cRuntimeError("Unrecognized command from mgmt layer: (%s)%s msgkind=%d", msg->getClassName(), msg->getName(), msg->getKind());
172  }
173 }
const value_type & get() const
Definition: Units.h:89
IRx * rx
Definition: Ieee80211Mac.h:53
virtual bool isMediumFree() const =0
Class generated from inet/physicallayer/ieee80211/packetlevel/Ieee80211ControlInfo.msg:132 by nedtool.
Definition: Ieee80211ControlInfo_m.h:72
virtual void setChannelNumber(int channelNumber)
cMessage * pendingRadioConfigMsg
Definition: Ieee80211Mac.h:65
virtual void sendDown(cMessage *message)
Definition: MACProtocolBase.cc:59
Definition: RadioControlInfo_m.h:56
void inet::ieee80211::Ieee80211Mac::handleUpperPacket ( cPacket *  msg)
overrideprotectedvirtual

Handle messages from upper layer.

Implements inet::LayeredProtocolBase.

122 {
123  processUpperFrame(check_and_cast<Ieee80211DataOrMgmtFrame *>(msg));
124 }
virtual void processUpperFrame(Ieee80211DataOrMgmtFrame *frame)
Definition: Ieee80211Mac.cc:231
void inet::ieee80211::Ieee80211Mac::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::MACProtocolBase.

48 {
50  if (stage == INITSTAGE_LOCAL) {
51  qosSta = par("qosStation");
52  cModule *radioModule = gate("lowerLayerOut")->getNextGate()->getOwnerModule();
53  radioModule->subscribe(IRadio::radioModeChangedSignal, this);
54  radioModule->subscribe(IRadio::receptionStateChangedSignal, this);
55  radioModule->subscribe(IRadio::transmissionStateChangedSignal, this);
56  radioModule->subscribe(IRadio::receivedSignalPartChangedSignal, this);
57  radio = check_and_cast<IRadio *>(radioModule);
58  rx = check_and_cast<IRx *>(getSubmodule("rx"));
59  tx = check_and_cast<ITx *>(getSubmodule("tx"));
60  const char *addressString = par("address");
61  if (!strcmp(addressString, "auto")) {
62  // change module parameter from "auto" to concrete address
63  par("address").setStringValue(MACAddress::generateAutoAddress().str().c_str());
64  addressString = par("address");
65  }
66  address.setAddress(addressString);
68  }
69  else if (stage == INITSTAGE_LINK_LAYER) {
72  if (isOperational)
74  if (isInterfaceRegistered().isUnspecified())// TODO: do we need multi-MAC feature? if so, should they share interfaceEntry?? --Andras
76  }
77  else if (stage == INITSTAGE_LINK_LAYER_2) {
78  rx = check_and_cast<IRx *>(getSubmodule("rx"));
79  tx = check_and_cast<ITx *>(getSubmodule("tx"));
80  dcf = check_and_cast<Dcf *>(getSubmodule("dcf"));
81  hcf = check_and_cast<Hcf *>(getSubmodule("hcf"));
82  }
83 }
Abstract interface for unconditionally transmitting a frame immediately or after waiting for a specif...
Definition: ITx.h:33
virtual void setRadioMode(RadioMode radioMode)=0
Changes the current radio mode.
virtual void initialize(int stage) override
Definition: MACProtocolBase.cc:31
bool isOperational
Definition: OperationalBase.h:28
Abstract interface for Rx processes.
Definition: IRx.h:45
static const Ieee80211ModeSet * getModeSet(const char *mode)
Definition: Ieee80211ModeSet.cc:285
IRx * rx
Definition: Ieee80211Mac.h:53
Local initializations.
Definition: InitStages.h:35
Initialization of link-layer protocols.
Definition: InitStages.h:59
void setAddress(const char *hexstr)
Converts address value from hex string (12 hex digits, may also contain spaces, hyphens and colons) ...
Definition: MACAddress.cc:102
virtual const MACAddress & isInterfaceRegistered()
Definition: Ieee80211Mac.cc:85
The radio is prepared for frame reception, frame transmission is not possible, power consumption is l...
Definition: IRadio.h:109
static MACAddress generateAutoAddress()
Generates a unique address which begins with 0a:aa and ends in a unique suffix.
Definition: MACAddress.cc:143
MACAddress address
Definition: Ieee80211Mac.h:50
simsignal_t NF_MODESET_CHANGED
Definition: NotifierConsts.cc:46
Dcf * dcf
Definition: Ieee80211Mac.h:59
static simsignal_t receptionStateChangedSignal
This signal is emitted every time the radio reception state changes.
Definition: IRadio.h:66
This interface represents a physical device that is capable of transmitting and receiving radio signa...
Definition: IRadio.h:44
static simsignal_t receivedSignalPartChangedSignal
This signal is emitted every time the received part changes.
Definition: IRadio.h:78
virtual void registerInterface()
Definition: MACProtocolBase.cc:42
bool qosSta
Definition: Ieee80211Mac.h:51
Hcf * hcf
Definition: Ieee80211Mac.h:61
ITx * tx
Definition: Ieee80211Mac.h:54
const Ieee80211ModeSet * modeSet
Definition: Ieee80211Mac.h:56
#define stringValue()
Definition: NedFunctions.cc:24
Implements IEEE 802.11 Hybrid Coordination Function.
Definition: Hcf.h:60
Implements IEEE 802.11 Distributed Coordination Function.
Definition: Dcf.h:51
static simsignal_t transmissionStateChangedSignal
This signal is emitted every time the radio transmission state changes.
Definition: IRadio.h:72
IRadio * radio
Definition: Ieee80211Mac.h:55
Additional link-layer initializations that depend on the previous stage.
Definition: InitStages.h:64
static simsignal_t radioModeChangedSignal
This signal is emitted every time the radio mode changes.
Definition: IRadio.h:54
const MACAddress & inet::ieee80211::Ieee80211Mac::isInterfaceRegistered ( )
protectedvirtual

Referenced by initialize().

86 {
87  // if (!par("multiMac").boolValue())
88  // return MACAddress::UNSPECIFIED_ADDRESS;
89  IInterfaceTable *ift = findModuleFromPar<IInterfaceTable>(par("interfaceTableModule"), this);
90  if (!ift)
92  cModule *interfaceModule = findModuleUnderContainingNode(this);
93  if (!interfaceModule)
94  throw cRuntimeError("NIC module not found in the host");
95  std::string interfaceName = utils::stripnonalnum(interfaceModule->getFullName());
96  InterfaceEntry *e = ift->getInterfaceByName(interfaceName.c_str());
97  if (e)
98  return e->getMacAddress();
100 }
cModule * findModuleUnderContainingNode(const cModule *from)
Find the ancestor module under the node containing the given module.
Definition: ModuleAccess.cc:73
std::string stripnonalnum(const char *s)
Removes non-alphanumeric characters from the given string.
Definition: INETUtils.cc:56
const value< double, units::C > e(1.602176487e-19)
static const MACAddress UNSPECIFIED_ADDRESS
The unspecified MAC address, 00:00:00:00:00:00.
Definition: MACAddress.h:57
virtual int inet::ieee80211::Ieee80211Mac::numInitStages ( ) const
inlineoverrideprotectedvirtual

Reimplemented from inet::OperationalBase.

71 {return NUM_INIT_STAGES;}
The number of initialization stages.
Definition: InitStages.h:116
void inet::ieee80211::Ieee80211Mac::processLowerFrame ( Ieee80211Frame frame)
protectedvirtual

Referenced by handleLowerPacket().

244 {
245  Enter_Method("processLowerFrame(\"%s\")", frame->getName());
246  take(frame);
247  if (qosSta)
248  hcf->processLowerFrame(frame);
249  else
250  dcf->processLowerFrame(frame);
251 }
virtual void processLowerFrame(Ieee80211Frame *frame) override
Definition: Hcf.cc:143
virtual void processLowerFrame(Ieee80211Frame *frame) override
Definition: Dcf.cc:128
Dcf * dcf
Definition: Ieee80211Mac.h:59
bool qosSta
Definition: Ieee80211Mac.h:51
Hcf * hcf
Definition: Ieee80211Mac.h:61
void inet::ieee80211::Ieee80211Mac::processUpperFrame ( Ieee80211DataOrMgmtFrame frame)
protectedvirtual

Referenced by handleUpperPacket().

232 {
233  Enter_Method("processUpperFrame(\"%s\")", frame->getName());
234  take(frame);
235  EV_INFO << "Frame " << frame << " received from higher layer, receiver = " << frame->getReceiverAddress() << "\n";
236  ASSERT(!frame->getReceiverAddress().isUnspecified());
237  if (qosSta)
238  hcf->processUpperFrame(frame);
239  else
240  dcf->processUpperFrame(frame);
241 }
virtual MACAddress & getReceiverAddress()
bool isUnspecified() const
Returns true if all address bytes are zero.
Definition: MACAddress.h:151
virtual void processUpperFrame(Ieee80211DataOrMgmtFrame *frame) override
Definition: Dcf.cc:77
Dcf * dcf
Definition: Ieee80211Mac.h:59
bool qosSta
Definition: Ieee80211Mac.h:51
Hcf * hcf
Definition: Ieee80211Mac.h:61
virtual void processUpperFrame(Ieee80211DataOrMgmtFrame *frame) override
Definition: Hcf.cc:95
void inet::ieee80211::Ieee80211Mac::receiveSignal ( cComponent *  source,
simsignal_t  signalID,
long  value,
cObject *  details 
)
overrideprotected
176 {
177  Enter_Method_Silent("receiveSignal()");
178  if (signalID == IRadio::receptionStateChangedSignal) {
180  }
181  else if (signalID == IRadio::transmissionStateChangedSignal) {
182  auto oldTransmissionState = transmissionState;
184  bool transmissionFinished = (oldTransmissionState == IRadio::TRANSMISSION_STATE_TRANSMITTING && transmissionState == IRadio::TRANSMISSION_STATE_IDLE);
185  if (transmissionFinished) {
187  EV_DEBUG << "changing radio to receiver mode\n";
188  configureRadioMode(IRadio::RADIO_MODE_RECEIVER); // FIXME: this is in a very wrong place!!! should be done explicitly from UpperMac!
189  }
190  rx->transmissionStateChanged(transmissionState);
191  }
192  else if (signalID == IRadio::receivedSignalPartChangedSignal) {
194  }
195 }
TransmissionState
This enumeration specifies the transmission state of the radio.
Definition: IRadio.h:167
ReceptionState
This enumeration specifies the reception state of the radio.
Definition: IRadio.h:136
IRadio::TransmissionState transmissionState
Definition: Ieee80211Mac.h:57
The radio is not transmitting a signal on the radio medium.
Definition: IRadio.h:178
virtual void transmissionStateChanged(IRadio::TransmissionState state)=0
virtual void receivedSignalPartChanged(IRadioSignal::SignalPart part)=0
IRx * rx
Definition: Ieee80211Mac.h:53
The radio medium is busy, the radio is currently transmitting a signal.
Definition: IRadio.h:183
The radio is prepared for frame reception, frame transmission is not possible, power consumption is l...
Definition: IRadio.h:109
virtual void receptionStateChanged(IRadio::ReceptionState state)=0
static simsignal_t receptionStateChangedSignal
This signal is emitted every time the radio reception state changes.
Definition: IRadio.h:66
static simsignal_t receivedSignalPartChangedSignal
This signal is emitted every time the received part changes.
Definition: IRadio.h:78
ITx * tx
Definition: Ieee80211Mac.h:54
SignalPart
This enumeration specifies a part of a radio signal.
Definition: IRadioSignal.h:36
static simsignal_t transmissionStateChangedSignal
This signal is emitted every time the radio transmission state changes.
Definition: IRadio.h:72
virtual void radioTransmissionFinished()=0
void configureRadioMode(IRadio::RadioMode radioMode)
Definition: Ieee80211Mac.cc:197
void inet::ieee80211::Ieee80211Mac::sendDownPendingRadioConfigMsg ( )
virtual

Referenced by inet::ieee80211::Dcf::frameSequenceFinished(), inet::ieee80211::Hcf::frameSequenceFinished(), and inet::ieee80211::Contention::handleWithFSM().

224 {
225  if (pendingRadioConfigMsg != nullptr) {
227  pendingRadioConfigMsg = nullptr;
228  }
229 }
cMessage * pendingRadioConfigMsg
Definition: Ieee80211Mac.h:65
virtual void sendDown(cMessage *message)
Definition: MACProtocolBase.cc:59
void inet::ieee80211::Ieee80211Mac::sendFrame ( Ieee80211Frame frameToSend)
virtual

Referenced by inet::ieee80211::Tx::handleMessage().

216 {
217  Enter_Method("sendFrame(\"%s\")", frame->getName());
218  take(frame);
220  sendDown(frame);
221 }
The radio is prepared for frame transmission, frame reception is not possible, power consumption is l...
Definition: IRadio.h:116
virtual void sendDown(cMessage *message)
Definition: MACProtocolBase.cc:59
void configureRadioMode(IRadio::RadioMode radioMode)
Definition: Ieee80211Mac.cc:197
void inet::ieee80211::Ieee80211Mac::sendUp ( cMessage *  message)
overridevirtual

Reimplemented from inet::MACProtocolBase.

Referenced by inet::ieee80211::Dcf::sendUp(), and inet::ieee80211::Hcf::sendUp().

209 {
210  Enter_Method("sendUp(\"%s\")", msg->getName());
211  take(msg);
213 }
virtual void sendUp(cMessage *message)
Definition: MACProtocolBase.cc:52

Member Data Documentation

MACAddress inet::ieee80211::Ieee80211Mac::address
protected

Referenced by createInterfaceEntry(), and initialize().

Dcf* inet::ieee80211::Ieee80211Mac::dcf = nullptr
protected
Hcf* inet::ieee80211::Ieee80211Mac::hcf = nullptr
protected
Mcf* inet::ieee80211::Ieee80211Mac::mcf = nullptr
protected
const Ieee80211ModeSet* inet::ieee80211::Ieee80211Mac::modeSet = nullptr
protected

Referenced by initialize().

Pcf* inet::ieee80211::Ieee80211Mac::pcf = nullptr
protected
cMessage* inet::ieee80211::Ieee80211Mac::pendingRadioConfigMsg = nullptr
protected
bool inet::ieee80211::Ieee80211Mac::qosSta = false
protected
IRadio* inet::ieee80211::Ieee80211Mac::radio = nullptr
protected
simsignal_t inet::ieee80211::Ieee80211Mac::radioStateSignal = SIMSIGNAL_NULL
staticprotected
IRx* inet::ieee80211::Ieee80211Mac::rx = nullptr
protected
simsignal_t inet::ieee80211::Ieee80211Mac::stateSignal = SIMSIGNAL_NULL
staticprotected
IRadio::TransmissionState inet::ieee80211::Ieee80211Mac::transmissionState = IRadio::TransmissionState::TRANSMISSION_STATE_UNDEFINED
protected

Referenced by receiveSignal().

ITx* inet::ieee80211::Ieee80211Mac::tx = nullptr
protected

Referenced by initialize(), and receiveSignal().


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