src/devices/wifi/wifi-mode.cc
changeset 2524 db72c0e7743e
parent 2034 8664ab76ff85
child 2582 3e28107b870f
equal deleted inserted replaced
2523:58182a1561cc 2524:db72c0e7743e
    28 }
    28 }
    29 std::ostream & operator << (std::ostream & os, const WifiMode &mode)
    29 std::ostream & operator << (std::ostream & os, const WifiMode &mode)
    30 {
    30 {
    31   os << mode.GetUniqueName ();
    31   os << mode.GetUniqueName ();
    32   return os;
    32   return os;
       
    33 }
       
    34 std::istream & operator >> (std::istream &is, WifiMode &mode)
       
    35 {
       
    36   std::string str;
       
    37   is >> str;
       
    38   if (!WifiModeFactory::GetFactory ()->Search (str, &mode))
       
    39     {
       
    40       is.setstate (std::ios_base::badbit);
       
    41     }
       
    42   return is;
    33 }
    43 }
    34 
    44 
    35 uint32_t 
    45 uint32_t 
    36 WifiMode::GetBandwidth (void) const
    46 WifiMode::GetBandwidth (void) const
    37 {
    47 {
    95   : m_uid (0)
   105   : m_uid (0)
    96 {}
   106 {}
    97 WifiMode::WifiMode (uint32_t uid)
   107 WifiMode::WifiMode (uint32_t uid)
    98   : m_uid (uid)
   108   : m_uid (uid)
    99 {}
   109 {}
       
   110 
       
   111 VALUE_HELPER_CPP (WifiMode);
   100 
   112 
   101 WifiModeFactory::WifiModeFactory ()
   113 WifiModeFactory::WifiModeFactory ()
   102 {}
   114 {}
   103 
   115 
   104 WifiMode 
   116 WifiMode 
   139   item->constellationSize = constellationSize;
   151   item->constellationSize = constellationSize;
   140   item->isMandatory = isMandatory;
   152   item->isMandatory = isMandatory;
   141   return WifiMode (uid);
   153   return WifiMode (uid);
   142 }
   154 }
   143 
   155 
       
   156 bool 
       
   157 WifiModeFactory::Search (std::string name, WifiMode *mode)
       
   158 {
       
   159   uint32_t j = 0;
       
   160   for (WifiModeItemList::const_iterator i = m_itemList.begin ();
       
   161        i != m_itemList.end (); i++)
       
   162     {
       
   163       if (i->uniqueUid == name)
       
   164 	{
       
   165           *mode = WifiMode (j);
       
   166 	  return true;
       
   167 	}
       
   168       j++;
       
   169     }
       
   170   return false;
       
   171 }
       
   172 
   144 uint32_t
   173 uint32_t
   145 WifiModeFactory::AllocateUid (std::string uniqueUid)
   174 WifiModeFactory::AllocateUid (std::string uniqueUid)
   146 {
   175 {
   147   uint32_t j = 0;
   176   uint32_t j = 0;
   148   for (WifiModeItemList::const_iterator i = m_itemList.begin ();
   177   for (WifiModeItemList::const_iterator i = m_itemList.begin ();
   167 }
   196 }
   168 
   197 
   169 WifiModeFactory *
   198 WifiModeFactory *
   170 WifiModeFactory::GetFactory (void)
   199 WifiModeFactory::GetFactory (void)
   171 {
   200 {
       
   201   static bool isFirstTime = true;
   172   static WifiModeFactory factory;
   202   static WifiModeFactory factory;
       
   203   if (isFirstTime)
       
   204     {
       
   205       factory.AllocateUid ("Invalid-WifiMode");
       
   206       isFirstTime = false;
       
   207     }
   173   return &factory;
   208   return &factory;
   174 }
   209 }
   175 
   210 
   176 } // namespace ns3
   211 } // namespace ns3