--- a/src/devices/wifi/wifi-channel.cc Tue Oct 02 12:42:16 2007 +0200
+++ b/src/devices/wifi/wifi-channel.cc Wed Oct 03 11:01:17 2007 +0200
@@ -29,19 +29,40 @@
namespace ns3 {
+WifiChannel::ReceiveData::ReceiveData (const Packet &packet, double rxPowerDbm,
+ WifiMode txMode, WifiMode headerMode, uint32_t extra)
+ : m_packet (packet),
+ m_rxPowerDbm (rxPowerDbm),
+ m_wifiMode (txMode),
+ m_headerMode (headerMode),
+ m_extra (extra)
+{}
+
+
WifiChannel::WifiChannel ()
{}
WifiChannel::~WifiChannel ()
{}
void
+WifiChannel::SetPropationLossModel (Ptr<PropagationLossModel> loss)
+{
+ m_loss = loss;
+}
+void
+WifiChannel::SetPropagationDelayModel (Ptr<PropagationDelayModel> delay)
+{
+ m_delay = delay;
+}
+
+void
WifiChannel::Add (Ptr<NetDevice> device, ReceiveCallback callback)
{
m_deviceList.push_back (std::make_pair (device, callback));
}
void
WifiChannel::Send (Ptr<NetDevice> sender, const Packet &packet, double txPowerDbm,
- uint64_t wifiMode) const
+ WifiMode wifiMode, WifiMode headerMode, uint32_t extra) const
{
Ptr<MobilityModel> senderMobility = sender->GetNode ()->QueryInterface<MobilityModel> (MobilityModel::iid);
uint32_t j = 0;
@@ -53,8 +74,9 @@
double distance = senderMobility->GetDistanceFrom (receiverMobility);
Time delay = m_delay->GetDelay (distance);
double rxPowerDbm = m_loss->GetRxPower (txPowerDbm, distance);
+ struct ReceiveData data = ReceiveData (packet, rxPowerDbm, wifiMode, headerMode, extra);
Simulator::Schedule (delay, &WifiChannel::Receive, this,
- j, packet, rxPowerDbm, wifiMode);
+ j, data);
}
j++;
}
@@ -62,10 +84,9 @@
void
WifiChannel::Receive (uint32_t i,
- const Packet &packet, double rxPowerDbm,
- uint64_t wifiMode) const
+ const struct ReceiveData &data) const
{
- m_deviceList[i].second (packet, rxPowerDbm, wifiMode);
+ m_deviceList[i].second (data.m_packet, data.m_rxPowerDbm, data.m_wifiMode, data.m_headerMode, data.m_extra);
}
uint32_t