X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Fmac_rach.c;h=246e02ba4b36e7203ebb9b1a918a45bf8daecc2a;hb=0369d3e65bd88fbb4dc6314e8066d1578c6aaeaa;hp=37893503ea0c52c1434376ab06c2ea753727c1a3;hpb=cb47d1fdfaa5c7229e57282b39edd1603cbdb5c7;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac_rach.c b/src/5gnrmac/mac_rach.c index 37893503e..246e02ba4 100644 --- a/src/5gnrmac/mac_rach.c +++ b/src/5gnrmac/mac_rach.c @@ -28,6 +28,7 @@ #include "cm_lte.h" /* Common LTE Defines */ #include "tfu.h" /* RGU Interface includes */ #include "lrg.h" + #include "gen.x" /* general */ #include "ssi.x" /* system services */ #include "cm5.x" /* system services */ @@ -41,7 +42,87 @@ #include "lrg.x" #include "du_app_mac_inf.h" #include "mac.h" +#include "du_log.h" + +/* Function pointer for sending rach ind from MAC to SCH */ +MacSchRachIndFunc macSchRachIndOpts[]= +{ + packMacSchRachInd, + macSchRachInd, + packMacSchRachInd +}; + +/******************************************************************* + * + * @brief Sends RACH indication to SCH + * + * @details + * + * Function : sendRachIndMacToSch + * + * Functionality: + * Sends RACH indication to SCH + * + * @params[in] RACH indication info + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +int sendRachIndMacToSch(RachIndInfo *rachInd) +{ + Pst pst; + + fillMacToSchPst(&pst); + pst.event = EVENT_RACH_IND_TO_SCH; + + return(*macSchRachIndOpts[pst.selector])(&pst, rachInd); +} +/******************************************************************* + * + * @brief Processes RACH indication from PHY + * + * @details + * + * Function : fapiMacRachInd + * + * Functionality: + * Processes RACH indication from PHY + * + * @params[in] Post structure + * Rach indication message + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t fapiMacRachInd(Pst *pst, RachInd *rachInd) +{ + uint8_t pduIdx; + uint8_t preambleIdx; + RachIndInfo *rachIndInfo; + + DU_LOG("\nMAC : Received RACH indication"); + /* Considering one pdu and one preamble */ + pduIdx = 0; + preambleIdx = 0; + + rachIndInfo = &macCb.macCell->raCb; + + rachIndInfo->cellId = rachInd->rachPdu[pduIdx].pci; + /* TODO : Allocate unique crnti for each ue */ + rachIndInfo->crnti = 100; + rachIndInfo->timingInfo.sfn = rachInd->timingInfo.sfn; + rachIndInfo->timingInfo.slot = rachInd->timingInfo.slot; + rachIndInfo->slotIdx = rachInd->rachPdu[pduIdx].slotIdx; + rachIndInfo->symbolIdx = rachInd->rachPdu[pduIdx].symbolIdx; + rachIndInfo->freqIdx = rachInd->rachPdu[pduIdx].freqIdx; + rachIndInfo->preambleIdx = \ + rachInd->rachPdu[pduIdx].preamInfo[preambleIdx].preamIdx; + rachIndInfo->timingAdv = \ + rachInd->rachPdu[pduIdx].preamInfo[preambleIdx].timingAdv; + + return(sendRachIndMacToSch(rachIndInfo)); +} /* spec-38.211 Table 6.3.3.1-7 */ uint8_t UnrestrictedSetNcsTable[MAX_ZERO_CORR_CFG_IDX] =