34 #ifndef EMANETDMABASEMODELIMPL_HEADER_ 35 #define EMANETDMABASEMODELIMPL_HEADER_ 77 void start()
override;
83 void destroy()
throw()
override;
104 std::uint64_t u64BandwidthHz,
116 std::unique_ptr<Scheduler> pScheduler_;
117 std::unique_ptr<QueueManager> pQueueManager_;
120 bool bFlowControlEnable_;
121 std::uint16_t u16FlowControlTokens_;
122 std::string sPCRCurveURI_;
130 std::uint64_t u64SequenceNumber_;
132 std::uint64_t u64BandwidthHz_;
138 std::uint64_t u64ScheduleIndex_;
141 void sendDownstreamPacket(
double dSlotRemainingRatio);
143 void processTxOpportunity(std::uint64_t u64ScheduleIndex);
145 double slotPortionRatio(
const TimePoint & current,
152 #endif // EMANETDMABASEMODELIMPL_HEADER_ void processSchedulerPacket(DownstreamPacket &pkt) override
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.
Implementation(NEMId id, PlatformServiceProvider *pPlatformServiceProvider, RadioServiceProvider *pRadioServiceProvider, Scheduler *pScheduler, QueueManager *pQueueManager, MACLayerImplementor *pRadioModel)
Flow Control Manager (token producer) side.
std::list< const ControlMessage * > ControlMessages
void initialize(Registrar ®istrar) override
void processConfiguration(const ConfigurationUpdate &update) override
Implementation of BaseModel.
std::vector< QueueInfo > QueueInfos
void processDownstreamPacket(DownstreamPacket &pkt, const ControlMessages &msgs) override
Specialized packet the allows downstream processing to add layer specific headers as the packet trave...
std::set< std::uint64_t > Frequencies
std::chrono::microseconds Microseconds
Transmit slot information.
void postStart() override
The RadioServiceProvider interface provides access to radio (RF) model specific services.
Aggregation statistic and statistic table status publisher.
void processDownstreamControl(const ControlMessages &msgs) override
Interface used by a scheduler module to communicate information with BaseModel.
Scheduler interface used by BaseModel to communicate with a scheduler module.
void configure(const ConfigurationUpdate &update) override
Queue management interface used by BaseModel
Manages all receive side message processing.
std::vector< ConfigurationNameAnyValues > ConfigurationUpdate
void notifyScheduleChange(const Frequencies &frequencies, std::uint64_t u64BandwidthHz, const Microseconds &slotDuration, const Microseconds &slotOverhead) override
Implementation of PacketStatusPublisher.
void processSchedulerControl(const ControlMessages &msgs) override
QueueInfos getPacketQueueInfo() const override
Clock::time_point TimePoint
std::list< TxSlotInfo > TxSlotInfos
void processUpstreamPacket(const CommonMACHeader &hdr, UpstreamPacket &pkt, const ControlMessages &msgs) override
Slot statistic and statistic table status publisher.
void processUpstreamControl(const ControlMessages &msgs) override
Manages neighbor metrics and sends neighbor metric control message upstream.
void processEvent(const EventId &, const Serialization &) override
Interface used to create a MAC layer plugin implementation.