From 1da73fb60964a92442d66454265897259120582a Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Wed, 24 Apr 2019 16:49:40 +0200 Subject: Add simulation scripts --- ns3-simulations/ns3-simulator/modules/modules.hpp | 98 +++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 ns3-simulations/ns3-simulator/modules/modules.hpp (limited to 'ns3-simulations/ns3-simulator/modules/modules.hpp') diff --git a/ns3-simulations/ns3-simulator/modules/modules.hpp b/ns3-simulations/ns3-simulator/modules/modules.hpp new file mode 100644 index 0000000..7945959 --- /dev/null +++ b/ns3-simulations/ns3-simulator/modules/modules.hpp @@ -0,0 +1,98 @@ + + +#ifndef MODULES_HPP +#define MODULES_HPP + +#include "ns3/command-line.h" +#include "ns3/config.h" +#include "ns3/string.h" +#include "ns3/log.h" +#include "ns3/yans-wifi-helper.h" +#include "ns3/ssid.h" +#include "ns3/mobility-helper.h" +#include "ns3/on-off-helper.h" +#include "ns3/yans-wifi-channel.h" +#include "ns3/mobility-model.h" +#include "ns3/packet-sink.h" +#include "ns3/packet-sink-helper.h" +#include "ns3/udp-echo-helper.h" +#include "ns3/tcp-westwood.h" +#include "ns3/internet-stack-helper.h" +#include "ns3/ipv4-address-helper.h" +#include "ns3/ipv4-global-routing-helper.h" +#include "ns3/constant-position-mobility-model.h" +#include "ns3/energy-module.h" +#include "ns3/wifi-radio-energy-model-helper.h" +#include "ns3/point-to-point-helper.h" +#include "ns3/ecofen-module.h" + +// C++ library +#include // Why not ? +#include // To use std::pair +#include // To use std::setw + +// ECOFEN +#define ECOFEN_LOG_UNTIL 1 +#define ECOFEN_LOG_EVERY 0.1 + +// WIFI Energy Values +#define BASICENERGYSOURCEINITIALENERGYJ 1000 +#define BASICENERGYSUPPLYVOLTAGEV 3.3 +#define TXCURRENTA 0.38 +#define RXCURRENTA 0.313 +#define IDLECURRENTA 0.273 + +// Cloud Energy Values +#define ONCONSO 0 +#define OFFCONSO 0 +#define IDLECONSO 1 +#define RECVBYTEENERGY 10 +#define SENTBYTEENERGY 10 +#define RECVPKTENERGY 10 +#define SENTPKTENERGY 0 + +using namespace ns3; + +// ---------- Data types ---------- +typedef std::pair CellNodes; // Format (APNode, SensorsNodes) +typedef std::pair CellNetDevices; // Format (APNetDev, SensorsNetDev) +typedef std::pair Cell; +typedef std::pair EndPoint; // Format (IP,Port) +typedef std::pair CloudInfos; // Format (CloudHops,CloudEndPoint), here data sent to CloudEndPoint + + +// ---------- platform.cc ---------- +/** + * Create a WIFI cell paltform composed of nbSensors sensors and ap as an access point + */ +Cell createCell(uint32_t nbSensors, Ptr ap); +/** + * Build P2P network composed of nbHop hops (to simulate edge->cloud communications) + * Note: Cloud Servers are not considered here and completely ignored ! + */ +CloudInfos createCloud(int nbHop, uint32_t bandwidth, uint32_t latency); +/** + * Setup simulation scenario on the platforms. Sensors in cell will send packets of sensorsPktSize size every + * sensorsSensInterval second to the cloud using cloudInfos. + */ +void setupScenario(Cell cell, CloudInfos cloudInfos, int sensorsPktSize, int sensorsSendInterval); + + +// ---------- energy.cc ---------- +/* + * Configure WIFI energy module for cell + */ +void setupCellEnergy(Cell cell); +/* + * Configure link/port energy using ecofen + */ +void setupCloudEnergy(CloudInfos cloudInfos); + + +// ---------- callbacks.cc ---------- +void PktReceived(std::string nodeName,Ptr< const Packet > packet, const Address &address); +void EnergyUpdated(std::string nodeName,double oldValue, double newValue); + + + +#endif -- cgit v1.2.3