#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] =
{0, 2, 4, 6, 8, 10, 12, 13, 15, 17, 19, 23, 27, 34, 46, 69};