42#include <ns3/constant-position-mobility-model.h>
43#include <ns3/core-module.h>
45#include <ns3/lr-wpan-module.h>
46#include <ns3/packet.h>
47#include <ns3/propagation-delay-model.h>
48#include <ns3/propagation-loss-model.h>
49#include <ns3/simulator.h>
50#include <ns3/single-model-spectrum-channel.h>
62 std::cout <<
"Results for Energy Scan:"
63 <<
"\nPage: " <<
params.m_chPage <<
"\n";
64 for (std::size_t i = 0; i <
params.m_energyDetList.size(); i++)
66 std::cout <<
"Channel " <<
static_cast<uint32_t>(i + 11) <<
": "
67 << +
params.m_energyDetList[i] <<
"\n";
73main(
int argc,
char* argv[])
93 CreateObject<LogDistancePropagationLossModel>();
95 CreateObject<ConstantSpeedPropagationDelayModel>();
96 channel->AddPropagationLossModel(propModel);
97 channel->SetPropagationDelayModel(delayModel);
110 dev1->
GetMac()->SetMlmeScanConfirmCallback(scb);
113 CreateObject<ConstantPositionMobilityModel>();
114 PanCoordinatorN0Mobility->SetPosition(
Vector(0, 0, 0));
115 dev0->
GetPhy()->SetMobility(PanCoordinatorN0Mobility);
118 CreateObject<ConstantPositionMobilityModel>();
119 endDeviceN1Mobility->SetPosition(
Vector(10, 0, 0));
120 dev1->
GetPhy()->SetMobility(endDeviceN1Mobility);
123 CreateObject<ConstantPositionMobilityModel>();
124 PanCoordinatorN2Mobility->SetPosition(
Vector(40, 0, 0));
125 dev2->
GetPhy()->SetMobility(PanCoordinatorN2Mobility);
134 Simulator::ScheduleWithContext(1,
136 &LrWpanMac::MlmeStartRequest,
147 Simulator::ScheduleWithContext(1,
149 &LrWpanMac::MlmeStartRequest,
164 Simulator::ScheduleWithContext(1,
166 &LrWpanMac::MlmeScanRequest,
170 Simulator::Stop(
Seconds(2000));
173 Simulator::Destroy();
void SetChannel(Ptr< SpectrumChannel > channel)
Set the channel to which the NetDevice, and therefore the PHY, should be attached to.
Ptr< LrWpanMac > GetMac() const
Get the MAC used by this NetDevice.
Ptr< LrWpanPhy > GetPhy() const
Get the PHY used by this NetDevice.
void SetAddress(Address address) override
This method indirects to LrWpanMac::SetShortAddress ()
This class can contain 16 bit addresses.
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
TimeWithUnit As(const Unit unit=Time::AUTO) const
Attach a unit to a Time, to facilitate output in a specific unit.
Vector3D Vector
Vector alias typedef for compatibility with mobility models.
Time Now()
create an ns3::Time instance which contains the current simulation time.
Time Seconds(double value)
Construct a Time in the indicated unit.
static void ScanConfirm(MlmeScanConfirmParams params)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Args... > MakeCallback(R(T::*memPtr)(Args...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
LogLevel
Logging severity classes and levels.
@ LOG_PREFIX_FUNC
Prefix all trace prints with function.
@ LOG_PREFIX_TIME
Prefix all trace prints with simulation time.
void LogComponentEnableAll(LogLevel level)
Enable the logging output for all registered log components.
params
Fit Fluctuating Two Ray model to the 3GPP TR 38.901 using the Anderson-Darling goodness-of-fit ##.
MLME-SCAN.confirm params.
MLME-SCAN.request params.
uint32_t m_scanChannels
The channel numbers to be scanned.
uint32_t m_chPage
The channel page on which to perform scan.
uint8_t m_scanDuration
A value used to calculate the length of time to spend scanning [aBaseSuperframeDuration * (2^m_scanDu...
LrWpanMlmeScanType m_scanType
Indicates the type of scan performed as described in IEEE 802.15.4-2011 (5.1.2.1).
MLME-START.request params.
uint8_t m_logCh
Logical channel on which to start using the new superframe configuration.
bool m_panCoor
On true this device will become coordinator.
uint8_t m_bcnOrd
Beacon Order, Used to calculate the beacon interval, a value of 15 indicates no periodic beacons will...
uint16_t m_PanId
Pan Identifier used by the device.
uint8_t m_sfrmOrd
Superframe Order, indicates the length of the CAP in time slots.