A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
mac-messages.h
Go to the documentation of this file.
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 /*
25  *This file does not contain all MAC messages, the rest of MAC messages have
26  *This been categorized as DL and UL messages and are placed in
27  *This dl-mac-messages.h and ul-mac-messages.h files.
28  */
29 
30 #ifndef MANAGEMENT_MESSAGE_TYPE_H
31 #define MANAGEMENT_MESSAGE_TYPE_H
32 
33 #include <stdint.h>
34 #include "ns3/header.h"
35 
36 namespace ns3 {
37 
42 {
43 public:
44  /*
45  * Section 6.3.2.3 MAC Management messages page 42, Table 14 page 43
46  */
48  {
60  };
61 
62  ManagementMessageType (void);
63  ManagementMessageType (uint8_t type);
64  virtual ~ManagementMessageType (void);
65  void SetType (uint8_t type);
66  uint8_t GetType (void) const;
67 
68  std::string GetName (void) const;
69  static TypeId GetTypeId (void);
70  virtual TypeId GetInstanceTypeId (void) const;
71  void Print (std::ostream &os) const;
72  uint32_t GetSerializedSize (void) const;
73  void Serialize (Buffer::Iterator start) const;
75 private:
76  uint8_t m_type;
77 };
78 
79 } // namespace ns3
80 
81 #endif /* MANAGEMENT_MESSAGE_TYPE_H */
82 
83 
84 // ----------------------------------------------------------------------------------------------------------
85 
86 #ifndef RNG_RSP_H
87 #define RNG_RSP_H
88 
89 #include <stdint.h>
90 #include "ns3/header.h"
91 #include "ns3/mac48-address.h"
92 #include "service-flow.h"
93 #include "cid.h"
94 
95 namespace ns3 {
96 
97 class RngRsp : public Header
98 {
106 public:
107  RngRsp (void);
108  virtual ~RngRsp (void);
114  void SetTimingAdjust (uint32_t timingAdjust);
122  void SetPowerLevelAdjust (uint8_t powerLevelAdjust);
128  void SetOffsetFreqAdjust (uint32_t offsetFreqAdjust);
129  void SetRangStatus (uint8_t rangStatus);
134  void SetDlFreqOverride (uint32_t dlFreqOverride);
139  void SetUlChnlIdOverride (uint8_t ulChnlIdOverride);
140  void SetDlOperBurstProfile (uint16_t dlOperBurstProfile);
141  void SetMacAddress (Mac48Address macAddress);
142 
143  void SetBasicCid (Cid basicCid);
144  void SetPrimaryCid (Cid primaryCid);
145 
146  void SetAasBdcastPermission (uint8_t aasBdcastPermission);
147  void SetFrameNumber (uint32_t frameNumber);
148  void SetInitRangOppNumber (uint8_t initRangOppNumber);
149  void SetRangSubchnl (uint8_t rangSubchnl);
154  uint32_t GetTimingAdjust (void) const;
161  uint8_t GetPowerLevelAdjust (void) const;
166  uint32_t GetOffsetFreqAdjust (void) const;
167  uint8_t GetRangStatus (void) const;
171  uint32_t GetDlFreqOverride (void) const;
175  uint8_t GetUlChnlIdOverride (void) const;
179  uint16_t GetDlOperBurstProfile (void) const;
180  Mac48Address GetMacAddress (void) const;
181  Cid GetBasicCid (void) const;
182  Cid GetPrimaryCid (void) const;
183  uint8_t GetAasBdcastPermission (void) const;
184  uint32_t GetFrameNumber (void) const;
185  uint8_t GetInitRangOppNumber (void) const;
186  uint8_t GetRangSubchnl (void) const;
187 
188  std::string GetName (void) const;
189  static TypeId GetTypeId (void);
190  virtual TypeId GetInstanceTypeId (void) const;
191  void Print (std::ostream &os) const;
192  uint32_t GetSerializedSize (void) const;
193  void Serialize (Buffer::Iterator start) const;
194  uint32_t Deserialize (Buffer::Iterator start);
195 private:
196  uint8_t m_reserved; // changed as per the amendment 802.16e-2005
197 
198  // TLV Encoded Information
199 
200  // Tx timing offset adjustment (signed 32-bit). The time required to advance SS transmission so frames
201  // arrive at the expected time instance at the BS.
202  uint32_t m_timingAdjust;
203 
204  // Specifies the relative change in transmission power level that the SS is to make in order that
205  // transmissions arrive at the BS at the desired power. When subchannelization is employed, the
206  // subscriber shall interpret the power offset adjustment as a required change to the transmitted power
207  // density.
209 
210  // Specifies the relative change in transmission frequency that the SS is to make in order to better match
211  // the BS. This is fine-frequency adjustment within a channel, not reassignment to a different channel.
213  uint8_t m_rangStatus;
214 
215  // Center frequency, in kHz, of new downlink channel where the SS should redo initial ranging.
217 
218  // Licensed bands: The identifier of the uplink channel with which the SS is to redo initial ranging (not
219  // used with PHYs without channelized uplinks).
221 
222  // This parameter is sent in response to the RNG-REQ Requested Downlink Burst Profile parameter.
223  // Byte 0: Specifies the least robust DIUC that may be used by the BS for transmissions to the SS.
224  // Byte 1: Configuration Change Count value of DCD defining the burst profile associated with DIUC.
226 
231 
232  // Frame number where the associated RNG_REQ message was detected by the BS. Usage is mutually
233  // exclusive with SS MAC Address
234  uint32_t m_frameNumber;
235 
236  // Initial Ranging opportunity (1–255) in which the associated RNG_REQ message was detected by the BS.
237  // Usage is mutually exclusive with SS MAC Address
239 
240  // Used to indicate the OFDM subchannel reference that was used to transmit the initial ranging message
241  // (OFDM with subchannelization).
242  uint8_t m_rangSubchnl;
243 };
244 
245 } // namespace ns3
246 
247 #endif /* RNG_RSP_H */
248 
249 // ----------------------------------------------------------------------------------------------------------
250 
251 #ifndef DSA_REQ_H
252 #define DSA_REQ_H
253 
254 #include <stdint.h>
255 #include "ns3/header.h"
256 #include "ns3/buffer.h"
257 #include "cid.h"
258 #include "service-flow.h"
259 
260 namespace ns3 {
261 class serviceFlow;
262 class DsaReq : public Header
263 {
270 public:
271  DsaReq ();
272  ~DsaReq ();
273  DsaReq (ServiceFlow sf);
274  void SetTransactionId (uint16_t transactionId);
279  void SetSfid (uint32_t sfid);
284  void SetCid (Cid cid);
289  void SetServiceFlow (ServiceFlow sf);
293  ServiceFlow GetServiceFlow (void) const;
294  uint16_t GetTransactionId (void) const;
298  uint32_t GetSfid (void) const;
302  Cid GetCid (void) const;
303  std::string GetName (void) const;
304  static TypeId GetTypeId (void);
305  virtual TypeId GetInstanceTypeId (void) const;
306  void Print (std::ostream &os) const;
307  uint32_t GetSerializedSize (void) const;
308  void Serialize (Buffer::Iterator start) const;
309  uint32_t Deserialize (Buffer::Iterator start);
310 
311 private:
312  uint16_t m_transactionId;
313  // TLV Encoded Information
314  uint32_t m_sfid;
317 };
318 
319 } // namespace ns3
320 
321 #endif /* DSA_REQ_H */
322 
323 // ----------------------------------------------------------------------------------------------------------
324 
325 #ifndef DSA_RSP_H
326 #define DSA_RSP_H
327 
328 #include <stdint.h>
329 #include "ns3/header.h"
330 #include "ns3/buffer.h"
331 #include "cid.h"
332 
333 namespace ns3 {
334 
335 class DsaRsp : public Header
336 {
343 public:
344  DsaRsp (void);
345  ~DsaRsp (void);
346 
347  void SetTransactionId (uint16_t transactionId);
348  uint16_t GetTransactionId (void) const;
349 
350  void SetConfirmationCode (uint16_t confirmationCode);
351  uint16_t GetConfirmationCode (void) const;
356  void SetSfid (uint32_t sfid);
360  uint32_t GetSfid (void) const;
365  void SetCid (Cid cid);
369  Cid GetCid (void) const;
374  void SetServiceFlow (ServiceFlow sf);
378  ServiceFlow GetServiceFlow (void) const;
379 
380  std::string GetName (void) const;
381  static TypeId GetTypeId (void);
382  virtual TypeId GetInstanceTypeId (void) const;
383  void Print (std::ostream &os) const;
384  uint32_t GetSerializedSize (void) const;
385  void Serialize (Buffer::Iterator start) const;
386  uint32_t Deserialize (Buffer::Iterator start);
387 private:
388  uint16_t m_transactionId;
390  // TLV Encoded Information
392  uint32_t m_sfid;
394 
395 };
396 
397 } // namespace ns3
398 
399 #endif /* DSA_RSP_H */
400 
401 // ----------------------------------------------------------------------------------------------------------
402 
403 #ifndef DSA_ACK_H
404 #define DSA_ACK_H
405 
406 #include <stdint.h>
407 #include "ns3/header.h"
408 #include "ns3/buffer.h"
409 
410 namespace ns3 {
411 
412 class DsaAck : public Header
413 {
414 
420 public:
421  DsaAck (void);
422  ~DsaAck (void);
423 
424  void SetTransactionId (uint16_t transactionId);
425  uint16_t GetTransactionId (void) const;
426 
427  void SetConfirmationCode (uint16_t confirmationCode);
428  uint16_t GetConfirmationCode (void) const;
429 
430  std::string GetName (void) const;
431  static TypeId GetTypeId (void);
432  virtual TypeId GetInstanceTypeId (void) const;
433  void Print (std::ostream &os) const;
434  uint32_t GetSerializedSize (void) const;
435  void Serialize (Buffer::Iterator start) const;
436  uint32_t Deserialize (Buffer::Iterator start);
437 private:
438  uint16_t m_transactionId;
440 };
441 
442 } // namespace ns3
443 
444 #endif /* DSA_ACK_H */
445 
446 // ----------------------------------------------------------------------------------------------------------
447 
448 #ifndef RNG_REQ_H
449 #define RNG_REQ_H
450 
451 #include <stdint.h>
452 #include "ns3/header.h"
453 #include "ns3/mac48-address.h"
454 #include "service-flow.h"
455 
456 namespace ns3 {
457 
458 class RngReq : public Header
459 {
466 public:
467  RngReq (void);
468  virtual ~RngReq (void);
469 
470  void SetReqDlBurstProfile (uint8_t reqDlBurstProfile);
471  void SetMacAddress (Mac48Address macAddress);
472  void SetRangingAnomalies (uint8_t rangingAnomalies);
473 
474  uint8_t GetReqDlBurstProfile (void) const;
475  Mac48Address GetMacAddress (void) const;
476  uint8_t GetRangingAnomalies (void) const;
477 
478  std::string GetName (void) const;
479  static TypeId GetTypeId (void);
480  virtual TypeId GetInstanceTypeId (void) const;
481  void Print (std::ostream &os) const;
482  void PrintDebug (void) const;
483  uint32_t GetSerializedSize (void) const;
484  void Serialize (Buffer::Iterator start) const;
485  uint32_t Deserialize (Buffer::Iterator start);
486 private:
487  uint8_t m_reserved; // changed as per the amendment 802.16e-2005
488 
489  // TLV Encoded Information
493 };
494 
495 } // namespace ns3
496 
497 #endif /* RNG_REQ_H */
498