src/devices/wifi/wifi-channel.cc
changeset 2524 db72c0e7743e
parent 2257 71a58e70c671
child 2549 fe90cf0b2c63
equal deleted inserted replaced
2523:58182a1561cc 2524:db72c0e7743e
    50 {
    50 {
    51   m_delay = delay;
    51   m_delay = delay;
    52 }
    52 }
    53 
    53 
    54 void 
    54 void 
    55 WifiChannel::Add (Ptr<NetDevice> device,  ReceiveCallback callback)
    55 WifiChannel::Add (Ptr<NetDevice> device, Ptr<WifiPhy> phy)
    56 {
    56 {
    57   m_deviceList.push_back (std::make_pair (device, callback));
    57   m_deviceList.push_back (std::make_pair (device, phy));
    58 }
    58 }
    59 void 
    59 void 
    60 WifiChannel::Send (Ptr<NetDevice> sender, Ptr<const Packet> packet, double txPowerDbm,
    60 WifiChannel::Send (Ptr<WifiPhy> sender, Ptr<const Packet> packet, double txPowerDbm,
    61                    WifiMode wifiMode, WifiPreamble preamble) const
    61                    WifiMode wifiMode, WifiPreamble preamble) const
    62 {
    62 {
    63   Ptr<MobilityModel> senderMobility = sender->GetNode ()->GetObject<MobilityModel> ();
    63   Ptr<MobilityModel> senderMobility = 0;
       
    64   for (DeviceList::const_iterator i = m_deviceList.begin (); i != m_deviceList.end (); i++)
       
    65     {
       
    66       if (sender == i->second)
       
    67         {
       
    68           senderMobility = i->first->GetNode ()->GetObject<MobilityModel> ();
       
    69           break;
       
    70         }
       
    71     }
       
    72   NS_ASSERT (senderMobility != 0);
    64   uint32_t j = 0;
    73   uint32_t j = 0;
    65   for (DeviceList::const_iterator i = m_deviceList.begin (); i != m_deviceList.end (); i++)
    74   for (DeviceList::const_iterator i = m_deviceList.begin (); i != m_deviceList.end (); i++)
    66     {
    75     {
    67       if (sender != i->first)
    76       if (sender != i->second)
    68         {
    77         {
    69           Ptr<MobilityModel> receiverMobility = i->first->GetNode ()->GetObject<MobilityModel> ();
    78           Ptr<MobilityModel> receiverMobility = i->first->GetNode ()->GetObject<MobilityModel> ();
    70           Time delay = m_delay->GetDelay (senderMobility, receiverMobility);
    79           Time delay = m_delay->GetDelay (senderMobility, receiverMobility);
    71           double rxPowerDbm = m_loss->GetRxPower (txPowerDbm, senderMobility, receiverMobility);
    80           double rxPowerDbm = m_loss->GetRxPower (txPowerDbm, senderMobility, receiverMobility);
    72           NS_LOG_DEBUG ("propagation: txPower="<<txPowerDbm<<"dbm, rxPower="<<rxPowerDbm<<"dbm, "<<
    81           NS_LOG_DEBUG ("propagation: txPower="<<txPowerDbm<<"dbm, rxPower="<<rxPowerDbm<<"dbm, "<<
    81 
    90 
    82 void
    91 void
    83 WifiChannel::Receive (uint32_t i, Ptr<Packet> packet, double rxPowerDbm,
    92 WifiChannel::Receive (uint32_t i, Ptr<Packet> packet, double rxPowerDbm,
    84                       WifiMode txMode, WifiPreamble preamble) const
    93                       WifiMode txMode, WifiPreamble preamble) const
    85 {
    94 {
    86   m_deviceList[i].second (packet, rxPowerDbm, txMode, preamble);
    95   m_deviceList[i].second->StartReceivePacket (packet, rxPowerDbm, txMode, preamble);
    87 }
    96 }
    88 
    97 
    89 uint32_t 
    98 uint32_t 
    90 WifiChannel::GetNDevices (void) const
    99 WifiChannel::GetNDevices (void) const
    91 {
   100 {