The SatOrbiterMac models the global link MAC layer of the satellite node. More...
#include "satellite-orbiter-mac.h"
Inheritance diagram for ns3::SatOrbiterMac:
Collaboration diagram for ns3::SatOrbiterMac:Public Types | |
| typedef Callback< Ptr< SatBeamScheduler >, uint32_t, uint32_t > | BeamSchedulerCallback |
| Callback to get the SatBeamScheduler from the beam ID for handover. More... | |
| typedef Callback< void, SatPhy::PacketContainer_t, Ptr< SatSignalParameters > > | ReceiveNetDeviceCallback |
| typedef Callback< void, Ptr< SatSignalParameters > > | TransmitCallback |
Public Types inherited from ns3::SatMac | |
| typedef Callback< Ptr< SatBeamScheduler >, uint32_t, uint32_t > | BeamSchedulerCallback |
| Callback to get the SatBeamScheduler from the beam ID for handover. More... | |
| typedef Callback< void, Ptr< const Packet > > | LoraReceiveCallback |
| Callback to receive packet by upper layer. More... | |
| typedef Callback< Ptr< SatControlMessage >, uint32_t > | ReadCtrlMsgCallback |
| Callback to read control messages from container storing control messages. More... | |
| typedef Callback< void, Ptr< Packet >, Mac48Address, Mac48Address > | ReceiveCallback |
| Callback to receive packet by upper layer. More... | |
| typedef Callback< uint32_t, Ptr< SatControlMessage > > | ReserveCtrlMsgCallback |
| Callback to reserve an id and initially store the control message. More... | |
| typedef Callback< void, Address, Address > | RoutingUpdateCallback |
| Callback to update routing and ARP tables after handover. More... | |
| typedef Callback< uint32_t, uint32_t > | SendCtrlMsgCallback |
| Callback to send a control message and allocate a recv ID for it. More... | |
| typedef Callback< void, SatPhy::PacketContainer_t, uint32_t, Time, SatSignalParameters::txInfo_s > | TransmitCallback |
| Callback to send packet to lower layer. More... | |
| typedef Callback< void > | UpdateIslCallback |
| Callback to update ISL routes when handovers are performed. More... | |
Public Member Functions | |
| SatOrbiterMac (uint32_t satId, uint32_t beamId) | |
| Construct a SatOrbiterMac. More... | |
| SatOrbiterMac (void) | |
| Default constructor. More... | |
| virtual | ~SatOrbiterMac () |
| Destructor for SatOrbiterMac. More... | |
| virtual bool | AddPeer (Mac48Address address)=0 |
| Add a remote peer to this MAC. More... | |
| virtual void | DoDispose (void) |
| Dispose of this class instance. More... | |
| virtual void | DoInitialize (void) |
| virtual void | EnquePacket (Ptr< Packet > packet)=0 |
| Add new packet to the LLC queue. More... | |
| virtual Time | GetGuardTime () const |
| TypeId | GetInstanceTypeId (void) const |
| virtual bool | RemovePeer (Mac48Address address)=0 |
| Remove a remote peer from this MAC. More... | |
| void | SetBeamSchedulerCallback (SatOrbiterMac::BeamSchedulerCallback cb) |
| Set the beam scheduler callback. More... | |
| void | SetFwdScheduler (Ptr< SatFwdLinkScheduler > fwdScheduler) |
| Method to set link scheduler (forward or SCPC) More... | |
| virtual void | SetGuardTime (Time guardTime) |
| void | SetLlc (Ptr< SatOrbiterLlc > llc) |
| Set the orbiter LLC associated to this orbiter MAC layer. More... | |
| void | SetReceiveNetDeviceCallback (SatOrbiterMac::ReceiveNetDeviceCallback cb) |
| void | SetTransmitCallback (SatOrbiterMac::TransmitCallback cb) |
| void | StartPeriodicTransmissions () |
| Starts periodical transmissions. More... | |
| virtual void | StopPeriodicTransmissions () |
| Stop periodic transmission, until a pacquet in enqued. More... | |
Public Member Functions inherited from ns3::SatMac | |
| SatMac () | |
| Construct a SatMac. More... | |
| SatMac (uint32_t satId, uint32_t beamId) | |
| Construct a SatMac. More... | |
| ~SatMac () | |
| Destroy a SatMac. More... | |
| virtual void | Disable () |
| Disable the MAC layer, i.e. More... | |
| virtual void | Enable () |
| Enable the MAC layer, i.e. More... | |
| Address | GetAddress () const |
| Get MAC address. More... | |
| uint32_t | GetBeamId () const |
| Get beam ID of the object. More... | |
| uint32_t | GetSatId () const |
| Get sat ID of the object. More... | |
| virtual void | ReceiveQueueEvent (SatQueue::QueueEvent_t event, uint8_t flowIndex) |
| Receive a queue event: More... | |
| uint32_t | ReserveIdAndStoreCtrlMsgToContainer (Ptr< SatControlMessage > msg) |
| Reserve id and store the control message. More... | |
| uint32_t | SendCtrlMsgFromContainer (uint32_t sendId) |
| Send the control message from the container. More... | |
| void | SetBeamId (uint32_t beamId) |
| Set beam ID of the object. More... | |
| void | SetBeamSchedulerCallback (SatMac::BeamSchedulerCallback cb) |
| Set the beam scheduler callback. More... | |
| void | SetHandoverModule (Ptr< SatHandoverModule > handoverModule) |
| Set the handover module. More... | |
| void | SetLoraReceiveCallback (SatMac::LoraReceiveCallback cb) |
| Method to set receive callback. More... | |
| virtual void | SetNodeInfo (Ptr< SatNodeInfo > nodeInfo) |
| Set the node info. More... | |
| void | SetReadCtrlCallback (SatMac::ReadCtrlMsgCallback cb) |
| Method to set read control message callback. More... | |
| void | SetReceiveCallback (SatMac::ReceiveCallback cb) |
| Method to set receive callback. More... | |
| void | SetReserveCtrlCallback (SatMac::ReserveCtrlMsgCallback cb) |
| Method to set reserve control message id callback. More... | |
| void | SetRoutingUpdateCallback (SatMac::RoutingUpdateCallback cb) |
| Method to set the routing update callback. More... | |
| virtual void | SetSatelliteAddress (Address satelliteAddress) |
| Set the satellite MAC address on the other side of this link (if regenerative satellite). More... | |
| void | SetSatId (uint32_t satId) |
| Set sat ID of the object. More... | |
| void | SetSendCtrlCallback (SatMac::SendCtrlMsgCallback cb) |
| Method to set send control message callback. More... | |
| void | SetTransmitCallback (SatMac::TransmitCallback cb) |
| Method to set transmit callback. More... | |
| void | SetUpdateIslCallback (SatMac::UpdateIslCallback cb) |
| Method to set update ISL callback. More... | |
Static Public Member Functions | |
| static TypeId | GetTypeId (void) |
| inherited from Object More... | |
Static Public Member Functions inherited from ns3::SatMac | |
| static TypeId | GetTypeId (void) |
| Derived from Object. More... | |
Protected Member Functions | |
| virtual Address | GetRxUtAddress (Ptr< Packet > packet)=0 |
| Get the UT address associated to this RX packet. More... | |
| virtual SatEnums::SatLinkDir_t | GetSatLinkRxDir ()=0 |
| Get the link RX direction. More... | |
| virtual SatEnums::SatLinkDir_t | GetSatLinkTxDir ()=0 |
| Get the link TX direction. More... | |
| virtual bool | HasPeer ()=0 |
| Indicates if at least one device is connected in this beam. More... | |
| virtual void | RxTraces (SatPhy::PacketContainer_t packets) |
Invoke the Rx trace source for each received packet. More... | |
| virtual void | SendPacket (SatPhy::PacketContainer_t packets, uint32_t carrierId, Time duration, SatSignalParameters::txInfo_s txInfo) |
| Send packets to lower layer by using a callback. More... | |
| void | StartTransmission (uint32_t carrierId) |
| Start sending a Packet Down the Wire. More... | |
Protected Member Functions inherited from ns3::SatMac | |
| void | DoDispose (void) |
| Dispose of SatMac. More... | |
| void | RxTraces (SatPhy::PacketContainer_t packets) |
Invoke the Rx trace source for each received packet. More... | |
| void | SetTimeTag (SatPhy::PacketContainer_t packets) |
| Set SatMacTimeTag of packets. More... | |
Protected Attributes | |
| TracedCallback< Ptr< SatBbFrame > > | m_bbFrameTxTrace |
| Trace for transmitted BB frames. More... | |
| uint32_t | m_beamId |
| ID of beam for UT. More... | |
| bool | m_disableSchedulingIfNoDeviceConnected |
| If true, the periodic calls of StartTransmission are not called when no devices are connected to this MAC. More... | |
| Ptr< SatFwdLinkScheduler > | m_fwdScheduler |
| Scheduler for the forward link. More... | |
| Time | m_guardTime |
| Guard time for BB frames. More... | |
| Ptr< SatOrbiterLlc > | m_llc |
| LLC layer linked to this MAC. More... | |
| bool | m_periodicTransmissionEnabled |
| Indicated if periodic transmission is enabled. More... | |
| ReceiveNetDeviceCallback | m_rxNetDeviceCallback |
| uint32_t | m_satId |
| ID of sat for UT. More... | |
| TransmitCallback | m_txCallback |
Protected Attributes inherited from ns3::SatMac | |
| Time | m_beamEnabledTime |
| Time of the last beam enable event. More... | |
| uint32_t | m_beamId |
| The ID of the beam where mac belongs. More... | |
| SatMac::BeamSchedulerCallback | m_beamSchedulerCallback |
| Callback to get the SatBeamScheduler linked to a beam ID. More... | |
| TracedCallback< Time > | m_beamServiceTrace |
| Traced callback for beam being disabled and including service time. More... | |
| SatEnums::RegenerationMode_t | m_forwardLinkRegenerationMode |
| Regeneration mode on forward link. More... | |
| Ptr< SatHandoverModule > | m_handoverModule |
| Module used to perform handovers. More... | |
| bool | m_isRegenerative |
| Indicate if satellite is regeneration (at least LINK level) for TX. More... | |
| bool | m_isStatisticsTagsEnabled |
EnableStatisticsTags attribute. More... | |
| Time | m_lastDelay |
| Last delay measurement. More... | |
| Time | m_lastLinkDelay |
| Last delay measurement for link. More... | |
| std::queue< Time > | m_lastSOF |
| Store last 3 SOF date for Forward messages, to insert in NCR packets. More... | |
| std::queue< Ptr< SatNcrMessage > > | m_ncrMessagesToSend |
| List of NCR control messages created but not sent yet. More... | |
| bool | m_ncrV2 |
| Use of version 2 of NCR dates. More... | |
| Ptr< SatNodeInfo > | m_nodeInfo |
| Node info containing node related information, such as node type, node id and MAC address (of the SatNetDevice) More... | |
| TracedCallback< Time, SatEnums::SatPacketEvent_t, SatEnums::SatNodeType_t, uint32_t, Mac48Address, SatEnums::SatLogLevel_t, SatEnums::SatLinkDir_t, std::string > | m_packetTrace |
| Trace callback used for packet tracing. More... | |
| SatMac::ReadCtrlMsgCallback | m_readCtrlCallback |
| The read control message callback. More... | |
| SatMac::ReserveCtrlMsgCallback | m_reserveCtrlCallback |
| The reserve control message id callback. More... | |
| SatEnums::RegenerationMode_t | m_returnLinkRegenerationMode |
| Regeneration mode on return link. More... | |
| SatMac::RoutingUpdateCallback | m_routingUpdateCallback |
| Callback to update routing and ARP tables after a beam handover. More... | |
| SatMac::ReceiveCallback | m_rxCallback |
| The upper layer package receive callback. More... | |
| TracedCallback< const Time &, const Address & > | m_rxDelayTrace |
| Traced callback for all received packets, including delay information and the address of the senders. More... | |
| TracedCallback< const Time &, const Address & > | m_rxJitterTrace |
| Traced callback for all received packets, including jitter information and the address of the senders. More... | |
| TracedCallback< const Time &, const Address & > | m_rxLinkDelayTrace |
| Traced callback for all received packets, including link delay information and the address of the senders. More... | |
| TracedCallback< const Time &, const Address & > | m_rxLinkJitterTrace |
| Traced callback for all received packets, including link jitter information and the address of the senders. More... | |
| SatMac::LoraReceiveCallback | m_rxLoraCallback |
| The upper layer package receive callback. More... | |
| TracedCallback< Ptr< const Packet >, const Address & > | m_rxTrace |
| Traced callback for all received packets, including the address of the senders. More... | |
| Address | m_satelliteAddress |
| MAC address of satellite on other side of the link. More... | |
| uint32_t | m_satId |
| The ID of the sat where mac belongs. More... | |
| SatMac::SendCtrlMsgCallback | m_sendCtrlCallback |
| The send control message callback. More... | |
| SatMac::TransmitCallback | m_txCallback |
| The lower layer packet transmit callback. More... | |
| bool | m_txEnabled |
| Flag indicating whether the MAC is enabled, i.e. More... | |
| SatMac::UpdateIslCallback | m_updateIslCallback |
| The update ISL routes callback. More... | |
The SatOrbiterMac models the global link MAC layer of the satellite node.
Definition at line 47 of file satellite-orbiter-mac.h.
| typedef Callback<Ptr<SatBeamScheduler>, uint32_t, uint32_t> ns3::SatOrbiterMac::BeamSchedulerCallback |
Callback to get the SatBeamScheduler from the beam ID for handover.
Definition at line 119 of file satellite-orbiter-mac.h.
| typedef Callback<void, SatPhy::PacketContainer_t, Ptr<SatSignalParameters> > ns3::SatOrbiterMac::ReceiveNetDeviceCallback |
Definition at line 112 of file satellite-orbiter-mac.h.
| typedef Callback<void, Ptr<SatSignalParameters> > ns3::SatOrbiterMac::TransmitCallback |
Definition at line 107 of file satellite-orbiter-mac.h.
| ns3::SatOrbiterMac::SatOrbiterMac | ( | void | ) |
Default constructor.
Definition at line 75 of file satellite-orbiter-mac.cc.
| ns3::SatOrbiterMac::SatOrbiterMac | ( | uint32_t | satId, |
| uint32_t | beamId | ||
| ) |
Construct a SatOrbiterMac.
This is the constructor for the SatOrbiterMac
| satId | ID of sat for UT |
| beamId | ID of beam for UT |
Definition at line 81 of file satellite-orbiter-mac.cc.
|
virtual |
Destructor for SatOrbiterMac.
Definition at line 93 of file satellite-orbiter-mac.cc.
|
pure virtual |
Add a remote peer to this MAC.
| address | The MAC address of the peer |
Implemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
|
virtual |
Dispose of this class instance.
Reimplemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
Definition at line 99 of file satellite-orbiter-mac.cc.
|
virtual |
Reimplemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
Definition at line 106 of file satellite-orbiter-mac.cc.
|
pure virtual |
Add new packet to the LLC queue.
| packet | Packets to be sent. |
Implemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
|
virtual |
Definition at line 282 of file satellite-orbiter-mac.cc.
References m_guardTime.
Referenced by ns3::SatOrbiterFeederMac::GetTypeId(), and ns3::SatOrbiterUserMac::GetTypeId().
Here is the caller graph for this function:| TypeId ns3::SatOrbiterMac::GetInstanceTypeId | ( | void | ) | const |
Definition at line 68 of file satellite-orbiter-mac.cc.
References GetTypeId().
Here is the call graph for this function:
|
protectedpure virtual |
Get the UT address associated to this RX packet.
May be source or destination address depending on link used
| packet | The packet to consider |
Implemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
Referenced by RxTraces().
Here is the caller graph for this function:
|
protectedpure virtual |
Get the link RX direction.
Must be implemented by child clases.
Implemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
|
protectedpure virtual |
Get the link TX direction.
Must be implemented by child clases.
Implemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
Referenced by SendPacket().
Here is the caller graph for this function:
|
static |
inherited from Object
Definition at line 47 of file satellite-orbiter-mac.cc.
References m_bbFrameTxTrace, and m_disableSchedulingIfNoDeviceConnected.
Referenced by GetInstanceTypeId().
Here is the caller graph for this function:
|
protectedpure virtual |
Indicates if at least one device is connected in this beam.
Implemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
Referenced by StartPeriodicTransmissions().
Here is the caller graph for this function:
|
pure virtual |
Remove a remote peer from this MAC.
| address | The MAC address of the peer |
Implemented in ns3::SatOrbiterUserMac, and ns3::SatOrbiterFeederMac.
|
protectedvirtual |
Invoke the Rx trace source for each received packet.
| packets | Container of the pointers to the packets received. |
Definition at line 224 of file satellite-orbiter-mac.cc.
References ns3::SatMacTag::GetDestAddress(), GetRxUtAddress(), ns3::SatMacLinkTimeTag::GetSenderLinkTimestamp(), ns3::SatMac::m_isStatisticsTagsEnabled, ns3::SatMac::m_lastLinkDelay, ns3::SatMac::m_nodeInfo, ns3::SatMac::m_rxLinkDelayTrace, ns3::SatMac::m_rxLinkJitterTrace, and ns3::SatMac::m_rxTrace.
Referenced by ns3::SatOrbiterFeederMac::Receive(), and ns3::SatOrbiterUserMac::Receive().
Here is the call graph for this function:
Here is the caller graph for this function:
|
protectedvirtual |
Send packets to lower layer by using a callback.
| packets | Packets to be sent. |
| carrierId | ID of the carrier used for transmission. |
| duration | Duration of the physical layer transmission. |
| txInfo | Additional parameterization for burst transmission. |
Reimplemented from ns3::SatMac.
Definition at line 191 of file satellite-orbiter-mac.cc.
References ns3::SatUtils::GetPacketInfo(), GetSatLinkTxDir(), ns3::SatEnums::LL_MAC, m_beamId, ns3::SatMac::m_nodeInfo, ns3::SatMac::m_packetTrace, m_satId, m_txCallback, ns3::SatEnums::PACKET_SENT, and ns3::SatMac::SetTimeTag().
Referenced by StartTransmission().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::SatOrbiterMac::SetBeamSchedulerCallback | ( | SatOrbiterMac::BeamSchedulerCallback | cb | ) |
Set the beam scheduler callback.
| cb | Callback to get the SatBeamScheduler |
| void ns3::SatOrbiterMac::SetFwdScheduler | ( | Ptr< SatFwdLinkScheduler > | fwdScheduler | ) |
Method to set link scheduler (forward or SCPC)
| The | scheduler to use |
Definition at line 270 of file satellite-orbiter-mac.cc.
References m_fwdScheduler.
|
virtual |
Definition at line 288 of file satellite-orbiter-mac.cc.
References m_guardTime.
Referenced by ns3::SatOrbiterFeederMac::GetTypeId(), and ns3::SatOrbiterUserMac::GetTypeId().
Here is the caller graph for this function:| void ns3::SatOrbiterMac::SetLlc | ( | Ptr< SatOrbiterLlc > | llc | ) |
Set the orbiter LLC associated to this orbiter MAC layer.
Definition at line 276 of file satellite-orbiter-mac.cc.
References m_llc.
| void ns3::SatOrbiterMac::SetReceiveNetDeviceCallback | ( | SatOrbiterMac::ReceiveNetDeviceCallback | cb | ) |
Definition at line 301 of file satellite-orbiter-mac.cc.
References m_rxNetDeviceCallback.
| void ns3::SatOrbiterMac::SetTransmitCallback | ( | SatOrbiterMac::TransmitCallback | cb | ) |
Definition at line 294 of file satellite-orbiter-mac.cc.
References m_txCallback.
| void ns3::SatOrbiterMac::StartPeriodicTransmissions | ( | ) |
Starts periodical transmissions.
Called when MAC is wanted to take care of periodic sending.
Definition at line 113 of file satellite-orbiter-mac.cc.
References HasPeer(), m_beamId, m_disableSchedulingIfNoDeviceConnected, m_fwdScheduler, m_llc, m_periodicTransmissionEnabled, and StartTransmission().
Referenced by ns3::SatOrbiterUserMac::AddPeer().
Here is the call graph for this function:
Here is the caller graph for this function:
|
protected |
Start sending a Packet Down the Wire.
The StartTransmission method is used internally in the SatOrbiterMac to begin the process of sending a packet out on the PHY layer.
| carrierId | id of the carrier. |
Decrease a guard time from BB frame duration.
Orbiter MAC is disabled, thus get the duration of the default BB frame and try again then.
Definition at line 142 of file satellite-orbiter-mac.cc.
References ns3::SatSignalParameters::txInfo_s::frameType, m_bbFrameTxTrace, m_disableSchedulingIfNoDeviceConnected, m_fwdScheduler, m_guardTime, m_periodicTransmissionEnabled, ns3::SatMac::m_txEnabled, ns3::SatSignalParameters::txInfo_s::modCod, ns3::SatEnums::PACKET_TYPE_DEDICATED_ACCESS, ns3::SatSignalParameters::txInfo_s::packetType, SendPacket(), ns3::SatSignalParameters::txInfo_s::sliceId, and ns3::SatSignalParameters::txInfo_s::waveformId.
Referenced by StartPeriodicTransmissions().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Stop periodic transmission, until a pacquet in enqued.
Definition at line 308 of file satellite-orbiter-mac.cc.
References m_llc, and m_periodicTransmissionEnabled.
Referenced by ns3::SatOrbiterUserMac::RemovePeer().
Here is the caller graph for this function:
|
protected |
Trace for transmitted BB frames.
Definition at line 240 of file satellite-orbiter-mac.h.
Referenced by GetTypeId(), and StartTransmission().
|
protected |
ID of beam for UT.
Definition at line 230 of file satellite-orbiter-mac.h.
Referenced by ns3::SatOrbiterUserMac::AddPeer(), ns3::SatOrbiterUserMac::RemovePeer(), SendPacket(), and StartPeriodicTransmissions().
|
protected |
If true, the periodic calls of StartTransmission are not called when no devices are connected to this MAC.
Definition at line 209 of file satellite-orbiter-mac.h.
Referenced by ns3::SatOrbiterUserMac::AddPeer(), GetTypeId(), ns3::SatOrbiterUserMac::RemovePeer(), StartPeriodicTransmissions(), and StartTransmission().
|
protected |
Scheduler for the forward link.
Definition at line 214 of file satellite-orbiter-mac.h.
Referenced by ns3::SatOrbiterFeederMac::ReceiveSignalingPacket(), ns3::SatOrbiterUserMac::ReceiveSignalingPacket(), SetFwdScheduler(), StartPeriodicTransmissions(), and StartTransmission().
|
protected |
Guard time for BB frames.
The guard time is modeled by shortening the duration of a BB frame by a m_guardTime set by an attribute.
Definition at line 220 of file satellite-orbiter-mac.h.
Referenced by GetGuardTime(), SetGuardTime(), and StartTransmission().
|
protected |
LLC layer linked to this MAC.
Definition at line 235 of file satellite-orbiter-mac.h.
Referenced by ns3::SatOrbiterFeederMac::EnquePacket(), ns3::SatOrbiterUserMac::EnquePacket(), SetLlc(), StartPeriodicTransmissions(), and StopPeriodicTransmissions().
|
protected |
Indicated if periodic transmission is enabled.
Definition at line 248 of file satellite-orbiter-mac.h.
Referenced by ns3::SatOrbiterFeederMac::EnquePacket(), ns3::SatOrbiterUserMac::EnquePacket(), StartPeriodicTransmissions(), StartTransmission(), and StopPeriodicTransmissions().
|
protected |
Definition at line 243 of file satellite-orbiter-mac.h.
Referenced by ns3::SatOrbiterFeederMac::Receive(), ns3::SatOrbiterUserMac::Receive(), and SetReceiveNetDeviceCallback().
|
protected |
ID of sat for UT.
Definition at line 225 of file satellite-orbiter-mac.h.
Referenced by SendPacket().
|
protected |
Definition at line 242 of file satellite-orbiter-mac.h.
Referenced by SendPacket(), and SetTransmitCallback().