|
INET Framework for OMNeT++/OMNEST
|
Implements the IEEE 802.11 MAC.
More...
#include <Ieee80211Mac.h>
|
| virtual int | numInitStages () const override |
| |
| virtual void | initialize (int) override |
| |
| virtual void | initializeRadioMode () |
| |
| virtual void | receiveSignal (cComponent *source, simsignal_t signalID, intval_t value, cObject *details) override |
| |
| virtual void | configureRadioMode (physicallayer::IRadio::RadioMode radioMode) |
| |
| virtual void | configureNetworkInterface () override |
| |
| virtual const MacAddress & | isInterfaceRegistered () |
| |
| virtual void | handleMessageWhenUp (cMessage *message) override |
| |
| 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 | handleMgmtPacket (Packet *packet) |
| | Handle packets from management. More...
|
| |
| virtual void | handleUpperPacket (Packet *packet) override |
| | Handle messages from upper layer. More...
|
| |
| virtual void | handleLowerPacket (Packet *packet) override |
| | Handle messages from lower (physical) layer. More...
|
| |
| virtual void | handleStartOperation (LifecycleOperation *operation) override |
| |
| virtual void | handleStopOperation (LifecycleOperation *operation) override |
| |
| virtual void | handleCrashOperation (LifecycleOperation *operation) override |
| |
| virtual void | encapsulate (Packet *packet) |
| |
| virtual void | decapsulate (Packet *packet) |
| |
| virtual void | receiveSignal (cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) override |
| |
| | MacProtocolBase () |
| |
| virtual | ~MacProtocolBase () |
| |
| virtual void | registerInterface () |
| |
| virtual MacAddress | parseMacAddressParameter (const char *addrstr) |
| |
| virtual void | deleteCurrentTxFrame () |
| |
| virtual void | dropCurrentTxFrame (PacketDropDetails &details) |
| |
| virtual void | handleMessageWhenDown (cMessage *msg) override |
| |
| virtual void | sendDown (cMessage *message) |
| |
| virtual bool | isUpperMessage (cMessage *message) const override |
| |
| virtual bool | isLowerMessage (cMessage *message) const override |
| |
| virtual bool | isInitializeStage (int stage) const override |
| |
| virtual bool | isModuleStartStage (int stage) const override |
| |
| virtual bool | isModuleStopStage (int stage) const override |
| |
| virtual void | flushQueue (PacketDropDetails &details) |
| | should clear queue and emit signal "packetDropped" with entire packets More...
|
| |
| virtual void | clearQueue () |
| | should clear queue silently More...
|
| |
| virtual void | receiveSignal (cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) override |
| |
| queueing::IPacketQueue * | getQueue (cGate *gate) const |
| |
| virtual bool | canDequeuePacket () const |
| |
| virtual Packet * | dequeuePacket () |
| |
| virtual void | handleUpperMessage (cMessage *message) |
| |
| virtual void | handleLowerMessage (cMessage *message) |
| |
| virtual void | handleLowerCommand (cMessage *message) |
| |
| virtual int | numInitStages () const override |
| |
| virtual void | refreshDisplay () const override |
| |
| virtual void | handleMessage (cMessage *msg) override |
| |
| virtual bool | handleOperationStage (LifecycleOperation *operation, IDoneCallback *doneCallback) override |
| | Perform one stage of a lifecycle operation. More...
|
| |
| virtual State | getInitialOperationalState () const |
| | Returns initial operational state: OPERATING or NOT_OPERATING. More...
|
| |
| virtual void | handleActiveOperationTimeout (cMessage *message) |
| |
| virtual bool | isUp () const |
| | utility functions More...
|
| |
| virtual bool | isDown () const |
| |
| virtual void | setOperationalState (State newState) |
| |
| virtual void | scheduleOperationTimeout (simtime_t timeout) |
| |
| virtual void | setupActiveOperation (LifecycleOperation *operation, IDoneCallback *doneCallback, State) |
| |
| virtual void | delayActiveOperationFinish (simtime_t timeout) |
| |
| virtual void | startActiveOperationExtraTime (simtime_t delay=SIMTIME_ZERO) |
| |
| virtual void | startActiveOperationExtraTimeOrFinish (simtime_t extraTime) |
| |
| virtual void | finishActiveOperation () |
| |
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).
◆ Ieee80211Mac()
| inet::ieee80211::Ieee80211Mac::Ieee80211Mac |
( |
| ) |
|
◆ ~Ieee80211Mac()
| inet::ieee80211::Ieee80211Mac::~Ieee80211Mac |
( |
| ) |
|
|
virtual |
◆ configureNetworkInterface()
| void inet::ieee80211::Ieee80211Mac::configureNetworkInterface |
( |
| ) |
|
|
overrideprotectedvirtual |
◆ configureRadioMode()
329 if (
radio->getRadioMode() != radioMode) {
333 request->setControlInfo(configureCommand);
◆ decapsulate()
| void inet::ieee80211::Ieee80211Mac::decapsulate |
( |
Packet * |
packet | ) |
|
|
protectedvirtual |
269 const auto& header = packet->popAtFront<Ieee80211DataOrMgmtHeader>();
271 if (dynamicPtrCast<const Ieee80211DataHeader>(header))
272 packetProtocolTag->setProtocol(
llc->getProtocol());
273 else if (dynamicPtrCast<const Ieee80211MgmtHeader>(header))
275 auto macAddressInd = packet->addTagIfAbsent<MacAddressInd>();
277 macAddressInd->setSrcAddress(header->getTransmitterAddress());
278 macAddressInd->setDestAddress(header->getReceiverAddress());
282 macAddressInd->setSrcAddress(header->getTransmitterAddress());
283 macAddressInd->setDestAddress(header->getAddress3());
286 macAddressInd->setSrcAddress(header->getAddress3());
287 macAddressInd->setDestAddress(header->getReceiverAddress());
290 throw cRuntimeError(
"Unknown station type");
293 throw cRuntimeError(
"Unknown mode");
295 auto dataHeader = dynamicPtrCast<const Ieee80211DataHeader>(header);
296 int tid = dataHeader->getTid();
298 packet->addTagIfAbsent<UserPriorityInd>()->setUserPriority(tid);
300 packet->addTagIfAbsent<InterfaceInd>()->setInterfaceId(
networkInterface->getInterfaceId());
301 packet->popAtBack<Ieee80211MacTrailer>(
B(4));
◆ encapsulate()
| void inet::ieee80211::Ieee80211Mac::encapsulate |
( |
Packet * |
packet | ) |
|
|
protectedvirtual |
233 auto macAddressReq = packet->getTag<MacAddressReq>();
234 auto destAddress = macAddressReq->getDestAddress();
235 const auto& header = makeShared<Ieee80211DataHeader>();
236 header->setTransmitterAddress(
mib->address);
238 header->setReceiverAddress(destAddress);
241 header->setFromDS(
true);
242 header->setAddress3(
mib->address);
243 header->setReceiverAddress(destAddress);
246 header->setToDS(
true);
247 header->setReceiverAddress(
mib->bssData.bssid);
248 header->setAddress3(destAddress);
251 throw cRuntimeError(
"Unknown station type");
254 throw cRuntimeError(
"Unknown mode");
255 if (
auto userPriorityReq = packet->findTag<UserPriorityReq>()) {
259 header->setTid(userPriorityReq->getUserPriority());
261 packet->insertAtFront(header);
262 packet->insertAtBack(makeShared<Ieee80211MacTrailer>());
◆ getAddress()
| virtual const MacAddress& inet::ieee80211::Ieee80211Mac::getAddress |
( |
| ) |
const |
|
inlinevirtual |
◆ getFcsMode()
| virtual FcsMode inet::ieee80211::Ieee80211Mac::getFcsMode |
( |
| ) |
const |
|
inlinevirtual |
◆ handleCrashOperation()
| void inet::ieee80211::Ieee80211Mac::handleCrashOperation |
( |
LifecycleOperation * |
operation | ) |
|
|
overrideprotectedvirtual |
◆ handleLowerPacket()
| void inet::ieee80211::Ieee80211Mac::handleLowerPacket |
( |
Packet * |
packet | ) |
|
|
overrideprotectedvirtual |
Handle messages from lower (physical) layer.
Reimplemented from inet::LayeredProtocolBase.
184 if (
rx->lowerFrameReceived(packet)) {
185 auto header = packet->peekAtFront<Ieee80211MacHeader>();
190 hcf->corruptedFrameReceived();
192 dcf->corruptedFrameReceived();
◆ handleMessageWhenUp()
| void inet::ieee80211::Ieee80211Mac::handleMessageWhenUp |
( |
cMessage * |
message | ) |
|
|
overrideprotectedvirtual |
◆ handleMgmtPacket()
| void inet::ieee80211::Ieee80211Mac::handleMgmtPacket |
( |
Packet * |
packet | ) |
|
|
protectedvirtual |
Handle packets from management.
143 const auto& header = makeShared<Ieee80211MgmtHeader>();
144 header->setType((
Ieee80211FrameType)packet->getTag<Ieee80211SubtypeReq>()->getSubtype());
145 header->setReceiverAddress(packet->getTag<MacAddressReq>()->getDestAddress());
147 header->setAddress3(
mib->bssData.bssid);
148 packet->insertAtFront(header);
149 packet->insertAtBack(makeShared<Ieee80211MacTrailer>());
◆ handleSelfMessage()
| void inet::ieee80211::Ieee80211Mac::handleSelfMessage |
( |
cMessage * |
msg | ) |
|
|
overrideprotectedvirtual |
◆ handleStartOperation()
| void inet::ieee80211::Ieee80211Mac::handleStartOperation |
( |
LifecycleOperation * |
operation | ) |
|
|
overrideprotectedvirtual |
◆ handleStopOperation()
◆ handleUpperCommand()
| void inet::ieee80211::Ieee80211Mac::handleUpperCommand |
( |
cMessage * |
msg | ) |
|
|
overrideprotectedvirtual |
Handle commands (msg kind+control info) coming from upper layers.
Reimplemented from inet::LayeredProtocolBase.
199 EV_DEBUG <<
"Passing on command " << msg->getName() <<
" to physical layer\n";
212 if (
rx->isMediumFree()) {
213 EV_DEBUG <<
"Sending it down immediately\n";
222 EV_DEBUG <<
"Delaying " << msg->getName() <<
" until next IDLE or DEFER state\n";
227 throw cRuntimeError(
"Unrecognized command from mgmt layer: (%s)%s msgkind=%d", msg->getClassName(), msg->getName(), msg->getKind());
◆ handleUpperPacket()
| void inet::ieee80211::Ieee80211Mac::handleUpperPacket |
( |
Packet * |
packet | ) |
|
|
overrideprotectedvirtual |
Handle messages from upper layer.
Reimplemented from inet::LayeredProtocolBase.
156 EV <<
"STA is not associated with an access point, discarding packet " << packet <<
"\n";
157 PacketDropDetails details;
164 const auto& header = packet->peekAtFront<Ieee80211DataOrMgmtHeader>();
166 auto receiverAddress = header->getReceiverAddress();
167 if (!receiverAddress.isMulticast()) {
168 auto it =
mib->bssAccessPointData.stations.find(receiverAddress);
170 EV <<
"STA with MAC address " << receiverAddress <<
" not associated with this AP, dropping frame\n";
171 PacketDropDetails details;
◆ initialize()
| void inet::ieee80211::Ieee80211Mac::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::MacProtocolBase.
53 mib.reference(
this,
"mibModule",
true);
54 mib->qos = par(
"qosStation");
57 cModule *llcModule = gate(
"upperLayerOut")->getNextGate()->getOwnerModule();
58 llc = check_and_cast<IIeee80211Llc *>(llcModule);
59 cModule *radioModule = gate(
"lowerLayerOut")->getNextGate()->getOwnerModule();
64 radio = check_and_cast<IRadio *>(radioModule);
65 ds = check_and_cast<IDs *>(getSubmodule(
"ds"));
66 rx = check_and_cast<IRx *>(getSubmodule(
"rx"));
67 tx = check_and_cast<ITx *>(getSubmodule(
"tx"));
71 rx = check_and_cast<IRx *>(getSubmodule(
"rx"));
72 tx = check_and_cast<ITx *>(getSubmodule(
"tx"));
73 dcf = check_and_cast<Dcf *>(getSubmodule(
"dcf"));
74 hcf = check_and_cast_nullable<Hcf *>(getSubmodule(
"hcf"));
76 throw cRuntimeError(
"Missing hcf module, required for QoS");
◆ initializeRadioMode()
| void inet::ieee80211::Ieee80211Mac::initializeRadioMode |
( |
| ) |
|
|
protectedvirtual |
81 const char *initialRadioMode = par(
"initialRadioMode");
82 if (!strcmp(initialRadioMode,
"off"))
84 else if (!strcmp(initialRadioMode,
"sleep"))
86 else if (!strcmp(initialRadioMode,
"receiver"))
88 else if (!strcmp(initialRadioMode,
"transmitter"))
90 else if (!strcmp(initialRadioMode,
"transceiver"))
93 throw cRuntimeError(
"Unknown initialRadioMode");
◆ isInterfaceRegistered()
| const MacAddress & inet::ieee80211::Ieee80211Mac::isInterfaceRegistered |
( |
| ) |
|
|
protectedvirtual |
100 IInterfaceTable *ift = findModuleFromPar<IInterfaceTable>(par(
"interfaceTableModule"),
this);
104 if (!interfaceModule)
105 throw cRuntimeError(
"NIC module not found in the host");
107 NetworkInterface *
e = ift->findInterfaceByName(interfaceName.c_str());
109 return e->getMacAddress();
◆ numInitStages()
| virtual int inet::ieee80211::Ieee80211Mac::numInitStages |
( |
| ) |
const |
|
inlineoverrideprotectedvirtual |
◆ processLowerFrame()
| void inet::ieee80211::Ieee80211Mac::processLowerFrame |
( |
Packet * |
packet, |
|
|
const Ptr< const Ieee80211MacHeader > & |
header |
|
) |
| |
|
virtual |
388 Enter_Method(
"processLowerFrame(\"%s\")", packet->getName());
391 hcf->processLowerFrame(packet, header);
394 dcf->processLowerFrame(packet, header);
◆ processUpperFrame()
376 Enter_Method(
"processUpperFrame(\"%s\")", packet->getName());
378 EV_INFO <<
"Frame " << packet <<
" received from higher layer, receiver = " << header->getReceiverAddress() <<
"\n";
379 ASSERT(!header->getReceiverAddress().isUnspecified());
381 hcf->processUpperFrame(packet, header);
383 dcf->processUpperFrame(packet, header);
Referenced by inet::ieee80211::Ds::distributeDataFrame().
◆ receiveSignal() [1/2]
| void inet::MacProtocolBase::receiveSignal |
|
overrideprotected |
153 Enter_Method(
"%s", cComponent::getSignalName(signalID));
◆ receiveSignal() [2/2]
| void inet::ieee80211::Ieee80211Mac::receiveSignal |
( |
cComponent * |
source, |
|
|
simsignal_t |
signalID, |
|
|
intval_t |
value, |
|
|
cObject * |
details |
|
) |
| |
|
overrideprotectedvirtual |
306 Enter_Method(
"%s", cComponent::getSignalName(signalID));
315 if (transmissionFinished) {
316 tx->radioTransmissionFinished();
317 EV_DEBUG <<
"changing radio to receiver mode\n";
◆ sendDownFrame()
| void inet::ieee80211::Ieee80211Mac::sendDownFrame |
( |
Packet * |
frame | ) |
|
|
virtual |
◆ sendDownPendingRadioConfigMsg()
| void inet::ieee80211::Ieee80211Mac::sendDownPendingRadioConfigMsg |
( |
| ) |
|
|
virtual |
◆ sendUp()
| void inet::ieee80211::Ieee80211Mac::sendUp |
( |
cMessage * |
message | ) |
|
|
overridevirtual |
◆ sendUpFrame()
| void inet::ieee80211::Ieee80211Mac::sendUpFrame |
( |
Packet * |
frame | ) |
|
|
virtual |
349 const auto& header = frame->peekAtFront<Ieee80211DataOrMgmtHeader>();
351 if (!(header->getType() & 0x30))
352 send(frame,
"mgmtOut");
354 ds->processDataFrame(frame, dynamicPtrCast<const Ieee80211DataHeader>(header));
◆ dcf
| opp_component_ptr<Dcf> inet::ieee80211::Ieee80211Mac::dcf |
|
protected |
◆ ds
| opp_component_ptr<IDs> inet::ieee80211::Ieee80211Mac::ds |
|
protected |
◆ fcsMode
| FcsMode inet::ieee80211::Ieee80211Mac::fcsMode |
|
protected |
◆ hcf
| opp_component_ptr<Hcf> inet::ieee80211::Ieee80211Mac::hcf |
|
protected |
◆ llc
| opp_component_ptr<IIeee80211Llc> inet::ieee80211::Ieee80211Mac::llc |
|
protected |
◆ mcf
| opp_component_ptr<Mcf> inet::ieee80211::Ieee80211Mac::mcf |
|
protected |
◆ mib
◆ modeSet
◆ pcf
| opp_component_ptr<Pcf> inet::ieee80211::Ieee80211Mac::pcf |
|
protected |
◆ pendingRadioConfigMsg
| cMessage* inet::ieee80211::Ieee80211Mac::pendingRadioConfigMsg = nullptr |
|
protected |
◆ radio
◆ rx
| opp_component_ptr<IRx> inet::ieee80211::Ieee80211Mac::rx |
|
protected |
◆ transmissionState
◆ tx
| opp_component_ptr<ITx> inet::ieee80211::Ieee80211Mac::tx |
|
protected |
The documentation for this class was generated from the following files:
opp_component_ptr< NetworkInterface > networkInterface
Definition: MacProtocolBase.h:30
cMessage * pendingRadioConfigMsg
Definition: Ieee80211Mac.h:59
virtual void initializeRadioMode()
Definition: Ieee80211Mac.cc:80
virtual void handleMessageWhenUp(cMessage *message) override
Definition: LayeredProtocolBase.cc:14
@ INDEPENDENT
Definition: Ieee80211Mib.h:22
virtual bool isUp() const
utility functions
Definition: OperationalMixin.h:66
@ RADIO_MODE_TRANSCEIVER
The radio is prepared for simultaneous frame reception and transmission, power consumption is low whe...
Definition: IRadio.h:111
virtual void sendUp(cMessage *message)
Definition: MacProtocolBase.cc:59
virtual void encapsulate(Packet *packet)
Definition: Ieee80211Mac.cc:231
static const Protocol ieee80211Mgmt
Definition: Protocol.h:80
cModule * findModuleUnderContainingNode(const cModule *from)
Find the ancestor module under the node containing the given module.
Definition: ModuleAccess.cc:48
@ RADIO_MODE_OFF
The radio is turned off, frame reception or transmission is not possible, power consumption is zero,...
Definition: IRadio.h:84
opp_component_ptr< IIeee80211Llc > llc
Definition: Ieee80211Mac.h:44
@ INFRASTRUCTURE
Definition: Ieee80211Mib.h:21
@ RADIO_MODE_SLEEP
The radio is sleeping, frame reception or transmission is not possible, power consumption is minimal,...
Definition: IRadio.h:90
physicallayer::IRadio::TransmissionState transmissionState
Definition: Ieee80211Mac.h:51
const value< double, units::C > e(1.602176487e-19)
@ STATION
Definition: Ieee80211Mib.h:28
virtual void handleUpperCommand(cMessage *msg) override
Handle commands (msg kind+control info) coming from upper layers.
Definition: Ieee80211Mac.cc:196
static simsignal_t transmissionStateChangedSignal
This signal is emitted when the radio transmission state of the radio is changed.
Definition: IRadio.h:60
simsignal_t modesetChangedSignal
Definition: Simsignals.cc:24
@ RADIO_MODE_TRANSMITTER
The radio is prepared for frame transmission, frame reception is not possible, power consumption is l...
Definition: IRadio.h:104
simsignal_t packetDroppedSignal
Definition: Simsignals.cc:85
ReceptionState
This enumeration specifies the reception state of the radio.
Definition: IRadio.h:124
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
virtual void processLowerFrame(Packet *packet, const Ptr< const Ieee80211MacHeader > &header)
Definition: Ieee80211Mac.cc:386
static simsignal_t receivedSignalPartChangedSignal
This signal is emitted when the received part is changed by the radio.
Definition: IRadio.h:66
opp_component_ptr< ITx > tx
Definition: Ieee80211Mac.h:48
virtual void processUpperFrame(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &header)
Definition: Ieee80211Mac.cc:374
intscale< b, 1, 8 > B
Definition: Units.h:1168
@ RADIO_MODE_RECEIVER
The radio is prepared for frame reception, frame transmission is not possible, power consumption is l...
Definition: IRadio.h:97
std::string stripnonalnum(const char *s)
Removes non-alphanumeric characters from the given string.
Definition: INETUtils.cc:98
virtual void configureRadioMode(physicallayer::IRadio::RadioMode radioMode)
Definition: Ieee80211Mac.cc:327
virtual void sendDown(cMessage *message)
Definition: MacProtocolBase.cc:66
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
@ TRANSMISSION_STATE_TRANSMITTING
The radio medium is busy, the radio is currently transmitting a signal.
Definition: IRadio.h:171
virtual void decapsulate(Packet *packet)
Definition: Ieee80211Mac.cc:267
SignalPart
This enumeration specifies a part of a radio signal.
Definition: IRadioSignal.h:24
@ OTHER_PACKET_DROP
Definition: Simsignals_m.h:84
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
opp_component_ptr< IDs > ds
Definition: Ieee80211Mac.h:45
@ ST_DATA_WITH_QOS
Definition: Ieee80211Frame_m.h:169
virtual void initialize(int stage) override
Definition: MacProtocolBase.cc:37
@ RADIO_C_CONFIGURE
Definition: RadioControlInfo_m.h:62
virtual void handleMgmtPacket(Packet *packet)
Handle packets from management.
Definition: Ieee80211Mac.cc:141
ModuleRefByPar< Ieee80211Mib > mib
Definition: Ieee80211Mac.h:43
opp_component_ptr< physicallayer::IRadio > radio
Definition: Ieee80211Mac.h:49
opp_component_ptr< Hcf > hcf
Definition: Ieee80211Mac.h:55
#define Enter_Method(...)
Definition: SelfDoc.h:71
opp_component_ptr< Dcf > dcf
Definition: Ieee80211Mac.h:53
TransmissionState
This enumeration specifies the transmission state of the radio.
Definition: IRadio.h:155
const value_type & get() const
Definition: Units.h:108
const b QOSCONTROL_PART_LENGTH
Definition: Ieee80211Frame_m.h:101
opp_component_ptr< IRx > rx
Definition: Ieee80211Mac.h:47
FcsMode parseFcsMode(const char *fcsModeString)
Definition: FcsMode.cc:14
static const Protocol ieee80211Mac
Definition: Protocol.h:79
static const MacAddress UNSPECIFIED_ADDRESS
The unspecified MAC address, 00:00:00:00:00:00.
Definition: MacAddress.h:31
static const Ieee80211ModeSet * getModeSet(const char *mode)
Definition: Ieee80211ModeSet.cc:611
@ ACCESS_POINT
Definition: Ieee80211Mib.h:27
@ TRANSMISSION_STATE_IDLE
The radio is not transmitting a signal on the radio medium.
Definition: IRadio.h:166
FcsMode fcsMode
Definition: Ieee80211Mac.h:41
@ ASSOCIATED
Definition: Ieee80211Mib.h:34
const physicallayer::Ieee80211ModeSet * modeSet
Definition: Ieee80211Mac.h:50
Ieee80211FrameType
Enum generated from inet/linklayer/ieee80211/mac/Ieee80211Frame.msg:56 by opp_msgtool.
Definition: Ieee80211Frame_m.h:148
INET_API InitStage INITSTAGE_LINK_LAYER
Initialization of link-layer protocols.
static simsignal_t receptionStateChangedSignal
This signal is emitted when the radio reception state of the radio is changed.
Definition: IRadio.h:54
static simsignal_t radioModeChangedSignal
This signal is emitted when the radio mode of the radio is changed.
Definition: IRadio.h:42