5G-LENA nr-v3.3-161-gad18933f
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-mac-scheduler-cqi-management.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-mac-scheduler-ue-info.h"
8#include "nr-phy-mac-common.h"
9
10#include <memory>
11
12namespace ns3
13{
14
15class NrAmc;
16
30{
31 public:
36
46
51 void InstallGetBwpIdFn(const std::function<uint16_t()>& fn);
52
57 void InstallGetCellIdFn(const std::function<uint16_t()>& fn);
58
59 void InstallGetStartMcsDlFn(const std::function<uint8_t()>& fn);
60
61 void InstallGetStartMcsUlFn(const std::function<uint8_t()>& fn);
62
63 void InstallGetNrAmcDlFn(const std::function<Ptr<const NrAmc>()>& fn);
64
65 void InstallGetNrAmcUlFn(const std::function<Ptr<const NrAmc>()>& fn);
66
80 void DlCqiReported(const DlCqiInfo& info,
81 const std::shared_ptr<NrMacSchedulerUeInfo>& ueInfo,
82 uint32_t expirationTime,
83 int8_t maxDlMcs,
84 uint16_t bandwidthInRbgs) const;
85
106 void UlSBCQIReported(uint32_t expirationTime,
107 uint32_t tbs,
109 const std::shared_ptr<NrMacSchedulerUeInfo>& ueInfo,
110 const std::vector<bool>& rbgMask,
111 uint32_t numRbPerRbg,
112 const Ptr<const SpectrumModel>& model) const;
113
123 void RefreshDlCqiMaps(
124 const std::unordered_map<uint16_t, std::shared_ptr<NrMacSchedulerUeInfo>>& m_ueMap) const;
125
135 void RefreshUlCqiMaps(
136 const std::unordered_map<uint16_t, std::shared_ptr<NrMacSchedulerUeInfo>>& m_ueMap) const;
137
138 private:
143 uint16_t GetBwpId() const;
144
149 uint16_t GetCellId() const;
150
154 uint8_t GetStartMcsDl() const;
155
159 uint8_t GetStartMcsUl() const;
160
164 Ptr<const NrAmc> GetAmcDl() const;
165
169 Ptr<const NrAmc> GetAmcUl() const;
170
171 std::function<uint16_t()> m_getBwpId;
172 std::function<uint16_t()> m_getCellId;
173 std::function<uint8_t()> m_getStartMcsDl;
174 std::function<uint8_t()> m_getStartMcsUl;
175 std::function<Ptr<const NrAmc>()> m_getAmcDl;
176 std::function<Ptr<const NrAmc>()> m_getAmcUl;
177};
178
179} // namespace ns3
~NrMacSchedulerCQIManagement()=default
Deconstructor.
void RefreshUlCqiMaps(const std::unordered_map< uint16_t, std::shared_ptr< NrMacSchedulerUeInfo > > &m_ueMap) const
Refresh the UL CQI for all the UE.
void InstallGetCellIdFn(const std::function< uint16_t()> &fn)
Install a function to retrieve the cell id.
NrMacSchedulerCQIManagement(const NrMacSchedulerCQIManagement &o)=delete
NrMacSchedulerCQIManagement copy constructor (deleted)
NrMacSchedulerCQIManagement()=default
NrMacSchedulerCQIManagement default constructor.
void RefreshDlCqiMaps(const std::unordered_map< uint16_t, std::shared_ptr< NrMacSchedulerUeInfo > > &m_ueMap) const
Refresh the DL CQI for all the UE.
void InstallGetBwpIdFn(const std::function< uint16_t()> &fn)
Install a function to retrieve the bwp id.
void UlSBCQIReported(uint32_t expirationTime, uint32_t tbs, const NrMacSchedSapProvider::SchedUlCqiInfoReqParameters &params, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, const std::vector< bool > &rbgMask, uint32_t numRbPerRbg, const Ptr< const SpectrumModel > &model) const
An UL SB CQI has been reported for the specified UE.
void DlCqiReported(const DlCqiInfo &info, const std::shared_ptr< NrMacSchedulerUeInfo > &ueInfo, uint32_t expirationTime, int8_t maxDlMcs, uint16_t bandwidthInRbgs) const
A wideband CQI has been reported for the specified UE.
The DlCqiInfo struct.