#include "phy_stub_utils.h"
#include "lwr_mac_phy_stub_inf.h"
+/*******************************************************************
+ *
+ * @brief start the uplink data
+ *
+ * @details
+ *
+ * Function : startUlData
+ *
+ * Functionality: start the uplink data
+ *
+ * @params[in]
+ *
+ * @return void
+ *
+ * ****************************************************************/
+
+void startUlData()
+{
+ uint8_t ueIdx=0, drbIdx=0;
+
+ /* Start Pumping data from PHY stub to DU */
+ for(ueIdx=0; ueIdx < phyDb.ueDb.numActvUe; ueIdx++)
+ {
+ for(drbIdx = 0; drbIdx < NUM_DRB_TO_PUMP_DATA; drbIdx++) //Number of DRB times the loop will run
+ {
+ DU_LOG("\nDEBUG --> PHY STUB: Sending UL User Data[DrbId:%d] for UEIdx %d\n",drbIdx,ueIdx);
+ l1SendUlUserData(drbIdx,ueIdx);
+ }
+ }
+}
+
/*******************************************************************
*
* @brief Builds and sends param response to MAC CL
if(pduInfo->pdu_length)
MAC_FREE(pduInfo->pduData, pduInfo->pdu_length);
MAC_FREE(rxDataInd, sizeof(fapi_rx_data_indication_t));
+
+#ifdef START_DL_UL_DATA
+ if(phyDb.ueDb.ueCb[ueId-1].msgRrcReconfigComp == true)
+ {
+ startUlData();
+ }
+#endif
return ROK;
}
#endif
return ROK;
}
+
/*******************************************************************
*
* @brief Builds and Send the Slot Indication message to MAC
}
CMCHKPK(oduPackPointer, (PTR)slotIndMsg, mBuf);
ODU_POST_TASK(&pst, mBuf);
+
}
#endif
return ROK;
if(ulTtiReq->pdus[numPdus-1].pduType == 0)
{
DU_LOG("\nINFO --> PHY STUB: PRACH PDU");
+
+ /* Send RACH Ind to L2 for first UE */
+ if(phyDb.ueDb.ueCb[UE_IDX_0].rachIndSent == false)
+ {
+ phyDb.ueDb.ueCb[UE_IDX_0].isCFRA = false;
+ phyDb.ueDb.ueCb[UE_IDX_0].rachIndSent = true;
+ l1BuildAndSendRachInd(ulTtiReq->slot, ulTtiReq->sfn, CB_RA_PREAMBLE_IDX);
+ phyDb.ueDb.numActvUe++;
+ }
+#if 0
+ /* Send RACH Ind to L2 for second UE */
+ if(phyDb.ueDb.ueCb[UE_IDX_1].rachIndSent == false && phyDb.ueDb.ueCb[UE_IDX_0].msgRrcReconfigComp == true)
+ {
+ phyDb.ueDb.ueCb[UE_IDX_0].isCFRA = false;
+ phyDb.ueDb.ueCb[UE_IDX_1].rachIndSent = true;
+ l1BuildAndSendRachInd(ulTtiReq->slot, ulTtiReq->sfn, CB_RA_PREAMBLE_IDX);
+ phyDb.ueDb.numActvUe++;
+ }
+
+ /* Send RACH Ind to L2 for third UE */
+ if(phyDb.ueDb.ueCb[UE_IDX_2].rachIndSent == false && phyDb.ueDb.ueCb[UE_IDX_1].msgRrcReconfigComp == true)
+ {
+ phyDb.ueDb.ueCb[UE_IDX_0].isCFRA = false;
+ phyDb.ueDb.ueCb[UE_IDX_2].rachIndSent = true;
+ l1BuildAndSendRachInd(ulTtiReq->slot, ulTtiReq->sfn, CB_RA_PREAMBLE_IDX);
+ phyDb.ueDb.numActvUe++;
+ }
+#endif
}
if(ulTtiReq->pdus[numPdus-1].pduType == 1)
{
memset(&ulTtiSlotInd, 0, sizeof(fapi_ul_tti_req_t));
ulTtiSlotInd.slot = ulTtiReq->slot;
ulTtiSlotInd.sfn = ulTtiReq->sfn;
- ADD_DELTA_TO_TIME(ulTtiSlotInd, ulTtiSlotInd, SLOT_DELAY);
+ ADD_DELTA_TO_TIME(ulTtiSlotInd, ulTtiSlotInd, SLOT_DELAY, MAX_SLOTS);
l1BuildAndSendUciInd(ulTtiSlotInd.slot, ulTtiSlotInd.sfn, ulTtiReq->pdus[numPdus-1].pdu.pucch_pdu);
}
numPdus--;
}
- /* TODO: [SFN:SLOT] at which RACH Indication is sent should be calculated
- * based on PRACH cfg index */
- /* Send RACH Ind to L2 for first UE */
- if(phyDb.ueDb.ueCb[UE_IDX_0].rachIndSent == false && ulTtiReq->sfn == 16 && ulTtiReq->slot == 6)
- {
- phyDb.ueDb.ueCb[UE_IDX_0].isCFRA = false;
- phyDb.ueDb.ueCb[UE_IDX_0].rachIndSent = true;
- l1BuildAndSendRachInd(ulTtiReq->slot, ulTtiReq->sfn, CB_RA_PREAMBLE_IDX);
- phyDb.ueDb.numActvUe++;
- }
-
-#if 0
- /* Send RACH Ind to L2 for second UE */
- if(phyDb.ueDb.ueCb[UE_IDX_1].rachIndSent == false && ulTtiReq->sfn == 304 && ulTtiReq->slot == 0)
- {
- phyDb.ueDb.ueCb[UE_IDX_0].isCFRA = false;
- phyDb.ueDb.ueCb[UE_IDX_1].rachIndSent = true;
- l1BuildAndSendRachInd(ulTtiReq->slot, ulTtiReq->sfn, CB_RA_PREAMBLE_IDX);
- phyDb.ueDb.numActvUe++;
- }
-
- /* Send RACH Ind to L2 for third UE */
- if(phyDb.ueDb.ueCb[UE_IDX_2].rachIndSent == false && ulTtiReq->sfn == 526 && ulTtiReq->slot == 0)
- {
- phyDb.ueDb.ueCb[UE_IDX_0].isCFRA = false;
- phyDb.ueDb.ueCb[UE_IDX_2].rachIndSent = true;
- l1BuildAndSendRachInd(ulTtiReq->slot, ulTtiReq->sfn, CB_RA_PREAMBLE_IDX);
- phyDb.ueDb.numActvUe++;
- }
-#endif
MAC_FREE(msg, msgLen);
#endif
return ROK;
{
if(ulDciReq->pdus[numPdus-1].pduType == 0)
{
- DU_LOG("\nINFO --> PHY STUB: Received UL DCI Request for PDCCH PDU");
+ DU_LOG("\nINFO --> PHY STUB: Received UL DCI Request for PDCCH PDU");
//l1BuildAndSendMsg5(ulDciReq->sfn, ulDciReq->slot);
//msg5Sent = true;
}