2019-04-12 13:52:06 +02:00
|
|
|
|
|
|
|
#include "modules.hpp"
|
|
|
|
|
2019-04-12 14:48:47 +02:00
|
|
|
void setupCellEnergy(Cell cell){
|
2019-04-12 13:52:06 +02:00
|
|
|
NodeContainer nodes(cell.first.first,cell.first.second);
|
|
|
|
NetDeviceContainer nodesNetDev(cell.second.first,cell.second.second);
|
|
|
|
|
|
|
|
// Install energy source
|
|
|
|
BasicEnergySourceHelper edgeBasicSourceHelper;
|
|
|
|
edgeBasicSourceHelper.Set ("BasicEnergySourceInitialEnergyJ", DoubleValue (2.9009));
|
|
|
|
edgeBasicSourceHelper.Set ("BasicEnergySupplyVoltageV", DoubleValue (3.3));
|
|
|
|
EnergySourceContainer apEdgeNodesSources = edgeBasicSourceHelper.Install (cell.first.first);
|
|
|
|
EnergySourceContainer wifiEdgeNodesSources = edgeBasicSourceHelper.Install (cell.first.second);
|
|
|
|
|
|
|
|
// Install device energy model
|
|
|
|
WifiRadioEnergyModelHelper radioEnergyHelper;
|
|
|
|
radioEnergyHelper.Set ("TxCurrentA", DoubleValue (0.38));
|
|
|
|
radioEnergyHelper.Set ("RxCurrentA", DoubleValue (0.313));
|
|
|
|
radioEnergyHelper.Set ("IdleCurrentA", DoubleValue (0.273));
|
|
|
|
DeviceEnergyModelContainer edgeApDeviceModels = radioEnergyHelper.Install (cell.second.first, apEdgeNodesSources);
|
|
|
|
DeviceEnergyModelContainer edgeDeviceModels = radioEnergyHelper.Install (cell.second.second, wifiEdgeNodesSources);
|
|
|
|
|
|
|
|
|
|
|
|
// Trace
|
|
|
|
DeviceEnergyModelContainer energyModels(edgeApDeviceModels, edgeDeviceModels);
|
|
|
|
DeviceEnergyModelContainer::Iterator it=energyModels.Begin();
|
|
|
|
|
|
|
|
int i=0;
|
|
|
|
while(it!=energyModels.End()){
|
|
|
|
(*it)->TraceConnect ("TotalEnergyConsumption", std::to_string(i),MakeCallback (&EnergyUpdated));
|
|
|
|
it++;
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Ptr<BasicEnergySource> basicSourcePtr0 = DynamicCast<BasicEnergySource> (wifiEdgeNodesSources.Get (0));
|
|
|
|
|
|
|
|
// //basicSourcePtr0->TraceConnectWithoutContext ("RemainingEnergy", MakeCallback (&RemainingEnergy));
|
|
|
|
// //device energy model
|
|
|
|
|
|
|
|
// Ptr<DeviceEnergyModel> basicRadioModelPtr0 =
|
|
|
|
// basicSourcePtr0->FindDeviceEnergyModels ("ns3::WifiRadioEnergyModel").Get (0);
|
|
|
|
|
|
|
|
// NS_ASSERT (basicRadioModelPtr0 != NULL);
|
|
|
|
// basicRadioModelPtr0->TraceConnectWithoutContext ("TotalEnergyConsumption", MakeCallback (&TotalEnergy));
|
|
|
|
|
2019-04-12 16:05:29 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void setupCloudEnergy(CloudInfos cloudInfos){
|
|
|
|
NodeContainer cloudNodes=cloudInfos.first;
|
|
|
|
|
|
|
|
// Install basic energy
|
|
|
|
ns3::BasicNodeEnergyHelper basicNodeEnergy;
|
|
|
|
basicNodeEnergy.Set("OnConso", ns3::DoubleValue (0.0));
|
|
|
|
basicNodeEnergy.Set("OffConso", ns3::DoubleValue (0.0));
|
|
|
|
basicNodeEnergy.Install (cloudNodes);
|
|
|
|
|
|
|
|
ns3::CompleteNetdeviceEnergyHelper completeNetdeviceEnergy;
|
|
|
|
completeNetdeviceEnergy.Set ("OffConso", ns3::DoubleValue (0));
|
|
|
|
completeNetdeviceEnergy.Set ("IdleConso", ns3::DoubleValue (0));
|
|
|
|
completeNetdeviceEnergy.Set ("RecvByteEnergy", ns3::DoubleValue (10));
|
|
|
|
completeNetdeviceEnergy.Set ("SentByteEnergy", ns3::DoubleValue (10));
|
|
|
|
completeNetdeviceEnergy.Set ("RecvPktEnergy", ns3::DoubleValue (10));
|
|
|
|
completeNetdeviceEnergy.Set ("SentPktEnergy", ns3::DoubleValue (10));
|
|
|
|
completeNetdeviceEnergy.Install(cloudNodes);
|
2019-04-12 13:52:06 +02:00
|
|
|
|
2019-04-12 16:05:29 +02:00
|
|
|
ns3::ConsumptionLogger conso;
|
|
|
|
conso.NodeConso(ns3::Seconds (1), ns3::Seconds(10), cloudNodes);
|
2019-04-12 13:52:06 +02:00
|
|
|
}
|
|
|
|
|