34 #ifndef RFPIPEMAC_MACLAYER_HEADER_ 35 #define RFPIPEMAC_MACLAYER_HEADER_ 96 void start()
override;
100 void stop()
override;
102 void destroy()
throw()
override;
129 std::uint64_t u64TxSequenceNumber_;
140 bool bPromiscuousMode_;
142 std::uint64_t u64DataRatebps_;
146 bool bFlowControlEnable_;
148 bool bRadioMetricEnable_;
150 std::uint16_t u16FlowControlTokens_;
152 std::string sPCRCurveURI_;
163 std::uniform_real_distribution<float>> RNDZeroToOne_;
166 std::uniform_real_distribution<float>>> pRNDJitter_;
168 float fJitterSeconds_;
176 bool bHasPendingDownstreamQueueEntry_;
184 void handleDownstreamQueueEntry(
TimePoint sot,
185 std::uint64_t u64TxSequenceNumber);
187 Microseconds getDurationMicroseconds(
size_t lengthInBytes);
191 bool checkPOR(
float fSINR,
size_t packetSize);
197 #endif //RFPIPEMAC_MACLAYER_HEADER_
A Packet class that allows upstream processing to strip layer headers as the packet travels up the st...
const RegistrationId REGISTERED_EMANE_MAC_RF_PIPE
The Registrar interface provides access to all of the emulator registrars.
void postStart() override
Flow Control Manager (token producer) side.
std::list< const ControlMessage * > ControlMessages
void processDownstreamControl(const ControlMessages &msgs) override
Provides a queue implementation for the RFPipe Mac layer.
void initialize(Registrar ®istrar) override
Common NEM layer statistics and drop reason tables.
RFPipe MAC downstream queue entry definition.
void processDownstreamPacket(DownstreamPacket &pkt, const ControlMessages &msgs) override
void processUpstreamControl(const ControlMessages &msgs) override
Specialized packet the allows downstream processing to add layer specific headers as the packet trave...
std::uint16_t RegistrationId
void processConfiguration(const ConfigurationUpdate &update) override
MACLayer(NEMId id, PlatformServiceProvider *pPlatformServiceProvider, RadioServiceProvider *pRadioServiceProvider)
std::chrono::microseconds Microseconds
void configure(const ConfigurationUpdate &update) override
The RadioServiceProvider interface provides access to radio (RF) model specific services.
std::vector< ConfigurationNameAnyValues > ConfigurationUpdate
void processUpstreamPacket(const CommonMACHeader &hdr, UpstreamPacket &pkt, const ControlMessages &msgs) override
Clock::time_point TimePoint
Implementation of the rf pipe mac layer.
A utility wrapper around a generator and a distribution.
Manages neighbor metrics and sends neighbor metric control message upstream.
Interface used to create a MAC layer plugin implementation.