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 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Nicola Baldo <nbaldo@cttc.es>
18 * Giuseppe Piro <g.piro@poliba.it>
19 * Modified by: Marco Miozzo <mmiozzo@cttc.es> (introduce physical error model)
20 */
21
22#ifndef LTE_SPECTRUM_PHY_H
23#define LTE_SPECTRUM_PHY_H
24
25#include "ff-mac-common.h"
26#include "lte-common.h"
27#include "lte-harq-phy.h"
28#include "lte-interference.h"
29
30#include <ns3/data-rate.h>
31#include <ns3/event-id.h>
32#include <ns3/generic-phy.h>
33#include <ns3/mobility-model.h>
34#include <ns3/net-device.h>
35#include <ns3/nstime.h>
36#include <ns3/packet-burst.h>
37#include <ns3/packet.h>
38#include <ns3/random-variable-stream.h>
39#include <ns3/spectrum-channel.h>
40#include <ns3/spectrum-interference.h>
41#include <ns3/spectrum-phy.h>
42#include <ns3/spectrum-value.h>
43
44#include <map>
45
46namespace ns3
47{
48
49/// TbId_t structure
50struct TbId_t
51{
52 uint16_t m_rnti; ///< RNTI
53 uint8_t m_layer; ///< layer
54
55 public:
56 TbId_t();
57 /**
58 * Constructor
59 *
60 * \param a RNTI
61 * \param b Layer
62 */
63 TbId_t(const uint16_t a, const uint8_t b);
64
65 friend bool operator==(const TbId_t& a, const TbId_t& b);
66 friend bool operator<(const TbId_t& a, const TbId_t& b);
67};
68
69/// tbInfo_t structure
71{
72 uint8_t ndi; ///< New data indicator
73 uint16_t size; ///< Transport block size
74 uint8_t mcs; ///< MCS
75 std::vector<int> rbBitmap; ///< Resource block bitmap
76 uint8_t harqProcessId; ///< HARQ process id
77 uint8_t rv; ///< Redundancy version
78 double mi; ///< Mutual information
79 bool downlink; ///< whether is downlink
80 bool corrupt; ///< whether is corrupt
81 bool harqFeedbackSent; ///< is HARQ feedback sent
82};
83
84typedef std::map<TbId_t, tbInfo_t> expectedTbs_t; ///< expectedTbs_t typedef
85
86class LteNetDevice;
87class AntennaModel;
92
93/**
94 * This method is used by the LteSpectrumPhy to notify the PHY that a
95 * previously started RX attempt has terminated without success
96 */
98/**
99 * This method is used by the LteSpectrumPhy to notify the PHY that a
100 * previously started RX attempt has been successfully completed.
101 *
102 * @param packet the received Packet
103 */
105
106/**
107 * This method is used by the LteSpectrumPhy to notify the PHY that a
108 * previously started RX of a control frame attempt has been
109 * successfully completed.
110 *
111 * @param packet the received Packet
112 */
114
115/**
116 * This method is used by the LteSpectrumPhy to notify the PHY that a
117 * previously started RX of a control frame attempt has terminated
118 * without success.
119 */
121
122/**
123 * This method is used by the LteSpectrumPhy to notify the UE PHY that a
124 * PSS has been received
125 */
127
128/**
129 * This method is used by the LteSpectrumPhy to notify the PHY about
130 * the status of a certain DL HARQ process
131 */
133
134/**
135 * This method is used by the LteSpectrumPhy to notify the PHY about
136 * the status of a certain UL HARQ process
137 */
139
140/**
141 * \ingroup lte
142 * \class LteSpectrumPhy
143 *
144 * The LteSpectrumPhy models the physical layer of LTE
145 *
146 * It supports a single antenna model instance which is
147 * used for both transmission and reception.
148 */
150{
151 public:
153 ~LteSpectrumPhy() override;
154
155 /**
156 * PHY states
157 */
158 enum State
159 {
167 };
168
169 /**
170 * \brief Get the type ID.
171 * \return the object TypeId
172 */
173 static TypeId GetTypeId();
174 // inherited from Object
175 void DoDispose() override;
176
177 // inherited from SpectrumPhy
178 void SetChannel(Ptr<SpectrumChannel> c) override;
179 void SetMobility(Ptr<MobilityModel> m) override;
180 void SetDevice(Ptr<NetDevice> d) override;
181 Ptr<MobilityModel> GetMobility() const override;
182 Ptr<NetDevice> GetDevice() const override;
184 Ptr<Object> GetAntenna() const override;
185 void StartRx(Ptr<SpectrumSignalParameters> params) override;
186 /**
187 * \brief Start receive data function
188 * \param params Ptr<LteSpectrumSignalParametersDataFrame>
189 */
191 /**
192 * \brief Start receive DL control function
193 * \param lteDlCtrlRxParams Ptr<LteSpectrumSignalParametersDlCtrlFrame>
194 */
196 /**
197 * \brief Start receive UL SRS function
198 * \param lteUlSrsRxParams Ptr<LteSpectrumSignalParametersUlSrsFrame>
199 */
201 /**
202 * \brief Set HARQ phy function
203 * \param harq the HARQ phy module
204 */
206
207 /**
208 * set the Power Spectral Density of outgoing signals in W/Hz.
209 *
210 * @param txPsd
211 */
213
214 /**
215 * \brief set the noise power spectral density
216 * @param noisePsd the Noise Power Spectral Density in power units
217 * (Watt, Pascal...) per Hz.
218 */
220
221 /**
222 * reset the internal state
223 *
224 */
225 void Reset();
226
227 /**
228 * set the AntennaModel to be used
229 *
230 * \param a the Antenna Model
231 */
233
234 /**
235 * Start a transmission of data frame in DL and UL
236 *
237 *
238 * @param pb the burst of packets to be transmitted in PDSCH/PUSCH
239 * @param ctrlMsgList the list of LteControlMessage to send
240 * @param duration the duration of the data frame
241 *
242 * @return true if an error occurred and the transmission was not
243 * started, false otherwise.
244 */
246 std::list<Ptr<LteControlMessage>> ctrlMsgList,
247 Time duration);
248
249 /**
250 * Start a transmission of control frame in DL
251 *
252 *
253 * @param ctrlMsgList the burst of control messages to be transmitted
254 * @param pss the flag for transmitting the primary synchronization signal
255 *
256 * @return true if an error occurred and the transmission was not
257 * started, false otherwise.
258 */
259 bool StartTxDlCtrlFrame(std::list<Ptr<LteControlMessage>> ctrlMsgList, bool pss);
260
261 /**
262 * Start a transmission of control frame in UL
263 *
264 * @return true if an error occurred and the transmission was not
265 * started, false otherwise.
266 */
267 bool StartTxUlSrsFrame();
268
269 /**
270 * set the callback for the end of a RX in error, as part of the
271 * interconnections between the PHY and the MAC
272 *
273 * @param c the callback
274 */
276
277 /**
278 * set the callback for the successful end of a RX, as part of the
279 * interconnections between the PHY and the MAC
280 *
281 * @param c the callback
282 */
284
285 /**
286 * set the callback for the successful end of a RX ctrl frame, as part
287 * of the interconnections between the LteSpectrumPhy and the PHY
288 *
289 * @param c the callback
290 */
292
293 /**
294 * set the callback for the erroneous end of a RX ctrl frame, as part
295 * of the interconnections between the LteSpectrumPhy and the PHY
296 *
297 * @param c the callback
298 */
300
301 /**
302 * set the callback for the reception of the PSS as part
303 * of the interconnections between the LteSpectrumPhy and the UE PHY
304 *
305 * @param c the callback
306 */
308
309 /**
310 * set the callback for the DL HARQ feedback as part of the
311 * interconnections between the LteSpectrumPhy and the PHY
312 *
313 * @param c the callback
314 */
316
317 /**
318 * set the callback for the UL HARQ feedback as part of the
319 * interconnections between the LteSpectrumPhy and the PHY
320 *
321 * @param c the callback
322 */
324
325 /**
326 * \brief Set the state of the phy layer
327 * \param newState the state
328 */
329 void SetState(State newState);
330
331 /**
332 *
333 *
334 * \param cellId the Cell Identifier
335 */
336 void SetCellId(uint16_t cellId);
337
338 /**
339 *
340 * \param componentCarrierId the component carrier id
341 */
342 void SetComponentCarrierId(uint8_t componentCarrierId);
343
344 /**
345 *
346 *
347 * \param p the new LteChunkProcessor to be added to the RS power
348 * processing chain
349 */
351
352 /**
353 *
354 *
355 * \param p the new LteChunkProcessor to be added to the Data Channel power
356 * processing chain
357 */
359
360 /**
361 *
362 *
363 * \param p the new LteChunkProcessor to be added to the data processing chain
364 */
366
367 /**
368 * LteChunkProcessor devoted to evaluate interference + noise power
369 * in control symbols of the subframe
370 *
371 * \param p the new LteChunkProcessor to be added to the data processing chain
372 */
374
375 /**
376 * LteChunkProcessor devoted to evaluate interference + noise power
377 * in data symbols of the subframe
378 *
379 * \param p the new LteChunkProcessor to be added to the data processing chain
380 */
382
383 /**
384 *
385 *
386 * \param p the new LteChunkProcessor to be added to the ctrl processing chain
387 */
389
390 /**
391 *
392 *
393 * \param rnti the RNTI of the source of the TB
394 * \param ndi new data indicator flag
395 * \param size the size of the TB
396 * \param mcs the MCS of the TB
397 * \param map the map of RB(s) used
398 * \param layer the layer (in case of MIMO tx)
399 * \param harqId the id of the HARQ process (valid only for DL)
400 * \param rv the redundancy version
401 * \param downlink true when the TB is for DL
402 */
403 void AddExpectedTb(uint16_t rnti,
404 uint8_t ndi,
405 uint16_t size,
406 uint8_t mcs,
407 std::vector<int> map,
408 uint8_t layer,
409 uint8_t harqId,
410 uint8_t rv,
411 bool downlink);
412 /**
413 * \brief Remove expected transport block.
414 *
415 * When UE context at eNodeB is removed and if UL TB is expected to be received
416 * but not transmitted due to break in radio link. The TB with different rnti or lcid
417 * remains during the transmission of a new TB and causes problems with
418 * m_ulPhyReception trace, since the UE context was already removed. TB has to be
419 * removed when ue context at eNodeB is removed
420 *
421 * \param rnti The RNTI of the UE
422 */
423 void RemoveExpectedTb(uint16_t rnti);
424
425 /**
426 *
427 *
428 * \param sinr vector of sinr perceived per each RB
429 */
430 void UpdateSinrPerceived(const SpectrumValue& sinr);
431
432 /**
433 *
434 *
435 * \param txMode UE transmission mode (SISO, MIMO tx diversity, ...)
436 */
437 void SetTransmissionMode(uint8_t txMode);
438
439 /**
440 *
441 * \return the previously set channel
442 */
444
445 /// allow LteUePhy class friend access
446 friend class LteUePhy;
447
448 /**
449 * Assign a fixed random variable stream number to the random variables
450 * used by this model. Return the number of streams (possibly zero) that
451 * have been assigned.
452 *
453 * \param stream first stream index to use
454 * \return the number of stream indices assigned by this model
455 */
456 int64_t AssignStreams(int64_t stream);
457
458 private:
459 /**
460 * \brief Change state function
461 *
462 * \param newState the new state to set
463 */
464 void ChangeState(State newState);
465 /// End transmit data function
466 void EndTxData();
467 /// End transmit DL control function
468 void EndTxDlCtrl();
469 /// End transmit UL SRS function
470 void EndTxUlSrs();
471 /// End receive data function
472 void EndRxData();
473 /// End receive DL control function
474 void EndRxDlCtrl();
475 /// End receive UL SRS function
476 void EndRxUlSrs();
477
478 /**
479 * \brief Set transmit mode gain function
480 *
481 * \param txMode the transmit mode
482 * \param gain the gain to set
483 */
484 void SetTxModeGain(uint8_t txMode, double gain);
485
486 Ptr<MobilityModel> m_mobility; ///< the modility model
487 Ptr<AntennaModel> m_antenna; ///< the antenna model
488 Ptr<NetDevice> m_device; ///< the device
489
491
493 Ptr<SpectrumValue> m_txPsd; ///< the transmit PSD
494 Ptr<PacketBurst> m_txPacketBurst; ///< the transmit packet burst
495 std::list<Ptr<PacketBurst>> m_rxPacketBurstList; ///< the receive burst list
496
497 std::list<Ptr<LteControlMessage>> m_txControlMessageList; ///< the transmit control message list
498 std::list<Ptr<LteControlMessage>> m_rxControlMessageList; ///< the receive control message list
499
500 State m_state; ///< the state
501 Time m_firstRxStart; ///< the first receive start
502 Time m_firstRxDuration; ///< the first receive duration
503
505 m_phyTxStartTrace; ///< the phy transmit start trace callback
506 TracedCallback<Ptr<const PacketBurst>> m_phyTxEndTrace; ///< the phy transmit end trace callback
508 m_phyRxStartTrace; ///< the phy receive start trace callback
509 TracedCallback<Ptr<const Packet>> m_phyRxEndOkTrace; ///< the phy receive end ok trace callback
511 m_phyRxEndErrorTrace; ///< the phy receive end error trace callback
512
514 m_ltePhyRxDataEndErrorCallback; ///< the LTE phy receive data end error callback
516 m_ltePhyRxDataEndOkCallback; ///< the LTE phy receive data end ok callback
517
519 m_ltePhyRxCtrlEndOkCallback; ///< the LTE phy receive control end ok callback
521 m_ltePhyRxCtrlEndErrorCallback; ///< the LTE phy receive control end error callback
522 LtePhyRxPssCallback m_ltePhyRxPssCallback; ///< the LTE phy receive PSS callback
523
524 Ptr<LteInterference> m_interferenceData; ///< the data interference
525 Ptr<LteInterference> m_interferenceCtrl; ///< the control interference
526
527 uint16_t m_cellId; ///< the cell ID
528
529 uint8_t m_componentCarrierId; ///< the component carrier ID
530 expectedTbs_t m_expectedTbs; ///< the expected TBS
531 SpectrumValue m_sinrPerceived; ///< the preceived SINR
532
533 /// Provides uniform random variables.
535 bool m_dataErrorModelEnabled; ///< when true (default) the phy error model is enabled
536 bool m_ctrlErrorModelEnabled; ///< when true (default) the phy error model is enabled for DL
537 ///< ctrl frame
538
539 uint8_t m_transmissionMode; ///< for UEs: store the transmission mode
540 uint8_t m_layersNum; ///< layers num
541 std::vector<double> m_txModeGain; ///< duplicate value of LteUePhy
542
543 Ptr<LteHarqPhy> m_harqPhyModule; ///< the HARQ phy module
545 m_ltePhyDlHarqFeedbackCallback; ///< the LTE phy DL HARQ feedback callback
547 m_ltePhyUlHarqFeedbackCallback; ///< the LTE phy UL HARQ feedback callback
548
549 /**
550 * Trace information regarding PHY stats from DL Rx perspective
551 * PhyReceptionStatParameters (see lte-common.h)
552 */
554
555 /**
556 * Trace information regarding PHY stats from UL Rx perspective
557 * PhyReceptionStatParameters (see lte-common.h)
558 */
560
561 EventId m_endTxEvent; ///< end transmit event
562 EventId m_endRxDataEvent; ///< end receive data event
563 EventId m_endRxDlCtrlEvent; ///< end receive DL control event
564 EventId m_endRxUlSrsEvent; ///< end receive UL SRS event
565};
566
567} // namespace ns3
568
569#endif /* LTE_SPECTRUM_PHY_H */
interface for antenna radiation pattern models
Definition: antenna-model.h:55
Callback template class.
Definition: callback.h:438
An identifier for simulation events.
Definition: event-id.h:55
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...
State m_state
the state
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:52
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
Abstract base class for Spectrum-aware PHY layers.
Definition: spectrum-phy.h:46
Set of values corresponding to a given SpectrumModel.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
Forward calls to a chain of Callback.
a unique identifier for an interface.
Definition: type-id.h:59
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.