A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ul-mac-messages.h
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2007,2008,2009 INRIA, UDcast
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  * Authors: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
19  * Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
20  * <amine.ismail@UDcast.com>
21  */
22 
23 
24 #ifndef UCD_CHANNEL_ENCODINGS_H
25 #define UCD_CHANNEL_ENCODINGS_H
26 
27 #include <stdint.h>
28 #include "ns3/buffer.h"
29 #include <list>
30 
31 namespace ns3 {
32 
41 {
42 public:
43  UcdChannelEncodings (void);
44  virtual ~UcdChannelEncodings (void);
45 
46  void SetBwReqOppSize (uint16_t bwReqOppSize);
47  void SetRangReqOppSize (uint16_t rangReqOppSize);
48  void SetFrequency (uint32_t frequency);
49 
50  uint16_t GetBwReqOppSize (void) const;
51  uint16_t GetRangReqOppSize (void) const;
52  uint32_t GetFrequency (void) const;
53 
54  uint16_t GetSize (void) const;
55 
56  Buffer::Iterator Write (Buffer::Iterator start) const;
58 private:
59  virtual Buffer::Iterator DoWrite (Buffer::Iterator start) const = 0;
60  virtual Buffer::Iterator DoRead (Buffer::Iterator start) = 0;
61 
62 
63  uint16_t m_bwReqOppSize;
64  uint16_t m_rangReqOppSize;
65  uint32_t m_frequency;
66 };
67 
68 } // namespace ns3
69 
70 #endif /* UCD_CHANNEL_ENCODINGS_H */
71 
72 // ----------------------------------------------------------------------------------------------------------
73 
74 #ifndef OFDM_UCD_CHANNEL_ENCODINGS_H
75 #define OFDM_UCD_CHANNEL_ENCODINGS_H
76 
77 #include <stdint.h>
78 
79 namespace ns3 {
80 
82 {
89 public:
92 
93  void SetSbchnlReqRegionFullParams (uint8_t sbchnlReqRegionFullParams);
94  void SetSbchnlFocContCodes (uint8_t sbchnlFocContCodes);
95 
96  uint8_t GetSbchnlReqRegionFullParams (void) const;
97  uint8_t GetSbchnlFocContCodes (void) const;
98 
99  uint16_t GetSize (void) const;
100 private:
101  virtual Buffer::Iterator DoWrite (Buffer::Iterator start) const;
102  virtual Buffer::Iterator DoRead (Buffer::Iterator start);
103 
104  uint8_t m_sbchnlReqRegionFullParams;
105  uint8_t m_sbchnlFocContCodes;
106 };
107 
108 } // namespace ns3
109 
110 #endif /* OFDM_UCD_CHANNEL_ENCODINGS_H */
111 
112 // ----------------------------------------------------------------------------------------------------------
113 
114 #ifndef OFDM_UL_BURST_PROFILE_H
115 #define OFDM_UL_BURST_PROFILE_H
116 
117 #include <stdint.h>
118 #include "ns3/buffer.h"
119 
120 namespace ns3 {
121 
123 {
130 public:
131  enum Uiuc
132  {
133  UIUC_INITIAL_RANGING = 1,
134  UIUC_REQ_REGION_FULL,
135  UIUC_REQ_REGION_FOCUSED,
136  UIUC_FOCUSED_CONTENTION_IE,
137  UIUC_BURST_PROFILE_5,
138  UIUC_BURST_PROFILE_6,
139  UIUC_BURST_PROFILE_7,
140  UIUC_BURST_PROFILE_8,
141  UIUC_BURST_PROFILE_9,
142  UIUC_BURST_PROFILE_10,
143  UIUC_BURST_PROFILE_11,
144  UIUC_BURST_PROFILE_12,
145  UIUC_SUBCH_NETWORK_ENTRY,
146  UIUC_END_OF_MAP
147  };
148 
149  OfdmUlBurstProfile (void);
150  ~OfdmUlBurstProfile (void);
151 
152  void SetType (uint8_t type);
153  void SetLength (uint8_t length);
154  void SetUiuc (uint8_t uiuc);
155  void SetFecCodeType (uint8_t fecCodeType);
156 
157  uint8_t GetType (void) const;
158  uint8_t GetLength (void) const;
159  uint8_t GetUiuc (void) const;
160  uint8_t GetFecCodeType (void) const;
161 
162  uint16_t GetSize (void) const;
163 
164  Buffer::Iterator Write (Buffer::Iterator start) const;
165  Buffer::Iterator Read (Buffer::Iterator start);
166 private:
167  uint8_t m_type;
168  uint8_t m_length;
169  uint8_t m_uiuc;
170 
171  // TLV Encoded information
172  uint8_t m_fecCodeType;
173 };
174 
175 } // namespace ns3
176 
177 #endif /* OFDM_UL_BURST_PROFILE_H */
178 
179 // ----------------------------------------------------------------------------------------------------------
180 
181 #ifndef UCD_H
182 #define UCD_H
183 
184 #include <stdint.h>
185 #include "ns3/header.h"
186 #include <vector>
187 
188 namespace ns3 {
189 
190 class Ucd : public Header
191 {
198 public:
199  Ucd (void);
200  virtual ~Ucd (void);
201 
202  void SetConfigurationChangeCount (uint8_t ucdCount);
203  void SetRangingBackoffStart (uint8_t rangingBackoffStart);
204  void SetRangingBackoffEnd (uint8_t rangingBackoffEnd);
205  void SetRequestBackoffStart (uint8_t requestBackoffStart);
206  void SetRequestBackoffEnd (uint8_t requestBackoffEnd);
207  void SetChannelEncodings (OfdmUcdChannelEncodings channelEncodings);
208  void AddUlBurstProfile (OfdmUlBurstProfile ulBurstProfile);
209  void SetNrUlBurstProfiles (uint8_t nrUlBurstProfiles);
210 
211  uint8_t GetConfigurationChangeCount (void) const;
212  uint8_t GetRangingBackoffStart (void) const;
213  uint8_t GetRangingBackoffEnd (void) const;
214  uint8_t GetRequestBackoffStart (void) const;
215  uint8_t GetRequestBackoffEnd (void) const;
216  OfdmUcdChannelEncodings GetChannelEncodings (void) const;
217  std::vector<OfdmUlBurstProfile> GetUlBurstProfiles (void) const;
218  uint8_t GetNrUlBurstProfiles (void) const;
219 
220  std::string GetName (void) const;
221  static TypeId GetTypeId (void);
222  virtual TypeId GetInstanceTypeId (void) const;
223  void Print (std::ostream &os) const;
224  uint32_t GetSerializedSize (void) const;
225  void Serialize (Buffer::Iterator start) const;
226  uint32_t Deserialize (Buffer::Iterator start);
227 private:
228  uint8_t m_configurationChangeCount;
229  uint8_t m_rangingBackoffStart;
230  uint8_t m_rangingBackoffEnd;
231  uint8_t m_requestBackoffStart;
232  uint8_t m_requestBackoffEnd;
233  OfdmUcdChannelEncodings m_channelEncodings; // TLV Encoded information for the overall channel
234  std::vector<OfdmUlBurstProfile> m_ulBurstProfiles;
235 
236  uint8_t m_nrUlBurstProfiles;
237 };
238 
239 } // namespace ns3
240 
241 #endif /* UCD_H */
242 
243 // ----------------------------------------------------------------------------------------------------------
244 
245 #ifndef OFDM_UL_MAP_IE_H
246 #define OFDM_UL_MAP_IE_H
247 
248 #include <stdint.h>
249 #include "ns3/header.h"
250 #include "cid.h"
251 
252 namespace ns3 {
253 
255 {
263 public:
264  OfdmUlMapIe (void);
265  ~OfdmUlMapIe (void);
266 
267  void SetCid (Cid cid);
268  void SetStartTime (uint16_t startTime);
269  void SetSubchannelIndex (uint8_t subchannelIndex);
270  void SetUiuc (uint8_t uiuc);
271  void SetDuration (uint16_t duration);
272  void SetMidambleRepetitionInterval (uint8_t midambleRepetitionInterval);
273 
274  Cid GetCid (void) const;
275  uint16_t GetStartTime (void) const;
276  uint8_t GetSubchannelIndex (void) const;
277  uint8_t GetUiuc (void) const;
278  uint16_t GetDuration (void) const;
279  uint8_t GetMidambleRepetitionInterval (void) const;
280 
281  uint16_t GetSize (void) const;
282 
283  Buffer::Iterator Write (Buffer::Iterator start) const;
284  Buffer::Iterator Read (Buffer::Iterator start);
285 private:
286  Cid m_cid;
287  uint16_t m_startTime;
288  uint8_t m_subchannelIndex;
289  uint8_t m_uiuc;
290  uint16_t m_duration;
291  uint8_t m_midambleRepetitionInterval;
292 
293  // fields to be implemented later on:
294  // m_focusedContentionIe()
295  // m_subchannelizedNetworkEntryIe()
296  // m_ulExtendedIe()
297  // m_paddingNibble;
298 };
299 
300 } // namespace ns3
301 
302 #endif /* OFDM_UL_MAP_IE_H */
303 
304 // ----------------------------------------------------------------------------------------------------------
305 
306 #ifndef UL_MAP_H
307 #define UL_MAP_H
308 
309 #include <stdint.h>
310 #include "ns3/header.h"
311 #include <vector>
312 
313 namespace ns3 {
314 
315 class UlMap : public Header
316 {
323 public:
324  UlMap (void);
325  virtual ~UlMap (void);
326 
327  void SetUcdCount (uint8_t ucdCount);
328  void SetAllocationStartTime (uint32_t allocationStartTime);
329  void AddUlMapElement (OfdmUlMapIe ulMapElement);
330 
331  uint8_t GetUcdCount (void) const;
332  uint32_t GetAllocationStartTime (void) const;
333  std::list<OfdmUlMapIe> GetUlMapElements (void) const;
334 
335  std::string GetName (void) const;
336  static TypeId GetTypeId (void);
337  virtual TypeId GetInstanceTypeId (void) const;
338  void Print (std::ostream &os) const;
339  uint32_t GetSerializedSize (void) const;
340  void Serialize (Buffer::Iterator start) const;
341  uint32_t Deserialize (Buffer::Iterator start);
342 private:
343  uint8_t m_reserved; // changed as per the amendment 802.16e-2005
344 
345  uint8_t m_ucdCount;
346  uint32_t m_allocationStartTime;
347  std::list<OfdmUlMapIe> m_ulMapElements;
348 };
349 
350 } // namespace ns3
351 
352 #endif /* UL_MAP_H */
353 
Protocol header serialization and deserialization.
Definition: header.h:42
void Serialize(Buffer::Iterator start) const
uint32_t GetSerializedSize(void) const
OfdmUlMapIe(void)
This class implements the UL-MAP_IE message as described by "IEEE Standard for Local and metropolitan...
uint32_t GetSerializedSize(void) const
UlMap(void)
This class implements the UL-MAP_IE message as described by "IEEE Standard for Local and metropolitan...
iterator in a Buffer instance
Definition: buffer.h:98
OfdmUcdChannelEncodings(void)
This class implements the UCD channel encodings as described by "IEEE Standard for Local and metropol...
uint32_t Deserialize(Buffer::Iterator start)
void Print(std::ostream &os) const
Definition: cid.h:35
virtual TypeId GetInstanceTypeId(void) const
This class implements the UCD channel encodings as described by "IEEE Standard for Local and metropol...
Uiuc
This class implements the UL burst profile as described by "IEEE Standard for Local and metropolitan ...
uint32_t Deserialize(Buffer::Iterator start)
void Serialize(Buffer::Iterator start) const
void Print(std::ostream &os) const
a unique identifier for an interface.
Definition: type-id.h:44
Ucd(void)
This class implements the UCD message as described by "IEEE Standard for Local and metropolitan area ...
virtual TypeId GetInstanceTypeId(void) const