ns3::SatFwdLinkSchedulerTimeSlicing Class Reference

SatFwdLinkSchedulerTimeSlicing schedules BB frames for forward link. More...

#include "satellite-fwd-link-scheduler-time-slicing.h"

+ Inheritance diagram for ns3::SatFwdLinkSchedulerTimeSlicing:
+ Collaboration diagram for ns3::SatFwdLinkSchedulerTimeSlicing:

Public Member Functions

 SatFwdLinkSchedulerTimeSlicing ()
 Construct a SatFwdLinkScheduler. More...
 
 SatFwdLinkSchedulerTimeSlicing (Ptr< SatBbFrameConf > conf, Mac48Address address, double carrierBandwidthInHz)
 Actual constructor of a SatFwdLinkScheduler. More...
 
 ~SatFwdLinkSchedulerTimeSlicing ()
 Destroy a SatFwdLinkScheduler. More...
 
virtual void ClearAllPackets ()
 Remove all packets being treated. More...
 
TypeId GetInstanceTypeId (void) const
 Get the type ID of instance. More...
 
virtual std::pair< Ptr< SatBbFrame >, const Time > GetNextFrame ()
 Get next frame to be transmitted. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Get the type ID. More...
 

Private Member Functions

bool CanOpenBbFrame (Mac48Address address, uint32_t priorityClass, SatEnums::SatModcod_t modcod)
 
void DoDispose (void)
 Do dispose actions. More...
 
void GetSchedulingObjects (std::vector< Ptr< SatSchedulingObject >> &output)
 Gets scheduling object in sorted order according to configured sorting criteria. More...
 
uint32_t GetSymbols (uint8_t sliceId, SatEnums::SatModcod_t modcod)
 
Time GetTotalDuration ()
 
void PeriodicTimerExpired ()
 Handles periodic timer timeouts. More...
 
void ScheduleBbFrames ()
 Schedule BB Frames. More...
 
void SendAndClearSymbolsSentStat ()
 Send stats and reset all the symbols sent count for each slice to zero. More...
 
void SendTimeSliceSubscription (Mac48Address address, std::vector< uint8_t > slices)
 

Private Attributes

std::map< uint8_t, Ptr< SatBbFrameContainer > > m_bbFrameContainers
 The containers for BBFrames. More...
 
uint8_t m_lastSliceAssigned
 The slice of the last MAC address discovered. More...
 
uint8_t m_lastSliceDequeued
 The last slice from which a BBFrame has been sent. More...
 
uint8_t m_numberOfSlices
 The number of slices. More...
 
std::map< Mac48Address, uint8_t > m_slicesMapping
 The association between a destination MAC address and its slice. More...
 
std::map< uint8_t, uint32_t > m_symbolsSent
 The number of symbols sent for each slice during an allocation cycle. More...
 

Additional Inherited Members

 Types for sorting algorithm used by forward link scheduler. More...

Detailed Description

SatFwdLinkSchedulerTimeSlicing schedules BB frames for forward link.

It classifies the packets into different time slices depending on its destination MAC address.

   SatFwdLinkSchedulerTimeSlicing communicated through callback functions to request

scheduling objects and notifying TX opportunities.

   GW MAC requests frames from scheduler through method GetNextFrame.

Definition at line 48 of file satellite-fwd-link-scheduler-time-slicing.h.

Constructor & Destructor Documentation

◆ SatFwdLinkSchedulerTimeSlicing() [1/2]

ns3::SatFwdLinkSchedulerTimeSlicing::SatFwdLinkSchedulerTimeSlicing ( )

Construct a SatFwdLinkScheduler.

This the default constructor for the SatFwdLinkScheduler is not supported.

Definition at line 58 of file satellite-fwd-link-scheduler-time-slicing.cc.

◆ SatFwdLinkSchedulerTimeSlicing() [2/2]

ns3::SatFwdLinkSchedulerTimeSlicing::SatFwdLinkSchedulerTimeSlicing ( Ptr< SatBbFrameConf conf,
Mac48Address  address,
double  carrierBandwidthInHz 
)

Actual constructor of a SatFwdLinkScheduler.

Parameters
confBB Frame configuration
addressMAC address
carrierBandwidthInHzCarrier bandwidth where scheduler is associated to [Hz].

Definition at line 65 of file satellite-fwd-link-scheduler-time-slicing.cc.

References ns3::SatFwdLinkScheduler::m_bbFrameConf, m_bbFrameContainers, ns3::SatFwdLinkScheduler::m_carrierBandwidthInHz, m_numberOfSlices, ns3::SatFwdLinkScheduler::m_periodicInterval, m_symbolsSent, ns3::SatEnums::NORMAL_FRAME, PeriodicTimerExpired(), ns3::SatEnums::SAT_NONVALID_MODCOD, and ns3::SatEnums::SHORT_FRAME.

+ Here is the call graph for this function:

◆ ~SatFwdLinkSchedulerTimeSlicing()

ns3::SatFwdLinkSchedulerTimeSlicing::~SatFwdLinkSchedulerTimeSlicing ( )

Destroy a SatFwdLinkScheduler.

This is the destructor for the SatFwdLinkScheduler.

Definition at line 136 of file satellite-fwd-link-scheduler-time-slicing.cc.

Member Function Documentation

◆ CanOpenBbFrame()

bool ns3::SatFwdLinkSchedulerTimeSlicing::CanOpenBbFrame ( Mac48Address  address,
uint32_t  priorityClass,
SatEnums::SatModcod_t  modcod 
)
private

Definition at line 445 of file satellite-fwd-link-scheduler-time-slicing.cc.

References GetSymbols(), m_bbFrameContainers, ns3::SatFwdLinkScheduler::m_periodicInterval, m_slicesMapping, and ns3::SatEnums::SAT_NONVALID_MODCOD.

Referenced by ScheduleBbFrames().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ClearAllPackets()

void ns3::SatFwdLinkSchedulerTimeSlicing::ClearAllPackets ( )
virtual

Remove all packets being treated.

Reimplemented from ns3::SatFwdLinkScheduler.

Definition at line 242 of file satellite-fwd-link-scheduler-time-slicing.cc.

References m_bbFrameContainers.

◆ DoDispose()

void ns3::SatFwdLinkSchedulerTimeSlicing::DoDispose ( void  )
private

Do dispose actions.

Definition at line 142 of file satellite-fwd-link-scheduler-time-slicing.cc.

References ns3::SatFwdLinkScheduler::DoDispose(), and m_bbFrameContainers.

+ Here is the call graph for this function:

◆ GetInstanceTypeId()

TypeId ns3::SatFwdLinkSchedulerTimeSlicing::GetInstanceTypeId ( void  ) const
virtual

Get the type ID of instance.

Returns
the object TypeId

Reimplemented from ns3::SatFwdLinkScheduler.

Definition at line 53 of file satellite-fwd-link-scheduler-time-slicing.cc.

References GetTypeId().

+ Here is the call graph for this function:

◆ GetNextFrame()

◆ GetSchedulingObjects()

void ns3::SatFwdLinkSchedulerTimeSlicing::GetSchedulingObjects ( std::vector< Ptr< SatSchedulingObject >> &  output)
private

Gets scheduling object in sorted order according to configured sorting criteria.

Parameters
outputreference to a vector which will be filled with pointers to the scheduling objects available for scheduling.

Definition at line 398 of file satellite-fwd-link-scheduler-time-slicing.cc.

References GetTotalDuration(), ns3::SatFwdLinkScheduler::m_periodicInterval, ns3::SatFwdLinkScheduler::m_schedContextCallback, and ns3::SatFwdLinkScheduler::SortSchedulingObjects().

Referenced by ScheduleBbFrames().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetSymbols()

uint32_t ns3::SatFwdLinkSchedulerTimeSlicing::GetSymbols ( uint8_t  sliceId,
SatEnums::SatModcod_t  modcod 
)
private

Definition at line 494 of file satellite-fwd-link-scheduler-time-slicing.cc.

References m_bbFrameContainers, ns3::SatFwdLinkScheduler::m_carrierBandwidthInHz, and ns3::SatEnums::SAT_NONVALID_MODCOD.

Referenced by CanOpenBbFrame().

+ Here is the caller graph for this function:

◆ GetTotalDuration()

Time ns3::SatFwdLinkSchedulerTimeSlicing::GetTotalDuration ( )
private

Definition at line 412 of file satellite-fwd-link-scheduler-time-slicing.cc.

References m_bbFrameContainers.

Referenced by GetSchedulingObjects(), and ScheduleBbFrames().

+ Here is the caller graph for this function:

◆ GetTypeId()

TypeId ns3::SatFwdLinkSchedulerTimeSlicing::GetTypeId ( void  )
static

Get the type ID.

Returns
the object TypeId

Definition at line 38 of file satellite-fwd-link-scheduler-time-slicing.cc.

References m_numberOfSlices.

Referenced by GetInstanceTypeId().

+ Here is the caller graph for this function:

◆ PeriodicTimerExpired()

void ns3::SatFwdLinkSchedulerTimeSlicing::PeriodicTimerExpired ( )
private

Handles periodic timer timeouts.

Definition at line 254 of file satellite-fwd-link-scheduler-time-slicing.cc.

References ns3::SatFwdLinkScheduler::m_periodicInterval, ScheduleBbFrames(), and SendAndClearSymbolsSentStat().

Referenced by SatFwdLinkSchedulerTimeSlicing().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ScheduleBbFrames()

◆ SendAndClearSymbolsSentStat()

void ns3::SatFwdLinkSchedulerTimeSlicing::SendAndClearSymbolsSentStat ( )
privatevirtual

Send stats and reset all the symbols sent count for each slice to zero.

Reimplemented from ns3::SatFwdLinkScheduler.

Definition at line 267 of file satellite-fwd-link-scheduler-time-slicing.cc.

References m_numberOfSlices, ns3::SatFwdLinkScheduler::m_schedulingSymbolRateTrace, and m_symbolsSent.

Referenced by PeriodicTimerExpired().

+ Here is the caller graph for this function:

◆ SendTimeSliceSubscription()

void ns3::SatFwdLinkSchedulerTimeSlicing::SendTimeSliceSubscription ( Mac48Address  address,
std::vector< uint8_t >  slices 
)
private

Definition at line 428 of file satellite-fwd-link-scheduler-time-slicing.cc.

References ns3::SatFwdLinkScheduler::m_sendControlMsgCallback.

Referenced by ScheduleBbFrames().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_bbFrameContainers

std::map<uint8_t, Ptr<SatBbFrameContainer> > ns3::SatFwdLinkSchedulerTimeSlicing::m_bbFrameContainers
private

The containers for BBFrames.

The keys are the slices and the values the associated container

Definition at line 158 of file satellite-fwd-link-scheduler-time-slicing.h.

Referenced by SatFwdLinkSchedulerTimeSlicing(), CanOpenBbFrame(), ClearAllPackets(), DoDispose(), GetNextFrame(), GetSymbols(), GetTotalDuration(), and ScheduleBbFrames().

◆ m_lastSliceAssigned

uint8_t ns3::SatFwdLinkSchedulerTimeSlicing::m_lastSliceAssigned
private

The slice of the last MAC address discovered.

Used to associated destination MAC address to a slice following a Round Robin law.

Definition at line 180 of file satellite-fwd-link-scheduler-time-slicing.h.

Referenced by ScheduleBbFrames().

◆ m_lastSliceDequeued

uint8_t ns3::SatFwdLinkSchedulerTimeSlicing::m_lastSliceDequeued
private

The last slice from which a BBFrame has been sent.

used for Round Robin scheduling.

Definition at line 185 of file satellite-fwd-link-scheduler-time-slicing.h.

Referenced by GetNextFrame().

◆ m_numberOfSlices

uint8_t ns3::SatFwdLinkSchedulerTimeSlicing::m_numberOfSlices
private

◆ m_slicesMapping

std::map<Mac48Address, uint8_t> ns3::SatFwdLinkSchedulerTimeSlicing::m_slicesMapping
private

The association between a destination MAC address and its slice.

Slice 0 is the container for control BBFrames that are broadcasted to all UT.

Definition at line 164 of file satellite-fwd-link-scheduler-time-slicing.h.

Referenced by CanOpenBbFrame(), and ScheduleBbFrames().

◆ m_symbolsSent

std::map<uint8_t, uint32_t> ns3::SatFwdLinkSchedulerTimeSlicing::m_symbolsSent
private

The number of symbols sent for each slice during an allocation cycle.

Definition at line 169 of file satellite-fwd-link-scheduler-time-slicing.h.

Referenced by SatFwdLinkSchedulerTimeSlicing(), GetNextFrame(), and SendAndClearSymbolsSentStat().


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