This base class is used to represent a general MAC command. More...
#include "mac-command.h"
Public Member Functions | |
MacCommand () | |
Default constructor. | |
~MacCommand () override | |
Destructor. | |
virtual uint8_t | Deserialize (Buffer::Iterator &start)=0 |
Deserialize the buffer into a MAC command. | |
virtual enum MacCommandType | GetCommandType () const |
Get the commandType of this MAC command. | |
virtual uint8_t | GetSerializedSize () const |
Get serialized length of this MAC command. | |
virtual void | Print (std::ostream &os) const =0 |
Print the contents of this MAC command in human-readable format. | |
virtual void | Serialize (Buffer::Iterator &start) const =0 |
Serialize the contents of this MAC command into a buffer, according to the LoRaWAN standard. | |
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 override |
Get the most derived TypeId for this Object. | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () 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. | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. | |
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. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy 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 uint8_t | GetCIDFromMacCommand (enum MacCommandType commandType) |
Get the CID that corresponds to a type of MAC command. | |
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. | |
Protected Attributes | |
enum MacCommandType | m_commandType |
The type of this command. | |
uint8_t | m_serializedSize |
This MAC command's serialized size. | |
Additional Inherited Members | |
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. | |
Related Symbols inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
This base class is used to represent a general MAC command.
Pure virtual methods that handle serialization, deserialization and other common features are supposed to be defined in detail by child classes, based on that MAC command's attributes and structure.
Definition at line 56 of file mac-command.h.
ns3::lorawan::MacCommand::MacCommand | ( | ) |
|
override |
|
pure virtual |
Deserialize the buffer into a MAC command.
start | A pointer to the buffer that contains the serialized command. |
Implemented in ns3::lorawan::DevStatusAns, ns3::lorawan::DevStatusReq, ns3::lorawan::DlChannelAns, ns3::lorawan::DutyCycleAns, ns3::lorawan::DutyCycleReq, ns3::lorawan::LinkAdrAns, ns3::lorawan::LinkAdrReq, ns3::lorawan::LinkCheckAns, ns3::lorawan::LinkCheckReq, ns3::lorawan::NewChannelAns, ns3::lorawan::NewChannelReq, ns3::lorawan::RxParamSetupAns, ns3::lorawan::RxParamSetupReq, ns3::lorawan::RxTimingSetupAns, ns3::lorawan::RxTimingSetupReq, ns3::lorawan::TxParamSetupAns, and ns3::lorawan::TxParamSetupReq.
|
static |
Get the CID that corresponds to a type of MAC command.
commandType | The type of MAC command. |
Definition at line 59 of file mac-command.cc.
References ns3::lorawan::DEV_STATUS_ANS, ns3::lorawan::DEV_STATUS_REQ, ns3::lorawan::DL_CHANNEL_ANS, ns3::lorawan::DL_CHANNEL_REQ, ns3::lorawan::DUTY_CYCLE_ANS, ns3::lorawan::DUTY_CYCLE_REQ, ns3::lorawan::INVALID, ns3::lorawan::LINK_ADR_ANS, ns3::lorawan::LINK_ADR_REQ, ns3::lorawan::LINK_CHECK_ANS, ns3::lorawan::LINK_CHECK_REQ, ns3::lorawan::NEW_CHANNEL_ANS, ns3::lorawan::NEW_CHANNEL_REQ, NS_LOG_FUNCTION_NOARGS, ns3::lorawan::RX_PARAM_SETUP_ANS, ns3::lorawan::RX_PARAM_SETUP_REQ, ns3::lorawan::RX_TIMING_SETUP_ANS, ns3::lorawan::RX_TIMING_SETUP_REQ, ns3::lorawan::TX_PARAM_SETUP_ANS, and ns3::lorawan::TX_PARAM_SETUP_REQ.
Referenced by ns3::lorawan::EndDeviceLorawanMac::ApplyNecessaryOptions(), ns3::lorawan::DevStatusAns::Serialize(), ns3::lorawan::DevStatusReq::Serialize(), ns3::lorawan::DlChannelAns::Serialize(), ns3::lorawan::DutyCycleAns::Serialize(), ns3::lorawan::DutyCycleReq::Serialize(), ns3::lorawan::LinkAdrAns::Serialize(), ns3::lorawan::LinkAdrReq::Serialize(), ns3::lorawan::LinkCheckAns::Serialize(), ns3::lorawan::LinkCheckReq::Serialize(), ns3::lorawan::NewChannelAns::Serialize(), ns3::lorawan::NewChannelReq::Serialize(), ns3::lorawan::RxParamSetupAns::Serialize(), ns3::lorawan::RxParamSetupReq::Serialize(), ns3::lorawan::RxTimingSetupAns::Serialize(), ns3::lorawan::RxTimingSetupReq::Serialize(), ns3::lorawan::TxParamSetupAns::Serialize(), and ns3::lorawan::TxParamSetupReq::Serialize().
|
virtual |
Get the commandType of this MAC command.
Definition at line 43 of file mac-command.cc.
References m_commandType, and NS_LOG_FUNCTION_NOARGS.
|
virtual |
Get serialized length of this MAC command.
Definition at line 51 of file mac-command.cc.
References m_serializedSize, and NS_LOG_FUNCTION_NOARGS.
|
static |
Register this type.
Definition at line 26 of file mac-command.cc.
References ns3::TypeId::SetParent().
|
pure virtual |
Print the contents of this MAC command in human-readable format.
os | The std::ostream instance on which to print the MAC command. |
Implemented in ns3::lorawan::DevStatusAns, ns3::lorawan::DevStatusReq, ns3::lorawan::DlChannelAns, ns3::lorawan::DutyCycleAns, ns3::lorawan::DutyCycleReq, ns3::lorawan::LinkAdrAns, ns3::lorawan::LinkAdrReq, ns3::lorawan::LinkCheckAns, ns3::lorawan::LinkCheckReq, ns3::lorawan::NewChannelAns, ns3::lorawan::NewChannelReq, ns3::lorawan::RxParamSetupAns, ns3::lorawan::RxParamSetupReq, ns3::lorawan::RxTimingSetupAns, ns3::lorawan::RxTimingSetupReq, ns3::lorawan::TxParamSetupAns, and ns3::lorawan::TxParamSetupReq.
|
pure virtual |
Serialize the contents of this MAC command into a buffer, according to the LoRaWAN standard.
start | A pointer to the buffer into which to serialize the command. |
Implemented in ns3::lorawan::DevStatusAns, ns3::lorawan::DevStatusReq, ns3::lorawan::DlChannelAns, ns3::lorawan::DutyCycleAns, ns3::lorawan::DutyCycleReq, ns3::lorawan::LinkAdrAns, ns3::lorawan::LinkAdrReq, ns3::lorawan::LinkCheckAns, ns3::lorawan::LinkCheckReq, ns3::lorawan::NewChannelAns, ns3::lorawan::NewChannelReq, ns3::lorawan::RxParamSetupAns, ns3::lorawan::RxParamSetupReq, ns3::lorawan::RxTimingSetupAns, ns3::lorawan::RxTimingSetupReq, ns3::lorawan::TxParamSetupAns, and ns3::lorawan::TxParamSetupReq.
|
protected |
The type of this command.
Definition at line 114 of file mac-command.h.
Referenced by ns3::lorawan::DevStatusAns::DevStatusAns(), ns3::lorawan::DevStatusAns::DevStatusAns(), ns3::lorawan::DevStatusReq::DevStatusReq(), ns3::lorawan::DlChannelAns::DlChannelAns(), ns3::lorawan::DutyCycleAns::DutyCycleAns(), ns3::lorawan::DutyCycleReq::DutyCycleReq(), ns3::lorawan::DutyCycleReq::DutyCycleReq(), ns3::lorawan::LinkAdrAns::LinkAdrAns(), ns3::lorawan::LinkAdrAns::LinkAdrAns(), ns3::lorawan::LinkAdrReq::LinkAdrReq(), ns3::lorawan::LinkAdrReq::LinkAdrReq(), ns3::lorawan::LinkCheckAns::LinkCheckAns(), ns3::lorawan::LinkCheckAns::LinkCheckAns(), ns3::lorawan::LinkCheckReq::LinkCheckReq(), ns3::lorawan::NewChannelAns::NewChannelAns(), ns3::lorawan::NewChannelAns::NewChannelAns(), ns3::lorawan::NewChannelReq::NewChannelReq(), ns3::lorawan::NewChannelReq::NewChannelReq(), ns3::lorawan::RxParamSetupAns::RxParamSetupAns(), ns3::lorawan::RxParamSetupAns::RxParamSetupAns(), ns3::lorawan::RxParamSetupReq::RxParamSetupReq(), ns3::lorawan::RxParamSetupReq::RxParamSetupReq(), ns3::lorawan::RxTimingSetupAns::RxTimingSetupAns(), ns3::lorawan::RxTimingSetupReq::RxTimingSetupReq(), ns3::lorawan::RxTimingSetupReq::RxTimingSetupReq(), ns3::lorawan::TxParamSetupAns::TxParamSetupAns(), ns3::lorawan::TxParamSetupReq::TxParamSetupReq(), GetCommandType(), ns3::lorawan::DevStatusAns::Serialize(), ns3::lorawan::DevStatusReq::Serialize(), ns3::lorawan::DlChannelAns::Serialize(), ns3::lorawan::DutyCycleAns::Serialize(), ns3::lorawan::DutyCycleReq::Serialize(), ns3::lorawan::LinkAdrAns::Serialize(), ns3::lorawan::LinkAdrReq::Serialize(), ns3::lorawan::LinkCheckAns::Serialize(), ns3::lorawan::LinkCheckReq::Serialize(), ns3::lorawan::NewChannelAns::Serialize(), ns3::lorawan::NewChannelReq::Serialize(), ns3::lorawan::RxParamSetupAns::Serialize(), ns3::lorawan::RxParamSetupReq::Serialize(), ns3::lorawan::RxTimingSetupAns::Serialize(), ns3::lorawan::RxTimingSetupReq::Serialize(), ns3::lorawan::TxParamSetupAns::Serialize(), and ns3::lorawan::TxParamSetupReq::Serialize().
|
protected |
This MAC command's serialized size.
Definition at line 115 of file mac-command.h.
Referenced by ns3::lorawan::DevStatusAns::DevStatusAns(), ns3::lorawan::DevStatusAns::DevStatusAns(), ns3::lorawan::DevStatusReq::DevStatusReq(), ns3::lorawan::DlChannelAns::DlChannelAns(), ns3::lorawan::DutyCycleAns::DutyCycleAns(), ns3::lorawan::DutyCycleReq::DutyCycleReq(), ns3::lorawan::DutyCycleReq::DutyCycleReq(), ns3::lorawan::LinkAdrAns::LinkAdrAns(), ns3::lorawan::LinkAdrAns::LinkAdrAns(), ns3::lorawan::LinkAdrReq::LinkAdrReq(), ns3::lorawan::LinkAdrReq::LinkAdrReq(), ns3::lorawan::LinkCheckAns::LinkCheckAns(), ns3::lorawan::LinkCheckAns::LinkCheckAns(), ns3::lorawan::LinkCheckReq::LinkCheckReq(), ns3::lorawan::NewChannelAns::NewChannelAns(), ns3::lorawan::NewChannelAns::NewChannelAns(), ns3::lorawan::NewChannelReq::NewChannelReq(), ns3::lorawan::NewChannelReq::NewChannelReq(), ns3::lorawan::RxParamSetupAns::RxParamSetupAns(), ns3::lorawan::RxParamSetupAns::RxParamSetupAns(), ns3::lorawan::RxParamSetupReq::RxParamSetupReq(), ns3::lorawan::RxParamSetupReq::RxParamSetupReq(), ns3::lorawan::RxTimingSetupAns::RxTimingSetupAns(), ns3::lorawan::RxTimingSetupReq::RxTimingSetupReq(), ns3::lorawan::RxTimingSetupReq::RxTimingSetupReq(), ns3::lorawan::TxParamSetupAns::TxParamSetupAns(), ns3::lorawan::TxParamSetupReq::TxParamSetupReq(), ns3::lorawan::DevStatusAns::Deserialize(), ns3::lorawan::DevStatusReq::Deserialize(), ns3::lorawan::DlChannelAns::Deserialize(), ns3::lorawan::DutyCycleAns::Deserialize(), ns3::lorawan::DutyCycleReq::Deserialize(), ns3::lorawan::LinkAdrAns::Deserialize(), ns3::lorawan::LinkAdrReq::Deserialize(), ns3::lorawan::LinkCheckAns::Deserialize(), ns3::lorawan::LinkCheckReq::Deserialize(), ns3::lorawan::NewChannelAns::Deserialize(), ns3::lorawan::NewChannelReq::Deserialize(), ns3::lorawan::RxParamSetupAns::Deserialize(), ns3::lorawan::RxParamSetupReq::Deserialize(), ns3::lorawan::RxTimingSetupAns::Deserialize(), ns3::lorawan::RxTimingSetupReq::Deserialize(), ns3::lorawan::TxParamSetupAns::Deserialize(), ns3::lorawan::TxParamSetupReq::Deserialize(), and GetSerializedSize().