A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
lte-spectrum-phy.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009 CTTC
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Nicola Baldo <nbaldo@cttc.es>
7 * Giuseppe Piro <g.piro@poliba.it>
8 * Modified by: Marco Miozzo <mmiozzo@cttc.es> (introduce physical error model)
9 */
10
11#ifndef LTE_SPECTRUM_PHY_H
12#define LTE_SPECTRUM_PHY_H
13
14#include "ff-mac-common.h"
15#include "lte-common.h"
16#include "lte-harq-phy.h"
17#include "lte-interference.h"
18
19#include <ns3/data-rate.h>
20#include <ns3/event-id.h>
21#include <ns3/generic-phy.h>
22#include <ns3/mobility-model.h>
23#include <ns3/net-device.h>
24#include <ns3/nstime.h>
25#include <ns3/packet-burst.h>
26#include <ns3/packet.h>
27#include <ns3/random-variable-stream.h>
28#include <ns3/spectrum-channel.h>
29#include <ns3/spectrum-interference.h>
30#include <ns3/spectrum-phy.h>
31#include <ns3/spectrum-value.h>
32
33#include <map>
34
35namespace ns3
36{
37
38/// TbId_t structure
39struct TbId_t
40{
41 uint16_t m_rnti; ///< RNTI
42 uint8_t m_layer; ///< layer
43
44 public:
45 TbId_t();
46 /**
47 * Constructor
48 *
49 * @param a RNTI
50 * @param b Layer
51 */
52 TbId_t(const uint16_t a, const uint8_t b);
53
54 friend bool operator==(const TbId_t& a, const TbId_t& b);
55 friend bool operator<(const TbId_t& a, const TbId_t& b);
56};
57
58/// tbInfo_t structure
60{
61 uint8_t ndi; ///< New data indicator
62 uint16_t size; ///< Transport block size
63 uint8_t mcs; ///< MCS
64 std::vector<int> rbBitmap; ///< Resource block bitmap
65 uint8_t harqProcessId; ///< HARQ process id
66 uint8_t rv; ///< Redundancy version
67 double mi; ///< Mutual information
68 bool downlink; ///< whether is downlink
69 bool corrupt; ///< whether is corrupt
70 bool harqFeedbackSent; ///< is HARQ feedback sent
71};
72
73typedef std::map<TbId_t, tbInfo_t> expectedTbs_t; ///< expectedTbs_t typedef
74
75class LteNetDevice;
76class AntennaModel;
81
82/**
83 * This method is used by the LteSpectrumPhy to notify the PHY that a
84 * previously started RX attempt has terminated without success
85 */
87/**
88 * This method is used by the LteSpectrumPhy to notify the PHY that a
89 * previously started RX attempt has been successfully completed.
90 *
91 * @param packet the received Packet
92 */
94
95/**
96 * This method is used by the LteSpectrumPhy to notify the PHY that a
97 * previously started RX of a control frame attempt has been
98 * successfully completed.
99 *
100 * @param packet the received Packet
101 */
103
104/**
105 * This method is used by the LteSpectrumPhy to notify the PHY that a
106 * previously started RX of a control frame attempt has terminated
107 * without success.
108 */
110
111/**
112 * This method is used by the LteSpectrumPhy to notify the UE PHY that a
113 * PSS has been received
114 */
116
117/**
118 * This method is used by the LteSpectrumPhy to notify the PHY about
119 * the status of a certain DL HARQ process
120 */
122
123/**
124 * This method is used by the LteSpectrumPhy to notify the PHY about
125 * the status of a certain UL HARQ process
126 */
128
129/**
130 * @ingroup lte
131 * @class LteSpectrumPhy
132 *
133 * The LteSpectrumPhy models the physical layer of LTE
134 *
135 * It supports a single antenna model instance which is
136 * used for both transmission and reception.
137 */
139{
140 public:
142 ~LteSpectrumPhy() override;
143
144 /**
145 * PHY states
146 */
157
158 /**
159 * @brief Get the type ID.
160 * @return the object TypeId
161 */
162 static TypeId GetTypeId();
163 // inherited from Object
164 void DoDispose() override;
165
166 // inherited from SpectrumPhy
167 void SetChannel(Ptr<SpectrumChannel> c) override;
168 void SetMobility(Ptr<MobilityModel> m) override;
169 void SetDevice(Ptr<NetDevice> d) override;
170 Ptr<MobilityModel> GetMobility() const override;
171 Ptr<NetDevice> GetDevice() const override;
173 Ptr<Object> GetAntenna() const override;
174 void StartRx(Ptr<SpectrumSignalParameters> params) override;
175 /**
176 * @brief Start receive data function
177 * @param params Ptr<LteSpectrumSignalParametersDataFrame>
178 */
180 /**
181 * @brief Start receive DL control function
182 * @param lteDlCtrlRxParams Ptr<LteSpectrumSignalParametersDlCtrlFrame>
183 */
185 /**
186 * @brief Start receive UL SRS function
187 * @param lteUlSrsRxParams Ptr<LteSpectrumSignalParametersUlSrsFrame>
188 */
190 /**
191 * @brief Set HARQ phy function
192 * @param harq the HARQ phy module
193 */
195
196 /**
197 * set the Power Spectral Density of outgoing signals in W/Hz.
198 *
199 * @param txPsd
200 */
202
203 /**
204 * @brief set the noise power spectral density
205 * @param noisePsd the Noise Power Spectral Density in power units
206 * (Watt, Pascal...) per Hz.
207 */
209
210 /**
211 * reset the internal state
212 *
213 */
214 void Reset();
215
216 /**
217 * set the AntennaModel to be used
218 *
219 * @param a the Antenna Model
220 */
222
223 /**
224 * Start a transmission of data frame in DL and UL
225 *
226 *
227 * @param pb the burst of packets to be transmitted in PDSCH/PUSCH
228 * @param ctrlMsgList the list of LteControlMessage to send
229 * @param duration the duration of the data frame
230 *
231 * @return true if an error occurred and the transmission was not
232 * started, false otherwise.
233 */
235 std::list<Ptr<LteControlMessage>> ctrlMsgList,
236 Time duration);
237
238 /**
239 * Start a transmission of control frame in DL
240 *
241 *
242 * @param ctrlMsgList the burst of control messages to be transmitted
243 * @param pss the flag for transmitting the primary synchronization signal
244 *
245 * @return true if an error occurred and the transmission was not
246 * started, false otherwise.
247 */
248 bool StartTxDlCtrlFrame(std::list<Ptr<LteControlMessage>> ctrlMsgList, bool pss);
249
250 /**
251 * Start a transmission of control frame in UL
252 *
253 * @return true if an error occurred and the transmission was not
254 * started, false otherwise.
255 */
256 bool StartTxUlSrsFrame();
257
258 /**
259 * set the callback for the end of a RX in error, as part of the
260 * interconnections between the PHY and the MAC
261 *
262 * @param c the callback
263 */
265
266 /**
267 * set the callback for the successful end of a RX, as part of the
268 * interconnections between the PHY and the MAC
269 *
270 * @param c the callback
271 */
273
274 /**
275 * set the callback for the successful end of a RX ctrl frame, as part
276 * of the interconnections between the LteSpectrumPhy and the PHY
277 *
278 * @param c the callback
279 */
281
282 /**
283 * set the callback for the erroneous end of a RX ctrl frame, as part
284 * of the interconnections between the LteSpectrumPhy and the PHY
285 *
286 * @param c the callback
287 */
289
290 /**
291 * set the callback for the reception of the PSS as part
292 * of the interconnections between the LteSpectrumPhy and the UE PHY
293 *
294 * @param c the callback
295 */
297
298 /**
299 * set the callback for the DL HARQ feedback as part of the
300 * interconnections between the LteSpectrumPhy and the PHY
301 *
302 * @param c the callback
303 */
305
306 /**
307 * set the callback for the UL HARQ feedback as part of the
308 * interconnections between the LteSpectrumPhy and the PHY
309 *
310 * @param c the callback
311 */
313
314 /**
315 * @brief Set the state of the phy layer
316 * @param newState the state
317 */
318 void SetState(State newState);
319
320 /**
321 *
322 *
323 * @param cellId the Cell Identifier
324 */
325 void SetCellId(uint16_t cellId);
326
327 /**
328 *
329 * @param componentCarrierId the component carrier id
330 */
331 void SetComponentCarrierId(uint8_t componentCarrierId);
332
333 /**
334 *
335 *
336 * @param p the new LteChunkProcessor to be added to the RS power
337 * processing chain
338 */
340
341 /**
342 *
343 *
344 * @param p the new LteChunkProcessor to be added to the Data Channel power
345 * processing chain
346 */
348
349 /**
350 *
351 *
352 * @param p the new LteChunkProcessor to be added to the data processing chain
353 */
355
356 /**
357 * LteChunkProcessor devoted to evaluate interference + noise power
358 * in control symbols of the subframe
359 *
360 * @param p the new LteChunkProcessor to be added to the data processing chain
361 */
363
364 /**
365 * LteChunkProcessor devoted to evaluate interference + noise power
366 * in data symbols of the subframe
367 *
368 * @param p the new LteChunkProcessor to be added to the data processing chain
369 */
371
372 /**
373 *
374 *
375 * @param p the new LteChunkProcessor to be added to the ctrl processing chain
376 */
378
379 /**
380 *
381 *
382 * @param rnti the RNTI of the source of the TB
383 * @param ndi new data indicator flag
384 * @param size the size of the TB
385 * @param mcs the MCS of the TB
386 * @param map the map of RB(s) used
387 * @param layer the layer (in case of MIMO tx)
388 * @param harqId the id of the HARQ process (valid only for DL)
389 * @param rv the redundancy version
390 * @param downlink true when the TB is for DL
391 */
392 void AddExpectedTb(uint16_t rnti,
393 uint8_t ndi,
394 uint16_t size,
395 uint8_t mcs,
396 std::vector<int> map,
397 uint8_t layer,
398 uint8_t harqId,
399 uint8_t rv,
400 bool downlink);
401 /**
402 * @brief Remove expected transport block.
403 *
404 * When UE context at eNodeB is removed and if UL TB is expected to be received
405 * but not transmitted due to break in radio link. The TB with different rnti or lcid
406 * remains during the transmission of a new TB and causes problems with
407 * m_ulPhyReception trace, since the UE context was already removed. TB has to be
408 * removed when ue context at eNodeB is removed
409 *
410 * @param rnti The RNTI of the UE
411 */
412 void RemoveExpectedTb(uint16_t rnti);
413
414 /**
415 *
416 *
417 * @param sinr vector of sinr perceived per each RB
418 */
419 void UpdateSinrPerceived(const SpectrumValue& sinr);
420
421 /**
422 *
423 *
424 * @param txMode UE transmission mode (SISO, MIMO tx diversity, ...)
425 */
426 void SetTransmissionMode(uint8_t txMode);
427
428 /**
429 *
430 * @return the previously set channel
431 */
433
434 /// allow LteUePhy class friend access
435 friend class LteUePhy;
436
437 /**
438 * Assign a fixed random variable stream number to the random variables
439 * used by this model. Return the number of streams (possibly zero) that
440 * have been assigned.
441 *
442 * @param stream first stream index to use
443 * @return the number of stream indices assigned by this model
444 */
445 int64_t AssignStreams(int64_t stream);
446
447 private:
448 /**
449 * @brief Change state function
450 *
451 * @param newState the new state to set
452 */
453 void ChangeState(State newState);
454 /// End transmit data function
455 void EndTxData();
456 /// End transmit DL control function
457 void EndTxDlCtrl();
458 /// End transmit UL SRS function
459 void EndTxUlSrs();
460 /// End receive data function
461 void EndRxData();
462 /// End receive DL control function
463 void EndRxDlCtrl();
464 /// End receive UL SRS function
465 void EndRxUlSrs();
466
467 /**
468 * @brief Set transmit mode gain function
469 *
470 * @param txMode the transmit mode
471 * @param gain the gain to set
472 */
473 void SetTxModeGain(uint8_t txMode, double gain);
474
475 Ptr<MobilityModel> m_mobility; ///< the modility model
476 Ptr<AntennaModel> m_antenna; ///< the antenna model
477 Ptr<NetDevice> m_device; ///< the device
478
480
482 Ptr<SpectrumValue> m_txPsd; ///< the transmit PSD
483 Ptr<PacketBurst> m_txPacketBurst; ///< the transmit packet burst
484 std::list<Ptr<PacketBurst>> m_rxPacketBurstList; ///< the receive burst list
485
486 std::list<Ptr<LteControlMessage>> m_txControlMessageList; ///< the transmit control message list
487 std::list<Ptr<LteControlMessage>> m_rxControlMessageList; ///< the receive control message list
488
489 State m_state; ///< the state
490 Time m_firstRxStart; ///< the first receive start
491 Time m_firstRxDuration; ///< the first receive duration
492
494 m_phyTxStartTrace; ///< the phy transmit start trace callback
495 TracedCallback<Ptr<const PacketBurst>> m_phyTxEndTrace; ///< the phy transmit end trace callback
497 m_phyRxStartTrace; ///< the phy receive start trace callback
498 TracedCallback<Ptr<const Packet>> m_phyRxEndOkTrace; ///< the phy receive end ok trace callback
500 m_phyRxEndErrorTrace; ///< the phy receive end error trace callback
501
503 m_ltePhyRxDataEndErrorCallback; ///< the LTE phy receive data end error callback
505 m_ltePhyRxDataEndOkCallback; ///< the LTE phy receive data end ok callback
506
508 m_ltePhyRxCtrlEndOkCallback; ///< the LTE phy receive control end ok callback
510 m_ltePhyRxCtrlEndErrorCallback; ///< the LTE phy receive control end error callback
511 LtePhyRxPssCallback m_ltePhyRxPssCallback; ///< the LTE phy receive PSS callback
512
513 Ptr<LteInterference> m_interferenceData; ///< the data interference
514 Ptr<LteInterference> m_interferenceCtrl; ///< the control interference
515
516 uint16_t m_cellId; ///< the cell ID
517
518 uint8_t m_componentCarrierId; ///< the component carrier ID
519 expectedTbs_t m_expectedTbs; ///< the expected TBS
520 SpectrumValue m_sinrPerceived; ///< the preceived SINR
521
522 /// Provides uniform random variables.
524 bool m_dataErrorModelEnabled; ///< when true (default) the phy error model is enabled
525 bool m_ctrlErrorModelEnabled; ///< when true (default) the phy error model is enabled for DL
526 ///< ctrl frame
527
528 uint8_t m_transmissionMode; ///< for UEs: store the transmission mode
529 uint8_t m_layersNum; ///< layers num
530 std::vector<double> m_txModeGain; ///< duplicate value of LteUePhy
531
532 Ptr<LteHarqPhy> m_harqPhyModule; ///< the HARQ phy module
534 m_ltePhyDlHarqFeedbackCallback; ///< the LTE phy DL HARQ feedback callback
536 m_ltePhyUlHarqFeedbackCallback; ///< the LTE phy UL HARQ feedback callback
537
538 /**
539 * Trace information regarding PHY stats from DL Rx perspective
540 * PhyReceptionStatParameters (see lte-common.h)
541 */
543
544 /**
545 * Trace information regarding PHY stats from UL Rx perspective
546 * PhyReceptionStatParameters (see lte-common.h)
547 */
549
550 EventId m_endTxEvent; ///< end transmit event
551 EventId m_endRxDataEvent; ///< end receive data event
552 EventId m_endRxDlCtrlEvent; ///< end receive DL control event
553 EventId m_endRxUlSrsEvent; ///< end receive UL SRS event
554};
555
556} // namespace ns3
557
558#endif /* LTE_SPECTRUM_PHY_H */
interface for antenna radiation pattern models
Callback template class.
Definition callback.h:422
An identifier for simulation events.
Definition event-id.h:45
The LteControlMessage provides a basic implementations for control messages (such as PDCCH allocation...
LteNetDevice provides basic implementation for all LTE network devices.
The LteSpectrumPhy models the physical layer of LTE.
void RemoveExpectedTb(uint16_t rnti)
Remove expected transport block.
Ptr< const SpectrumModel > m_rxSpectrumModel
the spectrum model
TracedCallback< Ptr< const PacketBurst > > m_phyTxEndTrace
the phy transmit end trace callback
bool m_dataErrorModelEnabled
when true (default) the phy error model is enabled
void SetState(State newState)
Set the state of the phy layer.
Ptr< LteInterference > m_interferenceData
the data interference
uint8_t m_transmissionMode
for UEs: store the transmission mode
EventId m_endRxDlCtrlEvent
end receive DL control event
void AddCtrlSinrChunkProcessor(Ptr< LteChunkProcessor > p)
void AddDataSinrChunkProcessor(Ptr< LteChunkProcessor > p)
LtePhyUlHarqFeedbackCallback m_ltePhyUlHarqFeedbackCallback
the LTE phy UL HARQ feedback callback
void AddExpectedTb(uint16_t rnti, uint8_t ndi, uint16_t size, uint8_t mcs, std::vector< int > map, uint8_t layer, uint8_t harqId, uint8_t rv, bool downlink)
Ptr< MobilityModel > GetMobility() const override
Get the associated MobilityModel instance.
Ptr< const SpectrumModel > GetRxSpectrumModel() const override
void SetHarqPhyModule(Ptr< LteHarqPhy > harq)
Set HARQ phy function.
LtePhyRxPssCallback m_ltePhyRxPssCallback
the LTE phy receive PSS callback
void StartRxDlCtrl(Ptr< LteSpectrumSignalParametersDlCtrlFrame > lteDlCtrlRxParams)
Start receive DL control function.
void StartRxUlSrs(Ptr< LteSpectrumSignalParametersUlSrsFrame > lteUlSrsRxParams)
Start receive UL SRS function.
void AddDataPowerChunkProcessor(Ptr< LteChunkProcessor > p)
EventId m_endRxDataEvent
end receive data event
void SetLtePhyRxPssCallback(LtePhyRxPssCallback c)
set the callback for the reception of the PSS as part of the interconnections between the LteSpectrum...
void SetAntenna(Ptr< AntennaModel > a)
set the AntennaModel to be used
bool StartTxDataFrame(Ptr< PacketBurst > pb, std::list< Ptr< LteControlMessage > > ctrlMsgList, Time duration)
Start a transmission of data frame in DL and UL.
void StartRxData(Ptr< LteSpectrumSignalParametersDataFrame > params)
Start receive data function.
TracedCallback< PhyReceptionStatParameters > m_dlPhyReception
Trace information regarding PHY stats from DL Rx perspective PhyReceptionStatParameters (see lte-comm...
Ptr< NetDevice > m_device
the device
Ptr< SpectrumChannel > GetChannel()
TracedCallback< Ptr< const PacketBurst > > m_phyTxStartTrace
the phy transmit start trace callback
void DoDispose() override
Destructor implementation.
void EndTxData()
End transmit data function.
void SetTransmissionMode(uint8_t txMode)
void SetLtePhyRxDataEndErrorCallback(LtePhyRxDataEndErrorCallback c)
set the callback for the end of a RX in error, as part of the interconnections between the PHY and th...
SpectrumValue m_sinrPerceived
the preceived SINR
Ptr< SpectrumValue > m_txPsd
the transmit PSD
void AddInterferenceDataChunkProcessor(Ptr< LteChunkProcessor > p)
LteChunkProcessor devoted to evaluate interference + noise power in data symbols of the subframe.
void SetDevice(Ptr< NetDevice > d) override
Set the associated NetDevice instance.
void ChangeState(State newState)
Change state function.
void SetTxModeGain(uint8_t txMode, double gain)
Set transmit mode gain function.
std::vector< double > m_txModeGain
duplicate value of LteUePhy
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
Ptr< NetDevice > GetDevice() const override
Get the associated NetDevice instance.
Time m_firstRxStart
the first receive start
Ptr< LteHarqPhy > m_harqPhyModule
the HARQ phy module
void SetLtePhyRxDataEndOkCallback(LtePhyRxDataEndOkCallback c)
set the callback for the successful end of a RX, as part of the interconnections between the PHY and ...
void EndRxUlSrs()
End receive UL SRS function.
void SetLtePhyUlHarqFeedbackCallback(LtePhyUlHarqFeedbackCallback c)
set the callback for the UL HARQ feedback as part of the interconnections between the LteSpectrumPhy ...
void SetChannel(Ptr< SpectrumChannel > c) override
Set the channel attached to this device.
void SetComponentCarrierId(uint8_t componentCarrierId)
TracedCallback< Ptr< const PacketBurst > > m_phyRxStartTrace
the phy receive start trace callback
expectedTbs_t m_expectedTbs
the expected TBS
void EndTxUlSrs()
End transmit UL SRS function.
void SetNoisePowerSpectralDensity(Ptr< const SpectrumValue > noisePsd)
set the noise power spectral density
void UpdateSinrPerceived(const SpectrumValue &sinr)
Ptr< SpectrumChannel > m_channel
the channel
void EndRxDlCtrl()
End receive DL control function.
void SetTxPowerSpectralDensity(Ptr< SpectrumValue > txPsd)
set the Power Spectral Density of outgoing signals in W/Hz.
EventId m_endTxEvent
end transmit event
LtePhyRxDataEndOkCallback m_ltePhyRxDataEndOkCallback
the LTE phy receive data end ok callback
void SetLtePhyRxCtrlEndErrorCallback(LtePhyRxCtrlEndErrorCallback c)
set the callback for the erroneous end of a RX ctrl frame, as part of the interconnections between th...
uint16_t m_cellId
the cell ID
Ptr< AntennaModel > m_antenna
the antenna model
void SetLtePhyDlHarqFeedbackCallback(LtePhyDlHarqFeedbackCallback c)
set the callback for the DL HARQ feedback as part of the interconnections between the LteSpectrumPhy ...
Time m_firstRxDuration
the first receive duration
Ptr< PacketBurst > m_txPacketBurst
the transmit packet burst
uint8_t m_componentCarrierId
the component carrier ID
void StartRx(Ptr< SpectrumSignalParameters > params) override
Notify the SpectrumPhy instance of an incoming signal.
Ptr< Object > GetAntenna() const override
Get the AntennaModel used by this SpectrumPhy instance for transmission and/or reception.
LtePhyRxDataEndErrorCallback m_ltePhyRxDataEndErrorCallback
the LTE phy receive data end error callback
bool StartTxDlCtrlFrame(std::list< Ptr< LteControlMessage > > ctrlMsgList, bool pss)
Start a transmission of control frame in DL.
static TypeId GetTypeId()
Get the type ID.
uint8_t m_layersNum
layers num
Ptr< MobilityModel > m_mobility
the modility model
TracedCallback< PhyReceptionStatParameters > m_ulPhyReception
Trace information regarding PHY stats from UL Rx perspective PhyReceptionStatParameters (see lte-comm...
void SetMobility(Ptr< MobilityModel > m) override
Set the mobility model associated with this device.
LtePhyDlHarqFeedbackCallback m_ltePhyDlHarqFeedbackCallback
the LTE phy DL HARQ feedback callback
void EndTxDlCtrl()
End transmit DL control function.
std::list< Ptr< LteControlMessage > > m_rxControlMessageList
the receive control message list
void AddRsPowerChunkProcessor(Ptr< LteChunkProcessor > p)
Ptr< LteInterference > m_interferenceCtrl
the control interference
TracedCallback< Ptr< const Packet > > m_phyRxEndErrorTrace
the phy receive end error trace callback
void EndRxData()
End receive data function.
std::list< Ptr< LteControlMessage > > m_txControlMessageList
the transmit control message list
bool m_ctrlErrorModelEnabled
when true (default) the phy error model is enabled for DL ctrl frame
std::list< Ptr< PacketBurst > > m_rxPacketBurstList
the receive burst list
void AddInterferenceCtrlChunkProcessor(Ptr< LteChunkProcessor > p)
LteChunkProcessor devoted to evaluate interference + noise power in control symbols of the subframe.
TracedCallback< Ptr< const Packet > > m_phyRxEndOkTrace
the phy receive end ok trace callback
bool StartTxUlSrsFrame()
Start a transmission of control frame in UL.
LtePhyRxCtrlEndErrorCallback m_ltePhyRxCtrlEndErrorCallback
the LTE phy receive control end error callback
void SetLtePhyRxCtrlEndOkCallback(LtePhyRxCtrlEndOkCallback c)
set the callback for the successful end of a RX ctrl frame, as part of the interconnections between t...
void Reset()
reset the internal state
EventId m_endRxUlSrsEvent
end receive UL SRS event
void SetCellId(uint16_t cellId)
LtePhyRxCtrlEndOkCallback m_ltePhyRxCtrlEndOkCallback
the LTE phy receive control end ok callback
Ptr< UniformRandomVariable > m_random
Provides uniform random variables.
The LteSpectrumPhy models the physical layer of LTE.
Definition lte-ue-phy.h:41
Smart pointer class similar to boost::intrusive_ptr.
Abstract base class for Spectrum-aware PHY layers.
Set of values corresponding to a given SpectrumModel.
Simulation virtual time values and global simulation resolution.
Definition nstime.h:94
Forward calls to a chain of Callback.
a unique identifier for an interface.
Definition type-id.h:48
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< void, Ptr< Packet > > LtePhyRxDataEndOkCallback
This method is used by the LteSpectrumPhy to notify the PHY that a previously started RX attempt has ...
Callback< void, uint16_t, Ptr< SpectrumValue > > LtePhyRxPssCallback
This method is used by the LteSpectrumPhy to notify the UE PHY that a PSS has been received.
std::map< TbId_t, tbInfo_t > expectedTbs_t
expectedTbs_t typedef
Callback< void > LtePhyRxDataEndErrorCallback
This method is used by the LteSpectrumPhy to notify the PHY that a previously started RX attempt has ...
Callback< void, std::list< Ptr< LteControlMessage > > > LtePhyRxCtrlEndOkCallback
This method is used by the LteSpectrumPhy to notify the PHY that a previously started RX of a control...
Callback< void, DlInfoListElement_s > LtePhyDlHarqFeedbackCallback
This method is used by the LteSpectrumPhy to notify the PHY about the status of a certain DL HARQ pro...
Callback< void > LtePhyRxCtrlEndErrorCallback
This method is used by the LteSpectrumPhy to notify the PHY that a previously started RX of a control...
Callback< void, UlInfoListElement_s > LtePhyUlHarqFeedbackCallback
This method is used by the LteSpectrumPhy to notify the PHY about the status of a certain UL HARQ pro...
Signal parameters for Lte Data Frame (PDSCH), and eventually after some control messages through othe...
Signal parameters for Lte DL Ctrl Frame (RS, PCFICH and PDCCH)
TbId_t structure.
friend bool operator<(const TbId_t &a, const TbId_t &b)
Less than operator.
uint8_t m_layer
layer
uint16_t m_rnti
RNTI.
friend bool operator==(const TbId_t &a, const TbId_t &b)
Equality operator.
tbInfo_t structure
uint8_t harqProcessId
HARQ process id.
uint8_t mcs
MCS.
std::vector< int > rbBitmap
Resource block bitmap.
uint8_t rv
Redundancy version.
bool corrupt
whether is corrupt
bool harqFeedbackSent
is HARQ feedback sent
double mi
Mutual information.
bool downlink
whether is downlink
uint16_t size
Transport block size.
uint8_t ndi
New data indicator.