23 #include "ofdm-downlink-frame-prefix.h"
24 #include "ns3/address-utils.h"
28 DlFramePrefixIe::DlFramePrefixIe ()
31 m_preamblePresent (0),
37 DlFramePrefixIe::~DlFramePrefixIe ()
42 DlFramePrefixIe::SetRateId (uint8_t rateId)
48 DlFramePrefixIe::SetDiuc (uint8_t diuc)
54 DlFramePrefixIe::SetPreamblePresent (uint8_t preamblePresent)
56 m_preamblePresent = preamblePresent;
60 DlFramePrefixIe::SetLength (uint16_t length)
66 DlFramePrefixIe::SetStartTime (uint16_t startTime)
68 m_startTime = startTime;
72 DlFramePrefixIe::GetRateId (
void)
const
78 DlFramePrefixIe::GetDiuc (
void)
const
84 DlFramePrefixIe::GetPreamblePresent (
void)
const
86 return m_preamblePresent;
90 DlFramePrefixIe::GetLength (
void)
const
96 DlFramePrefixIe::GetStartTime (
void)
const
102 DlFramePrefixIe::GetSize (
void)
const
104 return 1 + 1 + 1 + 2 + 2;
108 DlFramePrefixIe::Write (Buffer::Iterator start)
const
110 Buffer::Iterator i = start;
111 i.WriteU8 (m_rateId);
113 i.WriteU8 (m_preamblePresent);
114 i.WriteU16 (m_length);
115 i.WriteU16 (m_startTime);
120 DlFramePrefixIe::Read (Buffer::Iterator start)
122 Buffer::Iterator i = start;
123 m_rateId = i.ReadU8 ();
124 m_diuc = i.ReadU8 ();
125 m_preamblePresent = i.ReadU8 ();
126 m_length = i.ReadU16 ();
127 m_startTime = i.ReadU16 ();
131 OfdmDownlinkFramePrefix::OfdmDownlinkFramePrefix ()
132 : m_baseStationId (Mac48Address (
"00:00:00:00:00:00")),
134 m_configurationChangeCount (0),
139 OfdmDownlinkFramePrefix::~OfdmDownlinkFramePrefix ()
144 OfdmDownlinkFramePrefix::SetBaseStationId (Mac48Address baseStationId)
146 m_baseStationId = baseStationId;
150 OfdmDownlinkFramePrefix::SetFrameNumber (uint32_t frameNumber)
152 m_frameNumber = frameNumber;
156 OfdmDownlinkFramePrefix::SetConfigurationChangeCount (
157 uint8_t configurationChangeCount)
159 m_configurationChangeCount = configurationChangeCount;
163 OfdmDownlinkFramePrefix::AddDlFramePrefixElement (
164 DlFramePrefixIe dlFramePrefixElement)
166 m_dlFramePrefixElements.push_back (dlFramePrefixElement);
170 OfdmDownlinkFramePrefix::SetHcs (uint8_t hcs)
176 OfdmDownlinkFramePrefix::GetBaseStationId (
void)
const
178 return m_baseStationId;
182 OfdmDownlinkFramePrefix::GetFrameNumber (
void)
const
184 return m_frameNumber;
188 OfdmDownlinkFramePrefix::GetConfigurationChangeCount (
void)
const
190 return m_configurationChangeCount;
193 std::vector<DlFramePrefixIe>
194 OfdmDownlinkFramePrefix::GetDlFramePrefixElements (
void)
const
196 return m_dlFramePrefixElements;
200 OfdmDownlinkFramePrefix::GetHcs (
void)
const
206 OfdmDownlinkFramePrefix::GetName (
void)
const
208 return "OFDM Downlink Frame Prefix";
214 os <<
" base station id = " << m_baseStationId <<
", frame number = "
215 << m_frameNumber <<
", configuration change count = "
216 << (uint32_t) m_configurationChangeCount
217 <<
", number of dl frame prefix elements = "
218 << m_dlFramePrefixElements.size () <<
", hcs = " << (uint32_t) m_hcs;
224 int dlFramePrefixElementsSize = 0;
226 for (std::vector<DlFramePrefixIe>::const_iterator iter =
227 m_dlFramePrefixElements.begin (); iter != m_dlFramePrefixElements.end (); iter++)
230 dlFramePrefixElementsSize += dlFramePrefixElement.GetSize ();
233 return 6 + 4 + 1 + dlFramePrefixElementsSize + 1;
240 WriteTo (i, m_baseStationId);
242 i.
WriteU8 (m_configurationChangeCount);
244 for (std::vector<DlFramePrefixIe>::const_iterator iter =
245 m_dlFramePrefixElements.begin (); iter != m_dlFramePrefixElements.end (); iter++)
248 i = dlFramePrefixElement.Write (i);
258 ReadFrom (i, m_baseStationId);
260 m_configurationChangeCount = i.
ReadU8 ();
267 i = dlFramePrefixElement.Read (i);
269 AddDlFramePrefixElement (dlFramePrefixElement);
271 if (dlFramePrefixElement.GetDiuc () == 14)
void Serialize(Buffer::Iterator start) const
void Print(std::ostream &os) const
iterator in a Buffer instance
This class implements the DL Frame Prefix IE as described by IEEE-802.16 standard.
uint32_t Deserialize(Buffer::Iterator start)
void WriteU8(uint8_t data)
uint32_t GetSerializedSize(void) const
void WriteU32(uint32_t data)