A Discrete-Event Network Simulator
API
uan-header-rc.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 University of Washington
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: Leonard Tracy <lentracy@gmail.com>
19  */
20 
21 
22 #ifndef UAN_HEADER_RC_H
23 #define UAN_HEADER_RC_H
24 
25 #include "ns3/header.h"
26 #include "ns3/nstime.h"
27 #include "ns3/mac8-address.h"
28 
29 #include <set>
30 
31 namespace ns3 {
32 
41 class UanHeaderRcData : public Header
42 {
43 public:
45  UanHeaderRcData ();
53  UanHeaderRcData (uint8_t frameNum, Time propDelay);
55  virtual ~UanHeaderRcData ();
56 
61  static TypeId GetTypeId (void);
62 
68  void SetFrameNo (uint8_t frameNum);
75  void SetPropDelay (Time propDelay);
81  uint8_t GetFrameNo (void) const;
88  Time GetPropDelay (void) const;
95  void Print (std::ostream &os, Time::Unit unit) const;
96 
97  // Inherrited methods
98  virtual uint32_t GetSerializedSize (void) const;
99  virtual void Serialize (Buffer::Iterator start) const;
100  virtual uint32_t Deserialize (Buffer::Iterator start);
101  virtual void Print (std::ostream &os) const;
102  virtual TypeId GetInstanceTypeId (void) const;
103 
104 private:
105  uint8_t m_frameNo;
107 
108 }; // class UanHeaderRcData
109 
117 class UanHeaderRcRts : public Header
118 {
119 public:
121  UanHeaderRcRts ();
132  UanHeaderRcRts (uint8_t frameNo, uint8_t retryNo, uint8_t noFrames, uint16_t length, Time ts);
134  virtual ~UanHeaderRcRts ();
135 
140  static TypeId GetTypeId (void);
141 
147  void SetFrameNo (uint8_t fno);
153  void SetNoFrames (uint8_t no);
159  void SetTimeStamp (Time timeStamp);
166  void SetLength (uint16_t length);
174  void SetRetryNo (uint8_t no);
175 
181  uint8_t GetFrameNo (void) const;
187  uint8_t GetNoFrames (void) const;
194  Time GetTimeStamp (void) const;
200  uint16_t GetLength (void) const;
206  uint8_t GetRetryNo (void) const;
213  void Print (std::ostream &os, Time::Unit unit) const;
214 
215  // Inherrited methods
216  virtual uint32_t GetSerializedSize (void) const;
217  virtual void Serialize (Buffer::Iterator start) const;
218  virtual uint32_t Deserialize (Buffer::Iterator start);
219  virtual void Print (std::ostream &os) const;
220  virtual TypeId GetInstanceTypeId (void) const;
221 
222 private:
223  uint8_t m_frameNo;
224  uint8_t m_noFrames;
225  uint16_t m_length;
227  uint8_t m_retryNo;
228 
229 }; // class UanHeaderRcRts
230 
239 {
240 public:
251  UanHeaderRcCtsGlobal (Time wt, Time ts, uint16_t rate, uint16_t retryRate);
254 
259  static TypeId GetTypeId (void);
260 
265  void SetRateNum (uint16_t rate);
270  void SetRetryRate (uint16_t rate);
277  void SetWindowTime (Time t);
278 
284  void SetTxTimeStamp (Time timeStamp);
285 
291  uint16_t GetRateNum (void) const;
297  uint16_t GetRetryRate (void) const;
304  Time GetWindowTime (void) const;
310  Time GetTxTimeStamp (void) const;
317  void Print (std::ostream &os, Time::Unit unit) const;
318 
319  // Inherrited methods
320  virtual uint32_t GetSerializedSize (void) const;
321  virtual void Serialize (Buffer::Iterator start) const;
322  virtual uint32_t Deserialize (Buffer::Iterator start);
323  virtual void Print (std::ostream &os) const;
324  virtual TypeId GetInstanceTypeId (void) const;
325 
326 private:
329  uint16_t m_retryRate;
330  uint16_t m_rateNum;
331 
332 }; // class UanHeaderRcCtsGlobal
333 
342 class UanHeaderRcCts : public Header
343 {
344 public:
346  UanHeaderRcCts ();
357  UanHeaderRcCts (uint8_t frameNo, uint8_t retryNo, Time rtsTs, Time delay, Mac8Address addr);
359  virtual ~UanHeaderRcCts ();
360 
365  static TypeId GetTypeId (void);
366 
372  void SetFrameNo (uint8_t frameNo);
378  void SetRtsTimeStamp (Time timeStamp);
384  void SetDelayToTx (Time delay);
390  void SetRetryNo (uint8_t no);
396  void SetAddress (Mac8Address addr);
397 
403  uint8_t GetFrameNo (void) const;
409  Time GetRtsTimeStamp (void) const;
416  Time GetDelayToTx (void) const;
422  uint8_t GetRetryNo (void) const;
428  Mac8Address GetAddress (void) const;
435  void Print (std::ostream &os, Time::Unit unit) const;
436 
437  // Inherrited methods
438  virtual uint32_t GetSerializedSize (void) const;
439  virtual void Serialize (Buffer::Iterator start) const;
440  virtual uint32_t Deserialize (Buffer::Iterator start);
441  virtual void Print (std::ostream &os) const;
442  virtual TypeId GetInstanceTypeId (void) const;
443 
444 private:
445  uint8_t m_frameNo;
447  uint8_t m_retryNo;
450 
451 }; // class UanHeaderRcCts
452 
458 class UanHeaderRcAck : public Header
459 {
460 public:
462  UanHeaderRcAck ();
464  virtual ~UanHeaderRcAck ();
465 
470  static TypeId GetTypeId (void);
471 
477  void SetFrameNo (uint8_t frameNo);
483  void AddNackedFrame (uint8_t frame);
484 
490  const std::set<uint8_t> &GetNackedFrames (void) const;
496  uint8_t GetFrameNo (void) const;
502  uint8_t GetNoNacks (void) const;
503 
504  // Inherrited methods
505  virtual uint32_t GetSerializedSize (void) const;
506  virtual void Serialize (Buffer::Iterator start) const;
507  virtual uint32_t Deserialize (Buffer::Iterator start);
508  virtual void Print (std::ostream &os) const;
509  virtual TypeId GetInstanceTypeId (void) const;
510 
511 private:
512  uint8_t m_frameNo;
513  std::set<uint8_t> m_nackedFrames;
514 
515 }; // class UanHeaderRcAck
516 
517 } // namespace ns3
518 
519 #endif /* UAN_HEADER_RC_H */
Protocol header serialization and deserialization.
Definition: header.h:42
virtual uint32_t Deserialize(Buffer::Iterator start)
void SetNoFrames(uint8_t no)
Set the number of data frames included in this reservation request.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
uint8_t GetRetryNo(void) const
Get the retry number of the RTS packet being cleared.
static TypeId GetTypeId(void)
Register this type.
void SetPropDelay(Time propDelay)
Set the propagation delay as found in handshaking.
Cycle broadcast information.
void SetRateNum(uint16_t rate)
Set the rate number corresponding to data rate of current cycle.
UanHeaderRcCtsGlobal()
Default constructor.
void SetRetryNo(uint8_t no)
Set the retry number of the RTS frame being cleared.
void SetFrameNo(uint8_t frameNum)
Set the frame number of the reservation being transmitted.
virtual void Serialize(Buffer::Iterator start) const
uint8_t GetFrameNo(void) const
Get the reservation frame number being ACKed.
Header used for ACK packets by protocol UanMacRc.
virtual uint32_t Deserialize(Buffer::Iterator start)
uint8_t m_frameNo
Reservation frame number.
def start()
Definition: core.py:1855
virtual uint32_t GetSerializedSize(void) const
virtual uint32_t GetSerializedSize(void) const
uint16_t m_rateNum
Rate number.
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.
Time m_winTime
Window time.
uint8_t m_frameNo
Next frame number.
Time GetWindowTime(void) const
Get the window time (time duration following blocking time to allow RTS transmissions).
Time GetPropDelay(void) const
Get the propagation delay found in handshaking.
uint16_t m_length
Number of bytes (including headers) in data.
void SetWindowTime(Time t)
Set the window time (time duration following blocking time to allow RTS transmissions).
iterator in a Buffer instance
Definition: buffer.h:98
virtual uint32_t GetSerializedSize(void) const
Time GetTimeStamp(void) const
Get the transmit timestamp of this RTS packet.
uint16_t GetRetryRate(void) const
Get the retry rate number.
virtual void Print(std::ostream &os) const
std::set< uint8_t > m_nackedFrames
Marker for nacked frames.
uint8_t m_retryNo
Retry number of received RTS packet.
void SetAddress(Mac8Address addr)
Set the destination address, for scheduling info.
uint8_t GetFrameNo(void) const
Get the frame number of the reservation being transmitted.
Unit
The unit to use to interpret a number representing time.
Definition: nstime.h:109
A class used for addressing MAC8 MAC&#39;s.
Definition: mac8-address.h:42
virtual uint32_t Deserialize(Buffer::Iterator start)
void AddNackedFrame(uint8_t frame)
NACK a frame.
virtual void Serialize(Buffer::Iterator start) const
virtual uint32_t Deserialize(Buffer::Iterator start)
Time m_delay
Delay until transmission.
uint8_t GetNoFrames(void) const
Get the number of data frames in the reservation.
uint8_t GetFrameNo(void) const
Get the frame number.
void SetLength(uint16_t length)
Set the number of data bytes in the reservation.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
void SetTimeStamp(Time timeStamp)
Set RTS transmission time.
Time m_timeStampRts
RX time of RTS packet at gateway.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static TypeId GetTypeId(void)
Register this type.
void SetDelayToTx(Time delay)
Set the time delay from CTS transmission to first data frame arrival.
virtual ~UanHeaderRcAck()
Destructor.
void SetFrameNo(uint8_t frameNo)
Set the RTS frame number being cleared.
Time m_timeStampTx
Timestamp.
Time GetTxTimeStamp(void) const
Get the CTS transmit timestamp.
virtual ~UanHeaderRcCts()
Destructor.
virtual void Serialize(Buffer::Iterator start) const
void SetTxTimeStamp(Time timeStamp)
Set the CTS timestamp.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.
void SetRtsTimeStamp(Time timeStamp)
Set the timestamp for RTS reception.
const std::set< uint8_t > & GetNackedFrames(void) const
Get the set of NACK&#39;ed frames.
static TypeId GetTypeId(void)
Register this type.
uint8_t m_frameNo
Data frame number.
UanHeaderRcData()
Default constructor.
uint8_t GetRetryNo(void) const
Get the retry number of this RTS packet.
uint16_t m_retryRate
Retry rate.
virtual uint32_t Deserialize(Buffer::Iterator start)
Time m_propDelay
Propagation delay.
virtual ~UanHeaderRcRts()
Destructor.
void SetFrameNo(uint8_t frameNo)
Set the frame number of the reservation being acknowledged.
virtual void Serialize(Buffer::Iterator start) const
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
UanHeaderRcCts()
Default constructor.
Mac8Address m_address
Destination of CTS packet.
uint16_t GetLength(void) const
Get the total number of bytes in the reservation, including headers.
static TypeId GetTypeId(void)
Register this type.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
void SetRetryRate(uint16_t rate)
Set the retry rate number for the current cycle.
UanHeaderRcRts()
Default constructor.
uint8_t m_retryNo
Retry number of RTS packet.
~UanHeaderRcCtsGlobal()
Destructor.
virtual void Serialize(Buffer::Iterator start) const
virtual uint32_t GetSerializedSize(void) const
uint8_t m_frameNo
Reservation frame number being cleared.
uint16_t GetRateNum(void) const
Get the data rate number.
a unique identifier for an interface.
Definition: type-id.h:58
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.
uint8_t GetNoNacks(void) const
Get the number of data frames being NACKed.
Time m_timeStamp
RTS TX timestamp.
static TypeId GetTypeId(void)
Register this type.
uint8_t GetFrameNo(void) const
Get the frame number of the RTS being cleared.
void SetRetryNo(uint8_t no)
Set the retry number of this RTS packet.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Mac8Address GetAddress(void) const
Get the destination address, for scheduling info.
Time GetDelayToTx(void) const
Get the time delay from TX time of CTS packet until arrival of first data frame.
virtual uint32_t GetSerializedSize(void) const
uint8_t m_noFrames
Number of data frames in reservation.
Extra data header information.
Definition: uan-header-rc.h:41
UanHeaderRcAck()
Default constructor.
Time GetRtsTimeStamp(void) const
Get the receive time of the RTS being cleared.
void SetFrameNo(uint8_t fno)
Set the frame number.
virtual ~UanHeaderRcData()
Destructor.
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.