5G-LENA nr-v3.3-81-g75c7590d
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-ue-phy.h
1// Copyright (c) 2019 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#ifndef NR_UE_PHY_H
6#define NR_UE_PHY_H
7
8#include "nr-amc.h"
9#include "nr-harq-phy.h"
10#include "nr-phy-sap.h"
11#include "nr-phy.h"
12#include "nr-pm-search.h"
13#include "nr-ue-cphy-sap.h"
14
15#include <ns3/traced-callback.h>
16
17namespace ns3
18{
19
20extern const Time NR_DEFAULT_PMI_INTERVAL_WB; // Wideband PMI update interval
21extern const Time NR_DEFAULT_PMI_INTERVAL_SB; // Subband PMI update interval
22
23class NrChAccessManager;
24class BeamManager;
25class BeamId;
26class NrUePowerControl;
27
59class NrUePhy : public NrPhy
60{
61 friend class UeMemberNrUePhySapProvider;
63 friend class NrHelper;
64
65 public:
70 static TypeId GetTypeId();
71
75 NrUePhy();
76
80 ~NrUePhy() override;
81
86 NrUeCphySapProvider* GetUeCphySapProvider() __attribute__((warn_unused_result));
87
93
100
101 /*
102 * \brief Enable or disable uplink power control
103 * \param enable parameter that enables or disables power control
104 */
105 void SetEnableUplinkPowerControl(bool enable);
111 void SetAlphaCovMat(double alpha);
116 double GetAlphaCovMat() const;
121 void SetCsiImDuration(uint8_t csiImDuration);
125 uint8_t GetCsiImDuration() const;
132 void SetTxPower(double pow);
133
140 double GetTxPower() const override;
141
146 double GetRsrp() const;
147
153 Ptr<NrUePowerControl> GetUplinkPowerControl() const;
154
166 void SetUplinkPowerControl(Ptr<NrUePowerControl> pc);
167
177 void RegisterToGnb(uint16_t bwpId);
178
189 void SetDlAmc(const Ptr<const NrAmc>& amc);
190
199 void SetUlCtrlSyms(uint8_t ulCtrlSyms);
200
209 void SetDlCtrlSyms(uint8_t dlCtrlSyms);
210
220 void SetNumRbPerRbg(uint32_t numRbPerRbg);
221
228 void SetPattern(const std::string& pattern);
229
237 void PhyCtrlMessagesReceived(const Ptr<NrControlMessage>& msg);
238
246 void PhyDataPacketReceived(const Ptr<Packet>& p);
247
255 void GenerateDlCqiReport(const SpectrumValue& sinr);
256
262 uint16_t GetRnti() const __attribute__((warn_unused_result));
263
272 void EnqueueDlHarqFeedback(const DlHarqInfo& m);
273
282 typedef void (*DlCtrlSinrTracedCallback)(uint16_t, uint16_t, double, uint16_t);
283
292 typedef void (*DlDataSinrTracedCallback)(uint16_t, uint16_t, double, uint16_t);
293
302 typedef void (*CqiFeedbackTracedCallback)(uint16_t, uint8_t, uint8_t, uint8_t);
303
313 typedef void (*RxedUePhyCtrlMsgsTracedCallback)(const SfnSf sfnSf,
314 const uint16_t nodeId,
315 const uint16_t rnti,
316 const uint8_t bwpId,
317 Ptr<NrControlMessage> ptr);
318
328 typedef void (*TxedUePhyCtrlMsgsTracedCallback)(const SfnSf sfnSf,
329 const uint16_t nodeId,
330 const uint16_t rnti,
331 const uint8_t bwpId,
332 Ptr<NrControlMessage>);
333
347 typedef void (*RxedUePhyDlDciTracedCallback)(const SfnSf sfnSf,
348 const uint16_t nodeId,
349 const uint16_t rnti,
350 const uint8_t bwpId,
351 uint8_t harqId,
352 uint32_t K1Delay);
353
367 typedef void (*TxedUePhyHarqFeedbackTracedCallback)(const SfnSf sfnSf,
368 const uint16_t nodeId,
369 const uint16_t rnti,
370 const uint8_t bwpId,
371 uint8_t harqId,
372 uint32_t K1Delay);
373
378 void SetCam(const Ptr<NrChAccessManager>& cam);
379
380 const SfnSf& GetCurrentSfnSf() const override;
381
382 // From nr phy. Not used in the UE
383 BeamId GetBeamId(uint16_t rnti) const override;
384
395 void ScheduleStartEventLoop(uint32_t nodeId,
396 uint16_t frame,
397 uint8_t subframe,
398 uint16_t slot) override;
399
404 void ReportRsReceivedPower(const SpectrumValue& power);
405
410 void ReportDlCtrlSinr(const SpectrumValue& sinr);
411
421 uint8_t ComputeCqi(const SpectrumValue& sinr);
422
429 void ReceivePss(uint16_t cellId, const Ptr<SpectrumValue>& p);
430
445 typedef void (*PowerSpectralDensityTracedCallback)(const SfnSf& sfnSf,
446 Ptr<const SpectrumValue> v,
447 const Time& time,
448 uint16_t rnti,
449 uint64_t imsi,
450 uint16_t bwpId,
451 uint16_t cellId);
452
457 void ReportRsrpSinrTrace(const SpectrumValue& sinr);
458
469 typedef void (*RsrpRsrqTracedCallback)(uint16_t rnti,
470 uint16_t cellId,
471 double rsrp,
472 double rsrq,
473 bool isServingCell,
474 uint8_t componentCarrierId);
475
479 void GenerateDlCqiReportMimo(const NrMimoSignal& cqiMimoFeedbackSignal,
480 NrPmSearch::PmiUpdate pmiUpdateParams);
481
485 uint8_t GetCsiFeedbackType() const;
489 void CsiRsReceived(const std::vector<MimoSignalChunk>& csiRsSignal);
497 void GenerateCsiRsCqi();
503 void CalcAvgIntCovMat(NrCovMat* avgIntCovMat, const NrCovMat& newCovMat) const;
510 void CsiImEnded(const std::vector<MimoSignalChunk>& csiImSignalChunks);
520 void PdschMimoReceived(const std::vector<MimoSignalChunk>& pdschMimoChunks);
531 void TriggerDlCqiGeneration(const NrMimoSignal& csiFeedbackSignal,
532 NrPmSearch::PmiUpdate pmiUpdateParams);
537
540 void SetPmSearch(Ptr<NrPmSearch> pmSearch);
541
543 Ptr<NrPmSearch> GetPmSearch() const;
544
545 protected:
549 void DoDispose() override;
554 uint32_t GetNumRbPerRbg() const override;
555
560 void SetCurrentSfnSf(const SfnSf& currentSfnSf);
561
566 void SetLastSlotStart(Time startTime);
567
572 Time GetLastSlotStart() const;
573
579
586 void SetSubChannelsForTransmission(const std::vector<int>& mask, uint32_t numSym);
587
597 void FinishSlotProcessing(const SfnSf& s, bool nrAllocationExists);
598
599 private:
608 void ReportUeMeasurements();
609
614 void SetCsiFeedbackType(uint8_t csiFeedbackType);
615
621 static double ComputeAvgSinr(const SpectrumValue& sinr);
622
623 void StartEventLoop(uint16_t frame, uint8_t subframe, uint16_t slot);
624
630 void ChannelAccessGranted(const Time& time);
631
635 void ChannelAccessDenied();
636
640 void RequestAccess();
641
646 void DoReceiveRar(Ptr<NrRarMessage> rarMsg);
652 Ptr<NrDlCqiMessage> CreateDlCqiFeedbackMessage(const SpectrumValue& sinr)
653 __attribute__((warn_unused_result));
659 Time DlCtrl(const std::shared_ptr<DciInfoElementTdma>& dci) __attribute__((warn_unused_result));
665 Time UlCtrl(const std::shared_ptr<DciInfoElementTdma>& dci) __attribute__((warn_unused_result));
671 Time UlSrs(const std::shared_ptr<DciInfoElementTdma>& dci);
677 Time DlData(const std::shared_ptr<DciInfoElementTdma>& dci) __attribute__((warn_unused_result));
678
684 Time UlData(const std::shared_ptr<DciInfoElementTdma>& dci) __attribute__((warn_unused_result));
685
693 void TryToPerformLbt();
694
699 virtual void StartSlot(const SfnSf& s);
700
716 void StartVarTti(const std::shared_ptr<DciInfoElementTdma>& dci);
717
730 void EndVarTti(const std::shared_ptr<DciInfoElementTdma>& dci);
731
736 void DoSendControlMessage(Ptr<NrControlMessage> msg);
741 void DoSendControlMessageNow(Ptr<NrControlMessage> msg);
742
748 void ProcessDataDci(const SfnSf& ulSfnSf,
749 const std::shared_ptr<DciInfoElementTdma>& dciInfoElem);
750
756 void ProcessSrsDci(const SfnSf& ulSfnSf,
757 const std::shared_ptr<DciInfoElementTdma>& dciInfoElem);
758
766 void SendDataChannels(const Ptr<PacketBurst>& pb,
767 const std::list<Ptr<NrControlMessage>>& ctrlMsg,
768 const std::shared_ptr<DciInfoElementTdma>& dci,
769 const Time& duration);
777 void SendCtrlChannels(Time duration);
778
779 // SAP methods
780 virtual void DoReset();
781 void DoStartCellSearch(uint16_t dlEarfcn);
782 void DoSynchronizeWithGnb(uint16_t cellId);
783 void DoSynchronizeWithGnb(uint16_t cellId, uint16_t dlEarfcn);
784 void DoSetPa(double pa);
791 void DoSetRsrpFilterCoefficient(uint8_t rsrpFilterCoefficient);
792
797 void DoSetInitialBandwidth();
803 uint16_t DoGetCellId() const;
808 uint32_t DoGetDlEarfcn();
813 void DoSetDlBandwidth(uint16_t ulBandwidth);
818 void DoConfigureUplink(uint16_t ulEarfcn, uint8_t ulBandwidth);
819 void DoConfigureReferenceSignalPower(int8_t referenceSignalPower);
820 void DoSetRnti(uint16_t rnti);
821 void DoSetTransmissionMode(uint8_t txMode);
822 void DoSetSrsConfigurationIndex(uint16_t srcCi);
830 void DoResetPhyAfterRlf();
839 void DoResetRlfParams();
840
841 void InitializeRlfParams();
842
843 void RlfDetection(double sinrDb);
844
854 void DoStartInSyncDetection();
855
861 void DoSetImsi(uint64_t imsi);
862
871 void PushCtrlAllocations(const SfnSf currentSfnSf);
872
877 void InsertAllocation(const std::shared_ptr<DciInfoElementTdma>& dci);
878
883 void InsertFutureAllocation(const SfnSf& sfnSf, const std::shared_ptr<DciInfoElementTdma>& dci);
884
894 void SendRachPreamble(uint32_t PreambleId, uint32_t Rnti) override;
895
903 void ProcessRar(const Ptr<NrRarMessage>& rarMsg);
904
905 NrUePhySapUser* m_phySapUser;
906 NrUeCphySapProvider* m_ueCphySapProvider;
907 NrUeCphySapUser* m_ueCphySapUser;
908
909 bool m_enableUplinkPowerControl{
910 false};
911 Ptr<NrUePowerControl> m_powerControl;
912
913 Ptr<const NrAmc> m_amc;
914
915 Ptr<NrPmSearch> m_pmSearch{nullptr};
916
917 Time m_sbPmiLastUpdate{};
918 Time m_wbPmiLastUpdate{};
919 Time m_wbPmiUpdateInterval{NR_DEFAULT_PMI_INTERVAL_WB};
920 Time m_sbPmiUpdateInterval{NR_DEFAULT_PMI_INTERVAL_SB};
921
922 Time m_wbCqiLast;
923 Time m_lastSlotStart;
924
925 bool m_ulConfigured{false};
926 bool m_receptionEnabled{false};
927 uint16_t m_rnti{0};
928 uint32_t m_currTbs{0};
929 uint64_t m_imsi{0};
930 std::unordered_map<uint8_t, uint32_t>
931 m_harqIdToK1Map;
932
933 int64_t m_numRbPerRbg{
934 -1};
936
937 SfnSf m_currentSlot;
938
942 enum ChannelStatus
943 {
944 NONE,
945 REQUESTED,
946 GRANTED
947 };
948
949 ChannelStatus m_channelStatus{NONE};
950 Ptr<NrChAccessManager> m_cam;
951 Time m_lbtThresholdForCtrl;
952 bool m_tryToPerformLbt{false};
953 EventId m_lbtEvent;
954 uint8_t m_dlCtrlSyms{1};
955 uint8_t m_ulCtrlSyms{1};
956
957 double m_rsrp{0};
958
960 struct UeMeasurementsElement
961 {
962 double rsrpSum;
963 uint8_t rsrpNum;
964 // For the moment rsrq is not supported so set to 0
965 double rsrqSum;
966 uint8_t rsrqNum;
967 };
968
973 std::map<uint16_t, UeMeasurementsElement> m_ueMeasurementsMap;
978 Time m_ueMeasurementsFilterPeriod;
979
980 NrMimoSignal m_csiRsMimoSignal;
981 Time m_lastCsiRsMimoSignalTime{Seconds(0.0)};
982 NrCovMat m_avgIntCovMat;
983 double m_alphaCovMat = {0.1};
984 uint8_t m_csiImDuration = {1};
989 TracedCallback<uint16_t, uint16_t, double, uint16_t> m_dlDataSinrTrace;
994 TracedCallback<uint16_t, uint16_t, double, uint16_t> m_dlCtrlSinrTrace;
995 TracedCallback<uint64_t, uint64_t> m_reportUlTbSize;
996 TracedCallback<uint64_t, uint64_t> m_reportDlTbSize;
997 TracedCallback<const SfnSf&,
998 Ptr<const SpectrumValue>,
999 const Time&,
1000 uint16_t,
1001 uint64_t,
1002 uint16_t,
1003 uint16_t>
1004 m_reportPowerSpectralDensity;
1005
1010 TracedCallback<uint16_t, uint8_t, uint8_t, uint8_t> m_cqiFeedbackTrace;
1011
1016 TracedCallback<uint16_t, uint16_t, uint16_t, double, uint8_t> m_reportRsrpTrace;
1017
1023 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, Ptr<const NrControlMessage>>
1024 m_phyRxedCtrlMsgsTrace;
1025
1031 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, Ptr<const NrControlMessage>>
1032 m_phyTxedCtrlMsgsTrace;
1033
1039 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, uint8_t, uint32_t> m_phyUeRxedDlDciTrace;
1040
1046 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, uint8_t, uint32_t>
1047 m_phyUeTxedHarqFeedbackTrace;
1048
1055 TracedCallback<uint16_t, uint16_t, double, double, bool, uint8_t> m_reportUeMeasurements;
1056
1057 bool m_isConnected;
1058 void DoNotifyConnectionSuccessful();
1064 double m_qIn;
1065
1071 double m_qOut;
1072
1073 uint16_t m_numOfQoutEvalSf;
1075 uint16_t m_numOfQinEvalSf;
1077 bool m_downlinkInSync;
1079 uint16_t m_numOfSubframes;
1081 uint16_t m_numOfFrames;
1083 double m_sinrDbFrame;
1084 SpectrumValue m_ctrlSinrForRlf;
1085 bool m_enableRlfDetection;
1086 uint8_t m_csiFeedbackType;
1087};
1088
1089} // namespace ns3
1090
1091#endif /* NR_UE_PHY_H */
Representation of a beam id.
Definition beam-id.h:26
Helper to set up single- or multi-cell scenarios with NR.
Definition nr-helper.h:207
The base class for gNb and UE physical layer.
Definition nr-phy.h:67
The UE PHY class.
Definition nr-ue-phy.h:60
void SetUplinkPowerControl(Ptr< NrUePowerControl > pc)
Allow configuration of uplink power control algorithm. E.g. necessary in FDD, when measurements are r...
Definition nr-ue-phy.cc:306
void SetPhySapUser(NrUePhySapUser *ptr)
Install the PHY sap user (AKA the UE MAC)
void ReportRsrpSinrTrace(const SpectrumValue &sinr)
Report the SINR value in the RSRP and SINR trace. In OSS code, this functionality is piggy-backed ont...
void ScheduleStartEventLoop(uint32_t nodeId, uint16_t frame, uint8_t subframe, uint16_t slot) override
Start the ue Event Loop.
void ReceivePss(uint16_t cellId, const Ptr< SpectrumValue > &p)
Receive PSS and calculate RSRQ in dBm.
void CalcAvgIntCovMat(NrCovMat *avgIntCovMat, const NrCovMat &newCovMat) const
Calculates the moving average of the interference covariance matrix.
uint8_t GetCsiImDuration() const
Definition nr-ue-phy.cc:274
void EnqueueDlHarqFeedback(const DlHarqInfo &m)
Get the HARQ feedback (on the transmission) from NrSpectrumPhy and send it through ideal PUCCH to gNB...
void SetTxPower(double pow)
Set the transmission power for the UE.
Definition nr-ue-phy.cc:280
void SetSubChannelsForTransmission(const std::vector< int > &mask, uint32_t numSym)
Set the Tx power spectral density based on the RB index vector.
Definition nr-ue-phy.cc:323
NrUePhy()
NrUePhy default constructor.
Definition nr-ue-phy.cc:41
void SetNumRbPerRbg(uint32_t numRbPerRbg)
Function that sets the number of RBs per RBG. This function will be soon deprecated,...
Definition nr-ue-phy.cc:422
BeamId GetBeamId(uint16_t rnti) const override
Get the beam id for the specified user.
NrUePhySapUser * GetPhySapUser() const
Get pointer to PhySapUser.
Definition nr-ue-phy.cc:490
~NrUePhy() override
~NrUePhy
Definition nr-ue-phy.cc:51
Ptr< NrPmSearch > GetPmSearch() const
Get the precoding matrix search engine.
void GenerateCsiRsCqi()
Function that will be called in the case that CSI-RS is received, but CSI-IM is disabled and there is...
void CsiRsReceived(const std::vector< MimoSignalChunk > &csiRsSignal)
A callback function that is called from NrMimoChunkProcessor when CSI-RS is being received....
void(* TxedUePhyHarqFeedbackTracedCallback)(const SfnSf sfnSf, const uint16_t nodeId, const uint16_t rnti, const uint8_t bwpId, uint8_t harqId, uint32_t K1Delay)
Definition nr-ue-phy.h:367
NrPmSearch::PmiUpdate CheckUpdatePmi()
Check if updates to wideband and/or subband PMI are necessary. This function is used to limit the fre...
void SetPmSearch(Ptr< NrPmSearch > pmSearch)
Set the precoding matrix search engine.
uint32_t GetNumRbPerRbg() const override
Definition nr-ue-phy.cc:466
NrUeCphySapProvider * GetUeCphySapProvider() __attribute__((warn_unused_result))
Retrieve the pointer for the C PHY SAP provider (AKA the PHY interface towards the RRC)
Definition nr-ue-phy.cc:243
void(* TxedUePhyCtrlMsgsTracedCallback)(const SfnSf sfnSf, const uint16_t nodeId, const uint16_t rnti, const uint8_t bwpId, Ptr< NrControlMessage >)
Definition nr-ue-phy.h:328
Time GetLastSlotStart() const
Get Time of last slot start.
Definition nr-ue-phy.cc:484
uint8_t ComputeCqi(const SpectrumValue &sinr)
Compute the CQI based on the SINR.
void(* CqiFeedbackTracedCallback)(uint16_t, uint8_t, uint8_t, uint8_t)
Definition nr-ue-phy.h:302
void SetAlphaCovMat(double alpha)
Set alpha parameter for the calculation of the CSI interference covariance matrix moving average.
Definition nr-ue-phy.cc:256
void SetDlAmc(const Ptr< const NrAmc > &amc)
Set the AMC pointer from the GNB.
Definition nr-ue-phy.cc:312
double GetTxPower() const override
Retrieve the TX power of the UE.
Definition nr-ue-phy.cc:287
void(* RxedUePhyCtrlMsgsTracedCallback)(const SfnSf sfnSf, const uint16_t nodeId, const uint16_t rnti, const uint8_t bwpId, Ptr< NrControlMessage > ptr)
Definition nr-ue-phy.h:313
void(* RxedUePhyDlDciTracedCallback)(const SfnSf sfnSf, const uint16_t nodeId, const uint16_t rnti, const uint8_t bwpId, uint8_t harqId, uint32_t K1Delay)
Definition nr-ue-phy.h:347
void SetCsiImDuration(uint8_t csiImDuration)
Sets CSI-IM duration in the number of OFDM symbols, if enabled.
Definition nr-ue-phy.cc:268
void SetDlCtrlSyms(uint8_t dlCtrlSyms)
Set the number of DL CTRL symbols.
Definition nr-ue-phy.cc:416
uint8_t GetCsiFeedbackType() const
double GetRsrp() const
Returns the latest measured RSRP value Called by NrUePowerControl.
Definition nr-ue-phy.cc:293
void DoDispose() override
DoDispose method inherited from Object.
Definition nr-ue-phy.cc:57
Ptr< NrUePowerControl > GetUplinkPowerControl() const
Get NR uplink power control entity.
Definition nr-ue-phy.cc:299
void GenerateDlCqiReportMimo(const NrMimoSignal &cqiMimoFeedbackSignal, NrPmSearch::PmiUpdate pmiUpdateParams)
Generate DL CQI, PMI, and RI (channel quality precoding matrix and rank indicators)
void(* RsrpRsrqTracedCallback)(uint16_t rnti, uint16_t cellId, double rsrp, double rsrq, bool isServingCell, uint8_t componentCarrierId)
Definition nr-ue-phy.h:469
void SetCurrentSfnSf(const SfnSf &currentSfnSf)
Set current SfnSf.
Definition nr-ue-phy.cc:472
void GenerateDlCqiReport(const SpectrumValue &sinr)
Generate a DL CQI report.
void SetCam(const Ptr< NrChAccessManager > &cam)
Set the channel access manager interface for this instance of the PHY.
void SetPattern(const std::string &pattern)
Set the UE pattern.
Definition nr-ue-phy.cc:428
void(* DlCtrlSinrTracedCallback)(uint16_t, uint16_t, double, uint16_t)
Definition nr-ue-phy.h:282
void(* DlDataSinrTracedCallback)(uint16_t, uint16_t, double, uint16_t)
Definition nr-ue-phy.h:292
void SetUlCtrlSyms(uint8_t ulCtrlSyms)
Set the number of UL CTRL symbols.
Definition nr-ue-phy.cc:410
uint16_t GetRnti() const __attribute__((warn_unused_result))
Get the current RNTI of the user.
void RegisterToGnb(uint16_t bwpId)
Register the UE to a certain Gnb.
Definition nr-ue-phy.cc:401
void FinishSlotProcessing(const SfnSf &s, bool nrAllocationExists)
Finish the StartSlot processing.
Definition nr-ue-phy.cc:851
const SfnSf & GetCurrentSfnSf() const override
Get the current SfnSf.
void SetUeCphySapUser(NrUeCphySapUser *s)
Install ue C PHY SAP user (AKA the PHY interface towards the RRC)
Definition nr-ue-phy.cc:236
void PhyCtrlMessagesReceived(const Ptr< NrControlMessage > &msg)
Receive a list of CTRL messages.
Definition nr-ue-phy.cc:546
double GetAlphaCovMat() const
Definition nr-ue-phy.cc:262
void TriggerDlCqiGeneration(const NrMimoSignal &csiFeedbackSignal, NrPmSearch::PmiUpdate pmiUpdateParams)
Function is called in different possible scenarios to generate CQI information. For example,...
void(* PowerSpectralDensityTracedCallback)(const SfnSf &sfnSf, Ptr< const SpectrumValue > v, const Time &time, uint16_t rnti, uint64_t imsi, uint16_t bwpId, uint16_t cellId)
TracedCallback signature for power trace source.
Definition nr-ue-phy.h:445
void PdschMimoReceived(const std::vector< MimoSignalChunk > &pdschMimoChunks)
Function is called when PDSCH is received by the UE. It contains the channel and interference informa...
void SetLastSlotStart(Time startTime)
Set last slot start.
Definition nr-ue-phy.cc:478
void ReportDlCtrlSinr(const SpectrumValue &sinr)
Called when DlCtrlSinr is fired.
void PhyDataPacketReceived(const Ptr< Packet > &p)
Receive a PHY data packet.
void ReportRsReceivedPower(const SpectrumValue &power)
Called when rsReceivedPower is fired.
void CsiImEnded(const std::vector< MimoSignalChunk > &csiImSignalChunks)
Function is called when CSI-IM finishes, and this function triggers the update of the interference co...
static TypeId GetTypeId()
Get the object TypeId.
Definition nr-ue-phy.cc:75
SAP interface between the UE PHY and the UE MAC.
Definition nr-phy-sap.h:264
The SfnSf class.
Definition sfnsf.h:32
A struct that contains info for the DL HARQ.
Helper struct for processing and storing received signals for use in CSI feedback.
Parameters that define if PMI should be updated or if previous PMI values are used.