34 #ifndef EMANEMODELSIEEE802ABGMACLAYER_HEADER_ 35 #define EMANEMODELSIEEE802ABGMACLAYER_HEADER_ 68 namespace IEEE80211ABG
120 void start()
override;
122 void postStart()
override;
124 void stop()
override;
126 void destroy()
throw()
override;
152 COLLISION_TYPE_CLOBBER_RX_DURING_TX = 0x01,
153 COLLISION_TYPE_NOISE_COMMON_RX = 0x02,
154 COLLISION_TYPE_CLOBBER_RX_HIDDEN_BUSY = 0x04,
155 COLLISION_TYPE_NOISE_HIDDEN_RX = 0x08 };
220 bool isDuplicate(
NEMId src, std::uint16_t seq);
310 std::uint64_t u64SequenceNumber_;
312 std::uint16_t u16EntrySequenceNumber_;
324 bool bHasPendingDownstreamQueueEntry_;
328 std::unique_ptr<std::function<bool()>> pChannelUsageCallback_;
330 std::unique_ptr<std::function<bool()>> pRadioMetricCallback_;
333 std::uniform_real_distribution<float>> RNDZeroToOne_;
335 std::vector<std::unique_ptr<Utils::CommonLayerStatistics>> commonLayerStatistics_;
339 bool handleDownstreamQueueEntry(std::uint64_t u64SequenceNumber);
345 double dNoiseFloordBm,
346 std::uint64_t u64SequenceNumber,
348 std::uint8_t u8Category);
351 std::pair<bool, std::uint16_t> checkUpstremReception(
UpstreamPacket &pkt,
353 std::uint64_t u64SequenceNumber,
355 double dNoiseFloordBm,
358 std::uint8_t u8Category);
362 bool checkPOR(
float fSINR,
size_t packetSize, std::uint16_t u16DataRateIndex);
364 std::uint8_t dscpToCategory(std::uint8_t dscp)
const;
366 inline bool isBroadcast(
NEMId nemId)
378 #endif //EMANEMODELSIEEE802ABGMACLAYER_HEADER_
std::string Serialization
A Packet class that allows upstream processing to strip layer headers as the packet travels up the st...
The Registrar interface provides access to all of the emulator registrars.
class used to define the mac layer configuration items
provides access to the pcr curves
class used to define timing parameters
Flow Control Manager (token producer) side.
std::map< NEMId, SequenceVector > DuplicateMap
std::list< const ControlMessage * > ControlMessages
class used to define the mac downstream packet queue
std::vector< SequenceEntry > SequenceVector
structure defines the mac downstream packet queue entry
constexpr NEMId NEM_BROADCAST_MAC_ADDRESS
const RegistrationId REGISTERED_EMANE_MAC_IEEE_802_11_ABG
base class used to define the transitions for the mac tx states
Specialized packet the allows downstream processing to add layer specific headers as the packet trave...
std::uint16_t RegistrationId
Defines the ieee 80211 abg 1 and 2 hop neighbor manager.
class used to define the mac layer statistic items
SequenceEntry(std::uint16_t seq, const TimePoint &tp)
The RadioServiceProvider interface provides access to radio (RF) model specific services.
structure used to define parameters to detect duplicate frames
std::vector< ConfigurationNameAnyValues > ConfigurationUpdate
Clock::time_point TimePoint
A utility wrapper around a generator and a distribution.
Defines a collision table based on contention window and number of neighbors.
IEEE 80211 ABG MAC implementation.
Manages neighbor metrics and sends neighbor metric control message upstream.
Interface used to create a MAC layer plugin implementation.