49 friend class NrGnbMacMemberGnbCmacSapProvider;
50 friend class NrMacGnbMemberPhySapUser;
51 friend class NrMacMemberMacCschedSapUser;
52 friend class NrMacMemberMacSchedSapUser;
141 void SetForwardUpCallback(Callback<
void, Ptr<Packet>> cb);
191 uint32_t subframeNum,
221 const uint16_t nodeId,
224 Ptr<NrControlMessage>);
239 const uint16_t nodeId,
242 Ptr<NrControlMessage>);
265 std::shared_ptr<DciInfoElementTdma>
GetDlCtrlDci()
const;
271 std::shared_ptr<DciInfoElementTdma>
GetUlCtrlDci()
const;
274 void ReceiveRachPreamble(uint32_t raId);
275 void DoReceiveRachPreamble(uint32_t raId);
282 void DoReportSrToScheduler(uint16_t rnti);
283 void DoReceivePhyPdu(Ptr<Packet> p);
284 void DoReceiveControlMessage(Ptr<NrControlMessage> msg);
297 void DoCschedCellConfigUpdateInd(
300 void DoConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth);
301 void DoAddUe(uint16_t rnti);
302 void DoRemoveUe(uint16_t rnti);
305 void DoReleaseLc(uint16_t rnti, uint8_t lcid);
314 void DoDlHarqFeedback(
const DlHarqInfo& params);
319 void DoUlHarqFeedback(
const UlHarqInfo& params);
334 struct NrDlHarqProcessInfo
336 Ptr<PacketBurst> m_pktBurst;
339 std::vector<uint8_t> m_lcidList;
342 typedef std::vector<NrDlHarqProcessInfo> NrDlHarqProcessesBuffer_t;
348 NrGnbPhySapUser* m_phySapUser;
350 NrMacSchedSapProvider* m_macSchedSapProvider;
351 NrMacSchedSapUser* m_macSchedSapUser;
352 NrMacCschedSapProvider* m_macCschedSapProvider;
353 NrMacCschedSapUser* m_macCschedSapUser;
356 NrCcmMacSapProvider* m_ccmMacSapProvider;
357 NrCcmMacSapUser* m_ccmMacSapUser;
359 int32_t m_numRbPerRbg{-1};
361 uint8_t m_numHarqProcess{20};
363 std::unordered_map<uint32_t, struct NrMacPduInfo> m_macPduMap;
365 Callback<void, Ptr<Packet>> m_forwardUpCallback;
367 std::vector<DlCqiInfo> m_dlCqiReceived;
368 std::vector<NrMacSchedSapProvider::SchedUlCqiInfoReqParameters> m_ulCqiReceived;
369 std::vector<MacCeElement> m_ulCeReceived;
372 uint8_t m_numberOfRaPreambles;
373 uint8_t m_preambleTransMax;
374 uint8_t m_raResponseWindowSize;
375 uint8_t m_connEstFailCount;
381 struct NcRaPreambleInfo
393 std::map<uint8_t, NcRaPreambleInfo> m_allocatedNcRaPreambleMap;
394 std::map<uint8_t, uint32_t> m_receivedRachPreambleCount;
397 std::unordered_map<uint16_t, std::unordered_map<uint8_t, NrMacSapUser*>> m_rlcAttached;
399 std::vector<DlHarqInfo> m_dlHarqInfoReceived;
400 std::vector<UlHarqInfo> m_ulHarqInfoReceived;
401 std::unordered_map<uint16_t, NrDlHarqProcessesBuffer_t>
402 m_miDlHarqProcessesPackets;
404 TracedCallback<NrSchedulingCallbackInfo> m_dlScheduling;
405 TracedCallback<NrSchedulingCallbackInfo> m_ulScheduling;
407 std::list<uint16_t> m_srRntiList;
409 std::unordered_map<uint8_t, uint32_t> m_rapIdRntiMap;
411 TracedCallback<uint8_t, uint16_t> m_srCallback;
413 uint16_t m_bandwidthInRbg{0};
422 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, Ptr<const NrControlMessage>>
423 m_macRxedCtrlMsgsTrace;
430 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, Ptr<const NrControlMessage>>
431 m_macTxedCtrlMsgsTrace;
436 TracedCallback<const DlHarqInfo&> m_dlHarqFeedback;
438 void ProcessRaPreambles(
const SfnSf& sfnSf);
439 void SetNumberOfRaPreambles(uint8_t numberOfRaPreambles);
440 void SetPreambleTransMax(uint8_t preambleTransMax);
441 void SetRaResponseWindowSize(uint8_t raResponseWindowSize);
442 void SetConnEstFailCount(uint8_t connEstFailCount);