This base class is used to represent a general MAC command. More...
#include "mac-command.h"
Public Member Functions | |
MacCommand () | |
Default constructor. | |
virtual | ~MacCommand () |
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::SimpleRefCount< MacCommand > | |
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. |
Static Public Member Functions | |
static uint8_t | GetCIDFromMacCommand (enum MacCommandType commandType) |
Get the CID that corresponds to a type of MAC command. |
Protected Attributes | |
enum MacCommandType | m_commandType |
The type of this command. | |
uint8_t | m_serializedSize |
This MAC command's serialized size. |
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 | ( | ) |
|
virtual |
Destructor.
Definition at line 28 of file mac-command.cc.
|
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 47 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 33 of file mac-command.cc.
References m_commandType, and NS_LOG_FUNCTION.
|
virtual |
Get serialized length of this MAC command.
Definition at line 40 of file mac-command.cc.
References m_serializedSize, and NS_LOG_FUNCTION.
|
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 108 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 109 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().