From: Martin Quinson Date: Thu, 25 Feb 2021 22:40:12 +0000 (+0000) Subject: Merge branch 'master' into 'master' X-Git-Tag: v3.27~322^2 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/697e7bf5e65bce115783c6debcded0cf6f14744d?hp=e0b9996b2ae3c2311d0288c0946a9c6c5c912a7e Merge branch 'master' into 'master' Add option to delay wifi zone start time See merge request simgrid/simgrid!47 --- diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index 7087c97b13..8bad9179dc 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -76,6 +76,10 @@ NetPointNs3::NetPointNs3() : ns3_node_(ns3::CreateObject(0)) stack.Install(ns3_node_); } +void resumeWifiDevice(ns3::Ptr device) { + device->GetPhy()->ResumeFromOff(); +} + /************* * Callbacks * *************/ @@ -144,6 +148,18 @@ static void zoneCreation_cb(simgrid::s4u::NetZone const& zone) { netDevices.Add(wifi.Install(wifiPhy, wifiMac, station_ns3_node)); } + const char* start_time = wifizone->get_property("start_time"); + int start_time_value = start_time ? atoi(start_time) : 0; + auto resume = [](ns3::Ptr device){device->GetPhy()->ResumeFromOff();}; + for (int i = 0; i < netDevices.GetN(); i++) { + ns3::Ptr device = ns3::StaticCast(netDevices.Get(i)); + device->GetPhy()->SetOffMode(); + ns3::Simulator::Schedule( + ns3::Seconds(start_time_value), + &resumeWifiDevice, + device); + } + ns3::Config::Set("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/ChannelWidth", ns3::UintegerValue(40)); mobility.SetPositionAllocator(positionAllocS);