diff options
| author | Loic Guegan <manzerberdes@gmx.com> | 2019-05-04 11:52:18 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerberdes@gmx.com> | 2019-05-04 11:52:18 +0200 |
| commit | f9d8e59ebbd697948f718f295bafa492f2d0947c (patch) | |
| tree | 48afa04c008a537476d3b70081385baa83cb952a /ns3-simulations/nix/simulator/main.cc | |
| parent | bc6b033b0b622234e9be24b45e25f70ef8f76829 (diff) | |
Simplify nix source code
Diffstat (limited to 'ns3-simulations/nix/simulator/main.cc')
| -rw-r--r-- | ns3-simulations/nix/simulator/main.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/ns3-simulations/nix/simulator/main.cc b/ns3-simulations/nix/simulator/main.cc new file mode 100644 index 0000000..b7f043c --- /dev/null +++ b/ns3-simulations/nix/simulator/main.cc @@ -0,0 +1,64 @@ +#include "modules/modules.hpp" + +NS_LOG_COMPONENT_DEFINE ("WIFISensorsSimulator"); + + +/** + * To get more details about functions please have a look at modules/modules.hpp + */ +int main(int argc, char* argv[]){ + + uint32_t sensorsFrequency=1; + uint32_t sensorsPktSize=150; + uint32_t sensorsNumber=2; + uint32_t nbHop=5; + uint32_t linksBandwidth=5; + uint32_t linksLatency=2; + + CommandLine cmd; + cmd.AddValue ("sensorsSendInterval", "Number of sensors measurement per second", sensorsFrequency); + cmd.AddValue ("sensorsPktSize", "Sensors packet size (bytes)", sensorsPktSize); + cmd.AddValue ("sensorsNumber", "Number of sensors connected to AP", sensorsNumber); + cmd.AddValue ("nbHop", "Number of hop between AP and Cloud", nbHop); + cmd.AddValue ("linksBandwidth", "Links bandwidth between AP and Cloud", linksBandwidth); + cmd.AddValue ("linksLatency", "Links latency between AP and Cloud", linksLatency); + cmd.Parse (argc, argv); + + //LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); + //LogComponentEnable("PacketSink", LOG_LEVEL_INFO); + + // ---------- Setup Simulations ---------- + CloudInfos cloud=createCloud(nbHop,linksBandwidth,linksLatency); // Create cloud P2P node chain o--o--o--o--o + setupCloudEnergy(cloud); // DO IT JUST AFTER createCloud !!!!! Otherwise you will be in trouble + Cell cell=createCell(sensorsNumber,cloud.first.Get(0)); // Use first cloud node as Access Point + setupScenario(cell,cloud,sensorsPktSize,sensorsFrequency); // Send data from Sensors to Cloud + setupCellEnergy(cell); + + // Don't forget the following + Ipv4GlobalRoutingHelper::PopulateRoutingTables (); + + + // Setup Logs + uint32_t nNode=ns3::NodeList::GetNNodes(); + FlowMonitorHelper flowmon; + Ptr<FlowMonitor> monitor = flowmon.InstallAll(); + Ptr<Ipv4FlowClassifier> classifier = DynamicCast<Ipv4FlowClassifier> (flowmon.GetClassifier ()); + + // Run Simulations + Simulator::Stop (Seconds (SIM_TIME)); + Simulator::Run (); + + // Print logs + NS_LOG_UNCOND("NS-3 Version " << NS3_VERSION); + NS_LOG_UNCOND("Simulation used "<< nNode << " nodes"); + std::map<FlowId, FlowMonitor::FlowStats> stats = monitor->GetFlowStats (); + for (std::map< FlowId, FlowMonitor::FlowStats>::iterator flow=stats.begin(); flow!=stats.end(); flow++) + { + Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow(flow->first); + NS_LOG_UNCOND("Flow " <<t.sourceAddress<< " -> "<< t.destinationAddress << " delay = " <<flow->second.delaySum.GetSeconds()); + } + + // Finish + Simulator::Destroy (); + return(0); +} |
