5G-LENA nr-v4.0
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-mac-scheduler-ns3.h
1// Copyright (c) 2019 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#pragma once
6
7#include "nr-amc.h"
8#include "nr-fh-sched-sap.h"
9#include "nr-mac-harq-vector.h"
10#include "nr-mac-scheduler-cqi-management.h"
11#include "nr-mac-scheduler-lcg.h"
12#include "nr-mac-scheduler-ue-info.h"
13#include "nr-mac-scheduler.h"
14#include "nr-phy-mac-common.h"
15
16#include "ns3/traced-callback.h"
17
18#include <functional>
19#include <list>
20#include <memory>
21
22namespace ns3
23{
24
25class NrSchedGeneralTestCase;
26class NrSchedOfdmaSymbolPerBeamTestCase;
27class NrMacSchedulerHarqRr;
28class NrMacSchedulerSrsDefault;
29class NrMacSchedulerLcAlgorithm;
30class NrFhSchedSapUser;
31class NrFhSchedSapProvider;
32
238{
239 friend class NrTestSchedulerAiCase;
240 friend class NrSchedOfdmaSymbolPerBeamTestCase;
241
242 public:
247 static TypeId GetTypeId();
248
253
258 NrMacSchedulerNs3(const NrMacSchedulerNs3& other) = delete;
259
263 ~NrMacSchedulerNs3() override;
264
265 // FH Control SAPs
268
275 void InstallDlAmc(const Ptr<NrAmc>& dlAmc);
276
283 void InstallUlAmc(const Ptr<NrAmc>& ulAmc);
284
289 Ptr<const NrAmc> GetUlAmc() const;
290
295 Ptr<const NrAmc> GetDlAmc() const;
296
305 {
311 PointInFTPlane(uint32_t rbg, uint8_t sym)
312 : m_rbg(rbg),
313 m_sym(sym)
314 {
315 }
316
317 uint32_t m_rbg;
318 uint8_t m_sym;
319 };
320
321 typedef PointInFTPlane
323
348 void DoSchedSetMcs(uint32_t mcs) override;
351 uint8_t GetDlCtrlSyms() const override;
352 uint8_t GetUlCtrlSyms() const override;
353 bool IsMaxSrsReached() const override;
354
363 int64_t AssignStreams(int64_t stream) override;
364
365 // to save some typing
366 using HarqVectorIterator = NrMacHarqVector::iterator;
367 using HarqVectorIteratorList = std::vector<HarqVectorIterator>;
368
372 typedef std::pair<UePtr, uint32_t> UePtrAndBufferReq;
376 typedef std::unordered_map<BeamId, std::vector<UePtrAndBufferReq>, BeamIdHash> ActiveUeMap;
380 typedef std::unordered_map<BeamId, uint32_t, BeamIdHash> BeamSymbolMap;
384 typedef std::unordered_map<BeamId, HarqVectorIteratorList, BeamIdHash> ActiveHarqMap;
385
390 void SetCqiTimerThreshold(const Time& v);
395 Time GetCqiTimerThreshold() const;
396
402 void SetFixedDlMcs(bool v);
407 bool IsDlMcsFixed() const;
408
414 void SetFixedUlMcs(bool v);
419 bool IsUlMcsFixed() const;
420
425 void SetStartMcsDl(uint8_t v);
430 uint8_t GetStartMcsDl() const;
431
436 void SetMaxDlMcs(int8_t v);
441 int8_t GetMaxDlMcs() const;
442
447 void SetLcSched(const TypeId& type);
448
453 void SetStartMcsUl(uint8_t v);
458 uint8_t GetStartMcsUl() const;
459
464 void SetDlCtrlSyms(uint8_t v);
465
470 void SetUlCtrlSyms(uint8_t v);
471
476 void SetDlNotchedRbgMask(const std::vector<bool>& dlNotchedRbgsMask);
477
482 std::vector<bool> GetDlNotchedRbgMask() const;
483
488 void SetUlNotchedRbgMask(const std::vector<bool>& ulNotchedRbgsMask);
489
494 std::vector<bool> GetUlNotchedRbgMask() const;
495
500 void SetSrsCtrlSyms(uint8_t v);
501
506 uint8_t GetSrsCtrlSyms() const;
507
513 void SetSrsInUlSlots(bool v);
514
520 bool IsSrsInUlSlots() const;
521
526 void SetSrsInFSlots(bool v);
527
532 bool IsSrsInFSlots() const;
546 void EnableHarqReTx(bool enableFlag);
552 bool IsHarqReTxEnable() const override;
553
559 void SetRachUlGrantMcs(uint8_t v);
560
561 protected:
573 virtual std::shared_ptr<NrMacSchedulerUeInfo> CreateUeRepresentation(
575
579 virtual uint8_t GetTpc() const = 0;
580
593 virtual uint8_t ScheduleDlHarq(NrMacSchedulerNs3::PointInFTPlane* startingPoint,
594 uint8_t symAvail,
595 const ActiveHarqMap& activeDlHarq,
596 const std::unordered_map<uint16_t, UePtr>& ueMap,
597 std::vector<DlHarqInfo>* dlHarqToRetransmit,
598 const std::vector<DlHarqInfo>& dlHarqFeedback,
599 SlotAllocInfo* slotAlloc) const;
611 virtual uint8_t ScheduleUlHarq(NrMacSchedulerNs3::PointInFTPlane* startingPoint,
612 uint8_t symAvail,
613 const std::unordered_map<uint16_t, UePtr>& ueMap,
614 std::vector<UlHarqInfo>* ulHarqToRetransmit,
615 const std::vector<UlHarqInfo>& ulHarqFeedback,
616 SlotAllocInfo* slotAlloc) const;
617
631 virtual BeamSymbolMap AssignDLRBG(uint32_t symAvail, const ActiveUeMap& activeDl) const = 0;
632
646 virtual BeamSymbolMap AssignULRBG(uint32_t symAvail, const ActiveUeMap& activeUl) const = 0;
647
658 virtual std::shared_ptr<DciInfoElementTdma> CreateDlDci(
659 PointInFTPlane* spoint,
660 const std::shared_ptr<NrMacSchedulerUeInfo>& ueInfo,
661 uint32_t maxSym) const = 0;
662
673 virtual std::shared_ptr<DciInfoElementTdma> CreateUlDci(
674 PointInFTPlane* spoint,
675 const std::shared_ptr<NrMacSchedulerUeInfo>& ueInfo,
676 uint32_t maxSym) const = 0;
677
683 virtual void ChangeDlBeam(PointInFTPlane* spoint, uint32_t symOfBeam) const = 0;
684
690 virtual void ChangeUlBeam(PointInFTPlane* spoint, uint32_t symOfBeam) const = 0;
691
700 virtual void SortDlHarq(ActiveHarqMap* activeDlHarq) const;
701
710 virtual void SortUlHarq(ActiveHarqMap* activeUlHarq) const;
711
712 virtual LCGPtr CreateLCG(const nr::LogicalChannelConfigListElement_s& config) const;
713
714 virtual LCPtr CreateLC(const nr::LogicalChannelConfigListElement_s& config) const;
715
716 public:
723 uint64_t GetNumRbPerRbg() const;
724
725 protected:
726 Ptr<NrAmc> m_dlAmc;
727 Ptr<NrAmc> m_ulAmc;
730
731 bool m_activeDlAi{false};
732 bool m_activeUlAi{false};
733
734 private:
739 struct AllocElem
740 {
744 AllocElem() = delete;
748 AllocElem(const AllocElem& o) = default;
749
758 AllocElem(uint16_t rnti,
759 uint32_t tbs,
760 uint8_t symStart,
761 uint8_t numSym,
762 uint8_t mcs,
763 uint8_t rank,
764 const std::vector<bool>& rbgMask)
765 : m_rnti(rnti),
766 m_tbs(tbs),
767 m_symStart(symStart),
768 m_numSym(numSym),
769 m_mcs(mcs),
770 m_rank(rank),
771 m_rbgMask(rbgMask)
772 {
773 }
774
775 uint16_t m_rnti{0};
776 uint32_t m_tbs{0};
777 uint8_t m_symStart{0};
778 uint8_t m_numSym{0};
779 uint8_t m_mcs{0};
780 uint8_t m_rank{1};
781 std::vector<bool> m_rbgMask;
782 };
783
787 struct SlotElem
788 {
792 SlotElem() = delete;
796 SlotElem(const SlotElem& o) = default;
797
802 SlotElem(uint8_t totUlSym)
803 : m_totUlSym(totUlSym)
804 {
805 }
806
807 uint8_t m_totUlSym;
808 std::vector<AllocElem> m_ulAllocations;
809 };
810
811 void BSRReceivedFromUe(const MacCeElement& bsr);
812
813 template <typename T>
814 std::vector<T> MergeHARQ(std::vector<T>* existingFeedbacks,
815 const std::vector<T>& inFeedbacks,
816 const std::string& mode) const;
817
818 void ResetExpiredHARQ(uint16_t rnti, NrMacHarqVector* harq);
819
820 template <typename T>
821 void ProcessHARQFeedbacks(std::vector<T>* harqInfo,
822 const NrMacSchedulerUeInfo::GetHarqVectorFn& GetHarqVectorFn,
823 const std::string& direction) const;
824
825 void ScheduleDl(const NrMacSchedSapProvider::SchedDlTriggerReqParameters& params,
826 const std::vector<DlHarqInfo>& dlHarqInfo);
827
828 void ScheduleUl(const NrMacSchedSapProvider::SchedUlTriggerReqParameters& params,
829 const std::vector<UlHarqInfo>& ulHarqInfo);
830
831 uint8_t AppendCtrlSym(uint8_t symStart,
832 uint8_t numSymToAllocate,
834 std::deque<VarTtiAllocInfo>* allocations) const;
835 uint8_t PrependCtrlSym(uint8_t symStart,
836 uint8_t numSymToAllocate,
838 std::deque<VarTtiAllocInfo>* allocations) const;
839
840 void ComputeActiveUe(ActiveUeMap* activeDlUe,
841 const NrMacSchedulerUeInfo::GetLCGFn& GetLCGFn,
842 const NrMacSchedulerUeInfo::GetHarqVectorFn& GetHarqVector,
843 const std::string& mode) const;
844 void ComputeActiveHarq(ActiveHarqMap* activeDlHarq,
845 const std::vector<DlHarqInfo>& dlHarqFeedback) const;
846 void ComputeActiveHarq(ActiveHarqMap* activeUlHarq,
847 const std::vector<UlHarqInfo>& ulHarqFeedback) const;
848
849 uint8_t DoScheduleDlData(PointInFTPlane* spoint,
850 uint32_t symAvail,
851 const ActiveUeMap& activeDl,
852 SlotAllocInfo* slotAlloc) const;
853 uint8_t DoScheduleUlData(PointInFTPlane* spoint,
854 uint32_t symAvail,
855 const ActiveUeMap& activeUl,
856 SlotAllocInfo* slotAlloc) const;
857 uint8_t DoScheduleUlMsg3(PointInFTPlane* sPoint, uint8_t symAvail, SlotAllocInfo* slotAlloc);
858 void DoScheduleUlSr(PointInFTPlane* spoint, const std::list<uint16_t>& rntiList) const;
859 uint8_t DoScheduleDl(const std::vector<DlHarqInfo>& dlHarqFeedback,
860 const ActiveHarqMap& activeDlHarq,
861 ActiveUeMap* activeDlUe,
862 const SfnSf& dlSfnSf,
863 const SlotElem& ulAllocations,
864 SlotAllocInfo* allocInfo);
865 uint8_t DoScheduleUl(const std::vector<UlHarqInfo>& ulHarqFeedback,
866 const SfnSf& ulSfn,
867 SlotAllocInfo* allocInfo,
868 LteNrTddSlotType type);
869 uint8_t DoScheduleSrs(PointInFTPlane* spoint, SlotAllocInfo* allocInfo);
870
871 static const unsigned m_macHdrSize = 0;
872 static const uint32_t m_subHdrSize = 4;
873 static const unsigned m_rlcHdrSize = 3;
874
875 protected:
880 uint16_t GetBwpId() const;
881
886 uint16_t GetCellId() const;
887
891 uint16_t GetBandwidthInRbg() const;
892
897 uint8_t GetFhControlMethod() const;
898
903 bool DoesFhAllocationFit(uint16_t bwpId, uint32_t mcs, uint32_t nRegs, uint8_t dlRank) const;
904
905 // FFR SAPs
908
909 private:
910 void CallNrFhControlForMapUpdate(
911 const std::deque<VarTtiAllocInfo>& allocation,
912 const std::unordered_map<uint16_t, std::shared_ptr<NrMacSchedulerUeInfo>>& ueMap);
913
914 std::unordered_map<uint16_t, std::shared_ptr<NrMacSchedulerUeInfo>>
915 m_ueMap;
916
921 std::map<uint64_t, SlotElem> m_ulAllocationMap;
922
923 bool m_fixedMcsDl{false};
924 bool m_fixedMcsUl{false};
925 uint8_t m_startMcsDl{0};
926 uint8_t m_startMcsUl{0};
927 int8_t m_maxDlMcs{0};
928 Time m_cqiTimersThreshold;
929
930 uint8_t m_rachUlGrantMcs{0};
931 uint8_t m_ulRachBwpIndex{
932 0};
933
934 NrMacSchedulerCQIManagement m_cqiManagement;
935
936 std::vector<DlHarqInfo>
937 m_dlHarqToRetransmit;
938 std::vector<UlHarqInfo>
939 m_ulHarqToRetransmit;
940
941 std::list<uint16_t> m_srList;
942
943 std::vector<struct nr::RachListElement_s> m_rachList;
944
945 uint16_t m_bandwidth{0};
946 uint8_t m_dlCtrlSymbols{0};
947 uint8_t m_ulCtrlSymbols{0};
948 uint8_t m_srsCtrlSymbols{0};
949 bool m_enableSrsInUlSlots{true};
950 bool m_enableSrsInFSlots{true};
951
952 std::vector<bool> m_dlNotchedRbgsMask;
953 std::vector<bool> m_ulNotchedRbgsMask;
954
955 std::unique_ptr<NrMacSchedulerHarqRr> m_schedHarq;
956
957 Ptr<NrMacSchedulerSrsDefault> m_schedulerSrs;
958 Ptr<NrMacSchedulerLcAlgorithm>
959 m_schedLc;
960 TypeId m_schedLcType;
961
962 uint32_t m_srsSlotCounter{0};
963
964 friend NrSchedGeneralTestCase;
965
966 bool m_enableHarqReTx{true};
967
968 TracedCallback<uint16_t, uint16_t, const std::shared_ptr<NrMacSchedulerUeInfo>&>
969 m_csiFeedbackReceived;
970};
971
972} // namespace ns3
Service Access Point (SAP) offered by the FhControl instance to the MAC Scheduler instance.
Service Access Point (SAP) offered by the MAC Scheduler instance to the FhControl instance.
std::unordered_map< uint8_t, HarqProcess >::iterator iterator
iterator of the map
Interface for all the nr schedulers.
A general scheduler for nr in NS3.
bool IsSrsInUlSlots() const
Check if the UL slots are allowed for SRS transmission.
void DoCschedUeConfigReq(const NrMacCschedSapProvider::CschedUeConfigReqParameters &params) override
Register an UE.
NrMacSchedulerNs3()
NrMacSchedulerNs3 default constructor.
uint8_t GetUlCtrlSyms() const override
Retrieve the number of UL ctrl symbols configured in the scheduler.
std::unordered_map< BeamId, HarqVectorIteratorList, BeamIdHash > ActiveHarqMap
Map between a beamID and the HARQ of that beam.
virtual std::shared_ptr< NrMacSchedulerUeInfo > CreateUeRepresentation(const NrMacCschedSapProvider::CschedUeConfigReqParameters &params) const =0
Create an UE representation for the scheduler.
Ptr< NrAmc > m_ulAmc
AMC pointer.
uint8_t GetStartMcsDl() const
Get the DL MCS starting value.
int64_t AssignStreams(int64_t stream) override
Assign a fixed random variable stream number to the random variables used by this model....
void DoCschedUeReleaseReq(const NrMacCschedSapProvider::CschedUeReleaseReqParameters &params) override
Release an UE.
void DoSchedUlTriggerReq(const NrMacSchedSapProvider::SchedUlTriggerReqParameters &params) override
Decide how to fill the frequency/time of a UL slot.
NrMacSchedulerUeInfo::McsCsiSource m_mcsCsiSource
CSI information source for DL MCS estimation.
void SetSrsInFSlots(bool v)
Set if the F slots are allowed for SRS transmission.
virtual void ChangeDlBeam(PointInFTPlane *spoint, uint32_t symOfBeam) const =0
Perform a custom operation on the starting point each time all the UE of a DL beam have been schedule...
void SetRachUlGrantMcs(uint8_t v)
Sets the default RACH UL grant MCS.
virtual BeamSymbolMap AssignDLRBG(uint32_t symAvail, const ActiveUeMap &activeDl) const =0
Assign the DL RBG to the active UE, and return the distribution of symbols per beam.
virtual void SortUlHarq(ActiveHarqMap *activeUlHarq) const
Sort the UL HARQ retransmission.
NrFhSchedSapUser * GetNrFhSchedSapUser() override
void SetSrsCtrlSyms(uint8_t v)
Set the number of UL SRS symbols.
void DoCschedLcReleaseReq(const NrMacCschedSapProvider::CschedLcReleaseReqParameters &params) override
Release a LC.
void SetFixedDlMcs(bool v)
Set if the MCS in DL is fixed (in case, it will take the starting value)
virtual void ChangeUlBeam(PointInFTPlane *spoint, uint32_t symOfBeam) const =0
Perform a custom operation on the starting point each time all the UE of an UL beam have been schedul...
NrFhSchedSapProvider * m_nrFhSchedSapProvider
FH Control SAP provider.
Ptr< NrAmc > m_dlAmc
AMC pointer.
bool IsSrsInFSlots() const
Check if the F slots are allowed for SRS transmission.
void SetUlCtrlSyms(uint8_t v)
Set the number of UL ctrl symbols.
uint8_t GetSrsCtrlSyms() const
Get the configured value for the SRS symbols.
bool m_activeUlAi
Flag for activating AI for uplink.
virtual uint8_t ScheduleUlHarq(NrMacSchedulerNs3::PointInFTPlane *startingPoint, uint8_t symAvail, const std::unordered_map< uint16_t, UePtr > &ueMap, std::vector< UlHarqInfo > *ulHarqToRetransmit, const std::vector< UlHarqInfo > &ulHarqFeedback, SlotAllocInfo *slotAlloc) const
Giving the input, append to slotAlloc the allocations for the DL HARQ retransmissions.
void InstallUlAmc(const Ptr< NrAmc > &ulAmc)
Install the AMC for the DL part.
Ptr< const NrAmc > GetDlAmc() const
Get the AMC for DL.
void SetSrsInUlSlots(bool v)
Set if the UL slots are allowed for SRS transmission (if True, UL and F slots may carry SRS,...
void SetStartMcsUl(uint8_t v)
Set the starting value for the UL MCS.
std::vector< bool > GetUlNotchedRbgMask() const
Get the notched (blank) RBGs Mask for the UL.
uint8_t GetStartMcsUl() const
Get the DL MCS starting value.
std::unordered_map< BeamId, uint32_t, BeamIdHash > BeamSymbolMap
Map between a BeamId and the symbol assigned to that beam.
void DoSchedSetMcs(uint32_t mcs) override
Set a fixed MCS.
void DoCschedLcConfigReq(const NrMacCschedSapProvider::CschedLcConfigReqParameters &params) override
Configure a logical channel for a UE.
void DoSchedDlCqiInfoReq(const NrMacSchedSapProvider::SchedDlCqiInfoReqParameters &params) override
Received a DL CQI message.
virtual std::shared_ptr< DciInfoElementTdma > CreateUlDci(PointInFTPlane *spoint, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, uint32_t maxSym) const =0
Create a DCI for the specified UE for UL data.
void DoSchedUlCqiInfoReq(const NrMacSchedSapProvider::SchedUlCqiInfoReqParameters &params) override
Received a UL CQI message.
uint16_t GetBwpId() const
Get the bwp id of this MAC.
void DoCschedCellConfigReq(const NrMacCschedSapProvider::CschedCellConfigReqParameters &params) override
Cell configuration.
void SetStartMcsDl(uint8_t v)
Set the starting value for the DL MCS.
void SetLcSched(const TypeId &type)
Set LC Scheduler Algorithm model type.
virtual BeamSymbolMap AssignULRBG(uint32_t symAvail, const ActiveUeMap &activeUl) const =0
Assign the UL RBG to the active UE, and return the distribution of symbols per beam.
NrFhSchedSapUser * m_nrFhSchedSapUser
FH Control SAP user.
NrMacSchedulerNs3(const NrMacSchedulerNs3 &other)=delete
NrMacSchedulerNs3 copy constructor (deleted)
static TypeId GetTypeId()
GetTypeId.
bool DoesFhAllocationFit(uint16_t bwpId, uint32_t mcs, uint32_t nRegs, uint8_t dlRank) const
Returns a boolean indicating whether the current allocation can fit in the available FH bandwidth (wh...
Time GetCqiTimerThreshold() const
Get the CqiTimerThreshold.
bool m_activeDlAi
Flag for activating AI for downlink.
void SetUlNotchedRbgMask(const std::vector< bool > &ulNotchedRbgsMask)
Set the notched (blank) RBGs Mask for the UL.
std::unordered_map< BeamId, std::vector< UePtrAndBufferReq >, BeamIdHash > ActiveUeMap
Map between a BeamId and a vector of UE (the UE are in that beam)
bool IsUlMcsFixed() const
Check if the MCS in UL is fixed.
std::vector< bool > GetDlNotchedRbgMask() const
Get the notched (blank) RBGs Mask for the DL.
void InstallDlAmc(const Ptr< NrAmc > &dlAmc)
Install the AMC for the DL part.
~NrMacSchedulerNs3() override
NrMacSchedulerNs3 deconstructor.
virtual void SortDlHarq(ActiveHarqMap *activeDlHarq) const
Sort the DL HARQ retransmission.
void SetFixedUlMcs(bool v)
Set if the MCS in UL is fixed (in case, it will take the starting value)
virtual uint8_t GetTpc() const =0
Returns TPC command.
void DoSchedDlRlcBufferReq(const NrMacSchedSapProvider::SchedDlRlcBufferReqParameters &params) override
RLC informs of DL data.
void DoSchedDlRachInfoReq(const NrMacSchedSapProvider::SchedDlRachInfoReqParameters &params) override
RACH information.
void EnableHarqReTx(bool enableFlag)
Enable HARQ ReTx function.
virtual std::shared_ptr< DciInfoElementTdma > CreateDlDci(PointInFTPlane *spoint, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, uint32_t maxSym) const =0
Create a DCI for the specified UE for DL data.
void DoSchedDlTriggerReq(const NrMacSchedSapProvider::SchedDlTriggerReqParameters &params) override
Decide how to fill the frequency/time of a DL slot.
void SetNrFhSchedSapProvider(NrFhSchedSapProvider *s) override
void DoSchedUlMacCtrlInfoReq(const NrMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters &params) override
Evaluate different types of control messages (only BSR for the moment)
virtual uint8_t ScheduleDlHarq(NrMacSchedulerNs3::PointInFTPlane *startingPoint, uint8_t symAvail, const ActiveHarqMap &activeDlHarq, const std::unordered_map< uint16_t, UePtr > &ueMap, std::vector< DlHarqInfo > *dlHarqToRetransmit, const std::vector< DlHarqInfo > &dlHarqFeedback, SlotAllocInfo *slotAlloc) const
Giving the input, append to slotAlloc the allocations for the DL HARQ retransmissions.
virtual LCPtr CreateLC(const nr::LogicalChannelConfigListElement_s &config) const
Create a logical channel starting from a configuration.
bool IsDlMcsFixed() const
Check if the MCS in DL is fixed.
virtual LCGPtr CreateLCG(const nr::LogicalChannelConfigListElement_s &config) const
Create a logical channel group starting from a configuration.
void DoSchedUlSrInfoReq(const NrMacSchedSapProvider::SchedUlSrInfoReqParameters &params) override
Save the SR list into m_srList.
uint64_t GetNumRbPerRbg() const
Private function that is used to get the number of resource blocks per resource block group and also ...
std::pair< UePtr, uint32_t > UePtrAndBufferReq
Pair between a pointer to NrMacSchedulerUeInfo and its buffer occupancy.
uint16_t GetCellId() const
Get the cell id of this MAC.
void SetDlCtrlSyms(uint8_t v)
Set the number of DL ctrl symbols.
void SetMaxDlMcs(int8_t v)
Set the maximum index for the DL MCS.
Ptr< const NrAmc > GetUlAmc() const
Get the AMC for UL.
uint8_t GetFhControlMethod() const
Get the FH Control Method.
bool IsHarqReTxEnable() const override
Is HARQ ReTx enable function.
uint8_t GetDlCtrlSyms() const override
Retrieve the number of DL ctrl symbols configured in the scheduler.
int8_t GetMaxDlMcs() const
Get the maximum DL MCS index.
void SetCqiTimerThreshold(const Time &v)
Set the CqiTimerThreshold.
PointInFTPlane FTResources
Represent an amount of RBG/symbols that can be, or is, assigned.
void SetDlNotchedRbgMask(const std::vector< bool > &dlNotchedRbgsMask)
Set the notched (blank) RBGs Mask for the DL.
std::unique_ptr< NrMacSchedulerLC > LCPtr
Unique pointer to an instance of NrMacSchedulerLC.
std::unique_ptr< NrMacSchedulerLCG > LCGPtr
LCGPtr unique pointer to a LCG.
LteNrTddSlotType
Available TDD slot types. Ordering is important.
Calculate the hash of a BeamId.
Definition beam-id.h:102
DciFormat
Format of the DCI.
DL HARQ information to be used when scheduling UL data.
The SchedUlMacCtrlInfoReqParameters struct.
SR received from MAC, to pass to schedulers.
UL HARQ information to be used when scheduling UL data.
Point in the Frequency/Time plane.
PointInFTPlane(uint32_t rbg, uint8_t sym)
PointInFTPlane constructor.
uint32_t m_rbg
Represent the starting RBG.
uint8_t m_sym
Represent the starting symbol.
The SlotAllocInfo struct.
See section 4.3.4 logicalChannelConfigListElement.