65 if (deviceName.compare ("ns3::WifiNetDevice") != 0) |
65 if (deviceName.compare ("ns3::WifiNetDevice") != 0) |
66 { |
66 { |
67 NS_FATAL_ERROR ("NetDevice type is not WifiNetDevice!"); |
67 NS_FATAL_ERROR ("NetDevice type is not WifiNetDevice!"); |
68 } |
68 } |
69 Ptr<Node> node = device->GetNode (); |
69 Ptr<Node> node = device->GetNode (); |
70 Ptr<WifiRadioEnergyModel> model = m_radioEnergy.Create ()-> |
70 Ptr<WifiRadioEnergyModel> model = m_radioEnergy.Create ()->GetObject<WifiRadioEnergyModel> (); |
71 GetObject<WifiRadioEnergyModel> (); |
|
72 NS_ASSERT (model != NULL); |
71 NS_ASSERT (model != NULL); |
73 // set node pointer |
|
74 model->SetNode (node); |
|
75 // set energy source pointer |
72 // set energy source pointer |
76 model->SetEnergySource (source); |
73 model->SetEnergySource (source); |
77 // set energy depletion callback |
74 // set energy depletion callback |
78 model->SetEnergyDepletionCallback (m_depletionCallback); |
75 model->SetEnergyDepletionCallback (m_depletionCallback); |
79 // add model to device model list in energy source |
76 // add model to device model list in energy source |
80 source->AppendDeviceEnergyModel (model); |
77 source->AppendDeviceEnergyModel (model); |
81 // create and install energy model callback |
78 // create and register energy model phy listener |
82 Ptr<WifiNetDevice> wifiDevice = DynamicCast<WifiNetDevice> (device); |
79 Ptr<WifiNetDevice> wifiDevice = DynamicCast<WifiNetDevice> (device); |
83 Ptr<WifiPhy> wifiPhy = wifiDevice->GetPhy (); |
80 Ptr<WifiPhy> wifiPhy = wifiDevice->GetPhy (); |
84 DeviceEnergyModel::ChangeStateCallback callback; |
81 wifiPhy->RegisterListener (model->GetPhyListener ()); |
85 callback = MakeCallback (&DeviceEnergyModel::ChangeState, model); |
|
86 //wifiPhy->SetEnergyModelCallback (callback); |
|
87 return model; |
82 return model; |
88 } |
83 } |
89 |
84 |
90 } // namespace ns3 |
85 } // namespace ns3 |