X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fphy_stub%2Fphy_stub_msg_hdl.c;h=2e8378d3d54b7587110b7a3bad9c933c22785ed5;hb=dc60a3537095880abab9a16c9603ab4219b1002b;hp=ab3607a27486eca897e93c3298433e4899a061b9;hpb=b7a8e8fc6abc7fba2f580684da44413d481be825;p=o-du%2Fl2.git diff --git a/src/phy_stub/phy_stub_msg_hdl.c b/src/phy_stub/phy_stub_msg_hdl.c index ab3607a27..2e8378d3d 100644 --- a/src/phy_stub/phy_stub_msg_hdl.c +++ b/src/phy_stub/phy_stub_msg_hdl.c @@ -36,6 +36,37 @@ #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 @@ -419,6 +450,11 @@ uint16_t l1BuildAndSendRxDataInd(uint16_t slot, uint16_t sfn, fapi_ul_pusch_pdu_ phyDb.ueDb.ueCb[ueId-1].msg5Sent = true; type = MSG_TYPE_MSG5; } + else if(!phyDb.ueDb.ueCb[ueId-1].msgNasAuthenticationComp) + { + phyDb.ueDb.ueCb[ueId-1].msgNasAuthenticationComp = true; + type = MSG_TYPE_NAS_AUTHENTICATION_COMPLETE; + } else if(!phyDb.ueDb.ueCb[ueId-1].msgNasSecurityModeComp) { phyDb.ueDb.ueCb[ueId-1].msgNasSecurityModeComp = true; @@ -538,6 +574,31 @@ uint16_t l1BuildAndSendRxDataInd(uint16_t slot, uint16_t sfn, fapi_ul_pusch_pdu_ byteIdx += msg5PduLen; /* 4 bytes of header : MAC+RLC */ break; } + + case MSG_TYPE_NAS_AUTHENTICATION_COMPLETE: + { + /* For Authentication response where RRC Container is dummy + * + * MAC subheader format is R/F/LCId/L (2/3 bytes) + * LCId is 1 for SRB1 + * L is length of PDU i.e 6bytes here + * From 38.321 section 6.1.1 + * + * RLC subheader for AM PDU is D/C/P/SI/SN (2 bytes for 12-bit SN) + * From 38.322, section 6.2.2.4 + */ + DU_LOG("\nDEBUG --> PHY_STUB: Forming AUTHENTICATION RESPONSE PDU"); + uint8_t pduLen = 37; /* Length of PDU */ + pduLen += 2; /* RLC subheader */ + uint8_t msg[] = {1, pduLen, 128, phyDb.ueDb.ueCb[ueId-1].rlcSnForSrb1++, 0, phyDb.ueDb.ueCb[ueId-1].pdcpSn++, 0x3a, \ + 0x0e, 0x3f, 0x00, 0xca, 0x95, 0xe9, 0x19, 0x41, 0x3f, 0x00, 0x2b, 0x96, 0x88, 0x06, 0xd7, 0x16, 0xc6, \ + 0x8b, 0xea, 0xae, 0x45, 0xd1, 0x01, 0xfd, 0x34, 0xd4, 0xfd, 0xd5, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00}; + + pduLen += 2; /* 2 bytes of MAC header */ + memcpy(pdu, &msg, pduLen); + byteIdx += pduLen; /* 4 bytes of header : MAC+RLC */ + break; + } case MSG_TYPE_NAS_SECURITY_MODE_COMPLETE: { @@ -564,8 +625,9 @@ uint16_t l1BuildAndSendRxDataInd(uint16_t slot, uint16_t sfn, fapi_ul_pusch_pdu_ pduLen += 2; /* 2 bytes of MAC header */ memcpy(pdu, &msg, pduLen); byteIdx += pduLen; /* 4 bytes of header : MAC+RLC */ -break; + break; } + case MSG_TYPE_RRC_SECURITY_MODE_COMPLETE: { /* For security mode complete where RRC Container is dummy @@ -667,6 +729,13 @@ break; 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 @@ -732,6 +801,7 @@ uint16_t l1BuildAndSendRachInd(uint16_t slot, uint16_t sfn, uint8_t raPreambleId return ROK; } + /******************************************************************* * * @brief Builds and Send the Slot Indication message to MAC @@ -799,6 +869,7 @@ uint16_t l1BuildAndSendSlotIndication() } CMCHKPK(oduPackPointer, (PTR)slotIndMsg, mBuf); ODU_POST_TASK(&pst, mBuf); + } #endif return ROK; @@ -1442,7 +1513,7 @@ S16 l1HdlUlDciReq(uint16_t msgLen, void *msg) { 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; }