1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ 2 /* 3 * Copyright (c) 2008,2009 IITP RAS 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License version 2 as 7 * published by the Free Software Foundation; 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 * 18 * Author: Kirill Andreev <andreev@iitp.ru> 19 */ 20 21 #ifndef METRIC_REPORT_H 22 #define METRIC_REPORT_H 23 24 #include <stdint.h> 25 #include "ns3/buffer.h" 26 #include "ns3/mesh-information-element-vector.h" 27 28 namespace ns3 { 29 namespace dot11s { 30 /** 31 * \brief a IEEE 802.11s Mesh ID 7.3.2.88 of 802.11s draft 3.0 32 * 33 */ 34 class IeLinkMetricReport : public WifiInformationElement 35 { 36 public: 37 IeLinkMetricReport (); 38 /** 39 * Constructor 40 * 41 * \param metric the metric 42 */ 43 IeLinkMetricReport (uint32_t metric); 44 /** 45 * Set metric value 46 * \param metric the metric 47 */ 48 void SetMetric (uint32_t metric); 49 /** 50 * Get metric value 51 * \returns the metric 52 */ 53 uint32_t GetMetric (); 54 55 // Inherited from WifiInformationElement 56 virtual WifiInformationElementId ElementId () const; 57 virtual void SerializeInformationField (Buffer::Iterator i) const; 58 virtual uint8_t DeserializeInformationField (Buffer::Iterator start, uint8_t length); 59 virtual void Print (std::ostream& os) const; 60 virtual uint8_t GetInformationFieldSize () const; 61 62 private: 63 uint32_t m_metric; ///< metric 64 /** 65 * equality operator 66 * 67 * \param a lhs 68 * \param b lhs 69 * \returns true if equal 70 */ 71 friend bool operator== (const IeLinkMetricReport & a, const IeLinkMetricReport & b); 72 /** 73 * greater than operator 74 * 75 * \param a lhs 76 * \param b lhs 77 * \returns true if equal 78 */ 79 friend bool operator> (const IeLinkMetricReport & a, const IeLinkMetricReport & b); 80 /** 81 * less than operator 82 * 83 * \param a lhs 84 * \param b lhs 85 * \returns true if equal 86 */ 87 friend bool operator< (const IeLinkMetricReport & a, const IeLinkMetricReport & b); 88 }; 89 90 bool operator== (const IeLinkMetricReport & a, const IeLinkMetricReport & b); 91 bool operator> (const IeLinkMetricReport & a, const IeLinkMetricReport & b); 92 bool operator< (const IeLinkMetricReport & a, const IeLinkMetricReport & b); 93 std::ostream &operator << (std::ostream &os, const IeLinkMetricReport &linkMetricReport); 94 } // namespace dot11s 95 } // namespace ns3 96 #endif /* METRIC_REPORT_H */ 97