src/devices/wifi/wifi-net-device.cc
changeset 2350 0b54480c4fd1
parent 2349 b1df486516a4
child 2351 84e79f06621c
equal deleted inserted replaced
2349:b1df486516a4 2350:0b54480c4fd1
   235   parameters->Initialize (ctsDelay, ackDelay);
   235   parameters->Initialize (ctsDelay, ackDelay);
   236   m_parameters = parameters;
   236   m_parameters = parameters;
   237   m_stations->SetParameters (m_parameters);
   237   m_stations->SetParameters (m_parameters);
   238 
   238 
   239   // the MacLow
   239   // the MacLow
   240   MacLow *low = new MacLow ();
   240   Ptr<MacLow> low = CreateObject<MacLow> ();
   241   low->SetDevice (this);
   241   low->SetDevice (this);
   242   low->SetPhy (m_phy);
   242   low->SetPhy (m_phy);
   243   low->SetStations (m_stations);
   243   low->SetStations (m_stations);
   244   low->SetParameters (m_parameters);
   244   low->SetParameters (m_parameters);
   245   m_phy->SetReceiveOkCallback (MakeCallback (&MacLow::ReceiveOk, low));
   245   m_phy->SetReceiveOkCallback (MakeCallback (&MacLow::ReceiveOk, low));
   264   m_phy->RegisterListener (m_phyListener);
   264   m_phy->RegisterListener (m_phyListener);
   265   m_navListener = new WifiNetDevice::NavListener (m_manager);
   265   m_navListener = new WifiNetDevice::NavListener (m_manager);
   266   m_low->RegisterNavListener (m_navListener);
   266   m_low->RegisterNavListener (m_navListener);
   267 }
   267 }
   268 
   268 
   269 DcaTxop *
   269 Ptr<DcaTxop>
   270 WifiNetDevice::CreateDca (uint32_t minCw, uint32_t maxCw, uint32_t aifsn) const
   270 WifiNetDevice::CreateDca (uint32_t minCw, uint32_t maxCw, uint32_t aifsn) const
   271 {
   271 {
   272   DcaTxop *dca = new DcaTxop (minCw, maxCw, aifsn, m_manager);
   272   Ptr<DcaTxop> dca = CreateObject<DcaTxop> (minCw, maxCw, aifsn, m_manager);
   273   dca->SetParameters (m_parameters);
   273   dca->SetParameters (m_parameters);
   274   dca->SetTxMiddle (m_txMiddle);
   274   dca->SetTxMiddle (m_txMiddle);
   275   dca->SetLow (m_low);
   275   dca->SetLow (m_low);
   276   dca->SetStations (m_stations);
   276   dca->SetStations (m_stations);
   277   dca->SetMaxQueueSize (400);
   277   dca->SetMaxQueueSize (400);
   295                                  "Packet", "the packet to send",
   295                                  "Packet", "the packet to send",
   296                                  "Mac48Address", "the destination of the packet"),
   296                                  "Mac48Address", "the destination of the packet"),
   297                        m_txLogger,
   297                        m_txLogger,
   298                        WifiNetDeviceTraceType (WifiNetDeviceTraceType::TX));
   298                        WifiNetDeviceTraceType (WifiNetDeviceTraceType::TX));
   299   resolver->AddComposite ("phy", m_phy);
   299   resolver->AddComposite ("phy", m_phy);
       
   300   resolver->AddComposite ("maclow", m_low);
   300   resolver->SetParentResolver (NetDevice::GetTraceResolver ());
   301   resolver->SetParentResolver (NetDevice::GetTraceResolver ());
   301   return resolver;
   302   return resolver;
   302 }
   303 }
   303 
   304 
   304 void 
   305 void 
   355   // chain up.
   356   // chain up.
   356   NetDevice::DoDispose ();
   357   NetDevice::DoDispose ();
   357   // cleanup local
   358   // cleanup local
   358   m_channel = 0;
   359   m_channel = 0;
   359   delete m_stations;
   360   delete m_stations;
   360   delete m_low;
       
   361   delete m_rxMiddle;
   361   delete m_rxMiddle;
   362   delete m_txMiddle;
   362   delete m_txMiddle;
   363   delete m_parameters;
   363   delete m_parameters;
   364   delete m_manager;
   364   delete m_manager;
   365   delete m_phyListener;
   365   delete m_phyListener;
   437 AdhocWifiNetDevice::DoDispose (void)
   437 AdhocWifiNetDevice::DoDispose (void)
   438 {
   438 {
   439   // chain up.
   439   // chain up.
   440   WifiNetDevice::DoDispose ();
   440   WifiNetDevice::DoDispose ();
   441   // local cleanup
   441   // local cleanup
   442   delete m_dca;
       
   443   delete m_high;
   442   delete m_high;
   444   m_dca = 0;
   443   m_dca = 0;
   445   m_high = 0;
   444   m_high = 0;
       
   445 }
       
   446 Ptr<TraceResolver> 
       
   447 AdhocWifiNetDevice::GetTraceResolver (void) const
       
   448 {
       
   449   Ptr<CompositeTraceResolver> resolver = 
       
   450     Create<CompositeTraceResolver> ();
       
   451   resolver->AddComposite ("dca", m_dca);
       
   452   resolver->SetParentResolver (WifiNetDevice::GetTraceResolver ());
       
   453   return resolver;
   446 }
   454 }
   447 
   455 
   448 
   456 
   449 /*****************************************************
   457 /*****************************************************
   450  *            STA code
   458  *            STA code
   526 NqstaWifiNetDevice::DoDispose (void)
   534 NqstaWifiNetDevice::DoDispose (void)
   527 {
   535 {
   528   // chain up.
   536   // chain up.
   529   WifiNetDevice::DoDispose ();
   537   WifiNetDevice::DoDispose ();
   530   // local cleanup
   538   // local cleanup
   531   delete m_dca;
       
   532   delete m_high;
   539   delete m_high;
   533   m_dca = 0;
   540   m_dca = 0;
   534   m_high = 0;
   541   m_high = 0;
   535 }
   542 }
   536 
   543 
       
   544 Ptr<TraceResolver> 
       
   545 NqstaWifiNetDevice::GetTraceResolver (void) const
       
   546 {
       
   547   Ptr<CompositeTraceResolver> resolver = 
       
   548     Create<CompositeTraceResolver> ();
       
   549   resolver->AddComposite ("dca", m_dca);
       
   550   resolver->SetParentResolver (WifiNetDevice::GetTraceResolver ());
       
   551   return resolver;
       
   552 }
   537 
   553 
   538 /*****************************************************
   554 /*****************************************************
   539  *            AP code
   555  *            AP code
   540  *****************************************************/
   556  *****************************************************/
   541 
   557 
   621 NqapWifiNetDevice::DoDispose (void)
   637 NqapWifiNetDevice::DoDispose (void)
   622 {
   638 {
   623   // chain up.
   639   // chain up.
   624   WifiNetDevice::DoDispose ();
   640   WifiNetDevice::DoDispose ();
   625   // local cleanup
   641   // local cleanup
   626   delete m_dca;
       
   627   delete m_beaconDca;
       
   628   delete m_high;
   642   delete m_high;
   629   m_dca = 0;
   643   m_dca = 0;
   630   m_high = 0;
   644   m_high = 0;
   631   m_beaconDca = 0;
   645   m_beaconDca = 0;
   632 }
   646 }
   633 
   647 
       
   648 Ptr<TraceResolver> 
       
   649 NqapWifiNetDevice::GetTraceResolver (void) const
       
   650 {
       
   651   Ptr<CompositeTraceResolver> resolver = 
       
   652     Create<CompositeTraceResolver> ();
       
   653   resolver->AddComposite ("dca", m_dca);
       
   654   resolver->AddComposite ("beaconDca", m_beaconDca);
       
   655   resolver->SetParentResolver (WifiNetDevice::GetTraceResolver ());
       
   656   return resolver;
       
   657 }
   634 
   658 
   635 } // namespace ns3
   659 } // namespace ns3
   636 
   660