X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fphy_stub%2Fl1_bdy1.c;h=fc087db685724a68e740f2d3e0776eecc2287630;hb=8340c342ebcfc82193c3f66e7f15047c1e37399b;hp=3dfdc9e7304f49f4fdeb2722c77d4c6e663df421;hpb=f15bab416a36e421d42be3d2d1a42bf4c8c8b6c2;p=o-du%2Fl2.git diff --git a/src/phy_stub/l1_bdy1.c b/src/phy_stub/l1_bdy1.c index 3dfdc9e73..fc087db68 100644 --- a/src/phy_stub/l1_bdy1.c +++ b/src/phy_stub/l1_bdy1.c @@ -17,6 +17,7 @@ *******************************************************************************/ /*This file contains stub for PHY to handle messages to/from MAC CL */ + #include #include "envdep.h" @@ -26,22 +27,32 @@ #include "gen.x" #include "ssi.x" -#include "rg_cl_phy.h" #include "lwr_mac.h" +#include "lwr_mac_phy.h" +#ifdef FAPI #include "fapi.h" +#endif #include "lphy_stub.h" +#include "stdbool.h" +#include "du_log.h" +#include "rg.h" #define MAX_SLOT_VALUE 9 #define MAX_SFN_VALUE 1023 +#define NR_PCI 1 uint16_t sfnValue = 0; uint16_t slotValue = 0; +bool rachIndSent = false; + EXTERN void phyToMac ARGS((uint16_t msgType, uint32_t msgLen,void *msg)); +#ifdef FAPI EXTERN void fillTlvs ARGS((fapi_uint16_tlv_t *tlv, uint16_t tag, uint16_t length, uint16_t value, uint32_t *msgLen)); EXTERN void fillMsgHeader ARGS((fapi_msg_t *hdr, uint16_t msgType, uint16_t msgLen)); -EXTERN void sendToLowerMac ARGS((uint16_t msgType, uint32_t msgLen,void *msg)); -EXTERN void handlePhyMessages ARGS((void *msg)); +#endif +EXTERN void handlePhyMessages(uint16_t msgType, uint32_t msgSize, void *msg); + /******************************************************************* * * @brief Builds and sends param response to MAC CL @@ -58,10 +69,12 @@ EXTERN void handlePhyMessages ARGS((void *msg)); * RFAILED - failure * * ****************************************************************/ -S16 l1BldAndSndParamRsp(fapi_param_resp_t *fapiParamRsp) +S16 l1BldAndSndParamRsp(void *msg) { +#ifdef FAPI uint8_t index = 0; uint32_t msgLen = 0; + fapi_param_resp_t *fapiParamRsp = (fapi_param_resp_t *)msg; /* Cell Params */ fillTlvs(&fapiParamRsp->tlvs[index++], FAPI_RELEASE_CAPABILITY_TAG, sizeof(uint16_t), 1, &msgLen); @@ -138,8 +151,9 @@ S16 l1BldAndSndParamRsp(fapi_param_resp_t *fapiParamRsp) fillMsgHeader(&fapiParamRsp->header, FAPI_PARAM_RESPONSE, msgLen); fapiParamRsp->error_code = MSG_OK; - printf("\nPHY_STUB: Sending Param Request to Lower Mac"); - sendToLowerMac(fapiParamRsp->header.message_type_id, sizeof(fapi_param_resp_t), (void *)fapiParamRsp); + DU_LOG("\nPHY_STUB: Sending Param Request to Lower Mac"); + handlePhyMessages(fapiParamRsp->header.message_type_id, sizeof(fapi_param_resp_t), (void *)fapiParamRsp); +#endif return ROK; } @@ -160,10 +174,11 @@ S16 l1BldAndSndParamRsp(fapi_param_resp_t *fapiParamRsp) * * ****************************************************************/ -S16 l1BldAndSndConfigRsp(fapi_config_resp_t *fapiConfigRsp) +S16 l1BldAndSndConfigRsp(void *msg) { - uint8_t index = 0; +#ifdef FAPI uint32_t msgLen = 0; + fapi_config_resp_t *fapiConfigRsp = (fapi_config_resp_t *)msg; if(fapiConfigRsp != NULL) { @@ -173,12 +188,13 @@ S16 l1BldAndSndConfigRsp(fapi_config_resp_t *fapiConfigRsp) fapiConfigRsp->error_code = MSG_OK; msgLen += sizeof(fapi_config_resp_t); fillMsgHeader(&fapiConfigRsp->header, FAPI_CONFIG_RESPONSE, msgLen); - printf("\nPHY_STUB: Sending Config Response to Lower Mac"); - sendToLowerMac(fapiConfigRsp->header.message_type_id, sizeof(fapi_config_resp_t), (void *)fapiConfigRsp); + DU_LOG("\nPHY_STUB: Sending Config Response to Lower Mac"); + handlePhyMessages(fapiConfigRsp->header.message_type_id, sizeof(fapi_config_resp_t), (void *)fapiConfigRsp); return ROK; } +#endif + return ROK; } - /******************************************************************* * * @brief Handles param request received from MAC @@ -199,12 +215,11 @@ S16 l1BldAndSndConfigRsp(fapi_config_resp_t *fapiConfigRsp) PUBLIC void l1HdlParamReq(uint32_t msgLen, void *msg) { - printf("\nPHY_STUB: Received Param Request in PHY"); - + DU_LOG("\nPHY_STUB: Received Param Request in PHY"); /* Handling PARAM RESPONSE */ if(l1BldAndSndParamRsp(msg)!= ROK) { - printf("\nPHY_STUB: Failed Sending Param Response"); + DU_LOG("\nPHY_STUB: Failed Sending Param Response"); } } @@ -228,7 +243,7 @@ PUBLIC void l1HdlParamReq(uint32_t msgLen, void *msg) PUBLIC void l1HdlConfigReq(uint32_t msgLen, void *msg) { - printf("\nPHY_STUB: Received Config Request in PHY"); + DU_LOG("\nPHY_STUB: Received Config Request in PHY"); /* Handling CONFIG RESPONSE */ if(l1BldAndSndConfigRsp(msg)!= ROK) @@ -237,13 +252,74 @@ PUBLIC void l1HdlConfigReq(uint32_t msgLen, void *msg) } } + +/******************************************************************* + * + * @brief Builds and Sends RACH indication to MAC + * + * @details + * + * Function : l1BuildAndSendRachInd + * + * Functionality: + * Builds and Sends RACH indication to MAC + * + * @params[in] SFN value + * slot value + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t l1BuildAndSendRachInd(uint16_t slot, uint16_t sfn) +{ +#ifdef FAPI + uint8_t rachPduIdx = 0; + uint8_t preamIdx = 0; + fapi_rach_pdu_t *rachPdu; + fapi_rach_indication_t *rachInd; + + /* Building RACH indication */ + if(SGetSBuf(0, 0, (Data **)&rachInd, sizeof(fapi_rach_indication_t)) != ROK) + { + printf("\nPHY_STUB: Memory allocation failed for Rach Indication Message"); + return RFAILED; + } + + rachInd->sfn = sfn; + rachInd->slot = slot; + rachInd->numPdus = 1; + + rachPdu = &rachInd->rachPdu[rachPduIdx]; + rachPdu->physCellId = NR_PCI; + rachPdu->symbolIndex = 0; + rachPdu->slotIndex = slot; + rachPdu->freqIndex = 0; + rachPdu->avgRssi = 0; + rachPdu->avgSnr = 0; + rachPdu->numPreamble = 1; + + rachPdu->preambleInfo[preamIdx].preambleIndex = 3; + rachPdu->preambleInfo[preamIdx].timingAdvance = 0; + rachPdu->preambleInfo[preamIdx].premblePwr = 0; + + fillMsgHeader(&rachInd->header, FAPI_RACH_INDICATION, \ + sizeof(fapi_rach_indication_t)); + + /* Sending RACH indication to MAC */ + DU_LOG("\nPHY STUB: Sending RACH Indication to MAC"); + handlePhyMessages(rachInd->header.message_type_id, sizeof(fapi_rach_indication_t), (void *)rachInd); + SPutSBuf(0, 0, (Data *)rachInd, sizeof(fapi_rach_indication_t)); +#endif + return ROK; +} + /******************************************************************* * * @brief Builds and Send the Slot Indication message to MAC * * @details * - * Function : buildAndSendSlotIndication + * Function : l1BuildAndSendSlotIndication * * Functionality: * -Send the Slot indication Message to MAC @@ -254,23 +330,24 @@ PUBLIC void l1HdlConfigReq(uint32_t msgLen, void *msg) * @return void * * ****************************************************************/ -PUBLIC void buildAndSendSlotIndication() +PUBLIC uint16_t l1BuildAndSendSlotIndication() { +#ifdef FAPI fapi_slot_ind_t *slotIndMsg; if(SGetSBuf(0, 0, (Data **)&slotIndMsg, sizeof(slotIndMsg)) != ROK) { - printf("\nPHY_STUB: Memory allocation failed for slot Indication Message"); + DU_LOG("\nPHY_STUB: Memory allocation failed for slot Indication Message"); return RFAILED; } else { slotValue++; - if(sfnValue >= MAX_SFN_VALUE && slotValue >= MAX_SLOT_VALUE) + if(sfnValue > MAX_SFN_VALUE && slotValue > MAX_SLOT_VALUE) { sfnValue = 0; slotValue = 0; } - else if(slotValue >= MAX_SLOT_VALUE) + else if(slotValue > MAX_SLOT_VALUE) { sfnValue++; slotValue = 0; @@ -278,10 +355,12 @@ PUBLIC void buildAndSendSlotIndication() slotIndMsg->sfn = sfnValue; slotIndMsg->slot = slotValue; fillMsgHeader(&slotIndMsg->header, FAPI_SLOT_INDICATION, sizeof(fapi_slot_ind_t)); - printf("\nPHY_STUB: Sending Slot Indication Msg to Lower Mac"); - handlePhyMessages((void*)slotIndMsg); + DU_LOG("\n\nPHY_STUB: SLOT indication [%d:%d]",sfnValue,slotValue); + handlePhyMessages(slotIndMsg->header.message_type_id, sizeof(fapi_slot_ind_t), (void*)slotIndMsg); SPutSBuf(0, 0, (Data *)slotIndMsg, sizeof(slotIndMsg)); } +#endif + return ROK; } /******************************************************************* @@ -302,18 +381,19 @@ PUBLIC void buildAndSendSlotIndication() * * ****************************************************************/ -PUBLIC void l1HdlStartReq(uint32_t msgLen, void *msg) +PUBLIC S16 l1HdlStartReq(uint32_t msgLen, void *msg) { if(clGlobalCp.phyState == PHY_STATE_CONFIGURED) { duStartSlotIndicaion(); +#ifdef FAPI SPutSBuf(0, 0, (Data *)msg, sizeof(fapi_start_req_t)); - +#endif return ROK; } else { - printf("\n PHY_STUB: Received Start Req in PHY State", clGlobalCp.phyState); + DU_LOG("\nPHY_STUB: Received Start Req in PHY State %d", clGlobalCp.phyState); return RFAILED; } } @@ -336,11 +416,14 @@ PUBLIC void l1HdlStartReq(uint32_t msgLen, void *msg) * * ****************************************************************/ -PUBLIC void l1HdlDlTtiReq(uint16_t msgLen, void *msg) +PUBLIC S16 l1HdlDlTtiReq(uint16_t msgLen, void *msg) { +#ifdef FAPI fapi_dl_tti_req_t *dlTtiReq; dlTtiReq = (fapi_dl_tti_req_t *)msg; - printf("\nPHY_STUB: Received DL TTI Request in PHY"); + + printf("\nPHY STUB: Received DL TTI Request"); +#if 0 printf("\nPHY_STUB: SFN %d", dlTtiReq->sfn); printf("\nPHY_STUB: SLOT %d", dlTtiReq->slot); printf("\nPHY_STUB: nPdus %d", dlTtiReq->nPdus); @@ -353,17 +436,108 @@ PUBLIC void l1HdlDlTtiReq(uint16_t msgLen, void *msg) printf("\nPHY_STUB: ssbOffsetPointA %d", dlTtiReq->pdus->u.ssb_pdu.ssbOffsetPointA); printf("\nPHY_STUB: bchPayloadFlag %d", dlTtiReq->pdus->u.ssb_pdu.bchPayloadFlag); printf("\nPHY_STUB: bchPayload %x", dlTtiReq->pdus->u.ssb_pdu.bchPayload); +#endif + uint8_t pduCount = 0; + if(dlTtiReq->nPdus == 0) + { + DU_LOG("\nPHY_STUB: No PDU in DL TTI Request"); + } + for(pduCount=0; pduCountnPdus; pduCount++) + { + if(dlTtiReq->pdus[pduCount].pduType == 3) //SSB_PDU_TYPE + DU_LOG("\nPHY_STUB: SSB PDU"); + else if(dlTtiReq->pdus[pduCount].pduType == 0) + DU_LOG("\nPHY_STUB: PDCCH PDU"); + else if(dlTtiReq->pdus[pduCount].pduType == 1) + DU_LOG("\nPHY_STUB: PDSCH PDU"); + } +#endif + return ROK; +} - SPutSBuf(0, 0, (Data *)dlTtiReq, sizeof(fapi_dl_tti_req_t)); +/******************************************************************* +* +* @brief Handles tx_data request received from MAC +* +* @details +* +* Function : l1HdlTxDataReq +* +* Functionality: +* -Handles tx_data request received from MAC +* +* @params[in] Message length +* tx_data request message pointer +* +* @return void +* +* ****************************************************************/ + +PUBLIC S16 l1HdlTxDataReq(uint16_t msgLen, void *msg) +{ +#ifdef FAPI + DU_LOG("\nPHY STUB: Received TX DATA Request"); + + fapi_tx_data_req_t *txDataReq; + txDataReq = (fapi_dl_tti_req_t *)msg; +#endif return ROK; } +/******************************************************************* +* +* @brief Handles Ul Tti request received from MAC +* +* @details +* +* Function : l1HdlUlTtiReq +* +* Functionality: +* -Handles Ul Tti request received from MAC +* +* @params[in] Message length +* Ul Tti request message pointer +* +* @return void +* +* ****************************************************************/ + +PUBLIC S16 l1HdlUlTtiReq(uint16_t msgLen, void *msg) +{ +#ifdef FAPI + fapi_ul_tti_req_t *ulTtiReq; + + DU_LOG("\nPHY STUB: Received UL TTI Request"); + + ulTtiReq = (fapi_ul_tti_req_t *)msg; + uint8_t numPdus = ulTtiReq->nPdus; + + if(numPdus == 0) + { + DU_LOG("\nPHY STUB: No PDU in UL TTI"); + } + while(numPdus) + { + if(ulTtiReq->pdus->pduType == 0) + DU_LOG("\nPHY STUB: PRACH PDU"); + numPdus--; + } + if(rachIndSent == false && ulTtiReq->slot == 8) + { + rachIndSent = true; + l1BuildAndSendRachInd(ulTtiReq->slot, ulTtiReq->sfn); + } + +#endif + return ROK; +} + /******************************************************************* * * @brief Receives message from MAC * * @details * - * Function : processFapiRequest + * Function : l1ProcessFapiRequest * * Functionality: * - Receives message from MAC and calls handler @@ -376,10 +550,11 @@ PUBLIC void l1HdlDlTtiReq(uint16_t msgLen, void *msg) * * ****************************************************************/ -void processFapiRequest(uint8_t msgType, uint32_t msgLen, void *msg) +void l1ProcessFapiRequest(uint8_t msgType, uint32_t msgLen, void *msg) { switch(msgType) { +#ifdef FAPI case FAPI_PARAM_REQUEST: l1HdlParamReq(msgLen, msg); break; @@ -392,9 +567,16 @@ void processFapiRequest(uint8_t msgType, uint32_t msgLen, void *msg) case FAPI_DL_TTI_REQUEST: l1HdlDlTtiReq(msgLen, msg); break; + case FAPI_TX_DATA_REQUEST: + l1HdlTxDataReq(msgLen, msg); + break; + case FAPI_UL_TTI_REQUEST: + l1HdlUlTtiReq(msgLen, msg); + break; default: - printf("\nPHY_STUB: Invalid message type[%x] received at PHY", msgType); + DU_LOG("\nPHY_STUB: Invalid message type[%x] received at PHY", msgType); break; +#endif } } /**********************************************************************