105 friend class UeMemberNrUeCmacSapProvider;
106 friend class UeMemberNrMacSapProvider;
107 friend class MacUeMemberPhySapUser;
189 const uint16_t nodeId,
192 Ptr<NrControlMessage> ctrlMessage);
202 const uint16_t nodeId,
205 Ptr<NrControlMessage> ctrlMessage);
220 const uint16_t nodeId,
224 std::unordered_map<uint8_t, NrMacSapProvider::BufferStatusReportParameters> ulBsrReceived,
226 std::string nameFunc);
309 void SetRnti(uint16_t);
314 virtual void DoSlotIndication(
const SfnSf& sfn);
320 uint32_t GetTotalBufSize() const __attribute__((warn_unused_result));
350 void DoTransmitBufferStatusReport(
NrMacSapProvider::BufferStatusReportParameters params);
353 void DoReceivePhyPdu(Ptr<Packet> p);
356 void RaResponseTimeout(
bool contention);
360 void DoStartContentionBasedRandomAccessProcedure();
361 void DoStartNonContentionBasedRandomAccessProcedure(uint16_t rnti,
365 void DoRemoveLc(uint8_t lcId);
367 void DoNotifyConnectionSuccessful();
368 void DoSetImsi(uint64_t imsi);
370 void RandomlySelectAndSendRaPreamble();
371 void SendRaPreamble(
bool contention);
381 void SendBufferStatusReport(const
SfnSf& dataSfn, uint8_t symStart);
382 void RefreshHarqProcessesPacketBuffer();
424 void SendNewStatusData();
437 void SendRetxData(uint32_t usefulTbs, uint32_t activeRetx);
450 void SendTxData(uint32_t usefulTbs, uint32_t activeTx);
455 NrPhySapProvider* m_phySapProvider{
nullptr};
456 NrUePhySapUser* m_phySapUser{
nullptr};
457 NrMacSapProvider* m_macSapProvider{
nullptr};
460 uint8_t m_numHarqProcess{20};
462 std::shared_ptr<DciInfoElementTdma>
465 uint32_t m_ulDciTotalUsed{0};
467 std::unordered_map<uint8_t, NrMacSapProvider::BufferStatusReportParameters>
472 Ptr<UniformRandomVariable> m_raPreambleUniformVariable;
473 uint8_t m_raPreambleId{0};
478 struct UlHarqProcessInfo
480 Ptr<PacketBurst> m_pktBurst;
483 std::vector<uint8_t> m_lcidList;
487 std::vector<UlHarqProcessInfo>
488 m_miUlHarqProcessesPacket;
489 std::vector<uint8_t> m_miUlHarqProcessesPacketTimer;
493 NrUeCmacSapProvider::LogicalChannelConfig lcConfig;
494 NrMacSapUser* macSapUser;
497 std::unordered_map<uint8_t, LcInfo> m_lcInfoMap;
498 uint16_t m_rnti{std::numeric_limits<uint16_t>::max()};
500 bool m_waitingForRaResponse{
true};
501 static uint8_t g_raPreambleId;
508 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, Ptr<const NrControlMessage>>
509 m_macRxedCtrlMsgsTrace;
516 TracedCallback<SfnSf, uint16_t, uint16_t, uint8_t, Ptr<const NrControlMessage>>
517 m_macTxedCtrlMsgsTrace;
524 TracedCallback<uint64_t, bool, uint8_t, uint8_t> m_raResponseTimeoutTrace;
531 TracedCallback<SfnSf,
536 std::unordered_map<uint8_t, NrMacSapProvider::BufferStatusReportParameters>,
541 void StartWaitingForRaResponse();
542 bool m_rachConfigured =
false;
543 NrUeCmacSapProvider::RachConfig m_rachConfig;
544 uint8_t m_preambleTransmissionCounter{0};
545 EventId m_noRaResponseReceivedEvent;
void(* UeMacStateMachineTracedCallback)(const SfnSf sfnSf, const uint16_t nodeId, const uint16_t rnti, const uint8_t bwpId, const enum SrBsrMachine srState, std::unordered_map< uint8_t, NrMacSapProvider::BufferStatusReportParameters > ulBsrReceived, int retx, std::string nameFunc)