Class representing a simple LoRa transceiver, with an error model based on receiver sensitivity and a SIR table. More...
#include "simple-end-device-lora-phy.h"
Public Member Functions | |
| SimpleEndDeviceLoraPhy () | |
| Default constructor. | |
| ~SimpleEndDeviceLoraPhy () override | |
| Destructor. | |
| void | EndReceive (Ptr< Packet > packet, Ptr< LoraInterferenceHelper::Event > event) override |
| Finish reception of a packet. | |
| void | Send (Ptr< Packet > packet, LoraTxParameters txParams, uint32_t frequencyHz, double txPowerDbm) override |
| Instruct the PHY to send a packet according to some parameters. | |
| void | StartReceive (Ptr< Packet > packet, double rxPowerDbm, uint8_t sf, Time duration, uint32_t frequencyHz) override |
| Start receiving a packet. | |
| Public Member Functions inherited from ns3::lorawan::EndDeviceLoraPhy | |
| EndDeviceLoraPhy () | |
| Default constructor. | |
| ~EndDeviceLoraPhy () override | |
| Destructor. | |
| uint8_t | GetSpreadingFactor () const |
| Get the Spreading Factor this end device is listening for. | |
| EndDeviceLoraPhy::State | GetState () |
| Return the state this end device is currently in. | |
| bool | IsOnFrequency (uint32_t frequencyHz) override |
| Whether this device is listening on the specified frequency or not. | |
| bool | IsTransmitting () override |
| Whether this device is transmitting or not. | |
| void | RegisterListener (EndDeviceLoraPhyListener *listener) |
| Add the input listener to the list of objects to be notified of PHY-level events. | |
| void | SetFrequency (uint32_t frequencyHz) |
| Set the frequency this end device will listen on. | |
| void | SetSpreadingFactor (uint8_t sf) |
| Set the Spreading Factor this end device will listen for. | |
| void | SwitchToSleep () |
| Switch to the SLEEP state. | |
| void | SwitchToStandby () |
| Switch to the STANDBY state. | |
| void | UnregisterListener (EndDeviceLoraPhyListener *listener) |
| Remove the input listener from the list of objects to be notified of PHY-level events. | |
| Public Member Functions inherited from ns3::lorawan::LoraPhy | |
| LoraPhy () | |
| Default constructor. | |
| ~LoraPhy () override | |
| Destructor. | |
| Ptr< LoraChannel > | GetChannel () const |
| Get the channel instance associated to this PHY. | |
| Ptr< NetDevice > | GetDevice () const |
| Get the NetDevice associated to this PHY. | |
| Ptr< MobilityModel > | GetMobility () |
| Get the mobility model associated to this PHY. | |
| void | SetChannel (Ptr< LoraChannel > channel) |
| Set the LoraChannel instance PHY transmits on. | |
| void | SetDevice (Ptr< NetDevice > device) |
| Set the NetDevice that owns this PHY. | |
| void | SetMobility (Ptr< MobilityModel > mobility) |
| Set the mobility model associated to this PHY. | |
| void | SetReceiveFailedCallback (RxFailedCallback callback) |
| Set the callback to call upon failed reception of a packet we were previously locked on. | |
| void | SetReceiveOkCallback (RxOkCallback callback) |
| Set the callback to call upon successful reception of a packet. | |
| void | SetTxFinishedCallback (TxFinishedCallback callback) |
| Set the callback to call after transmission of a packet. | |
| Public Member Functions inherited from ns3::Object | |
| Object () | |
| Constructor. | |
| ~Object () override | |
| Destructor. | |
| void | AggregateObject (Ptr< Object > other) |
| Aggregate two Objects together. | |
| void | Dispose () |
| Dispose of this Object. | |
| AggregateIterator | GetAggregateIterator () const |
| Get an iterator to the Objects aggregated to this one. | |
| TypeId | GetInstanceTypeId () const final |
| Get the most derived TypeId for this Object. | |
| template<> | |
| Ptr< Object > | GetObject () const |
| Specialization of () for objects of type ns3::Object. | |
| template<typename T> | |
| Ptr< T > | GetObject () const |
| Get a pointer to the requested aggregated Object. | |
| template<> | |
| Ptr< Object > | GetObject (TypeId tid) const |
| Specialization of (TypeId tid) for objects of type ns3::Object. | |
| template<typename T> | |
| Ptr< T > | GetObject (TypeId tid) const |
| Get a pointer to the requested aggregated Object by TypeId. | |
| void | Initialize () |
| Invoke DoInitialize on all Objects aggregated to this one. | |
| bool | IsInitialized () const |
| Check if the object has been initialized. | |
| void | UnidirectionalAggregateObject (Ptr< Object > other) |
| Aggregate an Object to another Object. | |
| Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
| SimpleRefCount () | |
| Default constructor. | |
| uint32_t | GetReferenceCount () const |
| Get the reference count of the object. | |
| SimpleRefCount & | operator= (const SimpleRefCount &o) |
| Assignment operator. | |
| void | Ref () const |
| Increment the reference count. | |
| void | Unref () const |
| Decrement the reference count. | |
| Public Member Functions inherited from ns3::ObjectBase | |
| virtual | ~ObjectBase () |
| Virtual destructor. | |
| void | GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const |
| Get the value of an attribute, raising fatal errors if unsuccessful. | |
| bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
| Get the value of an attribute without raising errors. | |
| void | SetAttribute (std::string name, const AttributeValue &value) |
| Set a single attribute, raising fatal errors if unsuccessful. | |
| bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
| Set a single attribute without raising errors. | |
| bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
| Connect a TraceSource to a Callback with a context. | |
| bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
| Connect a TraceSource to a Callback without a context. | |
| bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
| Disconnect from a TraceSource a Callback previously connected with a context. | |
| bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
| Disconnect from a TraceSource a Callback previously connected without a context. | |
Static Public Member Functions | |
| static TypeId | GetTypeId () |
| Register this type. | |
| Static Public Member Functions inherited from ns3::lorawan::EndDeviceLoraPhy | |
| static TypeId | GetTypeId () |
| Register this type. | |
| Static Public Member Functions inherited from ns3::lorawan::LoraPhy | |
| static Time | GetOnAirTime (Ptr< Packet > packet, LoraTxParameters txParams) |
| Compute the time that a packet with certain characteristics will take to be transmitted. | |
| static Time | GetTSym (LoraTxParameters txParams) |
| Compute the symbol time from spreading factor and bandwidth. | |
| static TypeId | GetTypeId () |
| Register this type. | |
| Static Public Member Functions inherited from ns3::Object | |
| static TypeId | GetTypeId () |
| Register this type. | |
| Static Public Member Functions inherited from ns3::ObjectBase | |
| static TypeId | GetTypeId () |
| Get the type ID. | |
Additional Inherited Members | |
| Public Types inherited from ns3::lorawan::EndDeviceLoraPhy | |
| enum class | State { SLEEP , STANDBY , TX , RX } |
| An enumeration of the possible states of an EndDeviceLoraPhy. More... | |
| Public Types inherited from ns3::lorawan::LoraPhy | |
| typedef Callback< void, Ptr< const Packet > > | RxFailedCallback |
| Type definition for a callback for when a packet reception fails. | |
| typedef Callback< void, Ptr< const Packet > > | RxOkCallback |
| Type definition for a callback for when a packet is correctly received. | |
| typedef Callback< void, Ptr< const Packet > > | TxFinishedCallback |
| Type definition for a callback to call when a packet has finished sending. | |
| Static Public Attributes inherited from ns3::lorawan::EndDeviceLoraPhy | |
| static const double | sensitivity [6] = {-124, -127, -130, -133, -135, -137} |
| The sensitivity vector of this device to different SFs. | |
| Protected Types inherited from ns3::lorawan::EndDeviceLoraPhy | |
| typedef std::vector< EndDeviceLoraPhyListener * > | Listeners |
| typedef for a list of EndDeviceLoraPhyListener. | |
| typedef std::vector< EndDeviceLoraPhyListener * >::iterator | ListenersI |
| typedef for a list of EndDeviceLoraPhyListener iterator. | |
| Protected Member Functions inherited from ns3::lorawan::EndDeviceLoraPhy | |
| void | SwitchToRx () |
| Switch to the RX state. | |
| void | SwitchToTx (double txPowerDbm) |
| Switch to the TX state. | |
| void | TxFinished (Ptr< const Packet > packet) override |
| Signals the end of a transmission by the EndDeviceLoraPhy. | |
| Protected Member Functions inherited from ns3::Object | |
| Object (const Object &o) | |
| Copy an Object. | |
| virtual void | DoDispose () |
| Destructor implementation. | |
| virtual void | DoInitialize () |
| Initialize() implementation. | |
| virtual void | NotifyNewAggregate () |
| Notify all Objects aggregated to this one of a new Object being aggregated. | |
| Protected Member Functions inherited from ns3::ObjectBase | |
| void | ConstructSelf (const AttributeConstructionList &attributes) |
| Complete construction of ObjectBase; invoked by derived classes. | |
| virtual void | NotifyConstructionCompleted () |
| Notifier called once the ObjectBase is fully constructed. | |
| Protected Attributes inherited from ns3::lorawan::EndDeviceLoraPhy | |
| uint32_t | m_frequencyHz |
| The frequency [Hz] this device is listening on. | |
| Listeners | m_listeners |
| PHY listeners. | |
| uint8_t | m_sf |
| The Spreading Factor this device is listening for. | |
| TracedValue< State > | m_state |
| The state this PHY is currently in. | |
| TracedCallback< Ptr< const Packet >, uint32_t > | m_wrongFrequency |
| Trace source for when a packet is lost because it was transmitted on a frequency different from the one this EndDeviceLoraPhy was configured to listen on. | |
| TracedCallback< Ptr< const Packet >, uint32_t > | m_wrongSf |
| Trace source for when a packet is lost because it was using a spreading factor different from the one this EndDeviceLoraPhy was configured to listen for. | |
| Protected Attributes inherited from ns3::lorawan::LoraPhy | |
| Ptr< LoraChannel > | m_channel |
| The channel this PHY transmits on. | |
| Ptr< NetDevice > | m_device |
| The net device this PHY is attached to. | |
| TracedCallback< Ptr< const Packet >, uint32_t > | m_interferedPacket |
| The trace source fired when a packet cannot be correctly received because of interference. | |
| LoraInterferenceHelper | m_interference |
| The LoraInterferenceHelper associated to this PHY. | |
| TracedCallback< Ptr< const Packet > > | m_phyRxBeginTrace |
| The trace source fired when a packet begins the reception process from the medium. | |
| TracedCallback< Ptr< const Packet > > | m_phyRxEndTrace |
| The trace source fired when a packet reception ends. | |
| RxFailedCallback | m_rxFailedCallback |
| The callback to perform upon failed reception of a packet we were locked on. | |
| RxOkCallback | m_rxOkCallback |
| The callback to perform upon correct reception of a packet. | |
| TracedCallback< Ptr< const Packet >, uint32_t > | m_startSending |
| The trace source fired when a packet is sent. | |
| TracedCallback< Ptr< const Packet >, uint32_t > | m_successfullyReceivedPacket |
| The trace source fired when a packet was correctly received. | |
| TxFinishedCallback | m_txFinishedCallback |
| The callback to perform upon the end of a transmission. | |
| TracedCallback< Ptr< const Packet >, uint32_t > | m_underSensitivity |
| The trace source fired when a packet cannot be received because its power is below the sensitivity threshold. | |
| Related Symbols inherited from ns3::ObjectBase | |
| static TypeId | GetObjectIid () |
| Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
Class representing a simple LoRa transceiver, with an error model based on receiver sensitivity and a SIR table.
Definition at line 34 of file simple-end-device-lora-phy.h.
| ns3::lorawan::SimpleEndDeviceLoraPhy::SimpleEndDeviceLoraPhy | ( | ) |
Default constructor.
Definition at line 40 of file simple-end-device-lora-phy.cc.
Referenced by GetTypeId().
|
override |
Destructor.
Definition at line 44 of file simple-end-device-lora-phy.cc.
|
overridevirtual |
Finish reception of a packet.
This method is scheduled by StartReceive, based on the packet duration. By passing a LoraInterferenceHelper Event to this method, the class will be able to identify the packet that is being received among all those that were registered as interference by StartReceive.
| packet | The received packet. |
| event | The event that is tied to this packet in the LoraInterferenceHelper. |
Implements ns3::lorawan::EndDeviceLoraPhy.
Definition at line 230 of file simple-end-device-lora-phy.cc.
References ns3::lorawan::LoraPhy::m_device, ns3::lorawan::LoraPhy::m_interferedPacket, ns3::lorawan::LoraPhy::m_interference, ns3::lorawan::LoraPhy::m_phyRxEndTrace, ns3::lorawan::LoraPhy::m_rxFailedCallback, ns3::lorawan::LoraPhy::m_rxOkCallback, ns3::lorawan::LoraPhy::m_successfullyReceivedPacket, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::lorawan::LoraTag::SetFrequency(), ns3::lorawan::LoraTag::SetReceivePower(), and ns3::lorawan::EndDeviceLoraPhy::SwitchToStandby().
|
static |
Register this type.
Definition at line 28 of file simple-end-device-lora-phy.cc.
References ns3::lorawan::EndDeviceLoraPhy::EndDeviceLoraPhy(), SimpleEndDeviceLoraPhy(), and ns3::TypeId::SetParent().
|
overridevirtual |
Instruct the PHY to send a packet according to some parameters.
| packet | The packet to send. |
| txParams | The desired transmission parameters. |
| frequencyHz | The frequency on which to transmit. |
| txPowerDbm | The power in dBm with which to transmit the packet. |
Implements ns3::lorawan::EndDeviceLoraPhy.
Definition at line 49 of file simple-end-device-lora-phy.cc.
References ns3::lorawan::LoraPhy::GetOnAirTime(), ns3::lorawan::LoraPhy::m_channel, ns3::lorawan::LoraPhy::m_device, ns3::lorawan::LoraPhy::m_startSending, ns3::lorawan::EndDeviceLoraPhy::m_state, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::Simulator::Schedule(), ns3::lorawan::LoraTag::SetSpreadingFactor(), ns3::lorawan::LoraTxParameters::sf, ns3::lorawan::EndDeviceLoraPhy::SLEEP, ns3::lorawan::EndDeviceLoraPhy::STANDBY, ns3::lorawan::EndDeviceLoraPhy::SwitchToTx(), and ns3::lorawan::EndDeviceLoraPhy::TxFinished().
Referenced by PhyConnectivityTest::DoRun().
|
overridevirtual |
Start receiving a packet.
This method is typically called by LoraChannel.
| packet | The packet that is arriving at this PHY layer. |
| rxPowerDbm | The power of the arriving packet (assumed to be constant for the whole reception). |
| sf | The Spreading Factor of the arriving packet. |
| duration | The on air time of this packet. |
| frequencyHz | The frequency this packet is being transmitted on. |
Implements ns3::lorawan::EndDeviceLoraPhy.
Definition at line 96 of file simple-end-device-lora-phy.cc.
References ns3::Time::As(), ns3::lorawan::LoraPhy::EndReceive(), ns3::lorawan::EndDeviceLoraPhy::IsOnFrequency(), ns3::lorawan::LoraPhy::m_device, ns3::lorawan::EndDeviceLoraPhy::m_frequencyHz, ns3::lorawan::LoraPhy::m_interference, ns3::lorawan::LoraPhy::m_phyRxBeginTrace, ns3::lorawan::EndDeviceLoraPhy::m_sf, ns3::lorawan::EndDeviceLoraPhy::m_state, ns3::lorawan::LoraPhy::m_underSensitivity, ns3::lorawan::EndDeviceLoraPhy::m_wrongFrequency, ns3::lorawan::EndDeviceLoraPhy::m_wrongSf, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::lorawan::EndDeviceLoraPhy::RX, ns3::Time::S, ns3::Simulator::Schedule(), ns3::lorawan::EndDeviceLoraPhy::sensitivity, ns3::lorawan::EndDeviceLoraPhy::SLEEP, ns3::lorawan::EndDeviceLoraPhy::STANDBY, ns3::lorawan::EndDeviceLoraPhy::SwitchToRx(), and ns3::lorawan::EndDeviceLoraPhy::TX.