#include "lorawan-mac-gateway.h"
Inheritance diagram for ns3::LorawanMacGateway:
Collaboration diagram for ns3::LorawanMacGateway:Public Member Functions | |
| LorawanMacGateway () | |
| LorawanMacGateway (uint32_t satId, uint32_t beamId) | |
| virtual | ~LorawanMacGateway () |
| virtual void | FailedReception (Ptr< const Packet > packet) |
| Function called by lower layers to inform this layer that reception of a packet we were locked on failed. More... | |
| Time | GetWaitingTime (double frequency) |
| Return the next time at which we will be able to transmit. More... | |
| bool | IsTransmitting (void) |
| virtual void | Receive (SatPhy::PacketContainer_t packets, Ptr< SatSignalParameters >)=0 |
| Receive a packet from the lower layer. More... | |
| virtual void | Send (Ptr< Packet > packet)=0 |
| Send a packet. More... | |
| virtual void | TxFinished () |
| Perform actions after sending a packet. More... | |
Public Member Functions inherited from ns3::LorawanMac | |
| LorawanMac () | |
| LorawanMac (uint32_t satId, uint32_t beamId) | |
| virtual | ~LorawanMac () |
| double | GetBandwidthFromDataRate (uint8_t dataRate) |
| Get the BW corresponding to a data rate, based on this MAC's region. More... | |
| double | GetDbmForTxPower (uint8_t txPower) |
| Get the transmission power in dBm that corresponds, in this region, to the encoded 8-bit txPower. More... | |
| Ptr< NetDevice > | GetDevice (void) |
| Get the device this MAC layer is installed on. More... | |
| LoraLogicalChannelHelper | GetLoraLogicalChannelHelper (void) |
| Get the logical lora channel helper associated with this MAC. More... | |
| int | GetNPreambleSymbols (void) |
| Get the number of PHY preamble symbols this MAC is set to use. More... | |
| Time | GetOnAirTime (Ptr< Packet > packet, LoraTxParameters txParams) |
| Compute the time that a packet with certain characteristics will take to be transmitted. More... | |
| Ptr< SatPhy > | GetPhy (void) |
| Get the underlying PHY layer. More... | |
| Ptr< SatLoraPhyTx > | GetPhyTx (void) |
| Get the underlying PHY TX layer. More... | |
| uint8_t | GetSfFromDataRate (uint8_t dataRate) |
| Get the SF corresponding to a data rate, based on this MAC's region. More... | |
| virtual void | Send (Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber) |
| Send a packet. More... | |
| void | SetBandwidthForDataRate (std::vector< double > bandwidthForDataRate) |
| Set the vector to use to check up correspondence between bandwidth and DataRate. More... | |
| void | SetDevice (Ptr< NetDevice > device) |
| Set the device this MAC layer is installed on. More... | |
| void | SetLoraLogicalChannelHelper (LoraLogicalChannelHelper helper) |
| Set the LoraLogicalChannelHelper this MAC instance will use. More... | |
| void | SetMaxAppPayloadForDataRate (std::vector< uint32_t > maxAppPayloadForDataRate) |
| Set the maximum App layer payload for a set DataRate. More... | |
| void | SetNPreambleSymbols (int nPreambleSymbols) |
| Set the number of PHY preamble symbols this MAC is set to use. More... | |
| void | SetPhy (Ptr< SatPhy > phy) |
| Set the underlying PHY layer. More... | |
| void | SetPhyTx (Ptr< SatLoraPhyTx > phyTx) |
| Set the underlying PHY TX layer. More... | |
| void | setRegenerative (bool isRegenerative) |
| Indicates if the satellite is regenerative on the link this layer is sending packets. More... | |
| void | SetReplyDataRateMatrix (ReplyDataRateMatrix replyDataRateMatrix) |
| Set the matrix to use when deciding with which DataRate to respond. More... | |
| void | SetSfForDataRate (std::vector< uint8_t > sfForDataRate) |
| Set the vector to use to check up correspondence between SF and DataRate. More... | |
| void | SetTxDbmForTxPower (std::vector< double > txDbmForTxPower) |
| Set the vector to use to check up which transmission power in Dbm corresponds to a certain TxPower value in this MAC's region. 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) |
Static Public Member Functions inherited from ns3::LorawanMac | |
| static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::SatMac | |
| static TypeId | GetTypeId (void) |
| Derived from Object. More... | |
Additional Inherited Members | |
Public Types inherited from ns3::LorawanMac | |
| typedef std::array< std::array< uint8_t, 6 >, 8 > | ReplyDataRateMatrix |
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... | |
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... | |
| 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 | SetTimeTag (SatPhy::PacketContainer_t packets) |
| Set SatMacTimeTag of packets. More... | |
Protected Attributes inherited from ns3::LorawanMac | |
| std::vector< double > | m_bandwidthForDataRate |
| A vector holding the bandwidth each Data Rate corresponds to. More... | |
| uint32_t | m_beamId |
| ID of beam for UT. More... | |
| TracedCallback< Ptr< const Packet > > | m_cannotSendBecauseDutyCycle |
| The trace source that is fired when a packet cannot be sent because of duty cycle limitations. More... | |
| LoraLogicalChannelHelper | m_channelHelper |
| The LoraLogicalChannelHelper instance that is assigned to this MAC. More... | |
| Ptr< NetDevice > | m_device |
| The device this MAC layer is installed on. More... | |
| bool | m_isRegenerative |
| Indicates if satellite is regenerative on the link where this layer is sending packets. More... | |
| std::vector< uint32_t > | m_maxAppPayloadForDataRate |
| A vector holding the maximum app payload size that corresponds to a certain DataRate. More... | |
| int | m_nPreambleSymbols |
| The number of symbols to use in the PHY preamble. More... | |
| Ptr< SatPhy > | m_phy |
| The PHY instance that sits under this MAC layer. More... | |
| TracedCallback< Ptr< const Packet > > | m_receivedPacket |
| Trace source that is fired when a packet reaches the MAC layer. More... | |
| ReplyDataRateMatrix | m_replyDataRateMatrix |
| The matrix that decides the DR the GW will use in a reply based on the ED's sending DR and on the value of the RX1DROffset parameter. More... | |
| TracedCallback< Ptr< const Packet > > | m_sentNewPacket |
| Trace source that is fired when a new APP layer packet arrives at the MAC layer. More... | |
| std::vector< uint8_t > | m_sfForDataRate |
| A vector holding the SF each Data Rate corresponds to. More... | |
| std::vector< double > | m_txDbmForTxPower |
| A vector holding the power that corresponds to a certain TxPower value. More... | |
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... | |
Definition at line 35 of file lorawan-mac-gateway.h.
| ns3::LorawanMacGateway::LorawanMacGateway | ( | ) |
Definition at line 47 of file lorawan-mac-gateway.cc.
| ns3::LorawanMacGateway::LorawanMacGateway | ( | uint32_t | satId, |
| uint32_t | beamId | ||
| ) |
Definition at line 52 of file lorawan-mac-gateway.cc.
|
virtual |
Definition at line 58 of file lorawan-mac-gateway.cc.
|
virtual |
Function called by lower layers to inform this layer that reception of a packet we were locked on failed.
| packet | the packet we failed to receive |
Implements ns3::LorawanMac.
Definition at line 197 of file lorawan-mac-gateway.cc.
|
static |
Definition at line 41 of file lorawan-mac-gateway.cc.
| Time ns3::LorawanMacGateway::GetWaitingTime | ( | double | frequency | ) |
Return the next time at which we will be able to transmit.
Definition at line 209 of file lorawan-mac-gateway.cc.
References ns3::LoraLogicalChannelHelper::GetWaitingTime(), and ns3::LorawanMac::m_channelHelper.
Here is the call graph for this function:| bool ns3::LorawanMacGateway::IsTransmitting | ( | void | ) |
Definition at line 153 of file lorawan-mac-gateway.cc.
References ns3::LorawanMac::m_phy.
Referenced by ns3::LorawanGroundMacGateway::Send(), ns3::LorawanOrbiterMacGateway::Send(), and Send().
Here is the caller graph for this function:
|
pure virtual |
Receive a packet from the lower layer.
| packets | the received packets |
Implements ns3::LorawanMac.
Implemented in ns3::LorawanOrbiterMacGateway, and ns3::LorawanGroundMacGateway.
Definition at line 159 of file lorawan-mac-gateway.cc.
References ns3::LorawanMacHeader::IsUplink(), ns3::LorawanMac::m_device, ns3::LorawanMac::m_receivedPacket, ns3::SatLorawanNetDevice::Receive(), and ns3::SatMac::RxTraces().
Here is the call graph for this function:
|
pure virtual |
Send a packet.
| packet | The packet to send. |
Implements ns3::LorawanMac.
Implemented in ns3::LorawanOrbiterMacGateway, and ns3::LorawanGroundMacGateway.
Definition at line 64 of file lorawan-mac-gateway.cc.
References ns3::LoraLogicalChannelHelper::AddEvent(), ns3::LoraTxParameters::bandwidthHz, ns3::LoraTxParameters::codingRate, ns3::LoraTxParameters::crcEnabled, ns3::SatSignalParameters::txInfo_s::frameType, ns3::LorawanMac::GetBandwidthFromDataRate(), ns3::SatUtils::GetCodingRate(), ns3::LoraTag::GetDataRate(), ns3::LoraTag::GetFrequency(), ns3::LoraTag::GetModcod(), ns3::LorawanMac::GetOnAirTime(), ns3::LorawanMac::GetSfFromDataRate(), ns3::LoraLogicalChannelHelper::GetWaitingTime(), ns3::LoraTxParameters::headerDisabled, IsTransmitting(), ns3::LoraTxParameters::lowDataRateOptimizationEnabled, ns3::LorawanMac::m_channelHelper, ns3::LorawanMac::m_device, ns3::SatMac::m_isStatisticsTagsEnabled, ns3::SatMac::m_nodeInfo, ns3::LorawanMac::m_phy, ns3::LorawanMac::m_sentNewPacket, ns3::SatSignalParameters::txInfo_s::modCod, ns3::SatEnums::NORMAL_FRAME, ns3::LoraTxParameters::nPreamble, ns3::SatEnums::PACKET_TYPE_DEDICATED_ACCESS, ns3::SatSignalParameters::txInfo_s::packetType, ns3::SatMacTag::SetDestAddress(), ns3::SatAddressE2ETag::SetE2EDestAddress(), ns3::SatAddressE2ETag::SetE2ESourceAddress(), ns3::SatMacTag::SetSourceAddress(), ns3::LoraTxParameters::sf, ns3::SatSignalParameters::txInfo_s::sliceId, and ns3::SatSignalParameters::txInfo_s::waveformId.
Here is the call graph for this function:
|
virtual |
Perform actions after sending a packet.
Implements ns3::LorawanMac.
Definition at line 203 of file lorawan-mac-gateway.cc.