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
31namespace ns3 {
32
41class UanHeaderRcData : public Header
42{
43public:
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;
101 virtual void Print (std::ostream &os) const;
102 virtual TypeId GetInstanceTypeId (void) const;
103
104private:
105 uint8_t m_frameNo;
107
108}; // class UanHeaderRcData
109
117class UanHeaderRcRts : public Header
118{
119public:
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;
219 virtual void Print (std::ostream &os) const;
220 virtual TypeId GetInstanceTypeId (void) const;
221
222private:
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{
240public:
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;
323 virtual void Print (std::ostream &os) const;
324 virtual TypeId GetInstanceTypeId (void) const;
325
326private:
329 uint16_t m_retryRate;
330 uint16_t m_rateNum;
331
332}; // class UanHeaderRcCtsGlobal
333
342class UanHeaderRcCts : public Header
343{
344public:
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;
441 virtual void Print (std::ostream &os) const;
442 virtual TypeId GetInstanceTypeId (void) const;
443
444private:
445 uint8_t m_frameNo;
447 uint8_t m_retryNo;
450
451}; // class UanHeaderRcCts
452
458class UanHeaderRcAck : public Header
459{
460public:
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;
508 virtual void Print (std::ostream &os) const;
509 virtual TypeId GetInstanceTypeId (void) const;
510
511private:
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 */
iterator in a Buffer instance
Definition: buffer.h:99
Protocol header serialization and deserialization.
Definition: header.h:43
A class used for addressing MAC8 MAC's.
Definition: mac8-address.h:43
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
Unit
The unit to use to interpret a number representing time.
Definition: nstime.h:109
a unique identifier for an interface.
Definition: type-id.h:59
Header used for ACK packets by protocol UanMacRc.
virtual void Serialize(Buffer::Iterator start) const
uint8_t m_frameNo
Next frame number.
static TypeId GetTypeId(void)
Register this type.
std::set< uint8_t > m_nackedFrames
Marker for nacked frames.
virtual uint32_t GetSerializedSize(void) const
uint8_t GetFrameNo(void) const
Get the reservation frame number being ACKed.
UanHeaderRcAck()
Default constructor.
virtual ~UanHeaderRcAck()
Destructor.
const std::set< uint8_t > & GetNackedFrames(void) const
Get the set of NACK'ed frames.
void AddNackedFrame(uint8_t frame)
NACK a frame.
virtual void Print(std::ostream &os) const
virtual uint32_t Deserialize(Buffer::Iterator start)
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
uint8_t GetNoNacks(void) const
Get the number of data frames being NACKed.
void SetFrameNo(uint8_t frameNo)
Set the frame number of the reservation being acknowledged.
Cycle broadcast information.
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.
UanHeaderRcCtsGlobal()
Default constructor.
static TypeId GetTypeId(void)
Register this type.
uint16_t GetRetryRate(void) const
Get the retry rate number.
virtual void Serialize(Buffer::Iterator start) const
void SetRateNum(uint16_t rate)
Set the rate number corresponding to data rate of current cycle.
void SetRetryRate(uint16_t rate)
Set the retry rate number for the current cycle.
Time m_timeStampTx
Timestamp.
void SetTxTimeStamp(Time timeStamp)
Set the CTS timestamp.
Time m_winTime
Window time.
Time GetTxTimeStamp(void) const
Get the CTS transmit timestamp.
uint16_t m_retryRate
Retry rate.
uint16_t m_rateNum
Rate number.
uint16_t GetRateNum(void) const
Get the data rate number.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
virtual uint32_t GetSerializedSize(void) const
void SetWindowTime(Time t)
Set the window time (time duration following blocking time to allow RTS transmissions).
Time GetWindowTime(void) const
Get the window time (time duration following blocking time to allow RTS transmissions).
virtual uint32_t Deserialize(Buffer::Iterator start)
~UanHeaderRcCtsGlobal()
Destructor.
virtual void Serialize(Buffer::Iterator start) const
virtual ~UanHeaderRcCts()
Destructor.
void SetRtsTimeStamp(Time timeStamp)
Set the timestamp for RTS reception.
Mac8Address GetAddress(void) const
Get the destination address, for scheduling info.
UanHeaderRcCts()
Default constructor.
void SetFrameNo(uint8_t frameNo)
Set the RTS frame number being cleared.
virtual uint32_t GetSerializedSize(void) const
void SetDelayToTx(Time delay)
Set the time delay from CTS transmission to first data frame arrival.
virtual uint32_t Deserialize(Buffer::Iterator start)
Mac8Address m_address
Destination of CTS packet.
Time m_delay
Delay until transmission.
Time m_timeStampRts
RX time of RTS packet at gateway.
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.
uint8_t GetFrameNo(void) const
Get the frame number of the RTS being cleared.
Time GetRtsTimeStamp(void) const
Get the receive time of the RTS being cleared.
uint8_t GetRetryNo(void) const
Get the retry number of the RTS packet being cleared.
uint8_t m_frameNo
Reservation frame number being cleared.
static TypeId GetTypeId(void)
Register this type.
void SetRetryNo(uint8_t no)
Set the retry number of the RTS frame being cleared.
Time GetDelayToTx(void) const
Get the time delay from TX time of CTS packet until arrival of first data frame.
void SetAddress(Mac8Address addr)
Set the destination address, for scheduling info.
uint8_t m_retryNo
Retry number of received RTS packet.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Extra data header information.
Definition: uan-header-rc.h:42
Time m_propDelay
Propagation delay.
virtual uint32_t GetSerializedSize(void) const
uint8_t m_frameNo
Data frame number.
static TypeId GetTypeId(void)
Register this type.
void SetFrameNo(uint8_t frameNum)
Set the frame number of the reservation being transmitted.
UanHeaderRcData()
Default constructor.
virtual void Serialize(Buffer::Iterator start) const
Time GetPropDelay(void) const
Get the propagation delay found in handshaking.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
virtual ~UanHeaderRcData()
Destructor.
void SetPropDelay(Time propDelay)
Set the propagation delay as found in handshaking.
uint8_t GetFrameNo(void) const
Get the frame number of the reservation being transmitted.
virtual uint32_t Deserialize(Buffer::Iterator start)
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.
uint16_t m_length
Number of bytes (including headers) in data.
Time GetTimeStamp(void) const
Get the transmit timestamp of this RTS packet.
void Print(std::ostream &os, Time::Unit unit) const
Specialized Print with Time::Unit declared.
uint8_t GetFrameNo(void) const
Get the frame number.
UanHeaderRcRts()
Default constructor.
static TypeId GetTypeId(void)
Register this type.
uint8_t m_retryNo
Retry number of RTS packet.
void SetFrameNo(uint8_t fno)
Set the frame number.
virtual ~UanHeaderRcRts()
Destructor.
virtual void Serialize(Buffer::Iterator start) const
uint8_t GetNoFrames(void) const
Get the number of data frames in the reservation.
void SetTimeStamp(Time timeStamp)
Set RTS transmission time.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
uint8_t GetRetryNo(void) const
Get the retry number of this RTS packet.
uint8_t m_noFrames
Number of data frames in reservation.
virtual uint32_t Deserialize(Buffer::Iterator start)
uint16_t GetLength(void) const
Get the total number of bytes in the reservation, including headers.
void SetRetryNo(uint8_t no)
Set the retry number of this RTS packet.
uint8_t m_frameNo
Reservation frame number.
virtual uint32_t GetSerializedSize(void) const
void SetNoFrames(uint8_t no)
Set the number of data frames included in this reservation request.
void SetLength(uint16_t length)
Set the number of data bytes in the reservation.
Time m_timeStamp
RTS TX timestamp.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
def start()
Definition: core.py:1853