summaryrefslogtreecommitdiff
path: root/ns3-simulator/modules/energy.cc
blob: 9c91bf4d840e07e70d928c244de069a4b25a857d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

#include "modules.hpp"

void setupCellEnergy(Cell cell){
  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));

  
}