22 #include "uan-header-rc.h"
28 NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcData);
29 NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcRts);
30 NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcCtsGlobal);
31 NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcCts);
32 NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcAck);
34 UanHeaderRcData::UanHeaderRcData ()
41 UanHeaderRcData::UanHeaderRcData (uint8_t frameNo,
Time propDelay)
44 m_propDelay (propDelay)
49 UanHeaderRcData::~UanHeaderRcData ()
54 UanHeaderRcData::GetTypeId ()
56 static TypeId tid = TypeId (
"ns3::UanHeaderRcData")
58 .AddConstructor<UanHeaderRcData> ()
72 m_propDelay = propDelay;
104 m_frameNo = start.
ReadU8 ();
113 os <<
"Frame No=" << (uint32_t) m_frameNo <<
" Prop Delay=" << m_propDelay.
GetSeconds ();
123 UanHeaderRcRts::UanHeaderRcRts ()
134 UanHeaderRcRts::UanHeaderRcRts (uint8_t frameNo, uint8_t retryNo, uint8_t noFrames, uint16_t length,
Time timeStamp)
137 m_noFrames (noFrames),
139 m_timeStamp (timeStamp),
145 UanHeaderRcRts::~UanHeaderRcRts ()
151 UanHeaderRcRts::GetTypeId ()
153 static TypeId tid = TypeId (
"ns3::UanHeaderRcRts")
154 .SetParent<Header> ()
155 .AddConstructor<UanHeaderRcRts> ()
181 m_timeStamp = timeStamp;
222 return 1 + 1 + 1 + 4 + 2;
240 m_frameNo = rbuf.
ReadU8 ();
241 m_retryNo = rbuf.
ReadU8 ();
242 m_noFrames = rbuf.
ReadU8 ();
252 os <<
"Frame #=" << (uint32_t) m_frameNo <<
" Retry #=" << (uint32_t) m_retryNo <<
" Num Frames=" << (uint32_t) m_noFrames <<
"Length=" << m_length <<
" Time Stamp=" << m_timeStamp.
GetSeconds ();
276 m_retryRate (retryRate),
282 UanHeaderRcCtsGlobal::~UanHeaderRcCtsGlobal ()
288 UanHeaderRcCtsGlobal::GetTypeId ()
290 static TypeId tid = TypeId (
"ns3::UanHeaderRcCtsGlobal")
291 .SetParent<Header> ()
292 .AddConstructor<UanHeaderRcCtsGlobal> ()
332 return m_timeStampTx;
349 return 4 + 4 + 2 + 2;
376 os <<
"CTS Global (Rate #=" << m_rateNum <<
", Retry Rate=" << m_retryRate <<
", TX Time=" << m_timeStampTx.
GetSeconds () <<
", Win Time=" << m_winTime.
GetSeconds () <<
")";
385 UanHeaderRcCts::UanHeaderRcCts ()
396 UanHeaderRcCts::UanHeaderRcCts (uint8_t frameNo, uint8_t retryNo,
Time ts,
Time delay,
UanAddress addr)
407 UanHeaderRcCts::~UanHeaderRcCts ()
413 UanHeaderRcCts::GetTypeId ()
415 static TypeId tid = TypeId (
"ns3::UanHeaderRcCts")
416 .SetParent<Header> ()
417 .AddConstructor<UanHeaderRcCts> ()
432 m_timeStampRts = timeStamp;
462 return m_timeStampRts;
486 return 1 + 1 + 1 + 4 + 4;
505 m_frameNo = rbuf.
ReadU8 ();
506 m_retryNo = rbuf.
ReadU8 ();
507 m_timeStampRts =
Seconds ( ( (
double) rbuf.
ReadU32 ()) / 1000.0 );
516 os <<
"CTS (Addr=" << m_address <<
" Frame #=" << (uint32_t) m_frameNo <<
" Retry #=" << (uint32_t) m_retryNo <<
" RTS Rx Timestamp=" << m_timeStampRts.
GetSeconds () <<
" Delay until TX=" << m_delay.
GetSeconds () <<
")";
525 UanHeaderRcAck::UanHeaderRcAck ()
530 UanHeaderRcAck::~UanHeaderRcAck ()
532 m_nackedFrames.clear ();
536 UanHeaderRcAck::GetTypeId ()
538 static TypeId tid = TypeId (
"ns3::UanHeaderRcAck")
539 .SetParent<Header> ()
540 .AddConstructor<UanHeaderRcAck> ()
548 m_frameNo = noFrames;
554 m_nackedFrames.insert (frame);
557 const std::set<uint8_t> &
560 return m_nackedFrames;
572 return m_nackedFrames.size ();
586 std::set<uint8_t>::iterator it = m_nackedFrames.begin ();
587 for (; it != m_nackedFrames.end (); it++)
597 m_frameNo = rbuf.
ReadU8 ();
598 uint8_t noAcks = rbuf.
ReadU8 ();
599 m_nackedFrames.clear ();
600 for (uint32_t i = 0; i < noAcks; i++)
602 m_nackedFrames.insert (rbuf.
ReadU8 ());
610 os <<
"# Frames=" << (uint32_t) m_frameNo <<
" # nacked=" << (uint32_t)
GetNoNacks () <<
" Nacked: ";
613 std::set<uint8_t>::iterator it = m_nackedFrames.begin ();
614 os << (uint32_t) *it;
616 for (; it != m_nackedFrames.end (); it++)
618 os <<
", " << (uint32_t) *it;
uint32_t GetDistanceFrom(Iterator const &o) const
iterator in a Buffer instance
double GetSeconds(void) const
void WriteU16(uint16_t data)
uint8_t GetAsInt(void) const
Time Seconds(double seconds)
create ns3::Time instances in units of seconds.
void WriteU8(uint8_t data)
void WriteU32(uint32_t data)
a unique identifier for an interface.