From 6534f900f4577b52a4e0aae853712b28a787fb3b Mon Sep 17 00:00:00 2001 From: "lal.harshita" Date: Thu, 28 Jul 2022 14:45:53 +0530 Subject: [PATCH] Convergence Layer for ODU-High and UE simulator communication Signed-off-by: lal.harshita Change-Id: Iee7fd6a9a684f25520e9744d982f8df876b44d19 --- build/common/fapi_cl.mak | 60 + build/odu/makefile | 18 +- src/5gnrmac/lwr_mac_ex_ms.c | 40 + src/5gnrmac/lwr_mac_fsm.c | 49 +- src/5gnrmac/lwr_mac_handle_phy.c | 6 +- src/5gnrmac/lwr_mac_phy.c | 113 +- src/5gnrmac/mac.h | 5 +- src/5gnrmac/mac_demux.c | 56 +- src/5gnrmac/mac_msg_hdl.c | 6 +- src/5gnrmac/mac_mux.c | 4 +- src/cm/common_def.h | 7 +- src/cm/lwr_mac_fapi_cl_inf.h | 26 + src/cm/mac_sch_interface.h | 1 - src/cm/ssi.h | 4 + src/du_app/du_cell_mgr.c | 4 + src/du_app/du_mgr_main.c | 116 +- src/fapi_cl/fapi_cl.h | 81 ++ src/fapi_cl/fapi_cl_comm.c | 210 ++++ src/fapi_cl/fapi_cl_ex_ms.c | 147 +++ src/fapi_cl/fapi_cl_mac2phy.c | 1351 ++++++++++++++++++++ src/fapi_cl/fapi_cl_phy2mac.c | 797 ++++++++++++ src/fapi_cl/fapi_cl_utils.h | 127 ++ src/fapi_cl/fapi_interface_ue_sim.h | 2349 +++++++++++++++++++++++++++++++++++ src/fapi_cl/tags | 1576 +++++++++++++++++++++++ src/mt/mt_ss.c | 67 +- src/mt/mt_ss.h | 4 + 26 files changed, 7092 insertions(+), 132 deletions(-) create mode 100755 build/common/fapi_cl.mak create mode 100644 src/cm/lwr_mac_fapi_cl_inf.h create mode 100644 src/fapi_cl/fapi_cl.h create mode 100644 src/fapi_cl/fapi_cl_comm.c create mode 100644 src/fapi_cl/fapi_cl_ex_ms.c create mode 100644 src/fapi_cl/fapi_cl_mac2phy.c create mode 100644 src/fapi_cl/fapi_cl_phy2mac.c create mode 100644 src/fapi_cl/fapi_cl_utils.h create mode 100644 src/fapi_cl/fapi_interface_ue_sim.h create mode 100644 src/fapi_cl/tags diff --git a/build/common/fapi_cl.mak b/build/common/fapi_cl.mak new file mode 100755 index 000000000..73cf58224 --- /dev/null +++ b/build/common/fapi_cl.mak @@ -0,0 +1,60 @@ +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ + +# This is makefile for FAPI Convergence Layer + +include ../common/rsys_fancy.mak +include ../common/env.mak +COLOR=$(COLOR_RED) + +SRC_DIR=$(ROOT_DIR)/src/fapi_cl/ +C_SRCS=$(wildcard $(SRC_DIR)/*.c) +C_OBJS=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(C_SRCS)) + +# prepare the list of common header files +HDR_FILES+=$(wildcard $(CM_DIR)/env*.[hx]) +HDR_FILES+=$(wildcard $(CM_DIR)/gen*.[hx]) +HDR_FILES+=$(wildcard $(CM_DIR)/ssi*.[hx]) +HDR_FILES+=$(wildcard $(CM_DIR)/cm*.[hx]) + + +lib: $(LIB_DIR)/libfapicl.a +include $(COM_BUILD_DIR)/compile.mak + +I_OPTS+=-I$(ROOT_DIR)/src/mt +I_OPTS+=-I$(ROOT_DIR)/src/5gnrmac +I_OPTS+=-I$(ROOT_DIR)/src/intel_fapi + + +#-------------------------------------------------------------# +#Linker macros +#-------------------------------------------------------------# +$(LIB_DIR)/libfapicl.a:$(C_OBJS) + @echo -e "Creating Archive $(COLOR) $@ $(REVERT_COLOR)" + $(Q)ar -cr $(LIB_DIR)/libfapicl.a $(C_OBJS) + +#-------------------------------------------------------------# +#Clean macros +#-------------------------------------------------------------# +clean: + @echo $(OAM_ENABLE) + @echo -e "$(COLOR_RED)Cleaning FAPI CL$(REVERT_COLOR)" + @echo $(SRC_DIR) $(CM_DIR) + $(Q)\rm -f $(LIB_DIR)/libfapicl.a $(C_OBJS) + +#********************************************************************** +# End of file +#********************************************************************** diff --git a/build/odu/makefile b/build/odu/makefile index d2d994eb7..4c6957449 100644 --- a/build/odu/makefile +++ b/build/odu/makefile @@ -79,6 +79,7 @@ PLTFRM_FLAGS= -UMSPD -DODU -DINTEL_FAPI -UODU_MEMORY_DEBUG_LOG -DDEBUG_ASN_PRINT ifeq ($(MODE),TDD) PLTFRM_FLAGS += -DNR_TDD endif + ifeq ($(CA_ENABLE),YES) PLTFRM_FLAGS += -DCA_ENABLE=YES endif @@ -86,6 +87,7 @@ endif ifeq ($(NODE),TEST_STUB) PLTFRM_FLAGS+=-DODU_TEST_STUB endif + ifeq ($(PHY), INTEL_L1) PLTFRM_FLAGS+=-DSS_USE_WLS_MEM -DINTEL_WLS_MEM -DDEBUG_MODE -DINTEL_L1_V20_03_ONWARDS ifeq ($(PHY_MODE),TIMER) @@ -93,6 +95,10 @@ ifeq ($(PHY_MODE),TIMER) endif endif +ifeq ($(PHY), UE_SIM) + PLTFRM_FLAGS+=-DUE_SIM_TEST -DFAPI_222_10_03 +endif + ifeq ($(O1_ENABLE),YES) PLTFRM_FLAGS+=-DO1_ENABLE endif @@ -195,10 +201,15 @@ du: $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/mac.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/sch.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' - + +ifneq ($(PHY), UE_SIM) ifneq ($(PHY), INTEL_L1) $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/phy_stub.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' endif +else + $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/fapi_cl.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' +endif + ifeq ($(O1_ENABLE),YES) $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/o1.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)' $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/ves.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)' @@ -220,9 +231,14 @@ clean_odu: $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/sch.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' +ifneq ($(PHY), UE_SIM) ifneq ($(PHY), INTEL_L1) $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/phy_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' endif +else + $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/fapi_cl.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)' +endif + ifeq ($(O1_ENABLE),YES) $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/o1.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)' $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/ves.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)' diff --git a/src/5gnrmac/lwr_mac_ex_ms.c b/src/5gnrmac/lwr_mac_ex_ms.c index fe25953bc..a5cc14f48 100644 --- a/src/5gnrmac/lwr_mac_ex_ms.c +++ b/src/5gnrmac/lwr_mac_ex_ms.c @@ -29,6 +29,9 @@ #ifndef INTEL_WLS_MEM #include "lwr_mac_phy_stub_inf.h" #endif +#ifdef UE_SIM_TEST +#include "lwr_mac_fapi_cl_inf.h" +#endif /************************************************************************** * @brief Task Initiation callback function. @@ -230,6 +233,43 @@ uint8_t lwrMacActvTsk(Pst *pst, Buffer *mBuf) } #endif +#ifdef UE_SIM_TEST + case ENTFAPICL: + { + switch(pst->event) + { + case EVT_FAPI_CL_SLOT_IND: + { + fapi_slot_ind_t *slotIndMsg; + + CMCHKUNPK(oduUnpackPointer, (PTR *)&slotIndMsg, mBuf); + ODU_PUT_MSG_BUF(mBuf); + + procPhyMessages(slotIndMsg->header.msg_id, sizeof(fapi_slot_ind_t), (void*)slotIndMsg); + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, slotIndMsg, sizeof(fapi_slot_ind_t)); + break; + } + + case EVT_FAPI_CL_STOP_IND: + { + fapi_stop_ind_t *stopIndMsg; + CMCHKUNPK(oduUnpackPointer, (PTR *)&stopIndMsg, mBuf); + ODU_PUT_MSG_BUF(mBuf); + + procPhyMessages(stopIndMsg->header.msg_id, sizeof(fapi_stop_ind_t), (void*)stopIndMsg); + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, stopIndMsg, sizeof(fapi_stop_ind_t)); + break; + } + + default: + { + DU_LOG("\nERROR --> LWR_MAC: Invalid event %d received from PHY STUB", pst->event); + } + } + break; + } +#endif + default: { ODU_PUT_MSG_BUF(mBuf); diff --git a/src/5gnrmac/lwr_mac_fsm.c b/src/5gnrmac/lwr_mac_fsm.c index d0b8fe6be..4cbe825a5 100644 --- a/src/5gnrmac/lwr_mac_fsm.c +++ b/src/5gnrmac/lwr_mac_fsm.c @@ -2233,7 +2233,7 @@ uint8_t lwr_mac_procConfigReqEvt(void *msg) sizeof(fapi_msg_header_t)); msgHeader = (fapi_msg_header_t *)(headerElem + 1); msgHeader->num_msg = 2; /* Config req msg and vendor specific msg */ - msgHeader->handle = 0; + msgHeader->handle = macCfgParams.cellId; DU_LOG("\nDEBUG --> LWR_MAC: Sending Config Request to Phy"); LwrMacSendToL1(headerElem); @@ -2266,25 +2266,25 @@ uint8_t lwr_mac_procConfigRspEvt(void *msg) configRsp = (fapi_config_resp_t *)msg; DU_LOG("\nINFO --> LWR_MAC: Received EVENT[%d] at STATE[%d]", lwrMacCb.event, \ - lwrMacCb.phyState); + lwrMacCb.phyState); if(configRsp != NULL) { if(configRsp->error_code == MSG_OK) { - DU_LOG("\nDEBUG --> LWR_MAC: PHY has moved to Configured state \n"); - lwrMacCb.phyState = PHY_STATE_CONFIGURED; - lwrMacCb.cellCb[0].state = PHY_STATE_CONFIGURED; - /* TODO : - * Store config response into an intermediate struture and send to MAC - * Support LC and LWLC for sending config rsp to MAC - */ - fapiMacConfigRsp(lwrMacCb.cellCb[0].cellId); + DU_LOG("\nDEBUG --> LWR_MAC: PHY has moved to Configured state \n"); + lwrMacCb.phyState = PHY_STATE_CONFIGURED; + lwrMacCb.cellCb[0].state = PHY_STATE_CONFIGURED; + /* TODO : + * Store config response into an intermediate struture and send to MAC + * Support LC and LWLC for sending config rsp to MAC + */ + fapiMacConfigRsp(lwrMacCb.cellCb[0].cellId); } else { - DU_LOG("\nERROR --> LWR_MAC: Invalid error code %d", configRsp->error_code); - return RFAILED; + DU_LOG("\nERROR --> LWR_MAC: Invalid error code %d", configRsp->error_code); + return RFAILED; } } else @@ -2372,7 +2372,7 @@ uint8_t lwr_mac_procStartReqEvt(void *msg) sizeof(fapi_msg_header_t)); msgHeader = (fapi_msg_header_t *)(headerElem + 1); msgHeader->num_msg = 2; /* Start req msg and vendor specific msg */ - msgHeader->handle = 0; + msgHeader->handle = ((OduCellId *)msg)->cellId; /* Send to PHY */ DU_LOG("\nDEBUG --> LWR_MAC: Sending Start Request to Phy"); @@ -2830,7 +2830,7 @@ void fillRarDlDciPdu(fapi_dl_dci_t *dlDciPtr, PdcchCfg *rarPdcchInfo) uint8_t tbScalingSize = 2; uint8_t reservedSize = 16; - dlDciPtr->rnti = rarPdcchInfo->dci.rnti; + dlDciPtr->rnti = 100; //rarPdcchInfo->dci.rnti; //17017; //rarPdcchInfo->dci.rnti;; dlDciPtr->scramblingId = rarPdcchInfo->dci.scramblingId; dlDciPtr->scramblingRnti = rarPdcchInfo->dci.scramblingRnti; dlDciPtr->cceIndex = rarPdcchInfo->dci.cceIndex; @@ -3561,7 +3561,7 @@ uint8_t fillSib1TxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, MacCel #ifdef INTEL_WLS_MEM addWlsBlockToFree(sib1Payload, payloadSize, (lwrMacCb.phySlotIndCntr-1)); -#else +#elif (!defined(UE_SIM_TEST)) LWR_MAC_FREE(sib1Payload, payloadSize); #endif @@ -3622,7 +3622,7 @@ uint8_t fillPageTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, DlPage #ifdef INTEL_WLS_MEM addWlsBlockToFree(pagePayload, payloadSize, (lwrMacCb.phySlotIndCntr-1)); -#else +#elif (!defined(UE_SIM_TEST)) LWR_MAC_FREE(pagePayload, payloadSize); #endif @@ -3682,7 +3682,7 @@ uint8_t fillRarTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, RarInfo #ifdef INTEL_WLS_MEM addWlsBlockToFree(rarPayload, payloadSize, (lwrMacCb.phySlotIndCntr-1)); -#else +#elif (!defined(UE_SIM_TEST)) LWR_MAC_FREE(rarPayload, payloadSize); #endif return ROK; @@ -3741,7 +3741,7 @@ uint8_t fillDlMsgTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, DlMsg #ifdef INTEL_WLS_MEM addWlsBlockToFree(dlMsgPayload, payloadSize, (lwrMacCb.phySlotIndCntr-1)); -#else +#elif (!defined(UE_SIM_TEST)) LWR_MAC_FREE(dlMsgPayload, payloadSize); #endif return ROK; @@ -3831,7 +3831,7 @@ uint16_t fillDlTtiReq(SlotTimingInfo currTimingInfo) sizeof(fapi_msg_header_t)); msgHeader = (fapi_msg_header_t *)(headerElem + 1); msgHeader->num_msg = 2; - msgHeader->handle = 0; + msgHeader->handle = macCellCfg.cellId; /* Fill Dl TTI Request */ dlTtiReq = (fapi_dl_tti_req_t *)(dlTtiElem +1); @@ -3934,7 +3934,9 @@ uint16_t fillDlTtiReq(SlotTimingInfo currTimingInfo) currDlSlot->dlInfo.rarAlloc[ueIdx]->rarPdschCfg, currDlSlot->dlInfo.rarAlloc[ueIdx]->bwp, pduIndex); - numPduEncoded++; + //dlTtiReq->pdus[numPduEncoded].pdu.pdsch_pdu.rnti = 17017; + dlTtiReq->pdus[numPduEncoded].pdu.pdsch_pdu.rnti = 100; + numPduEncoded++; pduIndex++; DU_LOG("\033[1;32m"); @@ -4310,7 +4312,7 @@ void fillPuschPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu ulTtiReqPdu->pdu.pusch_pdu.pduBitMap = 1; ulTtiReqPdu->pdu.pusch_pdu.rnti = currUlSlot->ulInfo.crnti; /* TODO : Fill handle in raCb when scheduling pusch and access here */ - ulTtiReqPdu->pdu.pusch_pdu.handle = 100; + ulTtiReqPdu->pdu.pusch_pdu.handle = macCellCfg->cellId; ulTtiReqPdu->pdu.pusch_pdu.bwpSize = macCellCfg->initialUlBwp.bwp.numPrb; ulTtiReqPdu->pdu.pusch_pdu.bwpStart = macCellCfg->initialUlBwp.bwp.firstPrb; ulTtiReqPdu->pdu.pusch_pdu.subCarrierSpacing = \ @@ -4400,7 +4402,7 @@ void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu memset(&ulTtiReqPdu->pdu.pucch_pdu, 0, sizeof(fapi_ul_pucch_pdu_t)); ulTtiReqPdu->pdu.pucch_pdu.rnti = currUlSlot->ulInfo.crnti; /* TODO : Fill handle in raCb when scheduling pucch and access here */ - ulTtiReqPdu->pdu.pucch_pdu.handle = 100; + ulTtiReqPdu->pdu.pucch_pdu.handle = macCellCfg->cellId; ulTtiReqPdu->pdu.pucch_pdu.bwpSize = macCellCfg->initialUlBwp.bwp.numPrb; ulTtiReqPdu->pdu.pucch_pdu.bwpStart = macCellCfg->initialUlBwp.bwp.firstPrb; ulTtiReqPdu->pdu.pucch_pdu.subCarrierSpacing = macCellCfg->initialUlBwp.bwp.scs; @@ -4513,6 +4515,7 @@ uint16_t fillUlTtiReq(SlotTimingInfo currTimingInfo, p_fapi_api_queue_elem_t pre { pduIdx++; fillPrachPdu(&ulTtiReq->pdus[pduIdx], &macCellCfg, currUlSlot); + DU_LOG("\nDEBUG --> LWR_MAC: PRACH PDU"); ulTtiReq->rachPresent++; } @@ -4521,6 +4524,7 @@ uint16_t fillUlTtiReq(SlotTimingInfo currTimingInfo, p_fapi_api_queue_elem_t pre { pduIdx++; fillPuschPdu(&ulTtiReq->pdus[pduIdx], &vendorUlTti->ul_pdus[pduIdx], &macCellCfg, currUlSlot); + DU_LOG("\nDEBUG --> LWR_MAC: PUSCH PDU"); ulTtiReq->nUlsch++; } /* Fill PUCCH PDU */ @@ -4528,6 +4532,7 @@ uint16_t fillUlTtiReq(SlotTimingInfo currTimingInfo, p_fapi_api_queue_elem_t pre { pduIdx++; fillPucchPdu(&ulTtiReq->pdus[pduIdx], &vendorUlTti->ul_pdus[pduIdx], &macCellCfg, currUlSlot); + DU_LOG("\nDEBUG --> LWR_MAC: PUCCH PDU"); ulTtiReq->nUlcch++; } } diff --git a/src/5gnrmac/lwr_mac_handle_phy.c b/src/5gnrmac/lwr_mac_handle_phy.c index 5c22704f5..5bb67d7ae 100644 --- a/src/5gnrmac/lwr_mac_handle_phy.c +++ b/src/5gnrmac/lwr_mac_handle_phy.c @@ -275,10 +275,10 @@ uint8_t procCrcInd(fapi_crc_ind_t *fapiCrcInd) crcIndInfo->harqId = fapiCrcInd->crc[crcInfoIdx].harqId; crcIndInfo->tbCrcStatus = fapiCrcInd->crc[crcInfoIdx].tbCrcStatus; crcIndInfo->numCb = fapiCrcInd->crc[crcInfoIdx].numCb; - for(crcStatusIdx = 0; crcStatusIdx < crcIndInfo->numCb; crcStatusIdx++) + for(crcStatusIdx = 0; crcStatusIdx < ceil(crcIndInfo->numCb/8); crcStatusIdx++) { - crcIndInfo->cbCrcStatus[crcStatusIdx] = \ - fapiCrcInd->crc[crcInfoIdx].cbCrcStatus[crcStatusIdx]; + crcIndInfo->cbCrcStatus[crcStatusIdx] = \ + fapiCrcInd->crc[crcInfoIdx].cbCrcStatus[crcStatusIdx]; } crcIndInfo->ul_cqi = fapiCrcInd->crc[crcInfoIdx].ul_cqi; crcIndInfo->timingAdvance = fapiCrcInd->crc[crcInfoIdx].timingAdvance; diff --git a/src/5gnrmac/lwr_mac_phy.c b/src/5gnrmac/lwr_mac_phy.c index 23571ae7e..00b87f7e3 100644 --- a/src/5gnrmac/lwr_mac_phy.c +++ b/src/5gnrmac/lwr_mac_phy.c @@ -40,6 +40,7 @@ uint8_t rgClHndlCfgReq ARGS((void *msg)); void l1ProcessFapiRequest ARGS((uint8_t msgType, uint32_t msgLen, void *msg)); +void fapiClProcessFapiMsg(void *msg); #ifdef INTEL_WLS_MEM @@ -221,30 +222,30 @@ void LwrMacRecvPhyMsg() { while(true) { - numMsgToGet = WLS_Wait(wlsHdlr); - if(numMsgToGet == 0) - { - continue; - } + numMsgToGet = WLS_Wait(wlsHdlr); + if(numMsgToGet == 0) + { + continue; + } - while(numMsgToGet--) - { - currElem = NULLP; - l1Msg = (uint64_t)NULLP; - l1MsgPtr = NULLP; - l1Msg = WLS_Get(wlsHdlr, &msgSize, &msgType, &flag); - if(l1Msg) - { - l1MsgPtr = WLS_PA2VA(wlsHdlr, l1Msg); - currElem = (p_fapi_api_queue_elem_t) l1MsgPtr; - if(currElem->msg_type != FAPI_VENDOR_MSG_HEADER_IND) - { - procPhyMessages(currElem->msg_type, 0, (void *)(currElem + 1)); - } - WLS_MEM_FREE(currElem, LWR_MAC_WLS_BUF_SIZE); - } - } - LwrMacEnqueueWlsBlock(); + while(numMsgToGet--) + { + currElem = NULLP; + l1Msg = (uint64_t)NULLP; + l1MsgPtr = NULLP; + l1Msg = WLS_Get(wlsHdlr, &msgSize, &msgType, &flag); + if(l1Msg) + { + l1MsgPtr = WLS_PA2VA(wlsHdlr, l1Msg); + currElem = (p_fapi_api_queue_elem_t) l1MsgPtr; + if(currElem->msg_type != FAPI_VENDOR_MSG_HEADER_IND) + { + procPhyMessages(currElem->msg_type, 0, (void *)(currElem + 1)); + } + WLS_MEM_FREE(currElem, LWR_MAC_WLS_BUF_SIZE); + } + } + LwrMacEnqueueWlsBlock(); } } #endif @@ -327,48 +328,48 @@ uint8_t LwrMacSendToL1(void *msg) addWlsBlockToFree(currMsg, msgLen, (lwrMacCb.phySlotIndCntr-1)); if(currMsg->p_next == NULLP) { - DU_LOG("\nERROR --> LWR MAC : There cannot be only one block to send"); - return RFAILED; + DU_LOG("\nERROR --> LWR MAC : There cannot be only one block to send"); + return RFAILED; } /* Sending first block */ ret = WLS_Put(wlsHdlr, WLS_VA2PA(wlsHdlr, currMsg), msgLen, currMsg->msg_type, WLS_SG_FIRST); if(ret != 0) { - DU_LOG("\nERROR --> LWR MAC : Failure in sending message to PHY"); - return RFAILED; + DU_LOG("\nERROR --> LWR MAC : Failure in sending message to PHY"); + return RFAILED; } currMsg = currMsg->p_next; while(currMsg) { - /* Sending the next msg */ - msgLen = currMsg->msg_len + sizeof(fapi_api_queue_elem_t); - addWlsBlockToFree(currMsg, msgLen, (lwrMacCb.phySlotIndCntr-1)); - if(currMsg->p_next != NULLP) - { - ret = WLS_Put(wlsHdlr, WLS_VA2PA(wlsHdlr, currMsg), msgLen, currMsg->msg_type, WLS_SG_NEXT); - if(ret != 0) - { - DU_LOG("\nERROR --> LWR MAC : Failure in sending message to PHY"); - return RFAILED; - } - currMsg = currMsg->p_next; - } - else - { - /* Sending last msg */ - ret = WLS_Put(wlsHdlr, WLS_VA2PA(wlsHdlr, currMsg), msgLen, currMsg->msg_type, WLS_SG_LAST); - if(ret != 0) - { - DU_LOG("\nERROR --> LWR MAC : Failure in sending message to PHY"); - return RFAILED; - } - currMsg = NULLP; - } + /* Sending the next msg */ + msgLen = currMsg->msg_len + sizeof(fapi_api_queue_elem_t); + addWlsBlockToFree(currMsg, msgLen, (lwrMacCb.phySlotIndCntr-1)); + if(currMsg->p_next != NULLP) + { + ret = WLS_Put(wlsHdlr, WLS_VA2PA(wlsHdlr, currMsg), msgLen, currMsg->msg_type, WLS_SG_NEXT); + if(ret != 0) + { + DU_LOG("\nERROR --> LWR MAC : Failure in sending message to PHY"); + return RFAILED; + } + currMsg = currMsg->p_next; + } + else + { + /* Sending last msg */ + ret = WLS_Put(wlsHdlr, WLS_VA2PA(wlsHdlr, currMsg), msgLen, currMsg->msg_type, WLS_SG_LAST); + if(ret != 0) + { + DU_LOG("\nERROR --> LWR MAC : Failure in sending message to PHY"); + return RFAILED; + } + currMsg = NULLP; + } } } -#else +#elif !defined(UE_SIM_TEST) p_fapi_api_queue_elem_t nextMsg = NULLP; /* FAPI header and vendor specific msgs are freed here. Only @@ -379,16 +380,18 @@ uint8_t LwrMacSendToL1(void *msg) nextMsg = currMsg->p_next; msgLen = currMsg->msg_len + sizeof(fapi_api_queue_elem_t); if((currMsg->msg_type != FAPI_VENDOR_MSG_HEADER_IND) && \ - (currMsg->msg_type != FAPI_VENDOR_MESSAGE)) + (currMsg->msg_type != FAPI_VENDOR_MESSAGE)) { - l1ProcessFapiRequest(currMsg->msg_type, msgLen, currMsg); + l1ProcessFapiRequest(currMsg->msg_type, msgLen, currMsg); } else { - LWR_MAC_FREE(currMsg, msgLen); + LWR_MAC_FREE(currMsg, msgLen); } currMsg = nextMsg; } +#else + fapiClProcessMac2UeSimFapiMsg(msg); #endif #endif return ret; diff --git a/src/5gnrmac/mac.h b/src/5gnrmac/mac.h index 64ff813fb..f0df1b4a5 100644 --- a/src/5gnrmac/mac.h +++ b/src/5gnrmac/mac.h @@ -31,12 +31,13 @@ #define SI_RNTI 0xFFFF #define P_RNTI 0xFFFE -#define MAC_LCID_CCCH 0 +#define MAC_LCID_DL_CCCH 0 +#define MAC_LCID_UL_CCCH_64BIT 0 #define MAC_LCID_MIN 1 #define MAC_LCID_MAX 32 #define MAC_LCID_RESERVED_MIN 33 #define MAC_LCID_RESERVED_MAX 51 -#define MAC_LCID_CCCH_48BIT 52 +#define MAC_LCID_UL_CCCH_48BIT 52 #define MAC_LCID_BIT_RATE_QUERY 53 #define MAC_LCID_MULT_PHR_FOUR_OCT 54 #define MAC_LCID_CFG_GRANT_CFM 55 diff --git a/src/5gnrmac/mac_demux.c b/src/5gnrmac/mac_demux.c index 1989a3be5..db626d58a 100644 --- a/src/5gnrmac/mac_demux.c +++ b/src/5gnrmac/mac_demux.c @@ -88,32 +88,8 @@ uint8_t unpackRxData(uint16_t cellId, SlotTimingInfo slotInfo, RxDataIndPdu *rxD pdu = NULLP; switch(lcId) { - case MAC_LCID_CCCH : - { - pduLen--; - - /* for UL CCCH,fixed length of MAC SDU */ - length = 6; - - /* Allocating sharable memory to send ul ccch msg to du app*/ - MAC_ALLOC_SHRABL_BUF(pdu, length); - if(!pdu) - { - DU_LOG("\nERROR --> MAC : UL CCCH PDU memory allocation failed"); - return RFAILED; - } - rxPduIdx++; - memcpy(pdu, &rxDataPdu[rxPduIdx], length); - pduLen -= length; - rxPduIdx = rxPduIdx + length; - - /* store msg3 pdu in macRaCb for CRI value */ - memcpy(macCb.macCell[cellIdx]->macRaCb[ueIdx].msg3Pdu, pdu, length); - - /* Send UL-CCCH Indication to DU APP */ - ret = macProcUlCcchInd(macCb.macCell[cellIdx]->cellId, rxDataIndPdu->rnti, length, pdu); - break; - } + case MAC_LCID_UL_CCCH_64BIT : + break; case MAC_LCID_MIN ... MAC_LCID_MAX : { @@ -151,8 +127,32 @@ uint8_t unpackRxData(uint16_t cellId, SlotTimingInfo slotInfo, RxDataIndPdu *rxD case MAC_LCID_RESERVED_MIN ... MAC_LCID_RESERVED_MAX : break; - case MAC_LCID_CCCH_48BIT : - break; + case MAC_LCID_UL_CCCH_48BIT : + { + pduLen--; + + /* for UL CCCH,fixed length of MAC SDU */ + length = 6; + + /* Allocating sharable memory to send ul ccch msg to du app*/ + MAC_ALLOC_SHRABL_BUF(pdu, length); + if(!pdu) + { + DU_LOG("\nERROR --> MAC : UL CCCH PDU memory allocation failed"); + return RFAILED; + } + rxPduIdx++; + memcpy(pdu, &rxDataPdu[rxPduIdx], length); + pduLen -= length; + rxPduIdx = rxPduIdx + length; + + /* store msg3 pdu in macRaCb for CRI value */ + memcpy(macCb.macCell[cellIdx]->macRaCb[ueIdx].msg3Pdu, pdu, length); + + /* Send UL-CCCH Indication to DU APP */ + ret = macProcUlCcchInd(macCb.macCell[cellIdx]->cellId, rxDataIndPdu->rnti, length, pdu); + break; + } case MAC_LCID_BIT_RATE_QUERY : break; diff --git a/src/5gnrmac/mac_msg_hdl.c b/src/5gnrmac/mac_msg_hdl.c index d36792a55..638f4b48e 100644 --- a/src/5gnrmac/mac_msg_hdl.c +++ b/src/5gnrmac/mac_msg_hdl.c @@ -186,7 +186,7 @@ uint8_t fapiMacCrcInd(Pst *pst, CrcInd *crcInd) crcIndInfo.crnti = crcInd->crcInfo[0].rnti; crcIndInfo.timingInfo.sfn = crcInd->timingInfo.sfn; crcIndInfo.timingInfo.slot = crcInd->timingInfo.slot; - crcIndInfo.numCrcInd = crcInd->crcInfo[0].numCb; + crcIndInfo.numCrcInd = crcInd->numCrc; crcIndInfo.crcInd[0] = crcInd->crcInfo[0].cbCrcStatus[0]; MAC_FREE_SHRABL_BUF(pst->region, pst->pool, crcInd, sizeof(CrcInd)); @@ -764,7 +764,7 @@ uint8_t macProcLongBsr(uint16_t cellId, uint16_t crnti,uint8_t numLcg,\ * RFAILED - failure * * ****************************************************************/ -uint8_t buildAndSendHarqInd(HarqInfoF0F1 *harqInfo, uint8_t crnti, uint16_t cellIdx, SlotTimingInfo *slotInd) +uint8_t buildAndSendHarqInd(HarqInfoF0F1 *harqInfo, uint16_t crnti, uint16_t cellIdx, SlotTimingInfo *slotInd) { uint16_t harqCounter=0; Pst pst; @@ -807,7 +807,7 @@ uint8_t buildAndSendHarqInd(HarqInfoF0F1 *harqInfo, uint8_t crnti, uint16_t cell * RFAILED - failure * * ****************************************************************/ -uint8_t buildAndSendSrInd(UciInd *macUciInd, uint8_t crnti) +uint8_t buildAndSendSrInd(UciInd *macUciInd, uint16_t crnti) { uint16_t cellIdx; Pst pst; diff --git a/src/5gnrmac/mac_mux.c b/src/5gnrmac/mac_mux.c index 05ae55caa..609829f13 100644 --- a/src/5gnrmac/mac_mux.c +++ b/src/5gnrmac/mac_mux.c @@ -223,7 +223,7 @@ void fillRarPdu(RarInfo *rarInfo) void fillMsg4DlData(MacDlData *dlData, uint16_t msg4PduLen, uint8_t *msg4Pdu) { - dlData->pduInfo[dlData->numPdu].lcId = MAC_LCID_CCCH; + dlData->pduInfo[dlData->numPdu].lcId = MAC_LCID_DL_CCCH; dlData->pduInfo[dlData->numPdu].pduLen = msg4PduLen; memcpy(dlData->pduInfo[dlData->numPdu].dlPdu, msg4Pdu, msg4PduLen); dlData->numPdu++; @@ -319,7 +319,7 @@ void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint8_t *txPdu, uint16_t lcid = dlData->pduInfo[pduIdx].lcId; switch(lcid) { - case MAC_LCID_CCCH: + case MAC_LCID_DL_CCCH: case MAC_LCID_MIN ... MAC_LCID_MAX : { lenField = dlData->pduInfo[pduIdx].pduLen; diff --git a/src/cm/common_def.h b/src/cm/common_def.h index 1bdb4a118..13fd130ba 100644 --- a/src/cm/common_def.h +++ b/src/cm/common_def.h @@ -80,8 +80,8 @@ #define ODU_SELECTOR_TC 1 #define ODU_SELECTOR_LWLC 2 -#define ODU_START_CRNTI 100 -#define ODU_END_CRNTI 500 +#define ODU_START_CRNTI 17017 +#define ODU_END_CRNTI 17020 /* LCID */ #define SRB0_LCID 0 @@ -126,11 +126,14 @@ #define MAX_SFN 1024 +#define TX_PAYLOAD_HDR_LEN 32 /* Intel L1 requires adding a 32 byte header to transmitted payload */ + /* Defining macros for common utility functions */ #define ODU_GET_MSG_BUF SGetMsg #define ODU_PUT_MSG_BUF SPutMsg #define ODU_ADD_PRE_MSG_MULT SAddPreMsgMult #define ODU_ADD_PRE_MSG_MULT_IN_ORDER SAddPreMsgMultInOrder +#define ODU_ADD_POST_MSG SAddPstMsg #define ODU_ADD_POST_MSG_MULT SAddPstMsgMult #define ODU_START_TASK SStartTask #define ODU_STOP_TASK SStopTask diff --git a/src/cm/lwr_mac_fapi_cl_inf.h b/src/cm/lwr_mac_fapi_cl_inf.h new file mode 100644 index 000000000..0873669ed --- /dev/null +++ b/src/cm/lwr_mac_fapi_cl_inf.h @@ -0,0 +1,26 @@ +/******************************************************************************* +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ +*******************************************************************************/ + +#ifdef UE_SIM_TEST +#define EVT_FAPI_CL_SLOT_IND 1 +#define EVT_FAPI_CL_STOP_IND 2 +#endif + +/********************************************************************** + End of file +***********************************************************************/ diff --git a/src/cm/mac_sch_interface.h b/src/cm/mac_sch_interface.h index 88b347e36..58ffeffda 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -94,7 +94,6 @@ #define QPSK_MODULATION 2 #define RAR_PAYLOAD_SIZE 10 /* As per spec 38.321, sections 6.1.5 and 6.2.3, RAR PDU is 8 bytes long and 2 bytes of padding */ -#define TX_PAYLOAD_HDR_LEN 32 /* Intel L1 requires adding a 32 byte header to transmitted payload */ #define UL_TX_BUFFER_SIZE 5 #define MAX_NUM_CONFIG_SLOTS 160 /*Max number of slots as per the numerology*/ diff --git a/src/cm/ssi.h b/src/cm/ssi.h index 3379caeab..0d719d0d3 100755 --- a/src/cm/ssi.h +++ b/src/cm/ssi.h @@ -1370,6 +1370,10 @@ #define ENTPX 0xe2 /* LTE PDCP Data User */ +#ifdef UE_SIM_TEST +#define ENTFAPICL 0xe3 /* FAPI Convergence Layer */ +#endif + #ifdef SS_FAP /* ssi_h_001.main_128: Entity for FAP is added */ /*ssi_h_001.main_145-FAP specific aditions*/ diff --git a/src/du_app/du_cell_mgr.c b/src/du_app/du_cell_mgr.c index 286d2db88..a15c89cb9 100644 --- a/src/du_app/du_cell_mgr.c +++ b/src/du_app/du_cell_mgr.c @@ -302,6 +302,7 @@ uint8_t sendDlPcchIndToMac(DlPcchInd *pcchInd) *****************************************************************/ uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo) { + static uint16_t count = 0; uint8_t cellIdx = 0, ret = ROK; DuCellCb *duCellCb = NULLP; @@ -328,6 +329,9 @@ uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo) DU_LOG("\nERROR --> DU APP : Recevied null pointer from MAC"); ret = RFAILED; } + //if(count == 3000) + // BuildAndSendDUConfigUpdate(SERV_CELL_TO_DELETE); + //count++; return(ret); } /******************************************************************* diff --git a/src/du_app/du_mgr_main.c b/src/du_app/du_mgr_main.c index fd2902c9c..f1d7d8cf1 100644 --- a/src/du_app/du_mgr_main.c +++ b/src/du_app/du_mgr_main.c @@ -46,10 +46,16 @@ uint8_t macActvTsk (Pst *, Buffer *); uint8_t macActvInit (Ent, Inst, Region, Reason); uint8_t lwrMacActvTsk(Pst *, Buffer *); uint8_t lwrMacActvInit(Ent, Inst, Region, Reason); -#ifndef INTEL_WLS_MEM +#if (!defined(INTEL_WLS_MEM) && !defined(UE_SIM_TEST)) uint8_t phyStubActvTsk(Pst *, Buffer *); uint8_t phyStubActvInit(Ent, Inst, Region, Reason); #endif +#ifdef UE_SIM_TEST +uint8_t fapiClRecvrActvTsk(Pst *, Buffer *); +uint8_t fapiClRecvrActvInit(Ent, Inst, Region, Reason); +uint8_t fapiClSlotIndActvTsk(Pst *, Buffer *); +uint8_t fapiClSlotIndActvInit(Ent, Inst, Region, Reason); +#endif /* Global variable */ DuCfgParams duCfgParam; @@ -478,7 +484,7 @@ uint8_t lwrMacInit(SSTskId sysTskId) return ROK; } -#ifndef INTEL_WLS_MEM +#if (!defined(INTEL_WLS_MEM) && !defined(UE_SIM_TEST)) /******************************************************************* * * @brief Initializes Phy stub slot indication generator task @@ -516,6 +522,78 @@ uint8_t phyStubInit(SSTskId sysTskId) } #endif +#ifdef UE_SIM_TEST +/******************************************************************* + * + * @brief Initializes FAPI CL TAPA tasks + * + * @details + * + * Function : fapiClRecvrInit + * + * Functionality: + * - Registers and attaches TAPA tasks for FAPI CL + * + * @params[in] system task ID + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t fapiClRecvrInit(SSTskId sysTskId) +{ + /* Register FAPI CL slot indication TAPA Task */ + if(ODU_REG_TTSK((Ent)ENTFAPICL, (Inst)0, (Ttype)TTNORM, (Prior)PRIOR0, + fapiClRecvrActvInit, (ActvTsk)fapiClRecvrActvTsk) != ROK) + { + return RFAILED; + } + /* Attach FAPI CL slot indication TAPA Task */ + if (ODU_ATTACH_TTSK((Ent)ENTFAPICL, (Inst)0, sysTskId)!= ROK) + { + return RFAILED; + } + + DU_LOG("\nINFO --> DU_APP : FAPI CL Receiver TAPA task created and registered to %d sys task", + sysTskId); + return ROK; +} + +/******************************************************************* + * + * @brief Initializes FAPI CL TAPA tasks + * + * @details + * + * Function : fapiClSlotIndInit + * + * Functionality: + * - Registers and attaches TAPA tasks for FAPI CL + * + * @params[in] system task ID + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t fapiClSlotIndInit(SSTskId sysTskId) +{ + /* Register FAPI CL slot indication TAPA Task */ + if(ODU_REG_TTSK((Ent)ENTFAPICL, (Inst)1, (Ttype)TTNORM, (Prior)PRIOR0, + fapiClSlotIndActvInit, (ActvTsk)fapiClSlotIndActvTsk) != ROK) + { + return RFAILED; + } + /* Attach FAPI CL slot indication TAPA Task */ + if (ODU_ATTACH_TTSK((Ent)ENTFAPICL, (Inst)1, sysTskId)!= ROK) + { + return RFAILED; + } + + DU_LOG("\nINFO --> DU_APP : FAPI CL Slot Indicarion TAPA task created and registered to %d sys task", + sysTskId); + return ROK; +} +#endif + /******************************************************************* * * @brief Initializes system and TAPA tasks @@ -536,6 +614,9 @@ uint8_t commonInit() { /* Declare system task Ids */ SSTskId du_app_stsk, egtp_stsk, sctp_stsk, rlc_ul_stsk, rlc_mac_cl_stsk, lwr_mac_stsk, phy_stub_slot_ind_stsk; +#ifdef UE_SIM_TEST + SSTskId fapi_cl_slot_ind_stsk, fapi_cl_recvr_stsk; +#endif pthread_attr_t attr; @@ -592,7 +673,7 @@ uint8_t commonInit() } ODU_SET_THREAD_AFFINITY(&lwr_mac_stsk, SS_AFFINITY_MODE_EXCL, 21, 0); -#ifndef INTEL_WLS_MEM +#if (!defined(INTEL_WLS_MEM) && !defined(UE_SIM_TEST)) /* system task for phy stub's slot indication generator thread */ if(ODU_CREATE_TASK(PRIOR0, &phy_stub_slot_ind_stsk) != ROK) { @@ -600,6 +681,20 @@ uint8_t commonInit() return RFAILED; } +#endif +#ifdef UE_SIM_TEST + /* system task for FAPI CL's slot indication generator thread */ + if(ODU_CREATE_TASK(PRIOR0, &fapi_cl_recvr_stsk) != ROK) + { + DU_LOG("\nERROR --> DU_APP : System Task creation for FAPI CL receiver failed. MAX STSK [%d]", SS_MAX_STSKS); + return RFAILED; + } + + if(ODU_CREATE_TASK(PRIOR0, &fapi_cl_slot_ind_stsk) != ROK) + { + DU_LOG("\nERROR --> DU_APP : System Task creation for FAPI CL slot indication generator failed. MAX STSK [%d]", SS_MAX_STSKS); + return RFAILED; + } #endif /* Create TAPA tasks */ @@ -639,7 +734,7 @@ uint8_t commonInit() return RFAILED; } -#ifndef INTEL_WLS_MEM +#if (!defined(INTEL_WLS_MEM) && !defined(UE_SIM_TEST)) if(phyStubInit(phy_stub_slot_ind_stsk) != ROK) { DU_LOG("\nERROR --> DU_APP : PHY stub slot indication Tapa Task initialization failed"); @@ -647,6 +742,19 @@ uint8_t commonInit() } #endif +#ifdef UE_SIM_TEST + if(fapiClRecvrInit(fapi_cl_recvr_stsk) != ROK) + { + DU_LOG("\nERROR --> DU_APP : FAPI CL receiver Tapa Task initialization failed"); + return RFAILED; + } + + if(fapiClSlotIndInit(fapi_cl_slot_ind_stsk) != ROK) + { + DU_LOG("\nERROR --> DU_APP : FAPI CL slot indication Tapa Task initialization failed"); + return RFAILED; + } +#endif return ROK; } diff --git a/src/fapi_cl/fapi_cl.h b/src/fapi_cl/fapi_cl.h new file mode 100644 index 000000000..b0c2bb72d --- /dev/null +++ b/src/fapi_cl/fapi_cl.h @@ -0,0 +1,81 @@ +/******************************************************************************* +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ +*******************************************************************************/ + +#define SELF_IP "192.168.130.71" +#define SELF_PORT 6789 +#define UE_SIM_IP "172.24.100.56" +#define UE_SIM_PORT 9876 + +#define FAPI_CL_INST_0 0 +#define FAPI_CL_INST_1 1 + +#define MAX_BUF_LEN 110000 +#define MAX_PDU_SIZE 16000 + +#define EVT_FAPI_CL_START_SLOT_IND 1 +#define EVT_FAPI_CL_START_RECEIVER 2 +#define EVT_RECP_REQUEST 4 +#define EVT_DATA_REQUEST 12 +#define EVT_CNTL_REQUEST 15 + +#define FILL_PARAM(_src, _dst, _idx) \ +{ \ + _dst = _src; \ + _idx += sizeof(_dst); \ +} + +typedef enum +{ + UCI_PUSCH, + UCI_PUCCH_F0_F1, + UCI_PUCCH_F2_F3_F4, +}uciType; + +typedef struct slotIndInfo +{ + bool slotIndicationStarted; + uint16_t currSfn; + uint16_t currSlot; +}SlotIndInfo; + +typedef struct socketInfo +{ + uint32_t sockfd; + struct sockaddr_in srcAddr; + struct sockaddr_in dstAddr; +}SocketInfo; + +typedef struct clCb +{ + bool configured; + SlotIndInfo slotIndInfo; + SocketInfo socket; +}ClCb; + +ClCb clCb; + +void configureFapiCl(); +void* generateTicks(); +void sendMsgToUeSim(uint8_t event, Data *msg, uint16_t msgLen); +void recvMsgFromUeSim(); +void fapiClProcessUeSim2MacFapiMsg(Data *msg); +void fapiClProcessMac2UeSimFapiMsg(void *msg); + +/********************************************************************** + End of file + **********************************************************************/ diff --git a/src/fapi_cl/fapi_cl_comm.c b/src/fapi_cl/fapi_cl_comm.c new file mode 100644 index 000000000..194399e18 --- /dev/null +++ b/src/fapi_cl/fapi_cl_comm.c @@ -0,0 +1,210 @@ +/******************************************************************************* +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ +*******************************************************************************/ + +/* This file sends/receives FAPI messages to/from UE Sim/PHY */ + +#include "common_def.h" +#include "fapi_cl.h" +#include "fapi_cl_utils.h" + +/******************************************************************* + * + * @brief Receives message from UE simulator + * + * @details + * + * Function : recvMsgFromUeSim + * + * Functionality: + * - Receives message from UE simulator + * + * @return void + * + * ****************************************************************/ +void recvMsgFromUeSim() +{ + struct sockaddr remSockAddr; + uint32_t remAddrLen = 0; + ssize_t recvLen = 0; + uint8_t buf[MAX_BUF_LEN]; + + while(true) + { + recvLen = 0; + remAddrLen = sizeof(remSockAddr); + memset((uint8_t*)&remSockAddr, 0, sizeof(remSockAddr)); + + /*read the data from socket*/ + if((recvLen = recvfrom(clCb.socket.sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&remSockAddr, \ + (socklen_t *)&remAddrLen)) == -1) + { + DU_LOG("\nERROR --> FAPI CL: recvfrom() error\n"); + continue; + } + else if(recvLen != 0) + { + fapiClProcessUeSim2MacFapiMsg(buf); + memset(buf, 0, MAX_BUF_LEN * sizeof(uint8_t)); + } + } +} + +/******************************************************************* + * + * @brief Start receiver thread + * + * @details + * + * Function : sendStartReceiverReq + * + * Functionality: + * - Start a thread to receive messages from UE simulator + * + * @return void + * + * ****************************************************************/ +void sendStartReceiverReq() +{ + Pst pst; + Buffer *mBuf = NULLP; + + DU_LOG("\nINFO --> FAPI_CL: Sending start receiving event to self"); + memset(&pst, 0, sizeof(Pst)); + FILL_PST_CL_TO_CL(pst, FAPI_CL_INST_0, FAPI_CL_INST_0, EVT_FAPI_CL_START_RECEIVER); + ODU_GET_MSG_BUF(pst.region, pst.pool, &mBuf); + ODU_POST_TASK(&pst, mBuf); +} + +/******************************************************************* + * + * @brief Configure FAPI CL + * + * @details + * + * Function : configureFapiCl + * + * Functionality: + * - Configure FAPI CL + * + * @params[in] void + * + * @return void + * + * ****************************************************************/ +void configureFapiCl() +{ + if(clCb.configured == false) + { + if((clCb.socket.sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) + DU_LOG("\nERROR --> FAPI CL: Socket creation [Failure]"); + else + DU_LOG("\nINFO --> FAPI CL: Socket creation [Success]"); + + memset((uint8_t *)&clCb.socket.srcAddr, 0, sizeof(clCb.socket.srcAddr)); + clCb.socket.srcAddr.sin_family = AF_INET; + clCb.socket.srcAddr.sin_port = htons(SELF_PORT); + clCb.socket.srcAddr.sin_addr.s_addr = inet_addr((const char *)SELF_IP); + if(bind(clCb.socket.sockfd, (struct sockaddr *)&clCb.socket.srcAddr, sizeof(struct sockaddr)) == -1) + DU_LOG("\nERROR --> FAPI CL: Socket bind [Failure]"); + else + DU_LOG("\nINFO --> FAPI CL: Socket bind [Success]"); + + memset((uint8_t *)&clCb.socket.dstAddr, 0, sizeof(clCb.socket.dstAddr)); + clCb.socket.dstAddr.sin_family = AF_INET; + clCb.socket.dstAddr.sin_port = htons(UE_SIM_PORT); + clCb.socket.dstAddr.sin_addr.s_addr = inet_addr((const char *)UE_SIM_IP); + + clCb.configured = true; + sendStartReceiverReq(); + DU_LOG("\nINFO --> FAPI_CL: Configuration complete"); + } +} + +/******************************************************************* + * + * @brief Sends message to UE simulator + * + * @details + * + * Function : sendMsgToUeSim + * + * Functionality: + * - Sends message to UE simulator + * + * @params[in] Event + * Message pointer + * Message length + * + * @return void + * + * ****************************************************************/ +void sendMsgToUeSim(uint8_t event, Data *msg, uint16_t msgLen) +{ + uint8_t ret = ROK; + Buffer *mBuf = NULLP; + + ODU_GET_MSG_BUF(DFLT_REGION, DFLT_POOL, &mBuf); + if(mBuf == NULLP) + { + DU_LOG("\nERROR --> FAPI CL: Failure in allocating memory for mBuf"); + return; + } + + ret = ODU_ADD_POST_MSG((Data )event, mBuf); + if(ret != ROK) + { + DU_LOG("\nERROR --> FAPI CL: Failed to pack event into buffer"); + } + + ret = ODU_ADD_POST_MSG_MULT(msg, msgLen, mBuf); + if(ret == ROK) + { + uint8_t sendBuf[MAX_BUF_LEN]; + MsgLen cpMsgLen; /* copied message length */ + MsgLen bufLen; /* send buffer length */ + + ret = ODU_GET_MSG_LEN(mBuf, &bufLen); + if (ret != ROK) + { + DU_LOG("ERROR --> FAPI CL: Failed to find buffer length"); + return; + } + + if (bufLen >= MAX_BUF_LEN) + { + DU_LOG("\nERROR --> FAPI CL: Length Buffer to be copied [%d] bytes is more than MAX buffer length supported [%d] bytes",\ + bufLen, MAX_BUF_LEN); + return; + } + + ret = ODU_COPY_MSG_TO_FIX_BUF(mBuf, 0, bufLen, sendBuf, &cpMsgLen); + if ((ret != ROK) || (cpMsgLen != bufLen)) + { + DU_LOG("\nERROR --> FAPI CL: Failed to copy buffer into fixed message"); + return; + } + if(sendto(clCb.socket.sockfd, sendBuf, bufLen, 0, (struct sockaddr *)&clCb.socket.dstAddr, sizeof(clCb.socket.dstAddr)) == -1) + DU_LOG("\nERROR --> FAPI CL: Sending message over UDP socket [Failure]"); + + ODU_PUT_MSG_BUF(mBuf); + } +} + +/********************************************************************** + End of file + **********************************************************************/ diff --git a/src/fapi_cl/fapi_cl_ex_ms.c b/src/fapi_cl/fapi_cl_ex_ms.c new file mode 100644 index 000000000..9097ac4b9 --- /dev/null +++ b/src/fapi_cl/fapi_cl_ex_ms.c @@ -0,0 +1,147 @@ +/******************************************************************************* +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ +*******************************************************************************/ +#include "common_def.h" +#include "fapi_cl.h" + +/******************************************************************* +* +* @brief Initializes FAPI CL receiver task +* +* @details +* +* Function : fapiClRecvrActvInit +* +* Functionality: +* - Initializes FAPI CL Receiver task +* +* @params[in] +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t fapiClRecvrActvInit(Ent ent, Inst inst, Region reg, Reason reason) +{ + memset(&clCb, 0, sizeof(ClCb)); + return ROK; +} + +/******************************************************************* +* +* @brief Receives messages for FAPI CL REceiver task +* +* @details +* +* Function : fapiClRecvrActvTsk +* +* Functionality: +* - Receives messages for fapi cl receiver task +* +* @params[in] +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t fapiClRecvrActvTsk(Pst *pst, Buffer *mBuf) +{ + DU_LOG("\nINFO --> FAPI_CL: Received Event [%d]", pst->event); + + switch(pst->srcEnt) + { + case ENTFAPICL: + { + switch(pst->event) + { + case EVT_FAPI_CL_START_RECEIVER: + { + ODU_PUT_MSG_BUF(mBuf); + recvMsgFromUeSim(); + break; + } + default: + DU_LOG("\nERROR --> FAPI_CL: Invalid Event"); + } + } + } + return ROK; +} + +/******************************************************************* +* +* @brief Initializes FAPI CL slot indication generator task +* +* @details +* +* Function : fapiClSlotIndActvInit +* +* Functionality: +* - Initializes FAPI CL slot indication generator task +* +* @params[in] +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t fapiClSlotIndActvInit(Ent ent, Inst inst, Region reg, Reason reason) +{ + memset(&clCb, 0, sizeof(ClCb)); + return ROK; +} + +/******************************************************************* +* +* @brief Receives messages for FAPI CL slot indication generator task +* +* @details +* +* Function : fapiClSlotIndActvTsk +* +* Functionality: +* - Receives messages for fapi cl slot indication generator task +* +* @params[in] +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t fapiClSlotIndActvTsk(Pst *pst, Buffer *mBuf) +{ + DU_LOG("\nINFO --> FAPI_CL: Received Event [%d]", pst->event); + + switch(pst->srcEnt) + { + case ENTFAPICL: + { + switch(pst->event) + { + case EVT_FAPI_CL_START_SLOT_IND: + { + ODU_PUT_MSG_BUF(mBuf); + generateTicks(); + break; + } + default: + DU_LOG("\nERROR --> FAPI_CL: Invalid Event"); + } + } + } + return ROK; +} + +/********************************************************************** + End of file + **********************************************************************/ diff --git a/src/fapi_cl/fapi_cl_mac2phy.c b/src/fapi_cl/fapi_cl_mac2phy.c new file mode 100644 index 000000000..0628068c0 --- /dev/null +++ b/src/fapi_cl/fapi_cl_mac2phy.c @@ -0,0 +1,1351 @@ +/******************************************************************************* +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ +*******************************************************************************/ + +/* This file converts FAPI messages sent from MAC to UE simulator/PHY */ + +#include "common_def.h" +#include "fapi_cl.h" +#include "fapi_cl_utils.h" +#include "fapi_interface_ue_sim.h" +#include "fapi_interface.h" +#include "fapi_vendor_extension.h" + +/******************************************************************* + * + * @brief Converts START.Request + * + * @details + * + * Function : convertStartRequest + * + * Functionality: + * - Converts START.request from MAC's FAPI version to + * UE Simulator's FAPI version. + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertStartRequest(uint8_t handle, void *msg, uint16_t msgLen) +{ + p_fapi_api_queue_elem_t startReqElem = (p_fapi_api_queue_elem_t)msg; + fapi_start_req_t *macStartReq = (fapi_start_req_t *)(startReqElem +1); + fapi_start_req_t_ue_sim ueSimStartReq; + + DU_LOG("\nDEBUG --> FAPI_CL: Received START.request from MAC"); + + memset(&ueSimStartReq, 0, sizeof(fapi_start_req_t_ue_sim)); + ueSimStartReq.header.numberOfMessagesIncluded = 1; + ueSimStartReq.header.handle = handle; + ueSimStartReq.header.msg_details.message_type_id = macStartReq->header.msg_id; + ueSimStartReq.header.msg_details.length = sizeof(fapi_start_req_t_ue_sim) - sizeof(fapi_msg_header_t_ue_sim); + + FAPI_CL_FREE(msg, msgLen); + + sendMsgToUeSim(EVT_CNTL_REQUEST, (Data *)&ueSimStartReq, sizeof(fapi_start_req_t_ue_sim)); +} + +/******************************************************************* + * + * @brief Converts CONFIG.Request + * + * @details + * + * Function : convertConfigRequest + * + * Functionality: + * - Converts CONFIG.request from MAC's FAPI version to + * UE Simulator's FAPI version. + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertConfigRequest(uint8_t handle, void *msg, uint16_t msgLen) +{ + uint8_t idx = 0; + p_fapi_api_queue_elem_t configReqElem = (p_fapi_api_queue_elem_t)msg; + fapi_config_req_t *macConfigReq = (fapi_config_req_t *)(configReqElem +1); + fapi_config_req_t_ue_sim ueSimConfigReq; + + DU_LOG("\nDEBUG --> FAPI_CL: Received CONFIG.request from MAC"); + + /* Before processing CONFIG.request msg, configure FAPI CL to communicate + * with UE simulator */ + configureFapiCl(); + + memset(&ueSimConfigReq, 0, sizeof(fapi_config_req_t_ue_sim)); + ueSimConfigReq.header.numberOfMessagesIncluded = 1; + ueSimConfigReq.header.handle = handle; + ueSimConfigReq.header.msg_details.message_type_id = macConfigReq->header.msg_id; + ueSimConfigReq.header.msg_details.length = sizeof(fapi_config_req_t_ue_sim) - sizeof(fapi_msg_header_t_ue_sim); + ueSimConfigReq.number_of_tlvs = macConfigReq->number_of_tlvs; + + /* Copying all TLVs + * Issues: + * a. DL Frequency value gets truncated when copied to a uint16_t TLV + * b. UL Frequency value gets truncated when copied to a uint16_t TLV + * c. UE simulator FAPI interface file does not support DMRS_Type_A_Pos tag + */ + for(idx = 0; idx < ueSimConfigReq.number_of_tlvs; idx++) + { + ueSimConfigReq.tlvs[idx].tl.tag = macConfigReq->tlvs[idx].tl.tag; + ueSimConfigReq.tlvs[idx].tl.length = macConfigReq->tlvs[idx].tl.length; + ueSimConfigReq.tlvs[idx].value = macConfigReq->tlvs[idx].value; + } + + FAPI_CL_FREE(msg, msgLen); + + sendMsgToUeSim(EVT_CNTL_REQUEST, (Data *)&ueSimConfigReq, sizeof(fapi_config_req_t_ue_sim)); +} + +/******************************************************************* + * + * @brief Converts codeword Info structure + * + * @details + * + * Function : convertCodewordInfo + * + * Functionality: + * - Converts codeword info from MAC's FAPI version to + * UE Simulator's FAPI version. + * + * @params[in] MAC's Codeword info + * UE sim's codeword info + * Offset of codeword info struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertCodewordInfo(fapi_codeword_pdu_t macCwInfo, fapi_codeword_pdu_t_ue_sim *cwInfo, uint16_t *pduIdx) +{ + uint16_t cwIdx = 0; + + FILL_PARAM(macCwInfo.targetCodeRate, cwInfo->target_code_rate, cwIdx) + FILL_PARAM(macCwInfo.qamModOrder, cwInfo->qam_mod_order, cwIdx) + FILL_PARAM(macCwInfo.mcsIndex, cwInfo->mcs_index, cwIdx) + FILL_PARAM(macCwInfo.mcsTable, cwInfo->mcs_table, cwIdx) + FILL_PARAM(macCwInfo.rvIndex, cwInfo->rv_index, cwIdx) + FILL_PARAM(macCwInfo.tbSize, cwInfo->tb_size, cwIdx) + + *pduIdx += cwIdx; +} + +/******************************************************************* + * + * @brief Converts Precoding and Beamforming struct + * + * @details + * + * Function : convertPreCodingAndBeamforming + * + * Functionality: + * - Converts Precondig and beamforming struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's Precoding and beamforming struct + * UE sim's Precoding and beamforming struct + * Offset of precoding and beamforming struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertPreCodingAndBeamforming(fapi_precoding_bmform_t macPcAndBf, fapi_precoding_bmform_t_ue_sim *pcAndBf, uint16_t *pduIdx) +{ + uint16_t pcBfIdx = 0, itr = 0; + fapi_bmi_t_ue_sim *bmi = NULLP; + + FILL_PARAM(macPcAndBf.numPrgs, pcAndBf->num_prgs, pcBfIdx); + FILL_PARAM(macPcAndBf.prgSize, pcAndBf->prg_size, pcBfIdx); + FILL_PARAM(macPcAndBf.digBfInterfaces, pcAndBf->dig_bf_interfaces, pcBfIdx); + FILL_PARAM(macPcAndBf.pmi_bfi[0].pmIdx, pcAndBf->pmi_bfi[0].pm_idx, pcBfIdx); + + for(itr = 0; itr < macPcAndBf.digBfInterfaces; itr++) + { + bmi = (void *)pcAndBf + pcBfIdx; + FILL_PARAM(macPcAndBf.pmi_bfi[0].beamIdx[itr].beamidx, bmi->beamidx, pcBfIdx); + } + *pduIdx += pcBfIdx; +} + +/******************************************************************* + * + * @brief Converts DL DCI struct + * + * @details + * + * Function : convertDlDci + * + * Functionality: + * - Converts DL DCI struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's DL DCI struct + * UE sim's DCI struct + * Offset of DL DCI struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertDlDci(fapi_dl_dci_t macDlDci, fapi_dl_dci_t_ue_sim *dlDci, uint16_t *pduIdx) +{ + uint8_t itr = 0, dlDciPayloadSizeBytes = 0; + uint8_t *dlDciPayloadByte = NULLP; + uint16_t dlDciIdx = 0; + + FILL_PARAM(macDlDci.rnti, dlDci->rnti, dlDciIdx); + FILL_PARAM(macDlDci.scramblingId, dlDci->nIdPdcchData, dlDciIdx); + FILL_PARAM(macDlDci.scramblingRnti, dlDci->nRntiPdcchData, dlDciIdx); + FILL_PARAM(macDlDci.cceIndex, dlDci->cce_index, dlDciIdx); + FILL_PARAM(macDlDci.aggregationLevel, dlDci->aggregation_level, dlDciIdx); + + convertPreCodingAndBeamforming(macDlDci.pc_and_bform, &dlDci->pc_and_bform, &dlDciIdx); + + FILL_PARAM(macDlDci.beta_pdcch_1_0, dlDci->tx_power_info.beta_pdcch_1_0, dlDciIdx); + FILL_PARAM(macDlDci.powerControlOffsetSS, dlDci->tx_power_info.powerControlOffsetSSProfileNR, dlDciIdx); + + FILL_PARAM(macDlDci.payloadSizeBits, dlDci->payload_size_bits, dlDciIdx); + if(dlDci->payload_size_bits % 8 == 0) + dlDciPayloadSizeBytes = (dlDci->payload_size_bits/8); + else + dlDciPayloadSizeBytes = (dlDci->payload_size_bits/8)+1; + + for(itr = 0; itr < dlDciPayloadSizeBytes; itr++) + { + dlDciPayloadByte = (void *)dlDci + dlDciIdx; + FILL_PARAM(macDlDci.payload[itr], *dlDciPayloadByte, dlDciIdx); + } + + *pduIdx += dlDciIdx; +} + +/******************************************************************* + * + * @brief Converts PDCCH PDU + * + * @details + * + * Function : convertDlPdcchPdu + * + * Functionality: + * - Converts PDCCH PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's PDCCH PDU struct + * UE sim's PDCCH PDU struct + * Offset of PDCCH PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertDlPdcchPdu(fapi_dl_pdcch_pdu_t macPdcchPdu, fapi_dl_pdcch_pdu_t_ue_sim *pdcchPdu, uint16_t *pduIndex) +{ + uint8_t itr = 0; + uint16_t pdcchPduIdx = 0; + fapi_dl_dci_t_ue_sim *dlDci = NULLP; + + FILL_PARAM(macPdcchPdu.bwpSize, pdcchPdu->bwp.bwp_size, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.bwpStart, pdcchPdu->bwp.bwp_start, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.subCarrierSpacing, pdcchPdu->bwp.sub_carrier_spacing, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.cyclicPrefix, pdcchPdu->bwp.cyclic_prefix, pdcchPduIdx); + + FILL_PARAM(macPdcchPdu.startSymbolIndex, pdcchPdu->coreset.start_symbol_index, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.durationSymbols, pdcchPdu->coreset.duration_symbols, pdcchPduIdx); + for(itr = 0; itr < FAPI_MAX_FREQ_DOMAIN_RES; itr++) + FILL_PARAM(macPdcchPdu.freqDomainResource[itr], pdcchPdu->coreset.freq_domain_resource[itr], pdcchPduIdx); + FILL_PARAM(macPdcchPdu.cceRegMappingType, pdcchPdu->coreset.cce_reg_mapping_type, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.regBundleSize, pdcchPdu->coreset.reg_bundle_size, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.interleaverSize, pdcchPdu->coreset.interleaver_size, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.coreSetType, pdcchPdu->coreset.core_set_type, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.shiftIndex, pdcchPdu->coreset.shift_index, pdcchPduIdx); + FILL_PARAM(macPdcchPdu.precoderGranularity, pdcchPdu->coreset.precoder_granularity, pdcchPduIdx); + + FILL_PARAM(macPdcchPdu.numDlDci, pdcchPdu->num_dl_dci, pdcchPduIdx); + for(itr = 0; itr pdcchMntParms + pdcchPduIdx += sizeof(fapi_pdcch_mnt_parms_t); + + *pduIndex += pdcchPduIdx; +} + +/******************************************************************* + * + * @brief Converts PDSCH PDU + * + * @details + * + * Function : convertDlTtiPdschPdu + * + * Functionality: + * - Converts PDSCH PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's PDSCH PDU struct + * UE sim's PDSCH PDU struct + * Offset of PDSCH PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertDlTtiPdschPdu(fapi_dl_pdsch_pdu_t macPdschPdu, fapi_dl_pdsch_pdu_t_ue_sim *pdschPdu, uint16_t *pduIndex) +{ + uint8_t itr = 0; + uint16_t pdschPduIdx = 0; + + FILL_PARAM(macPdschPdu.pduBitMap, pdschPdu->pdu_bit_map, pdschPduIdx); + FILL_PARAM(macPdschPdu.rnti, pdschPdu->rnti, pdschPduIdx); + FILL_PARAM(macPdschPdu.pdu_index, pdschPdu->pdu_index, pdschPduIdx); + + FILL_PARAM(macPdschPdu.bwpSize, pdschPdu->bwp.bwp_size, pdschPduIdx); + FILL_PARAM(macPdschPdu.bwpStart, pdschPdu->bwp.bwp_start, pdschPduIdx); + FILL_PARAM(macPdschPdu.subCarrierSpacing, pdschPdu->bwp.sub_carrier_spacing, pdschPduIdx); + FILL_PARAM(macPdschPdu.cyclicPrefix, pdschPdu->bwp.cyclic_prefix, pdschPduIdx); + + FILL_PARAM(macPdschPdu.nrOfCodeWords, pdschPdu->nr_of_code_words, pdschPduIdx); + for(itr = 0; itr < pdschPdu->nr_of_code_words; itr++) + convertCodewordInfo(macPdschPdu.cwInfo[itr], &pdschPdu->cw_info[itr], &pdschPduIdx); + + FILL_PARAM(macPdschPdu.dataScramblingId, pdschPdu->nIdPdsch, pdschPduIdx); + FILL_PARAM(macPdschPdu.nrOfLayers, pdschPdu->nr_of_layers, pdschPduIdx); + FILL_PARAM(macPdschPdu.transmissionScheme, pdschPdu->transmission_scheme, pdschPduIdx); + FILL_PARAM(macPdschPdu.refPoint, pdschPdu->ref_point, pdschPduIdx); + + FILL_PARAM(macPdschPdu.dlDmrsSymbPos, pdschPdu->dmrs.dl_dmrs_symb_pos, pdschPduIdx); + FILL_PARAM(macPdschPdu.dmrsConfigType, pdschPdu->dmrs.dmrs_config_type, pdschPduIdx); + FILL_PARAM(macPdschPdu.dlDmrsScramblingId, pdschPdu->dmrs.dl_dmrs_scrambling_id, pdschPduIdx); + FILL_PARAM(macPdschPdu.scid, pdschPdu->dmrs.scid, pdschPduIdx); + FILL_PARAM(macPdschPdu.numDmrsCdmGrpsNoData, pdschPdu->dmrs.num_dmrs_cdm_grps_no_data, pdschPduIdx); + FILL_PARAM(macPdschPdu.dmrsPorts, pdschPdu->dmrs.dmrs_ports, pdschPduIdx); + + FILL_PARAM(macPdschPdu.resourceAlloc, pdschPdu->pdsch_freq_dom_alloc.resource_alloc, pdschPduIdx); + memcpy(pdschPdu->pdsch_freq_dom_alloc.rb_bitmap, macPdschPdu.rbBitmap, 36*sizeof(uint8_t)); + pdschPduIdx += 36*sizeof(uint8_t); + FILL_PARAM(macPdschPdu.rbStart, pdschPdu->pdsch_freq_dom_alloc.rb_start, pdschPduIdx); + FILL_PARAM(macPdschPdu.rbSize, pdschPdu->pdsch_freq_dom_alloc.rb_size, pdschPduIdx); + FILL_PARAM(macPdschPdu.vrbToPrbMapping, pdschPdu->pdsch_freq_dom_alloc.vrb_to_prb_mapping, pdschPduIdx); + + FILL_PARAM(macPdschPdu.startSymbIndex, pdschPdu->pdsch_time_dom_alloc.start_symb_index, pdschPduIdx); + FILL_PARAM(macPdschPdu.nrOfSymbols, pdschPdu->pdsch_time_dom_alloc.nr_of_symbols, pdschPduIdx); + + FILL_PARAM(macPdschPdu.ptrsPortIndex, pdschPdu->pdsch_ptrs_info.ptrs_port_index, pdschPduIdx); + FILL_PARAM(macPdschPdu.ptrsTimeDensity, pdschPdu->pdsch_ptrs_info.ptrs_time_density, pdschPduIdx); + FILL_PARAM(macPdschPdu.ptrsFreqDensity, pdschPdu->pdsch_ptrs_info.ptrs_freq_density, pdschPduIdx); + FILL_PARAM(macPdschPdu.ptrsReOffset, pdschPdu->pdsch_ptrs_info.ptrs_re_offset, pdschPduIdx); + FILL_PARAM(macPdschPdu.nEpreRatioOfPdschToPtrs, pdschPdu->pdsch_ptrs_info.n_epre_ratio_of_pdsch_to_ptrs, pdschPduIdx); + + convertPreCodingAndBeamforming(macPdschPdu.preCodingAndBeamforming, &pdschPdu->pre_coding_and_beamforming, &pdschPduIdx); + + FILL_PARAM(macPdschPdu.powerControlOffset, pdschPdu->tx_pwr_info.powerControlOffsetProfileNR, pdschPduIdx); + FILL_PARAM(macPdschPdu.powerControlOffsetSS, pdschPdu->tx_pwr_info.powerControlOffsetSSProfileNR, pdschPduIdx); + + FILL_PARAM(macPdschPdu.isLastCbPresent, pdschPdu->cbg_info.is_last_cb_present, pdschPduIdx); + FILL_PARAM(macPdschPdu.isInlineTbCrc, pdschPdu->cbg_info.is_inline_tb_crc, pdschPduIdx); + FILL_PARAM(macPdschPdu.dlTbCrc, pdschPdu->cbg_info.dlTbCrc[0], pdschPduIdx); + FILL_PARAM(macPdschPdu.dlTbCrc, pdschPdu->cbg_info.dlTbCrc[0], pdschPduIdx); + + // unsused fapi_dl_pdsch_mnt_parms_t dlPdschMntparms; + pdschPduIdx += sizeof(fapi_dl_pdsch_mnt_parms_t); + // unused fapi_dl_pdsch_ptrs_mnt_parms_t dlPdschPtrsMntParms; + pdschPduIdx += sizeof(fapi_dl_pdsch_ptrs_mnt_parms_t); + // unused fapi_dl_rel16_pdsch_parms_t rel16PdschParms; + pdschPduIdx += sizeof(fapi_dl_rel16_pdsch_parms_t); + + *pduIndex += pdschPduIdx; +} + +/******************************************************************* + * + * @brief Converts PBCH PDU + * + * @details + * + * Function : convertDlTtiPbchPdu + * + * Functionality: + * - Converts PBCH PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's PBCH PDU struct + * UE sim's PBCH PDU struct + * Offset of PBCH PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertDlTtiPbchPdu(fapi_dl_ssb_pdu_t macSsbPdu, fapi_dl_ssb_pdu_t_ue_sim *ssbPdu, uint16_t *pduIndex) +{ + uint16_t ssbPduIdx = 0; + + FILL_PARAM(macSsbPdu.physCellId, ssbPdu->phys_cell_id, ssbPduIdx); + FILL_PARAM(macSsbPdu.betaPss, ssbPdu->betaPssProfileNR, ssbPduIdx); + FILL_PARAM(macSsbPdu.ssbBlockIndex, ssbPdu->ssb_block_index, ssbPduIdx); + FILL_PARAM(macSsbPdu.ssbSubCarrierOffset, ssbPdu->ssb_sub_carrier_offset, ssbPduIdx); + FILL_PARAM(macSsbPdu.ssbOffsetPointA, ssbPdu->ssb_offset_point_a, ssbPduIdx); + FILL_PARAM(macSsbPdu.bchPayloadFlag, ssbPdu->bch_payload_flag, ssbPduIdx); + FILL_PARAM(macSsbPdu.bchPayload.bchPayload, ssbPdu->bch_payload.u.bch_payload, ssbPduIdx); + convertPreCodingAndBeamforming(macSsbPdu.preCodingAndBeamforming, &ssbPdu->pre_coding_and_beamforming, &ssbPduIdx); + + // unused fapi_dl_ssb_pbch_mnt_parms_t ssbPbchMntParms; + ssbPduIdx += sizeof(fapi_dl_ssb_pbch_mnt_parms_t); + *pduIndex += ssbPduIdx; +} + +/******************************************************************* + * + * @brief Converts CSI-RS PDU + * + * @details + * + * Function : convertDlTtiCsiRsPdu + * + * Functionality: + * - Converts CSI-RS PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's CSI-RS PDU struct + * UE sim's CSI-RS PDU struct + * Offset of CSI-RS PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertDlTtiCsiRsPdu(fapi_dl_csi_rs_pdu_t macCsiRsPdu, fapi_dl_csi_rs_pdu_t_ue_sim *csiRsPdu, uint16_t *pduIndex) +{ + uint16_t csiRsIdx = 0; + + FILL_PARAM(macCsiRsPdu.subCarrierSpacing, csiRsPdu->subCarrierSpacing, csiRsIdx); + FILL_PARAM(macCsiRsPdu.cyclicPrefix, csiRsPdu->cyclicPrefix, csiRsIdx); + FILL_PARAM(macCsiRsPdu.startRb, csiRsPdu->start_rb, csiRsIdx); + FILL_PARAM(macCsiRsPdu.nrOfRbs, csiRsPdu->nr_of_rbs, csiRsIdx); + FILL_PARAM(macCsiRsPdu.csiType, csiRsPdu->csi_type, csiRsIdx); + FILL_PARAM(macCsiRsPdu.row, csiRsPdu->row, csiRsIdx); + FILL_PARAM(macCsiRsPdu.freqDomain, csiRsPdu->freq_domain, csiRsIdx); + FILL_PARAM(macCsiRsPdu.symbL0, csiRsPdu->symb_l0, csiRsIdx); + FILL_PARAM(macCsiRsPdu.symbL1, csiRsPdu->symb_l1, csiRsIdx); + FILL_PARAM(macCsiRsPdu.cdmType, csiRsPdu->cdm_type, csiRsIdx); + FILL_PARAM(macCsiRsPdu.freqDensity, csiRsPdu->freq_density, csiRsIdx); + FILL_PARAM(macCsiRsPdu.scramId, csiRsPdu->scram_id, csiRsIdx); + FILL_PARAM(macCsiRsPdu.powerControlOffset, csiRsPdu->tx_pwr_info.powerControlOffsetProfileNR, csiRsIdx); + FILL_PARAM(macCsiRsPdu.powerControlOffsetSs, csiRsPdu->tx_pwr_info.powerControlOffsetSSProfileNR, csiRsIdx); + convertPreCodingAndBeamforming(macCsiRsPdu.preCodingAndBeamforming, &csiRsPdu->pre_coding_and_beamforming, &csiRsIdx); + //unused fapi_dl_csi_rs_mnt_parms_t csiRsMntParms; + csiRsIdx += sizeof(fapi_dl_csi_rs_mnt_parms_t); + + *pduIndex += csiRsIdx; +} + +/******************************************************************* + * + * @brief Converts DL TTI PDU + * + * @details + * + * Function : convertDlTtiPdu + * + * Functionality: + * - Converts DL TTI PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's DL TTI PDU struct + * UE sim's DL TTI PDU struct + * Offset of DL TTI PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertDlTtiPdu(fapi_dl_tti_req_pdu_t macDlTtiPdu, fapi_dl_tti_req_pdu_t_ue_sim *dlTtiPdu, uint16_t *index) +{ + uint16_t pduIndex = 0; + + FILL_PARAM(macDlTtiPdu.pduType, dlTtiPdu->pdu_type, pduIndex); + pduIndex += sizeof(dlTtiPdu->pdu_size); + switch(macDlTtiPdu.pduType) + { + case FAPI_PDCCH_PDU_TYPE: + convertDlPdcchPdu(macDlTtiPdu.pdu.pdcch_pdu, &dlTtiPdu->u.pdcch_pdu, &pduIndex); + break; + case FAPI_PDSCH_PDU_TYPE: + convertDlTtiPdschPdu(macDlTtiPdu.pdu.pdsch_pdu, &dlTtiPdu->u.pdsch_pdu, &pduIndex); + break; + case FAPI_CSIRS_PDU_TYPE: + convertDlTtiCsiRsPdu(macDlTtiPdu.pdu.csi_rs_pdu, &dlTtiPdu->u.csi_rs_pdu, &pduIndex); + break; + case FAPI_PBCH_PDU_TYPE: + convertDlTtiPbchPdu(macDlTtiPdu.pdu.ssb_pdu, &dlTtiPdu->u.ssb_pdu, &pduIndex); + break; + } + dlTtiPdu->pdu_size = pduIndex; + *index += pduIndex; +} + +/******************************************************************* + * + * @brief Converts UE Group Info + * + * @details + * + * Function : convertUeGrpInfo + * + * Functionality: + * - Converts UE group info struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UE group info PDU struct + * UE sim's UE group info PDU struct + * Offset of UE group info struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUeGrpInfo(fapi_ue_info_t macUeInfo, fapi_ue_info_t_ue_sim *ueInfo, uint16_t *pduIndex) +{ + uint8_t idx = 0, *pduIdx = NULLP; + uint16_t ueInfoIdx = 0; + + FILL_PARAM(macUeInfo.nUe, ueInfo->n_ue, ueInfoIdx); + for(idx = 0; idx < macUeInfo.nUe; idx++) + { + pduIdx = (void *)ueInfo + ueInfoIdx; + FILL_PARAM(macUeInfo.pduIdx[idx], *pduIdx, ueInfoIdx); + } + + *pduIndex += ueInfoIdx; +} + +/***************************************************************** + * @brief Converts DL_TTI.Request + * + * @details + * + * Function : convertDlTtiRequest + * + * Functionality: + * - Converts DL_TTI.request from MAC's FAPI version to + * UE Simulator's FAPI version. + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertDlTtiRequest(uint8_t handle, void *msg, uint16_t msgLen) +{ + uint8_t idx = 0; + uint16_t index = 0, totalLength = 0; + p_fapi_api_queue_elem_t dlTtiReqElem = (p_fapi_api_queue_elem_t)msg; + fapi_dl_tti_req_t *macDlTtiReq = (fapi_dl_tti_req_t *)(dlTtiReqElem +1); + fapi_dl_tti_req_t_ue_sim *dlTtiReq = NULLP; + fapi_dl_tti_req_pdu_t_ue_sim *dlTtiPdu = NULLP; + fapi_ue_info_t_ue_sim *ueInfo = NULLP; + +#ifdef ODU_SLOT_IND_DEBUG_LOG + DU_LOG("\nDEBUG --> FAPI_CL: Received DL_TTI.request from MAC"); +#endif + + FAPI_CL_ALLOC(dlTtiReq, MAX_PDU_SIZE); + if(!dlTtiReq) + { + DU_LOG("\nERROR --> FAPI_CL: Memory allocation failed for DL_TTI.request"); + FAPI_CL_FREE(msg, msgLen); + } + + memset(dlTtiReq, 0, MAX_PDU_SIZE); + FILL_PARAM(1, dlTtiReq->header.numberOfMessagesIncluded, index); + FILL_PARAM(handle, dlTtiReq->header.handle, index); + FILL_PARAM(macDlTtiReq->header.msg_id, dlTtiReq->header.msg_details.message_type_id, index); + index += sizeof(dlTtiReq->header.msg_details.length); + + FILL_PARAM(macDlTtiReq->sfn, dlTtiReq->sfn, index); + FILL_PARAM(macDlTtiReq->slot, dlTtiReq->slot, index); + FILL_PARAM(macDlTtiReq->nPdus, dlTtiReq->n_pdus, index); + FILL_PARAM(MAX_NDLTYPES_DL_TTI_REQ, dlTtiReq->nDlTypes, index); + for(idx=0; idx < dlTtiReq->nDlTypes; idx++) + FILL_PARAM(0, dlTtiReq->nPDUsOfEachType[idx], index); + FILL_PARAM(macDlTtiReq->nGroup, dlTtiReq->n_group, index); + + for(idx = 0; idx < macDlTtiReq->nPdus; idx++) + { + dlTtiPdu = (void *)dlTtiReq + index; + convertDlTtiPdu(macDlTtiReq->pdus[idx], dlTtiPdu, &index); + } + for(idx = 0; idx < macDlTtiReq->nGroup; idx++) + { + ueInfo = (void *)dlTtiReq + index; + convertUeGrpInfo(macDlTtiReq->ue_grp_info[idx], ueInfo, &index); + } + totalLength = index; + dlTtiReq->header.msg_details.length = totalLength - sizeof(fapi_msg_header_t_ue_sim); + + sendMsgToUeSim(EVT_CNTL_REQUEST, (Data *)dlTtiReq, totalLength); + FAPI_CL_FREE(msg, msgLen); + FAPI_CL_FREE(dlTtiReq, MAX_PDU_SIZE); +} + +/******************************************************************* + * + * @brief Convert UL Beamforming PDU + * + * @details + * + * Function : convertUlRxBfPdu + * + * Functionality: + * - Converts UL Rx Beamforming PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UL Rx Beamformimg PDU struct + * UE sim's UL Baemforming struct + * Offset of UL Beamforming struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUlRxBfPdu(fapi_ul_rx_bmform_pdu_t macBfPdu, fapi_bmform_t *bfPdu, uint16_t *pduIdx) +{ + uint8_t itr = 0; + uint16_t bfIdx = 0, *beamIdx = NULLP; + + FILL_PARAM(macBfPdu.numPrgs, bfPdu->num_prgs, bfIdx); + FILL_PARAM(macBfPdu.prgSize, bfPdu->prg_size, bfIdx); + FILL_PARAM(macBfPdu.digBfInterface, bfPdu->dig_bf_interfaces, bfIdx); + for(itr = 0; itr < bfPdu->num_prgs; itr++) + { + beamIdx = (void *)bfPdu + bfIdx; + FILL_PARAM(macBfPdu.rx_bfi[itr].beamIdx[0].beamidx, *beamIdx, bfIdx); + } + + *pduIdx += bfIdx; +} + +/******************************************************************* + * + * @brief Converts UL TTI PRACH PDU + * + * @details + * + * Function : convertUlPrachTtiPdu + * + * Functionality: + * - Converts UL TTI PRACH PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UL TTI PRACH PDU struct + * UE sim's UL TTI PRACH PDU struct + * Offset of UL TTI PRACH PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUlTtiPrachPdu(fapi_ul_prach_pdu_t macPrachPdu, fapi_ul_prach_pdu_t_ue_sim *prachPdu, uint16_t *pduIndex) +{ + uint16_t prachPduIdx = 0; + + FILL_PARAM(macPrachPdu.physCellId, prachPdu->phys_cell_id, prachPduIdx); + FILL_PARAM(macPrachPdu.numPrachOcas, prachPdu->num_prach_ocas, prachPduIdx); + FILL_PARAM(macPrachPdu.prachFormat, prachPdu->prach_format, prachPduIdx); + FILL_PARAM(macPrachPdu.numRa, prachPdu->indexFdRa, prachPduIdx); + FILL_PARAM(macPrachPdu.prachStartSymbol, prachPdu->prach_start_symbol, prachPduIdx); + FILL_PARAM(macPrachPdu.numCs, prachPdu->num_cs, prachPduIdx); + convertUlRxBfPdu(macPrachPdu.beamforming, &prachPdu->beamforming, &prachPduIdx); + //unused fapi_pRACH_Mntnc_param_t pRACH_Mntnc; + prachPduIdx += sizeof(fapi_pRACH_Mntnc_param_t); + + *pduIndex += prachPduIdx; +} + +/******************************************************************* + * + * @brief Converts UL TTI PUSCH PDU + * + * @details + * + * Function : convertUlTtiPusch Pdu + * + * Functionality: + * - Converts UL TTI PUSCH PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UL TTI PDU struct + * UE sim's UL TTI PUSCH PDU struct + * Offset of UL TTI PUSCH PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUlTtiPuschPdu(fapi_ul_pusch_pdu_t macPuschPdu, fapi_ul_pusch_pdu_t_ue_sim *puschPdu, uint16_t *pduIndex) +{ + uint16_t puschPduIdx = 0; + + FILL_PARAM(macPuschPdu.pduBitMap, puschPdu->pdu_bitmap, puschPduIdx); + FILL_PARAM(macPuschPdu.rnti, puschPdu->rnti, puschPduIdx); + FILL_PARAM(macPuschPdu.handle, puschPdu->handle, puschPduIdx); + FILL_PARAM(macPuschPdu.bwpSize, puschPdu->bwp_size, puschPduIdx); + FILL_PARAM(macPuschPdu.bwpStart, puschPdu->bwp_start, puschPduIdx); + FILL_PARAM(macPuschPdu.subCarrierSpacing, puschPdu->sub_carrier_spacing, puschPduIdx); + FILL_PARAM(macPuschPdu.cyclicPrefix, puschPdu->cyclic_prefix, puschPduIdx); + FILL_PARAM(macPuschPdu.targetCodeRate, puschPdu->target_code_rate, puschPduIdx); + FILL_PARAM(macPuschPdu.qamModOrder, puschPdu->qam_mod_order, puschPduIdx); + FILL_PARAM(macPuschPdu.mcsIndex, puschPdu->mcs_index, puschPduIdx); + FILL_PARAM(macPuschPdu.mcsTable, puschPdu->mcs_table, puschPduIdx); + FILL_PARAM(macPuschPdu.transformPrecoding, puschPdu->transform_precoding, puschPduIdx); + FILL_PARAM(macPuschPdu.dataScramblingId, puschPdu->nIdPusch, puschPduIdx); + FILL_PARAM(macPuschPdu.nrOfLayers, puschPdu->nr_of_layers, puschPduIdx); + FILL_PARAM(macPuschPdu.ulDmrsSymbPos, puschPdu->ul_dmrs_symb_pos, puschPduIdx); + FILL_PARAM(macPuschPdu.dmrsConfigType, puschPdu->dmrs_config_type, puschPduIdx); + FILL_PARAM(macPuschPdu.ulDmrsScramblingId, puschPdu->ul_dmrs_scrambling_id, puschPduIdx); + FILL_PARAM(macPuschPdu.nTpPuschId, puschPdu->pusch_identity, puschPduIdx); + FILL_PARAM(macPuschPdu.scid, puschPdu->nScid, puschPduIdx); + FILL_PARAM(macPuschPdu.numDmrsCdmGrpsNoData, puschPdu->num_dmrs_cdm_grps_no_data, puschPduIdx); + FILL_PARAM(macPuschPdu.dmrsPorts, puschPdu->dmrs_ports, puschPduIdx); + FILL_PARAM(macPuschPdu.resourceAlloc, puschPdu->resource_alloc, puschPduIdx); + memcpy(puschPdu->rb_bitmap, macPuschPdu.rbBitmap, 36*sizeof(uint8_t)); + puschPduIdx += 36*sizeof(uint8_t); + FILL_PARAM(macPuschPdu.rbStart, puschPdu->rb_start, puschPduIdx); + FILL_PARAM(macPuschPdu.rbSize, puschPdu->rb_size, puschPduIdx); + FILL_PARAM(macPuschPdu.vrbToPrbMapping, puschPdu->vrb_to_prb_mapping, puschPduIdx); + FILL_PARAM(macPuschPdu.frequencyHopping, puschPdu->IntraSlotFrequencyHopping, puschPduIdx); + FILL_PARAM(macPuschPdu.txDirectCurrentLocation, puschPdu->tx_direct_current_location, puschPduIdx); + FILL_PARAM(macPuschPdu.uplinkFrequencyShift7p5khz, puschPdu->uplink_frequency_shift7p5khz, puschPduIdx); + FILL_PARAM(macPuschPdu.startSymbIndex, puschPdu->start_symb_index, puschPduIdx); + FILL_PARAM(macPuschPdu.nrOfSymbols, puschPdu->nr_of_symbols, puschPduIdx); + + /* PUSCH Data Info */ + FILL_PARAM(macPuschPdu.puschData.rvIndex, puschPdu->pusch_data.rv_index, puschPduIdx); + FILL_PARAM(macPuschPdu.puschData.harqProcessId, puschPdu->pusch_data.harq_process_id, puschPduIdx); + FILL_PARAM(macPuschPdu.puschData.newDataIndicator, puschPdu->pusch_data.new_data_indicator, puschPduIdx); + FILL_PARAM(macPuschPdu.puschData.tbSize, puschPdu->pusch_data.tb_size, puschPduIdx); + FILL_PARAM(macPuschPdu.puschData.numCb, puschPdu->pusch_data.num_cb, puschPduIdx); + FILL_PARAM(macPuschPdu.puschData.cbPresentAndPosition[0], puschPdu->pusch_data.cb_present_and_position[0], puschPduIdx); + + /* PUSCH UCI */ + FILL_PARAM(macPuschPdu.puschUci.harqAckBitLength, puschPdu->pusch_uci.harq_ack_bit_length, puschPduIdx); + FILL_PARAM(macPuschPdu.puschUci.csiPart1BitLength, puschPdu->pusch_uci.csi_part1_bit_length, puschPduIdx); + FILL_PARAM(macPuschPdu.puschUci.csiPart2BitLength, puschPdu->pusch_uci.flagCsiPart2, puschPduIdx); + FILL_PARAM(macPuschPdu.puschUci.alphaScaling, puschPdu->pusch_uci.alpha_scaling, puschPduIdx); + FILL_PARAM(macPuschPdu.puschUci.betaOffsetHarqAck, puschPdu->pusch_uci.beta_offset_harq_ack, puschPduIdx); + FILL_PARAM(macPuschPdu.puschUci.betaOffsetCsi1, puschPdu->pusch_uci.beta_offset_csi1, puschPduIdx); + FILL_PARAM(macPuschPdu.puschUci.betaOffsetCsi2, puschPdu->pusch_uci.beta_offset_csi2, puschPduIdx); + + /* PUSCH PTRS */ + FILL_PARAM(macPuschPdu.puschPtrs.numPtrsPorts, puschPdu->pusch_ptrs.num_ptrs_ports, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsInfo[0].ptrsPortIndex, puschPdu->pusch_ptrs.ptrs_info[0].ptrs_port_index, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsInfo[0].ptrsDmrsPort, puschPdu->pusch_ptrs.ptrs_info[0].ptrs_dmrs_port, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsInfo[0].ptrsReOffset, puschPdu->pusch_ptrs.ptrs_info[0].ptrs_re_offset, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsInfo[1].ptrsPortIndex, puschPdu->pusch_ptrs.ptrs_info[1].ptrs_port_index, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsInfo[1].ptrsDmrsPort, puschPdu->pusch_ptrs.ptrs_info[1].ptrs_dmrs_port, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsInfo[1].ptrsReOffset, puschPdu->pusch_ptrs.ptrs_info[1].ptrs_re_offset, puschPduIdx); + puschPduIdx += 10* sizeof(fapi_ptrs_info_t); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsTimeDensity, puschPdu->pusch_ptrs.ptrs_time_density, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ptrsFreqDensity, puschPdu->pusch_ptrs.ptrs_freq_density, puschPduIdx); + FILL_PARAM(macPuschPdu.puschPtrs.ulPtrsPower, puschPdu->pusch_ptrs.ul_ptrs_power, puschPduIdx); + + /* DFTS OFDM */ + FILL_PARAM(macPuschPdu.dftsOfdm.lowPaprGroupNumber, puschPdu->dfts_ofdm.low_papr_group_number, puschPduIdx); + FILL_PARAM(macPuschPdu.dftsOfdm.lowPaprSequenceNumber, puschPdu->dfts_ofdm.low_papr_sequence_number, puschPduIdx); + FILL_PARAM(macPuschPdu.dftsOfdm.ulPtrsSampleDensity, puschPdu->dfts_ofdm.ul_ptrs_sample_density, puschPduIdx); + FILL_PARAM(macPuschPdu.dftsOfdm.ulPtrsTimeDensityTransformPrecoding, puschPdu->dfts_ofdm.ul_ptrs_time_density_transform_precoding, puschPduIdx); + + /* Beamforming */ + convertUlRxBfPdu(macPuschPdu.beamforming, &puschPdu->beamforming, &puschPduIdx); + + //Unused fapi_pusch_mnt_parms_t puschMntParms; + puschPduIdx += sizeof(fapi_pusch_mnt_parms_t); + //Unsued fapi_optional_pusch_uci_t optionalPuschUci + puschPduIdx += sizeof(fapi_optional_pusch_uci_t); + + *pduIndex += puschPduIdx; +} + +/******************************************************************* + * + * @brief Converts UL TTI PUCCH PDU + * + * @details + * + * Function : convertUlTtiPucchPdu + * + * Functionality: + * - Converts UL TTI PUCCH PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UL TTI PUCCH PDU struct + * UE sim's UL TTI PUCCH PDU struct + * Offset of UL TTI PUCCH PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUlTtiPucchPdu(fapi_ul_pucch_pdu_t macPucchPdu, fapi_ul_pucch_pdu_t_ue_sim *pucchPdu, uint16_t *pduIndex) +{ + uint16_t pucchPduIdx = 0; + + FILL_PARAM(macPucchPdu.rnti, pucchPdu->rnti, pucchPduIdx); + FILL_PARAM(macPucchPdu.handle, pucchPdu->handle, pucchPduIdx); + FILL_PARAM(macPucchPdu.bwpSize, pucchPdu->bwp_size, pucchPduIdx); + FILL_PARAM(macPucchPdu.bwpStart, pucchPdu->bwp_start, pucchPduIdx); + FILL_PARAM(macPucchPdu.subCarrierSpacing, pucchPdu->sub_carrier_spacing, pucchPduIdx); + FILL_PARAM(macPucchPdu.cyclicPrefix, pucchPdu->cyclic_prefix, pucchPduIdx); + FILL_PARAM(macPucchPdu.formatType, pucchPdu->format_type, pucchPduIdx); + FILL_PARAM(macPucchPdu.multiSlotTxIndicator, pucchPdu->multi_slot_tx_indicator, pucchPduIdx); + FILL_PARAM(macPucchPdu.pi2Bpsk, pucchPdu->pi2_bpsk, pucchPduIdx); + FILL_PARAM(macPucchPdu.prbStart, pucchPdu->prb_start, pucchPduIdx); + FILL_PARAM(macPucchPdu.prbSize, pucchPdu->prb_size, pucchPduIdx); + FILL_PARAM(macPucchPdu.startSymbolIndex, pucchPdu->start_symbol_index, pucchPduIdx); + FILL_PARAM(macPucchPdu.nrOfSymbols, pucchPdu->nr_of_symbols, pucchPduIdx); + FILL_PARAM(macPucchPdu.freqHopFlag, pucchPdu->intraSlotFrequencyHopping, pucchPduIdx); + FILL_PARAM(macPucchPdu.secondHopPrb, pucchPdu->second_hop_prb, pucchPduIdx); + FILL_PARAM(macPucchPdu.groupHopFlag, pucchPdu->pucchGroupHopping, pucchPduIdx); + //Obsolete 8 bit + pucchPduIdx += sizeof(uint8_t); + FILL_PARAM(macPucchPdu.hoppingId, pucchPdu->nIdPucchHopping, pucchPduIdx); + FILL_PARAM(macPucchPdu.initialCyclicShift, pucchPdu->initial_cyclic_shift, pucchPduIdx); + FILL_PARAM(macPucchPdu.dataScramblingId, pucchPdu->nIdPucchScrambling, pucchPduIdx); + FILL_PARAM(macPucchPdu.timeDomainOccIdx, pucchPdu->time_domain_occ_idx, pucchPduIdx); + FILL_PARAM(macPucchPdu.preDftOccIdx, pucchPdu->pre_dft_occ_idx, pucchPduIdx); + FILL_PARAM(macPucchPdu.preDftOccLen, pucchPdu->pre_dft_occ_len, pucchPduIdx); + FILL_PARAM(macPucchPdu.addDmrsFlag, pucchPdu->add_dmrs_flag, pucchPduIdx); + FILL_PARAM(macPucchPdu.dmrsScramblingId, pucchPdu->dmrs_scrambling_id, pucchPduIdx); + FILL_PARAM(macPucchPdu.dmrsCyclicShift, pucchPdu->dmrs_cyclic_shift, pucchPduIdx); + FILL_PARAM(macPucchPdu.srFlag, pucchPdu->sr_flag, pucchPduIdx); + FILL_PARAM(macPucchPdu.bitLenHarq, pucchPdu->bit_len_harq, pucchPduIdx); + FILL_PARAM(macPucchPdu.bitLenCsiPart1, pucchPdu->csiPart1BitLength, pucchPduIdx); + + convertUlRxBfPdu(macPucchPdu.beamforming, &pucchPdu->beamforming, &pucchPduIdx); + + //Unsued fapi_pucch_mntnnc_params_t pucch_basicextension + pucchPduIdx += sizeof(fapi_pucch_mntnnc_params_t); + //Unused fapi_uci_part1_part2_t uci_part1_part2; + pucchPduIdx += sizeof(fapi_uci_part1_part2_t); + + *pduIndex += pucchPduIdx; +} + +/******************************************************************* + * + * @brief Converts UL TTI SRS PDU + * + * @details + * + * Function : convertUlTtiSrsPdu + * + * Functionality: + * - Converts UL TTI SRS PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UL TTI SRS PDU struct + * UE sim's UL TTI SRS PDU struct + * Offset of SRS PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUlTtiSrsPdu(fapi_ul_srs_pdu_t macSrsPdu, fapi_ul_srs_pdu_t_ue_sim *srsPdu, uint16_t *pduIndex) +{ + uint16_t srsPduIdx = 0; + + FILL_PARAM(macSrsPdu.rnti, srsPdu->rnti, srsPduIdx); + FILL_PARAM(macSrsPdu.handle, srsPdu->handle, srsPduIdx); + FILL_PARAM(macSrsPdu.bwpSize, srsPdu->bwp_size, srsPduIdx); + FILL_PARAM(macSrsPdu.bwpStart, srsPdu->bwp_start, srsPduIdx); + FILL_PARAM(macSrsPdu.subCarrierSpacing, srsPdu->sub_carrier_spacing, srsPduIdx); + FILL_PARAM(macSrsPdu.cyclicPrefix, srsPdu->cyclic_prefix, srsPduIdx); + FILL_PARAM(macSrsPdu.numAntPorts, srsPdu->num_ant_ports, srsPduIdx); + FILL_PARAM(macSrsPdu.numSymbols, srsPdu->num_symbols, srsPduIdx); + FILL_PARAM(macSrsPdu.numRepetitions, srsPdu->num_repetitions, srsPduIdx); + FILL_PARAM(macSrsPdu.timeStartPosition, srsPdu->time_start_position, srsPduIdx); + FILL_PARAM(macSrsPdu.configIndex, srsPdu->config_index, srsPduIdx); + FILL_PARAM(macSrsPdu.sequenceId, srsPdu->sequence_id, srsPduIdx); + FILL_PARAM(macSrsPdu.bandwidthIndex, srsPdu->bandwidth_index, srsPduIdx); + FILL_PARAM(macSrsPdu.combSize, srsPdu->comb_size, srsPduIdx); + FILL_PARAM(macSrsPdu.combOffset, srsPdu->comb_offset, srsPduIdx); + FILL_PARAM(macSrsPdu.cyclicShift, srsPdu->cyclic_shift, srsPduIdx); + FILL_PARAM(macSrsPdu.frequencyPosition, srsPdu->frequency_position, srsPduIdx); + FILL_PARAM(macSrsPdu.frequencyShift, srsPdu->frequency_shift, srsPduIdx); + FILL_PARAM(macSrsPdu.frequencyHopping, srsPdu->frequency_hopping, srsPduIdx); + FILL_PARAM(macSrsPdu.groupOrSequenceHopping, srsPdu->group_or_sequence_hopping, srsPduIdx); + FILL_PARAM(macSrsPdu.resourceType, srsPdu->resource_type, srsPduIdx); + FILL_PARAM(macSrsPdu.tSrs, srsPdu->t_srs, srsPduIdx); + FILL_PARAM(macSrsPdu.tOffset, srsPdu->t_offset, srsPduIdx); + + convertUlRxBfPdu(macSrsPdu.beamforming, &srsPdu->beamforming, &srsPduIdx); + + *pduIndex += srsPduIdx; +} + +/******************************************************************* + * + * @brief Converts UL TTI PDU + * + * @details + * + * Function : convertUlTtiPdu + * + * Functionality: + * - Converts UL TTI PDU struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UL TTI PDU struct + * UE sim's UL TTI PDU struct + * Offset of UL TTI PDU struct in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUlTtiPdu(fapi_ul_tti_req_pdu_t macUlTtiPdu, fapi_ul_tti_req_pdu_t_ue_sim *ulTtiPdu, uint16_t *index) +{ + uint16_t pduIndex = 0; + + FILL_PARAM(macUlTtiPdu.pduType, ulTtiPdu->pdu_type, pduIndex); + pduIndex += sizeof(ulTtiPdu->pdu_size); + switch(macUlTtiPdu.pduType) + { + case FAPI_PRACH_PDU_TYPE: + convertUlTtiPrachPdu(macUlTtiPdu.pdu.prach_pdu, &ulTtiPdu->u.prach_pdu, &pduIndex); + break; + case FAPI_PUSCH_PDU_TYPE: + convertUlTtiPuschPdu(macUlTtiPdu.pdu.pusch_pdu, &ulTtiPdu->u.pusch_pdu, &pduIndex); + break; + case FAPI_PUCCH_PDU_TYPE: + convertUlTtiPucchPdu(macUlTtiPdu.pdu.pucch_pdu, &ulTtiPdu->u.pucch_pdu, &pduIndex); + break; + case FAPI_SRS_PDU_TYPE: + convertUlTtiSrsPdu(macUlTtiPdu.pdu.srs_pdu, &ulTtiPdu->u.srs_pdu, &pduIndex); + break; + } + ulTtiPdu->pdu_size = pduIndex; + *index += pduIndex; +} + +/***************************************************************** + * @brief Converts UL_TTI.Request + * + * @details + * + * Function : convertUlTtiRequest + * + * Functionality: + * - Converts UL_TTI.request from MAC's FAPI version to + * UE Simulator's FAPI version. + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertUlTtiRequest(uint8_t handle, void *msg, uint16_t msgLen) +{ + uint8_t idx = 0; + uint16_t index = 0, totalLength = 0; + p_fapi_api_queue_elem_t ulTtiReqElem = (p_fapi_api_queue_elem_t)msg; + fapi_ul_tti_req_t *macUlTtiReq = (fapi_ul_tti_req_t *)(ulTtiReqElem +1); + fapi_ul_tti_req_t_ue_sim *ulTtiReq = NULLP; + fapi_ul_tti_req_pdu_t_ue_sim *ulTtiPdu = NULLP; + +#ifdef ODU_SLOT_IND_DEBUG_LOG + DU_LOG("\nDEBUG --> FAPI_CL: Received UL_TTI.request from MAC"); +#endif + + FAPI_CL_ALLOC(ulTtiReq, MAX_PDU_SIZE); + if(!ulTtiReq) + { + DU_LOG("\nERROR --> FAPI_CL: Memory allocation failed for UL_TTI.request"); + FAPI_CL_FREE(msg, msgLen); + } + + memset(ulTtiReq, 0, MAX_PDU_SIZE); + FILL_PARAM(1, ulTtiReq->header.numberOfMessagesIncluded, index); + FILL_PARAM(handle, ulTtiReq->header.handle, index); + FILL_PARAM(macUlTtiReq->header.msg_id, ulTtiReq->header.msg_details.message_type_id, index); + index += sizeof(ulTtiReq->header.msg_details.length); + + FILL_PARAM(macUlTtiReq->sfn, ulTtiReq->sfn, index); + FILL_PARAM(macUlTtiReq->slot, ulTtiReq->slot, index); + FILL_PARAM(macUlTtiReq->nPdus, ulTtiReq->n_pdus, index); + FILL_PARAM(MAX_NUM_UL_TYPES, ulTtiReq->nUlTypes, index); + for(idx=0; idx < ulTtiReq->nUlTypes; idx++) + FILL_PARAM(0, ulTtiReq->nPDUsOfEachType[idx], index); + FILL_PARAM(macUlTtiReq->nGroup, ulTtiReq->n_group, index); + + for(idx = 0; idx < macUlTtiReq->nPdus; idx++) + { + ulTtiPdu = (void *)ulTtiReq + index; + convertUlTtiPdu(macUlTtiReq->pdus[idx], ulTtiPdu, &index); + } + totalLength = index; + ulTtiReq->header.msg_details.length = totalLength - sizeof(fapi_msg_header_t_ue_sim); + + sendMsgToUeSim(EVT_CNTL_REQUEST, (Data *)ulTtiReq, totalLength); + FAPI_CL_FREE(msg, msgLen); + FAPI_CL_FREE(ulTtiReq, MAX_PDU_SIZE); +} + +/******************************************************************* + * + * @brief Converts UL_DCI PDU + * + * @details + * + * Function : convertUlDciPdu + * + * Functionality: + * -Converts Ul Dci Pdu struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's UL DCI PDU struct + * UE sim's UL DCI PDU struct + * Offset of PDU in its parent structure + * + * @return void + * + * ****************************************************************/ +void convertUlDciPdu(fapi_dci_pdu_t macUlDciPdu, fapi_dci_pdu_t_ue_sim *ulDciPdu, uint16_t *index) +{ + uint16_t dciPduIdx = 0; + + FILL_PARAM(macUlDciPdu.pduType, ulDciPdu->pdu_type, dciPduIdx); + dciPduIdx += sizeof(ulDciPdu->pdu_size); + convertDlPdcchPdu(macUlDciPdu.pdcchPduConfig, &ulDciPdu->pdcch_pdu, &dciPduIdx); + ulDciPdu->pdu_size = dciPduIdx; + + *index += dciPduIdx; +} + +/* **************************************************************** + * @details Converts UL_DCI.request + * + * Function : convertUlDciRequest + * + * Functionality: + * -Converts UL_DCI.request from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] Cell ID + * Message Pointer + * Message Length + * + * @return void + * + * ****************************************************************/ +void convertUlDciRequest(uint8_t handle, void *msg, uint16_t msgLen) +{ + uint8_t idx = 0; + uint16_t index = 0, totalLength = 0; + p_fapi_api_queue_elem_t ulDciReqElem = (p_fapi_api_queue_elem_t)msg; + fapi_ul_dci_req_t *macUlDciReq = (fapi_ul_dci_req_t *)(ulDciReqElem +1); + fapi_ul_dci_req_t_ue_sim *ulDciReq = NULLP; + fapi_dci_pdu_t_ue_sim *ulDciPdu = NULLP; + +#ifdef ODU_SLOT_IND_DEBUG_LOG + DU_LOG("\nDEBUG --> FAPI_CL: Received UL_DCI.request from MAC"); +#endif + + FAPI_CL_ALLOC(ulDciReq, MAX_PDU_SIZE); + if(!ulDciReq) + { + DU_LOG("\nERROR --> FAPI_CL: Memory allocation failed for UL_DCI.request"); + FAPI_CL_FREE(msg, msgLen); + } + + memset(ulDciReq, 0, MAX_PDU_SIZE); + FILL_PARAM(1, ulDciReq->header.numberOfMessagesIncluded, index); + FILL_PARAM(handle, ulDciReq->header.handle, index); + FILL_PARAM(macUlDciReq->header.msg_id, ulDciReq->header.msg_details.message_type_id, index); + index += sizeof(ulDciReq->header.msg_details.length); + + FILL_PARAM(macUlDciReq->sfn, ulDciReq->sfn, index); + FILL_PARAM(macUlDciReq->slot, ulDciReq->slot, index); + FILL_PARAM(macUlDciReq->numPdus, ulDciReq->num_pdus, index); + FILL_PARAM(MAX_NDLTYPES_UL_DCI_REQ, ulDciReq->nDlTypes, index); + for(idx=0; idx < ulDciReq->nDlTypes; idx++) + FILL_PARAM(0, ulDciReq->nPDUsOfEachType[idx], index); + + for(idx = 0; idx < macUlDciReq->numPdus; idx++) + { + ulDciPdu = (void *)ulDciReq + index; + convertUlDciPdu(macUlDciReq->pdus[idx], ulDciPdu, &index); + } + totalLength = index; + ulDciReq->header.msg_details.length = totalLength - sizeof(fapi_msg_header_t_ue_sim); + + sendMsgToUeSim(EVT_CNTL_REQUEST, (Data *)ulDciReq, totalLength); + FAPI_CL_FREE(msg, msgLen); + FAPI_CL_FREE(ulDciReq, MAX_PDU_SIZE); +} + +/******************************************************************* + * + * @brief Converts TX_DATA PDU's TLV + * + * @details + * + * Function : convertTxDataTlv + * + * Functionality: + * -Converts TxData Pdu Tlv struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's Tx Data PDU TLV struct + * UE sim's Tx Data PDU TLV struct + * Offset of TLV in its parent structure + * + * @return void + * + * ****************************************************************/ +void convertTxDataTlv(fapi_uint8_ptr_tlv_t macTxDataTlv, fapi_tx_dat_tlv_t *txDataTlv, uint16_t *pduIndex) +{ + uint16_t tlvIndex = 0; + uint32_t *tlvValue = NULLP; + + /* UE sim supports only tag = 0. + * for more information please refer to 5G FAPI: PHY API + * Specification(Version: 222.10.03)doc.. 3.4.6 section.*/ + FILL_PARAM(0, txDataTlv->tag, tlvIndex); + + /* Removing the extra header length (added as per requirement of Intel L1) that was added at lower mac */ + FILL_PARAM((macTxDataTlv.tl.length - TX_PAYLOAD_HDR_LEN), txDataTlv->length, tlvIndex); + + /* Copying the actual payload */ + tlvValue = (void *)txDataTlv + tlvIndex; + memcpy(tlvValue, (macTxDataTlv.value + TX_PAYLOAD_HDR_LEN), txDataTlv->length); + tlvIndex += txDataTlv->length; + + FAPI_CL_FREE(macTxDataTlv.value, macTxDataTlv.tl.length); + + *pduIndex += tlvIndex; +} + +/******************************************************************* + * + * @brief Converts TX_DATA PDU + * + * @details + * + * Function : convertTxDataPdu + * + * Functionality: + * -Converts TxData Pdu struct from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] MAC's Tx Data PDU struct + * UE sim's Tx Data PDU struct + * Offset of PDU in its parent structure + * + * @return void + * + * ****************************************************************/ +void convertTxDataPdu(fapi_tx_pdu_desc_t macTxDataPdu, fapi_tx_pdu_desc_t_ue_sim *txDataPdu, uint16_t *index) +{ + uint8_t idx = 0; + uint16_t pduIndex = 0; + fapi_tx_dat_tlv_t *tlv = NULLP; + + pduIndex += sizeof(txDataPdu->pduLength); // value of txDataPdu->pduLength will be filled at the end + FILL_PARAM(macTxDataPdu.pdu_index, txDataPdu->pduIndex, pduIndex); + FILL_PARAM(0, txDataPdu->cwIndex, pduIndex); + FILL_PARAM(macTxDataPdu.num_tlvs, txDataPdu->numTlvs, pduIndex); + + for(idx = 0; idx < macTxDataPdu.num_tlvs; idx++) + { + tlv = (void *)txDataPdu + pduIndex; + convertTxDataTlv(macTxDataPdu.tlvs[idx], tlv, &pduIndex); + } + txDataPdu->pduLength = pduIndex; + *index += pduIndex; +} + +/******************************************************************* + * + * @brief Converts TX_DATA.request + * + * @details + * + * Function : convertTxDataRequest + * + * Functionality: + * -Converts TX_DATA.request from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] Cell ID + * Message Pointer + * Message Length + * + * @return void + * + * ****************************************************************/ +void convertTxDataRequest(uint8_t handle, void *msg, uint16_t msgLen) +{ + uint8_t idx = 0; + uint16_t index = 0, totalLength = 0; + p_fapi_api_queue_elem_t txDataReqElem = (p_fapi_api_queue_elem_t)msg; + fapi_tx_data_req_t *macTxDataReq = (fapi_tx_data_req_t *)(txDataReqElem +1); + fapi_tx_data_req_t_ue_sim *txDataReq = NULLP; + fapi_tx_pdu_desc_t_ue_sim *txDataPdu = NULLP; + + DU_LOG("\nDEBUG --> FAPI_CL: Received TX_DATA.request from MAC"); + + FAPI_CL_ALLOC(txDataReq, MAX_PDU_SIZE); + if(!txDataReq) + { + DU_LOG("\nERROR --> FAPI_CL: Memory allocation failed for TX_DATA.request"); + FAPI_CL_FREE(msg, msgLen); + } + + memset(txDataReq, 0, MAX_PDU_SIZE); + FILL_PARAM(1, txDataReq->header.numberOfMessagesIncluded, index); + FILL_PARAM(handle, txDataReq->header.handle, index); + FILL_PARAM(macTxDataReq->header.msg_id, txDataReq->header.msg_details.message_type_id, index); + index += sizeof(txDataReq->header.msg_details.length); + + FILL_PARAM(macTxDataReq->sfn, txDataReq->sfn, index); + FILL_PARAM(macTxDataReq->slot, txDataReq->slot, index); + FILL_PARAM(macTxDataReq->num_pdus, txDataReq->numPdus, index); + + for(idx = 0; idx < macTxDataReq->num_pdus; idx++) + { + txDataPdu = (void *)txDataReq + index; + convertTxDataPdu(macTxDataReq->pdu_desc[idx], txDataPdu, &index); + } + totalLength = index; + txDataReq->header.msg_details.length = totalLength - sizeof(fapi_msg_header_t_ue_sim); + + sendMsgToUeSim(EVT_DATA_REQUEST, (Data *)txDataReq, totalLength); + FAPI_CL_FREE(msg, msgLen); + FAPI_CL_FREE(txDataReq, MAX_PDU_SIZE); +} + +/******************************************************************* + * + * @brief Converts STOP.request + * + * @details + * + * Function : convertStopRequest + * + * Functionality: + * -Converts STOP.request from MAC's FAPI + * version to UE Simulator's FAPI version. + * + * @params[in] Cell ID + * Message Pointer + * Message Length + * + * @return void + * + * ****************************************************************/ +void convertStopRequest(uint8_t handle, void *msg, uint16_t msgLen) +{ + p_fapi_api_queue_elem_t stopReqElem = (p_fapi_api_queue_elem_t)msg; + fapi_stop_req_t *macStopReq = (fapi_stop_req_t *)(stopReqElem +1); + fapi_stop_req_t_ue_sim stopReq; + + DU_LOG("\nDEBUG --> FAPI_CL: Received STOP.request from MAC"); + + memset(&stopReq, 0, sizeof(fapi_stop_req_t_ue_sim)); + stopReq.header.numberOfMessagesIncluded = 1; + stopReq.header.handle = handle; + stopReq.header.msg_details.message_type_id = macStopReq->header.msg_id; + stopReq.header.msg_details.length = sizeof(fapi_stop_req_t_ue_sim) - sizeof(fapi_msg_header_t_ue_sim); + + FAPI_CL_FREE(msg, msgLen); + + sendMsgToUeSim(EVT_CNTL_REQUEST, (Data *)&stopReq, sizeof(fapi_stop_req_t_ue_sim)); +} + +/******************************************************************* + * + * @brief Receives message from MAC and call appropriate handler + * + * @details + * + * Function : fapiClProcessMac2UeSimFapiMsg + * + * Functionality: + * - Receives message from MAC and calls appropriate handler + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ + +void fapiClProcessMac2UeSimFapiMsg(void *msg) +{ + uint8_t handle = 0; + uint16_t msgLen =0; + p_fapi_api_queue_elem_t currMsg = NULLP; + p_fapi_api_queue_elem_t nextMsg = NULLP; + + currMsg = (p_fapi_api_queue_elem_t)msg; + while(currMsg) + { + nextMsg = currMsg->p_next; + msgLen = currMsg->msg_len + sizeof(fapi_api_queue_elem_t); + if(currMsg->msg_type == FAPI_VENDOR_MSG_HEADER_IND) + { + handle = ((fapi_msg_header_t *)(currMsg +1))->handle; + FAPI_CL_FREE(currMsg, msgLen); + } + else if(currMsg->msg_type == FAPI_VENDOR_MESSAGE) + { + FAPI_CL_FREE(currMsg, msgLen); + } + else + { + switch(currMsg->msg_type) + { + case FAPI_CONFIG_REQUEST: + convertConfigRequest(handle, currMsg, msgLen); + break; + case FAPI_START_REQUEST: + convertStartRequest(handle, currMsg, msgLen); + break; + case FAPI_DL_TTI_REQUEST: + convertDlTtiRequest(handle, currMsg, msgLen); + break; + case FAPI_UL_TTI_REQUEST: + convertUlTtiRequest(handle, currMsg, msgLen); + break; + case FAPI_UL_DCI_REQUEST: + convertUlDciRequest(handle, currMsg, msgLen); + break; + case FAPI_TX_DATA_REQUEST: + convertTxDataRequest(handle, currMsg, msgLen); + break; + case FAPI_STOP_REQUEST: + clCb.slotIndInfo.slotIndicationStarted = false; + FAPI_CL_FREE(currMsg, msgLen); + break; + default: + DU_LOG("\nERROR --> FAPI_CL: Invalid message id [%d] from MAC", currMsg->msg_type); + } + } + currMsg = nextMsg; + } +} + +/********************************************************************** + End of file + **********************************************************************/ diff --git a/src/fapi_cl/fapi_cl_phy2mac.c b/src/fapi_cl/fapi_cl_phy2mac.c new file mode 100644 index 000000000..c50d2403f --- /dev/null +++ b/src/fapi_cl/fapi_cl_phy2mac.c @@ -0,0 +1,797 @@ +/******************************************************************************* +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ +*******************************************************************************/ + +/* This file converts FAPI messages sent from UE simulator/PHY to MAC */ + +#include "common_def.h" +#include "fapi_cl.h" +#include "fapi_cl_utils.h" +#include "fapi_interface_ue_sim.h" +#include "fapi_interface.h" +#include "fapi_vendor_extension.h" +#include "lwr_mac_fapi_cl_inf.h" + +void procPhyMessages(uint16_t msgType, uint32_t msgSize, void *msg); + +/******************************************************************* + * + * @brief Converts CONFIG.Response + * + * @details + * + * Function : convertConfigResponse + * + * Functionality: + * - Converts CONFIG.response from UE sim's FAPI version to + * Mac's FAPI version. + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertConfigResponse(void *msg) +{ + uint16_t idx, numTlvs; + fapi_config_resp_t *macCfgRsp = NULLP; + fapi_config_resp_t_ue_sim *cfgRsp = (fapi_config_resp_t_ue_sim *)msg; + + DU_LOG("\nINFO --> FAPI_CL: Received CONFIG.response from UE simulator"); + + FAPI_CL_ALLOC(macCfgRsp, sizeof(fapi_config_resp_t)); + if(!macCfgRsp) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for config response"); + return; + } + macCfgRsp->header.msg_id = FAPI_CONFIG_RESPONSE; + macCfgRsp->header.length = sizeof(fapi_config_resp_t) - sizeof(fapi_msg_t); + macCfgRsp->error_code = cfgRsp->error_code; + macCfgRsp->number_of_invalid_tlvs = cfgRsp->number_of_invalid_tlvs; + macCfgRsp->number_of_inv_tlvs_idle_only = cfgRsp->number_of_inv_tlvs_idle_only; + macCfgRsp->number_of_inv_tlvs_running_only = cfgRsp->number_of_inv_tlvs_running_only; + macCfgRsp->number_of_missing_tlvs = cfgRsp->number_of_missing_tlvs; + numTlvs = macCfgRsp->number_of_invalid_tlvs + macCfgRsp->number_of_inv_tlvs_idle_only + \ + macCfgRsp->number_of_inv_tlvs_running_only + macCfgRsp->number_of_missing_tlvs; + for(idx = 0; idx < numTlvs; idx++) + { + macCfgRsp->tlvs[idx].tl.tag = cfgRsp->tlvs[idx].tl.tag; + macCfgRsp->tlvs[idx].tl.length = cfgRsp->tlvs[idx].tl.length; + macCfgRsp->tlvs[idx].value = cfgRsp->tlvs[idx].value; + } + procPhyMessages(macCfgRsp->header.msg_id, sizeof(fapi_config_resp_t), (void *)macCfgRsp); + FAPI_CL_FREE(macCfgRsp, sizeof(fapi_config_resp_t)); +} + +/******************************************************************* +* +* @brief Builds and sends FAPI Slot indication to MAC +* +* @details +* +* Function : buildAndSendSlotIndication +* +* Functionality: +* - Builds and sends FAPI Slot indication to MAC +* +* @params[in] +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t buildAndSendSlotIndication() +{ + Pst pst; + Buffer *mBuf; + fapi_slot_ind_t *slotIndMsg; + + FAPI_CL_ALLOC_SHRABL_BUF(slotIndMsg, sizeof(fapi_slot_ind_t)); + if(!slotIndMsg) + { + DU_LOG("\nERROR --> FAPI_CL: Memory allocation failed for slot Indication Message"); + return RFAILED; + } + else + { + memset(slotIndMsg, 0, sizeof(fapi_slot_ind_t)); + slotIndMsg->sfn = clCb.slotIndInfo.currSfn; + slotIndMsg->slot = clCb.slotIndInfo.currSlot; + slotIndMsg->header.msg_id = FAPI_SLOT_INDICATION; + slotIndMsg->header.length = sizeof(fapi_slot_ind_t) - sizeof(fapi_msg_t); + +#ifdef ODU_SLOT_IND_DEBUG_LOG + DU_LOG("\n\nDEBUG --> FAPI_CL: Sending Slot Indication [%d : %d] to MAC", slotIndMsg->sfn, slotIndMsg->slot); +#endif + + /* increment for the next TTI */ + clCb.slotIndInfo.currSlot++; + if(clCb.slotIndInfo.currSlot >= MAX_SLOTS) + { + clCb.slotIndInfo.currSlot = 0; + clCb.slotIndInfo.currSfn++; + if(clCb.slotIndInfo.currSfn >= MAX_SFN) + clCb.slotIndInfo.currSfn = 0; + } + + memset(&pst, 0, sizeof(Pst)); + FILL_PST_FAPI_CL_TO_LWR_MAC(pst, FAPI_CL_INST_1, 0, EVT_FAPI_CL_SLOT_IND); + ODU_GET_MSG_BUF(pst.region, pst.pool, &mBuf); + if(!mBuf) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for slot indication buffer"); + FAPI_CL_FREE_SHRABL_BUF(pst.region, pst.pool, slotIndMsg, sizeof(fapi_slot_ind_t)); + return RFAILED; + } + CMCHKPK(oduPackPointer, (PTR)slotIndMsg, mBuf); + ODU_POST_TASK(&pst, mBuf); + } + return ROK; +} + +/******************************************************************* + * + * @brief Converts STOP.indication + * + * @details + * + * Function : convertStopIndication + * + * Functionality: + * - Converts STOP.indication from UE sim's FAPI version to + * Mac's FAPI version. + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void buildAndSendStopIndication() +{ + Pst pst; + Buffer *mBuf; + fapi_stop_ind_t *macStopInd = NULLP; + + DU_LOG("\nINFO --> FAPI_CL: Sending STOP.indication to MAC"); + + FAPI_CL_ALLOC_SHRABL_BUF(macStopInd, sizeof(fapi_stop_ind_t)); + if(!macStopInd) + { + DU_LOG("\nERROR --> FAPI_CL: Memory allocation failed for stop Indication Message"); + return; + } + else + { + memset(macStopInd, 0, sizeof(fapi_stop_ind_t)); + macStopInd->header.msg_id = FAPI_STOP_INDICATION; + macStopInd->header.length = sizeof(fapi_stop_ind_t) - sizeof(fapi_msg_t); + + memset(&pst, 0, sizeof(Pst)); + FILL_PST_FAPI_CL_TO_LWR_MAC(pst, FAPI_CL_INST_1, 0, EVT_FAPI_CL_STOP_IND); + ODU_GET_MSG_BUF(pst.region, pst.pool, &mBuf); + if(!mBuf) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for stop indication buffer"); + FAPI_CL_FREE_SHRABL_BUF(pst.region, pst.pool, macStopInd, sizeof(fapi_stop_ind_t)); + return; + } + CMCHKPK(oduPackPointer, (PTR)macStopInd, mBuf); + ODU_POST_TASK(&pst, mBuf); + } +} + +/******************************************************************* +* +* @brief Generates ticks periodically +* +* @details +* +* Function : generateTicks +* +* Functionality: +* - Generates ticks periodically +* +* @params[in] +* @return NULL +* +* ****************************************************************/ +void* generateTicks() +{ + float milisec = 1; /* 1ms */ + struct timespec req = {0}; + uint8_t ratio = 2; + uint16_t counter = 0; + + clCb.slotIndInfo.currSfn = 0; + clCb.slotIndInfo.currSlot = 0; + clCb.slotIndInfo.slotIndicationStarted = true; + req.tv_sec = 0; + + /* Currently the code takes longer that one slot indication to execute. + * Hence, multiplying slot time interval by 2 in order to give enough time + * for L2 to complete one slot processing. + * The ratio must be removed once code optimization is complete */ + req.tv_nsec = milisec * 1000000L * ratio; + + DU_LOG("\nINFO --> FAPI_CL: Starting to generate slot indications"); + + while(clCb.slotIndInfo.slotIndicationStarted) + //while(counter <=100) + { + clock_nanosleep(CLOCK_REALTIME, 0, &req, NULL); + /* Send Slot indication indication to lower mac */ + if(buildAndSendSlotIndication() != ROK) + { + DU_LOG("\nERROR --> FAPI_CL: generateTicks(): Failed to build and send Slot Indication"); + break; + } + counter++; + } + + DU_LOG("\nINFO --> FAPI_CL: Slot indication stopped"); + buildAndSendStopIndication(); + return 0; +} + +/******************************************************************* +* +* @brief Sends Start_slot_ind request to self +* +* @details +* +* Function : sendStartSlotIndReq +* +* Functionality: +* - Sends Start_slot_ind request to self +* +* @params[in] +* @return +* +* ****************************************************************/ +void sendStartSlotIndReq() +{ + Pst pst; + Buffer *mBuf = NULLP; + + DU_LOG("\nINFO --> FAPI_CL: Sending start slot indication event to self"); + memset(&pst, 0, sizeof(Pst)); + FILL_PST_CL_TO_CL(pst, FAPI_CL_INST_0, FAPI_CL_INST_1, EVT_FAPI_CL_START_SLOT_IND); + ODU_GET_MSG_BUF(pst.region, pst.pool, &mBuf); + ODU_POST_TASK(&pst, mBuf); +} + +/******************************************************************* + * + * @brief Process START.Response + * + * @details + * + * Function : processStartResponse + * + * Functionality: + * - Calls the handler to start sending slot indication to MAC + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertStartResponse(void *msg) +{ + DU_LOG("\nINFO --> FAPI_CL: Received START.response from UE simulator"); + sendStartSlotIndReq(); +} + +/******************************************************************* + * + * @brief Process RACH.Indication + * + * @details + * + * Function : convertRachIndication + * + * Functionality: + * - Converts STOP.indication from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertRachIndication(void *msg) +{ + uint8_t pduIdx = 0, preambleIdx = 0; + fapi_rach_indication_t *macRachInd = NULLP; + fapi_rach_indication_t_ue_sim *rachInd = (fapi_rach_indication_t_ue_sim *)msg; + + DU_LOG("\nINFO --> FAPI_CL: Received RACH.indication from UE simulator"); + + FAPI_CL_ALLOC(macRachInd, sizeof(fapi_rach_indication_t)); + if(!macRachInd) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for RACH.indication"); + return; + } + + macRachInd->header.msg_id = FAPI_RACH_INDICATION; + macRachInd->header.length = sizeof(fapi_rach_indication_t) - sizeof(fapi_msg_t); + macRachInd->sfn = rachInd->sfn; + macRachInd->slot = rachInd->slot; + macRachInd->numPdus = rachInd->numPdus; + + for(pduIdx = 0; pduIdx < rachInd->numPdus; pduIdx++) + { + macRachInd->rachPdu[pduIdx].phyCellId = rachInd->rachPdu[pduIdx].handle; + macRachInd->rachPdu[pduIdx].symbolIndex = rachInd->rachPdu[pduIdx].symbolIndex; + macRachInd->rachPdu[pduIdx].slotIndex = rachInd->rachPdu[pduIdx].slotIndex; + macRachInd->rachPdu[pduIdx].freqIndex = rachInd->rachPdu[pduIdx].raIndex; + macRachInd->rachPdu[pduIdx].avgRssi = rachInd->rachPdu[pduIdx].avgRssi; + macRachInd->rachPdu[pduIdx].avgSnr = rachInd->rachPdu[pduIdx].avgSnr; + macRachInd->rachPdu[pduIdx].numPreamble = rachInd->rachPdu[pduIdx].numPreamble; + for(preambleIdx = 0; preambleIdxrachPdu[pduIdx].numPreamble; preambleIdx++) + { + macRachInd->rachPdu[pduIdx].preambleInfo[preambleIdx].preambleIndex = rachInd->rachPdu[pduIdx].preambleInfo[preambleIdx].preambleIndex; + macRachInd->rachPdu[pduIdx].preambleInfo[preambleIdx].timingAdvance = rachInd->rachPdu[pduIdx].preambleInfo[preambleIdx].timingAdvance; + macRachInd->rachPdu[pduIdx].preambleInfo[preambleIdx].preamblePwr = rachInd->rachPdu[pduIdx].preambleInfo[preambleIdx].premblePwr; + } + } + + procPhyMessages(macRachInd->header.msg_id, sizeof(fapi_rach_indication_t), (void *)macRachInd); + FAPI_CL_FREE(macRachInd, sizeof(fapi_rach_indication_t)); +} + +/******************************************************************* + * + * @brief Process CRC.Indication + * + * @details + * + * Function : convertCrcIndication + * + * Functionality: + * - Converts CRC.indication from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertCrcIndication(void *msg) +{ + uint8_t crcIdx = 0, cbIdx = 0; + fapi_crc_ind_t *macCrcInd = NULLP; + fapi_crc_ind_t_ue_sim *crcInd = (fapi_crc_ind_t_ue_sim *)msg; + + DU_LOG("\nINFO --> FAPI_CL: Received CRC.indication from UE simulator"); + + FAPI_CL_ALLOC(macCrcInd, sizeof(fapi_crc_ind_t)); + if(!macCrcInd) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for CRC.indication"); + return; + } + + macCrcInd->header.msg_id = FAPI_CRC_INDICATION; + macCrcInd->header.length = sizeof(fapi_crc_ind_t) - sizeof(fapi_msg_t); + macCrcInd->sfn = crcInd->sfn; + macCrcInd->slot = crcInd->slot; + macCrcInd->numCrcs = crcInd->num_crcs; + + for(crcIdx = 0; crcIdx < macCrcInd->numCrcs; crcIdx++) + { + macCrcInd->crc[crcIdx].handle = crcInd->crc[crcIdx].handle; + macCrcInd->crc[crcIdx].rnti = crcInd->crc[crcIdx].rnti; + macCrcInd->crc[crcIdx].harqId = crcInd->crc[crcIdx].harq_id; + macCrcInd->crc[crcIdx].tbCrcStatus = crcInd->crc[crcIdx].tb_crc_status; + macCrcInd->crc[crcIdx].ul_cqi = crcInd->crc[crcIdx].ul_cqi; + macCrcInd->crc[crcIdx].numCb = crcInd->crc[crcIdx].num_cb; + macCrcInd->crc[crcIdx].timingAdvance = crcInd->crc[crcIdx].timing_advance; + macCrcInd->crc[crcIdx].rssi = crcInd->crc[crcIdx].rssi; + + for(cbIdx = 0; cbIdx < ceil(macCrcInd->crc[crcIdx].numCb/8); cbIdx++) + macCrcInd->crc[crcIdx].cbCrcStatus[cbIdx] = crcInd->crc[crcIdx].cb_crc_status[cbIdx]; + } + + procPhyMessages(macCrcInd->header.msg_id, sizeof(fapi_crc_ind_t), (void *)macCrcInd); + FAPI_CL_FREE(macCrcInd, sizeof(fapi_crc_ind_t)); +} + +/******************************************************************* + * + * @brief Process UCI PUSCH + * + * @details + * + * Function : convertUciPusch + * + * Functionality: + * - Converts UCI PUSCH from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] MAC's UCI PUSCH structure + * UE Sim's UCI PUSCH structure + * Offset of UCI PUSCH structure in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUciPusch(fapi_uci_o_pusch_t *macUciPusch, fapi_uci_o_pusch_t_ue_sim uciPusch, uint16_t *pduSize) +{ + uint8_t byteLen = 0; + uint16_t uciPuschIdx = 0; + + FILL_PARAM(uciPusch.handle, macUciPusch->handle, uciPuschIdx); + FILL_PARAM(uciPusch.pdu_bitmap, macUciPusch->pduBitmap, uciPuschIdx); + FILL_PARAM(uciPusch.ul_cqi, macUciPusch->ul_cqi, uciPuschIdx); + FILL_PARAM(uciPusch.rnti, macUciPusch->rnti, uciPuschIdx); + FILL_PARAM(uciPusch.timing_advance, macUciPusch->timingAdvance, uciPuschIdx); + FILL_PARAM(uciPusch.rssi, macUciPusch->rssi, uciPuschIdx); + + FILL_PARAM(uciPusch.harqInfo.harq_crc, macUciPusch->harqInfo.harqCrc, uciPuschIdx); + FILL_PARAM(uciPusch.harqInfo.harq_bit_len, macUciPusch->harqInfo.harqBitLen, uciPuschIdx); + byteLen = macUciPusch->harqInfo.harqBitLen/8; + if((macUciPusch->harqInfo.harqBitLen % 8) != 0) + byteLen += 1; + memcpy(macUciPusch->harqInfo.harqPayload, uciPusch.harqInfo.harq_payload, byteLen); + uciPuschIdx += byteLen; + + FILL_PARAM(uciPusch.csiPart1info.csi_part1_crc, macUciPusch->csiPart1info.csiPart1Crc, uciPuschIdx); + FILL_PARAM(uciPusch.csiPart1info.csi_part1_bit_len, macUciPusch->csiPart1info.csiPart1BitLen, uciPuschIdx); + byteLen = macUciPusch->csiPart1info.csiPart1BitLen/8; + if((macUciPusch->csiPart1info.csiPart1BitLen % 8) != 0) + byteLen += 1; + memcpy(macUciPusch->csiPart1info.csiPart1Payload, uciPusch.csiPart1info.csi_part1_payload, byteLen); + uciPuschIdx += byteLen; + + FILL_PARAM(uciPusch.csiPart2info.csi_part2_crc, macUciPusch->csiPart2info.csiPart2Crc, uciPuschIdx); + FILL_PARAM(uciPusch.csiPart2info.csi_part2_bit_len, macUciPusch->csiPart2info.csiPart2BitLen, uciPuschIdx); + byteLen = macUciPusch->csiPart2info.csiPart2BitLen/8; + if((macUciPusch->csiPart2info.csiPart2BitLen % 8) != 0) + byteLen += 1; + memcpy(macUciPusch->csiPart2info.csiPart2Payload, uciPusch.csiPart2info.csi_part2_payload, byteLen); + uciPuschIdx += byteLen; + + *pduSize += uciPuschIdx; +} + +/******************************************************************* + * + * @brief Process UCI PUCCH F0 F1 + * + * @details + * + * Function : convertUciPucchF0F1 + * + * Functionality: + * - Converts UCI PUCCH F0 F1 from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] MAC's UCI PUCCH F0 F1 structure + * UE Sim's UCI PUCCH F0 F1 structure + * Offset of UCI PUCCH F0 F1 in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUciPucchF0F1(fapi_uci_o_pucch_f0f1_t *macUciPucchF0F1, fapi_uci_o_pucch_f0f1_t_ue_sim uciPucchF0F1, uint16_t *pduSize) +{ + uint16_t uciPucchIdx = 0; + + FILL_PARAM(uciPucchF0F1.handle, macUciPucchF0F1->handle, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.pdu_bitmap, macUciPucchF0F1->pduBitmap, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.pucch_format, macUciPucchF0F1->pucchFormat, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.ul_cqi, macUciPucchF0F1->ul_cqi, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.rnti, macUciPucchF0F1->rnti, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.timing_advance, macUciPucchF0F1->timingAdvance, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.rssi, macUciPucchF0F1->rssi, uciPucchIdx); + + FILL_PARAM(uciPucchF0F1.srInfo.sr_indication, macUciPucchF0F1->srInfo.srIndication, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.srInfo.sr_confidence_level, macUciPucchF0F1->srInfo.srConfidenceLevel, uciPucchIdx); + + FILL_PARAM(uciPucchF0F1.harqInfo.num_harq, macUciPucchF0F1->harqInfo.numHarq, uciPucchIdx); + FILL_PARAM(uciPucchF0F1.harqInfo.harq_confidence_level, macUciPucchF0F1->harqInfo.harqConfidenceLevel, uciPucchIdx); + memcpy(macUciPucchF0F1->harqInfo.harqValue, uciPucchF0F1.harqInfo.harq_value, sizeof(uint8_t) * macUciPucchF0F1->harqInfo.numHarq); + uciPucchIdx += sizeof(uint8_t) * macUciPucchF0F1->harqInfo.numHarq; + + *pduSize += uciPucchIdx; +} + +/******************************************************************* + * + * @brief Process UCI PUCCH F2 F3 F4 + * + * @details + * + * Function : convertUciPucchF2F3F4 + * + * Functionality: + * - Converts UCI PUCCH F2F3F4 from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] MAC's UCI PUCCH F2F3F4 structure + * UE Sim's UCI PUCCH F2F3F4 structure + * Offset of UCI PUCCH F2F3F4 structure in its parent struct + * + * @return void + * + * ****************************************************************/ +void convertUciPucchF2F3F4(fapi_uci_o_pucch_f2f3f4_t *macUciPucchF2F3F4, fapi_uci_o_pucch_f2f3f4_t_ue_sim uciPucchF2F3F4, uint16_t *pduSize) +{ + uint16_t uciPucchIdx = 0; + + FILL_PARAM(uciPucchF2F3F4.handle, macUciPucchF2F3F4->handle, uciPucchIdx); + FILL_PARAM(uciPucchF2F3F4.pdu_bitmap, macUciPucchF2F3F4->pduBitmap, uciPucchIdx); + FILL_PARAM(uciPucchF2F3F4.pucch_format, macUciPucchF2F3F4->pucchFormat, uciPucchIdx); + FILL_PARAM(uciPucchF2F3F4.ul_cqi, macUciPucchF2F3F4->ul_cqi, uciPucchIdx); + FILL_PARAM(uciPucchF2F3F4.rnti, macUciPucchF2F3F4->rnti, uciPucchIdx); + FILL_PARAM(uciPucchF2F3F4.timing_advance, macUciPucchF2F3F4->timingAdvance, uciPucchIdx); + FILL_PARAM(uciPucchF2F3F4.rssi, macUciPucchF2F3F4->rssi, uciPucchIdx); + + // TODO : Fill UCI Bits + + *pduSize += uciPucchIdx; +} + +/******************************************************************* + * + * @brief Process UCI.Indication + * + * @details + * + * Function : convertUciIndication + * + * Functionality: + * - Converts UCI.indication from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertUciIndication(void *msg) +{ + uint8_t uciIdx = 0; + uint16_t pduSize = 0; + uint32_t offset = 0; + fapi_uci_indication_t *macUciInd = NULLP; + fapi_uci_indication_t_ue_sim *uciInd = (fapi_uci_indication_t_ue_sim *)msg; + fapi_uci_pdu_info_t_ue_sim *pdu = NULLP; + + DU_LOG("\nINFO --> FAPI_CL: Received UCI.indication from UE simulator"); + + FAPI_CL_ALLOC(macUciInd, sizeof(fapi_uci_indication_t)); + if(!macUciInd) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for UCI.indication"); + return; + } + + macUciInd->header.msg_id = FAPI_UCI_INDICATION; + macUciInd->header.length = sizeof(fapi_uci_indication_t) - sizeof(fapi_msg_t); + macUciInd->sfn = uciInd->sfn; + macUciInd->slot = uciInd->slot; + macUciInd->numUcis = uciInd->num_ucis; + offset = sizeof(fapi_uci_indication_t_ue_sim); + + for(uciIdx = 0; uciIdx < macUciInd->numUcis; uciIdx++) + { + pdu = (void *)uciInd + offset; + FILL_PARAM(pdu->pdu_type, macUciInd->uciPdu[uciIdx].pduType, pduSize); + pduSize += sizeof(macUciInd->uciPdu[uciIdx].pduSize); + switch (macUciInd->uciPdu[uciIdx].pduType) + { + case UCI_PUSCH: + convertUciPusch(&macUciInd->uciPdu[uciIdx].uci.uciPusch, pdu->u.uci_pusch, &pduSize); + break; + case UCI_PUCCH_F0_F1: + convertUciPucchF0F1(&macUciInd->uciPdu[uciIdx].uci.uciPucchF0F1, pdu->u.uci_pucch_f0f1, &pduSize); + break; + case UCI_PUCCH_F2_F3_F4: + convertUciPucchF2F3F4(&macUciInd->uciPdu[uciIdx].uci.uciPucchF2F3F4, pdu->u.uci_pucch_f2f3f4, &pduSize); + break; + } + macUciInd->uciPdu[uciIdx].pduSize = pduSize; + offset += pdu->pdu_size; + } + + procPhyMessages(macUciInd->header.msg_id, sizeof(fapi_uci_indication_t), (void *)macUciInd); + FAPI_CL_FREE(macUciInd, sizeof(fapi_uci_indication_t)); +} + +/******************************************************************* + * + * @brief Process SRS.Indication + * + * @details + * + * Function : convertSrsIndication + * + * Functionality: + * - Converts SRS.indication from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertSrsIndication(void *msg) +{ + uint8_t srsIdx = 0, symbIdx = 0, rbIdx = 0; + fapi_srs_indication_t *macSrsInd = NULLP; + fapi_srs_indication_t_ue_sim *srsInd = (fapi_srs_indication_t_ue_sim *)msg; + + DU_LOG("\nINFO --> FAPI_CL: Received SRS.indication from UE simulator"); + + FAPI_CL_ALLOC(macSrsInd, sizeof(fapi_srs_indication_t)); + if(!macSrsInd) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for SRS.indication"); + return; + } + + macSrsInd->header.msg_id = FAPI_SRS_INDICATION; + macSrsInd->header.length = sizeof(fapi_srs_indication_t) - sizeof(fapi_msg_t); + macSrsInd->sfn = srsInd->sfn; + macSrsInd->slot = srsInd->slot; + macSrsInd->numPdus = srsInd->numPdus; + + for(srsIdx = 0; srsIdx < macSrsInd->numPdus; srsIdx++) + { + macSrsInd->srsPdus[srsIdx].handle = srsInd->srsPdus[srsIdx].handle; + macSrsInd->srsPdus[srsIdx].rnti = srsInd->srsPdus[srsIdx].rnti; + macSrsInd->srsPdus[srsIdx].timingAdvance = srsInd->srsPdus[srsIdx].timingAdvance; + macSrsInd->srsPdus[srsIdx].numSymbols = srsInd->srsPdus[srsIdx].numSymbols; + macSrsInd->srsPdus[srsIdx].wideBandSnr = srsInd->srsPdus[srsIdx].wideBandSnr; + macSrsInd->srsPdus[srsIdx].numReportedSymbols = srsInd->srsPdus[srsIdx].numReportedSymbols; + for(symbIdx = 0; symbIdx < macSrsInd->srsPdus[srsIdx].numReportedSymbols; symbIdx++) + { + macSrsInd->srsPdus[srsIdx].symbSnr[symbIdx].numRbs = srsInd->srsPdus[srsIdx].symbSnr[symbIdx].numRbs; + for(rbIdx = 0; rbIdx < macSrsInd->srsPdus[srsIdx].symbSnr[symbIdx].numRbs; rbIdx++) + macSrsInd->srsPdus[srsIdx].symbSnr[symbIdx].rbSNR[rbIdx] = srsInd->srsPdus[srsIdx].symbSnr[symbIdx].rbSNR[rbIdx]; + } + } + + procPhyMessages(macSrsInd->header.msg_id, sizeof(fapi_srs_indication_t), (void *)macSrsInd); + FAPI_CL_FREE(macSrsInd, sizeof(fapi_srs_indication_t)); +} + + +/******************************************************************* + * + * @brief Process RX_DATA.Indication + * + * @details + * + * Function : convertRxDataIndication + * + * Functionality: + * - Converts RX_DATA.indication from UE sim's FAPI version to + * Mac's FAPI version + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void convertRxDataIndication(void *msg) +{ + uint8_t pduIdx = 0; + uint16_t offset = 0; + fapi_rx_data_indication_t *macRxDataInd = NULLP; + fapi_rx_data_indication_t_ue_sim *rxDataInd = (fapi_rx_data_indication_t_ue_sim *)msg; + uint8_t *rxDataPdu = NULLP; + + DU_LOG("\nINFO --> FAPI_CL: Received RX_DATA.indication from UE simulator"); + + FAPI_CL_ALLOC(macRxDataInd, sizeof(fapi_rx_data_indication_t)); + if(!macRxDataInd) + { + DU_LOG("\nERROR --> FAPI_CL: Failed to allocate memory for RX_DATA.indication"); + return; + } + + macRxDataInd->header.msg_id = FAPI_RX_DATA_INDICATION; + macRxDataInd->header.length = sizeof(fapi_rx_data_indication_t) - sizeof(fapi_msg_t); + offset += sizeof(rxDataInd->header); + FILL_PARAM(rxDataInd->sfn, macRxDataInd->sfn, offset); + FILL_PARAM(rxDataInd->slot, macRxDataInd->slot, offset); + FILL_PARAM(rxDataInd->num_pdus, macRxDataInd->numPdus, offset); + + for(pduIdx = 0; pduIdx < macRxDataInd->numPdus; pduIdx++) + { + FILL_PARAM(rxDataInd->pdus[pduIdx].handle, macRxDataInd->pdus[pduIdx].handle, offset); + FILL_PARAM(rxDataInd->pdus[pduIdx].rnti, macRxDataInd->pdus[pduIdx].rnti, offset); + FILL_PARAM(rxDataInd->pdus[pduIdx].harq_id, macRxDataInd->pdus[pduIdx].harqId, offset); + FILL_PARAM(rxDataInd->pdus[pduIdx].ul_cqi, macRxDataInd->pdus[pduIdx].ul_cqi, offset); + FILL_PARAM(rxDataInd->pdus[pduIdx].timing_advance, macRxDataInd->pdus[pduIdx].timingAdvance, offset); + FILL_PARAM(rxDataInd->pdus[pduIdx].rssi, macRxDataInd->pdus[pduIdx].rssi, offset); + FILL_PARAM(rxDataInd->pdus[pduIdx].pdu_length, macRxDataInd->pdus[pduIdx].pdu_length, offset); + + rxDataPdu = (uint8_t *) ((void *)rxDataInd + offset); + FAPI_CL_ALLOC(macRxDataInd->pdus[pduIdx].pduData, macRxDataInd->pdus[pduIdx].pdu_length); + memcpy(macRxDataInd->pdus[pduIdx].pduData, rxDataPdu, macRxDataInd->pdus[pduIdx].pdu_length); + offset += macRxDataInd->pdus[pduIdx].pdu_length; + } + + procPhyMessages(macRxDataInd->header.msg_id, sizeof(fapi_rx_data_indication_t), (void *)macRxDataInd); + FAPI_CL_FREE(macRxDataInd, sizeof(fapi_rx_data_indication_t)); +} + +/******************************************************************* + * + * @brief Call appropriate handler for FAPI message from UE sim + * + * @details + * + * Function : fapiClProcessUeSim2MacFapiMsg + * + * Functionality: + * - Calls appropriate handler based on message type for + * message sent from UE simulator to MAC. + * + * @params[in] Message pointer + * + * @return void + * + * ****************************************************************/ +void fapiClProcessUeSim2MacFapiMsg(Data *msg) +{ + uint8_t numMsg = 0; + fapi_msg_header_t_ue_sim *msgHdr = (fapi_msg_header_t_ue_sim *)msg; + + while(numMsg < msgHdr->numberOfMessagesIncluded) + { + switch(msgHdr->msg_details.message_type_id) + { + case FAPI_CONFIG_RESPONSE: + convertConfigResponse(msg); + break; + case FAPI_START_RESPONSE: + convertStartResponse(msg); + break; + case FAPI_RACH_INDICATION: + convertRachIndication(msg); + break; + case FAPI_CRC_INDICATION: + convertCrcIndication(msg); + break; + case FAPI_RX_DATA_INDICATION: + convertRxDataIndication(msg); + break; + case FAPI_UCI_INDICATION: + convertUciIndication(msg); + break; + case FAPI_SRS_INDICATION: + convertSrsIndication(msg); + break; + case FAPI_STOP_INDICATION: + clCb.slotIndInfo.slotIndicationStarted = false; + break; + default: + DU_LOG("\nERROR --> FAPI_CL: Invalid message type id [%d] in header", msgHdr->msg_details.message_type_id); + } + numMsg++; + } +} + +/********************************************************************** + End of file + **********************************************************************/ diff --git a/src/fapi_cl/fapi_cl_utils.h b/src/fapi_cl/fapi_cl_utils.h new file mode 100644 index 000000000..47f1c25bb --- /dev/null +++ b/src/fapi_cl/fapi_cl_utils.h @@ -0,0 +1,127 @@ +/******************************************************************************* +################################################################################ +# Copyright (c) [2017-2019] [Radisys] # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file except in compliance with the License. # +# You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +################################################################################ +*******************************************************************************/ + +#define CL_MEM_REGION 8 +#define CL_POOL 0 + +#ifdef ODU_MEMORY_DEBUG_LOG +#define FAPI_CL_MEM_LOG(_macro, _file, _line, _func, _size, _datPtr)\ +{\ + printf("\n%s=== %s +%d, %s, %d, %p\n", \ + _macro, _file, _line, _func, _size, _datPtr); \ +} +#else +#define FAPI_CL_MEM_LOG(_macro, _file, _line, _func, _size, _dataPtr) {} +#endif + +/* allocate and zero out a MAC static buffer */ +#define FAPI_CL_ALLOC(_datPtr, _size) \ +{ \ + uint8_t _ret; \ + _ret = SGetSBuf(CL_MEM_REGION, CL_POOL, \ + (Data **)&_datPtr, _size); \ + if(_ret == ROK) \ + { \ + memset(_datPtr, 0, _size); \ + FAPI_CL_MEM_LOG("FAPI_CL_ALLOC", __FILE__, __LINE__, __FUNCTION__, _size, _datPtr);\ + } \ + else \ + { \ + _datPtr = NULLP; \ + } \ +} + +/* free a static buffer */ +#define FAPI_CL_FREE(_datPtr, _size) \ +{ \ + if(_datPtr) \ + { \ + FAPI_CL_MEM_LOG("FAPI_CL_FREE", __FILE__, __LINE__, __FUNCTION__, _size, _datPtr);\ + SPutSBuf(CL_MEM_REGION, CL_POOL, \ + (Data *)_datPtr, _size); \ + _datPtr = NULLP; \ + } \ +} + +/* Allocate shared memory to be used for LWLC + * during inter-layer communication */ +#define FAPI_CL_ALLOC_SHRABL_BUF(_buf, _size) \ +{ \ + if(SGetStaticBuffer(CL_MEM_REGION, CL_POOL, \ + (Data **)&_buf, (Size) _size, 0) == ROK) \ + { \ + FAPI_CL_MEM_LOG("FAPI_CL_ALLOC_SHRABL_BUF", __FILE__, __LINE__, __FUNCTION__, _size, _buf);\ + memset((_buf), 0, _size); \ + } \ + else \ + { \ + (_buf) = NULLP; \ + } \ +} + +/* Free shared memory, received through LWLC */ +#define FAPI_CL_FREE_SHRABL_BUF(_region, _pool,_buf, _size) \ +{ \ + if (_buf != NULLP) \ + { \ + FAPI_CL_MEM_LOG("FAPI_CL_FREE_SHRABL_BUF", __FILE__, __LINE__, __FUNCTION__, _size, _buf);\ + (Void) SPutStaticBuffer(_region, _pool, \ + (Data *) _buf, (Size) _size, 0); \ + _buf = NULLP; \ + } \ +} + +/* Fill Pst structure for sending msg from FAPI CL to Lower MAC */ +#define FILL_PST_FAPI_CL_TO_LWR_MAC(_pst, _srcInst, _dstInst, _event) \ +{ \ + _pst.selector = ODU_SELECTOR_LWLC; \ + _pst.srcEnt = ENTFAPICL; \ + _pst.dstEnt = ENTLWRMAC; \ + _pst.dstInst = _dstInst; \ + _pst.srcInst = _srcInst; \ + _pst.dstProcId = ODU_GET_PROCID(); \ + _pst.srcProcId = ODU_GET_PROCID(); \ + _pst.region = CL_MEM_REGION; \ + _pst.pool = CL_POOL; \ + _pst.event = _event; \ + _pst.route = 0; \ + _pst.prior = 0; \ + _pst.intfVer = 0; \ +} + +/* Fill Pst structure for sending msg from fapi cl to self */ +#define FILL_PST_CL_TO_CL(_pst, _srcInst, _dstInst, _event) \ +{ \ + _pst.selector = ODU_SELECTOR_LWLC; \ + _pst.srcEnt = ENTFAPICL; \ + _pst.dstEnt = ENTFAPICL; \ + _pst.dstInst = _dstInst; \ + _pst.srcInst = _srcInst; \ + _pst.dstProcId = ODU_GET_PROCID(); \ + _pst.srcProcId = ODU_GET_PROCID(); \ + _pst.region = CL_MEM_REGION; \ + _pst.pool = CL_POOL; \ + _pst.event = _event; \ + _pst.route = 0; \ + _pst.prior = 0; \ + _pst.intfVer = 0; \ +} + +/********************************************************************** + End of file + **********************************************************************/ diff --git a/src/fapi_cl/fapi_interface_ue_sim.h b/src/fapi_cl/fapi_interface_ue_sim.h new file mode 100644 index 000000000..809f52d68 --- /dev/null +++ b/src/fapi_cl/fapi_interface_ue_sim.h @@ -0,0 +1,2349 @@ +// This file has been modified by Radisys in order to support 5G FAPI:PHY API Specification +// Document 222.10.01 dated June 2019 +// Changes made by luis.farias@intel.com +// Document 222.10.03 dated May 2021 + +#include + +#ifndef _FAPI_INTERFACE_UE_SIM_H_ +#define _FAPI_INTERFACE_UE_SIM_H_ + +#ifndef PACK_STRUCT +#define PACK_STRUCT __attribute__((packed)) // Packed compiler instruction. +#endif //PACK_STRUCT + +#if defined(__cplusplus) +extern "C" { +#endif + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef int16_t int16_t; +typedef uint16_t uint16_t; +typedef int32_t int32_t; +typedef uint32_t uint32_t; +#ifdef VZ_VERIPHY_INTEG +typedef uint64_t uint64_t; +#endif + +// Update for 5G FAPI +#define FAPI_PARAM_REQUEST 0x00 +#define FAPI_PARAM_RESPONSE 0x01 +#define FAPI_CONFIG_REQUEST 0x02 +#define FAPI_CONFIG_RESPONSE 0x03 +#define FAPI_START_REQUEST 0x04 +#ifdef FAPI_222_10_03 +#define FAPI_START_RESPONSE 0x0108 //Ref: SCF-225 +#endif +#define FAPI_STOP_REQUEST 0x05 +#define FAPI_STOP_INDICATION 0x06 +#define FAPI_ERROR_INDICATION 0x07 +// Reserved 0x08 - 0x7f +#define FAPI_DL_TTI_REQUEST 0x80 +#define FAPI_UL_TTI_REQUEST 0x81 +#define FAPI_SLOT_INDICATION 0x82 +#define FAPI_UL_DCI_REQUEST 0x83 +#define FAPI_TX_DATA_REQUEST 0x84 +#define FAPI_RX_DATA_INDICATION 0x85 +#define FAPI_CRC_INDICATION 0x86 +#define FAPI_UCI_INDICATION 0x87 +#define FAPI_SRS_INDICATION 0x88 +#define FAPI_RACH_INDICATION 0x89 +// Reserved 0x8a -0xff +#ifdef FAPI_222_10_03 +#define FAPI_DL_NODE_SYNC 0x0180 //Ref: SCF-225 +#define FAPI_UL_NODE_SYNC 0x0181 //Ref: SCF-225 +#define FAPI_TIMING_INFO 0x0182 //Ref: SCF-225 +#endif +// Tags per 5G FAPI +// Cell Parameters +#define FAPI_RELEASE_CAPABILITY_TAG 0x0001 +#define FAPI_PHY_STATE_TAG 0x0002 +#define FAPI_SKIP_BLANK_DL_CONFIG_TAG 0x0003 +#define FAPI_SKIP_BLANK_UL_CONFIG_TAG 0x0004 +#define FAPI_NUM_CONFIG_TLVS_TO_REPORT_TYPE_TAG 0x0005 +#define FAPI_CYCLIC_PREFIX_TAG 0x0006 +// PDCCH Parameters +#define FAPI_SUPPORTED_SUBCARRIER_SPACING_DL_TAG 0x0007 +#define FAPI_SUPPORTED_BANDWIDTH_DL_TAG 0x0008 +#define FAPI_SUPPORTED_SUBCARRIER_SPACING_UL_TAG 0x0009 +#define FAPI_SUPPORTED_BANDWIDTH_UL_TAG 0x000A +#define FAPI_CCE_MAPPING_TYPE_TAG 0x000B +#define FAPI_CORESET_OUTSIDE_FIRST_3_OFDM_SYMS_OF_SLOT_TAG 0x000c +#define FAPI_PRECODER_GRANULARITY_CORESET_TAG 0x000d +#define FAPI_PDCCH_MU_MIMO_TAG 0x000e +#define FAPI_PDCCH_PRECODER_CYCLING_TAG 0x000f +#define FAPI_MAX_PDCCHS_PER_SLOT_TAG 0x0010 +// PUCCH Parameters +#define FAPI_PUCCH_FORMATS_TAG 0x0011 +#define FAPI_MAX_PUCCHS_PER_SLOT_TAG 0x0012 +// PDSCH Parameters +#define FAPI_PDSCH_MAPPING_TYPE_TAG 0x0013 +#define FAPI_PDSCH_ALLOCATION_TYPES_TAG 0x0014 +#define FAPI_PDSCH_VRB_TO_PRB_MAPPING_TAG 0x0015 +#define FAPI_PDSCH_CBG_TAG 0x0016 +#define FAPI_PDSCH_DMRS_CONFIG_TYPES_TAG 0x0017 +#define FAPI_PDSCH_DMRS_MAX_LENGTH_TAG 0x0018 +#define FAPI_PDSCH_DMRS_ADDITIONAL_POS_TAG 0x0019 +#define FAPI_MAX_PDSCHS_TBS_PER_SLOT_TAG 0x001a +#define FAPI_MAX_NUMBER_MIMO_LAYERS_PDSCH_TAG 0x001b +#define FAPI_SUPPORTED_MAX_MODULATION_ORDER_DL_TAG 0x001c +#define FAPI_MAX_MU_MIMO_USERS_DL_TAG 0x001d +#define FAPI_PDSCH_DATA_IN_DMRS_SYMBOLS_TAG 0x001e +#define FAPI_PREMPTIONSUPPORT_TAG 0x001f +#define FAPI_PDSCH_NON_SLOT_SUPPORT_TAG 0x0020 +// PUSCH Parameters +#define FAPI_UCI_MUX_ULSCH_IN_PUSCH_TAG 0x0021 +#define FAPI_UCI_ONLY_PUSCH_TAG 0x0022 +#define FAPI_PUSCH_FREQUENCY_HOPPING_TAG 0x0023 +#define FAPI_PUSCH_DMRS_CONFIG_TYPES_TAG 0x0024 +#define FAPI_PUSCH_DMRS_MAX_LEN_TAG 0x0025 +#define FAPI_PUSCH_DMRS_ADDITIONAL_POS_TAG 0x0026 +#define FAPI_PUSCH_CBG_TAG 0x0027 +#define FAPI_PUSCH_MAPPING_TYPE_TAG 0x0028 +#define FAPI_PUSCH_ALLOCATION_TYPES_TAG 0x0029 +#define FAPI_PUSCH_VRB_TO_PRB_MAPPING_TAG 0x002a +#define FAPI_PUSCH_MAX_PTRS_PORTS_TAG 0x002b +#define FAPI_MAX_PDUSCHS_TBS_PER_SLOT_TAG 0x002c +#define FAPI_MAX_NUMBER_MIMO_LAYERS_NON_CB_PUSCH_TAG 0x002d +#define FAPI_SUPPORTED_MODULATION_ORDER_UL_TAG 0x002e +#define FAPI_MAX_MU_MIMO_USERS_UL_TAG 0x002f +#define FAPI_DFTS_OFDM_SUPPORT_TAG 0x0030 +#define FAPI_PUSCH_AGGREGATION_FACTOR_TAG 0x0031 +// PRACH Parameters +#define FAPI_PRACH_LONG_FORMATS_TAG 0x0032 +#define FAPI_PRACH_SHORT_FORMATS_TAG 0x0033 +#define FAPI_PRACH_RESTRICTED_SETS_TAG 0x0034 +#define FAPI_MAX_PRACH_FD_OCCASIONS_IN_A_SLOT_TAG 0x0035 +// Measurement Parameters +#define FAPI_RSSI_MEASUREMENT_SUPPORT_TAG 0x0036 + +// CONFIG TLV TAGS per 5G FAPI +#ifdef FAPI_222_10_03 +// PHY Configuration +#define FAPI_PHY_PROFILE_ID_TAG 0x102a +#define FAPI_INDICATION_INSTANCES_PER_SLOT_TAG 0x102b +#define FAPI_REQUEST_INSTANCES_PER_SLOT_TAG 0x102c +// Carrier Configuration +#define FAPI_CARRIER_CONFIGURATION_TAG 0x102d +#else +#define FAPI_DL_BANDWIDTH_TAG 0x1001 +#define FAPI_DL_FREQUENCY_TAG 0x1002 +#define FAPI_DL_K0_TAG 0x1003 +#define FAPI_DL_GRIDSIZE_TAG 0x1004 +#define FAPI_NUM_TX_ANT_TAG 0x1005 +#define FAPI_UPLINK_BANDWIDTH_TAG 0x1006 +#define FAPI_UPLINK_FREQUENCY_TAG 0x1007 +#define FAPI_UL_K0_TAG 0x1008 +#define FAPI_UL_GRID_SIZE_TAG 0x1009 +#define FAPI_NUM_RX_ANT_TAG 0x100a +#define FAPI_FREQUENCY_SHIFT_7P5_KHZ_TAG 0x100b +#endif +// Cell Configuration +#define FAPI_PHY_CELL_ID_TAG 0x100c +#define FAPI_FRAME_DUPLEX_TYPE_TAG 0x100d +#ifdef FAPI_222_10_03 +#define FAPI_PDSCH_TRANS_TYPE_VALIDITY_TAG 0x102e +#define FAPI_PUSCH_TRANS_TYPE_VALIDITY_TAG 0x102f +#endif +// SSB Configuration +#define FAPI_SS_PBCH_POWER_TAG 0x100e +#ifdef FAPI_222_10_03 +#define FAPI_SS_PBCH_BLOCK_POWER_SCALING_TAG 0x1030 +#define FAPI_BCH_PAYLOAD_FLAG_TAG 0x100f +#else +#define FAPI_BCH_PAYLOAD_TAG 0x100f +#define FAPI_SCS_COMMON_TAG 0x1010 +#endif +// PRACH Configuration +#ifdef FAPI_222_10_03 +#define FAPI_PRACH_CONFIGURATION_TAG 0x1031 +#else +#define FAPI_PRACH_SEQUENCE_LENGTH_TAG 0x1011 +#define FAPI_PRACH_SUBC_SPACING_TAG 0x1012 +#define FAPI_RESTRICTED_SET_CONFIG_TAG 0x1013 +#define FAPI_NUM_PRACH_FD_OCCASIONS_TAG 0x1014 +#define FAPI_PRACH_ROOT_SEQUENCE_INDEX_TAG 0x1015 +#define FAPI_NUM_ROOT_SEQUENCES_TAG 0x1016 +#define FAPI_K1_TAG 0x1017 +#define FAPI_PRACH_ZERO_CORR_CONF_TAG 0x1018 +#define FAPI_NUM_UNUSED_ROOT_SEQUENCES_TAG 0x1019 +#define FAPI_UNUSED_ROOT_SEQUENCES_TAG 0x101a +#define FAPI_SSB_PER_RACH_TAG 0x101b +#define FAPI_PRACH_MULTIPLE_CARRIERS_IN_A_BAND_TAG 0x101c +#endif +#ifdef FAPI_222_10_03 +//Multi PRACH Configurations +#define FAPI_MULTI_PRACH_CONFIGURATION_TAG 0x1032 +// SSB Table +#define FAPI_SSB_RESOURCE_CONFIGURATION_TAG 0x1033 +#else +#define FAPI_SSB_OFFSET_POINT_A_TAG 0x101d +#define FAPI_BETA_PSS_TAG 0x101e +#define FAPI_SSB_PERIOD_TAG 0x101f +#define FAPI_SSB_SUBCARRIER_OFFSET_TAG 0x1020 +#define FAPI_MIB_TAG 0x1021 +#define FAPI_SSB_MASK_TAG 0x1022 +#define FAPI_BEAM_ID_TAG 0x1023 +#define FAPI_SS_PBCH_MULTIPLE_CARRIERS_IN_A_BAND_TAG 0x1024 +#define FAPI_MULTIPLE_CELLS_SS_PBCH_IN_A_CARRIER_TAG 0x1025 +#endif + +#ifdef FAPI_222_10_03 +//Multi SSB Resource Configurations +#define FAPI_MULTI_SSB_RESOURCE_CONFIGURATION_TAG 0x1034 + +// TDD Table +#define FAPI_TDD_PERIOD_TAG 0x1035 +#else +#define FAPI_TDD_PERIOD_TAG 0x1026 +#define FAPI_SLOT_CONFIG_TAG 0x1027 +#endif +// Measurement Configuration +#define FAPI_RSSI_MESUREMENT_TAG 0x1028 +#define FAPI_PRACH_CONFIG_INDEX_TAG 0x1029 +#ifdef FAPI_222_10_03 +// UCI Configuration +#define FAPI_UCI_CONFIGURATION_TAG 0x1036 +// PRB-Symbol Rate Match Patterns +#define FAPI_PRB_SYMBOL_RATE_MATCH_PATTERN_TAG 0x0137 +// LTE-CRS Rate Match Pattern +#define FAPI_LTE_CRS_RATE_MATCH_PATTERN_TAG 0x0138 +// PUCCH semi-static configuration +#define FAPI_PUCCH_SEMI_STATIC_CONFIG_TAG 0x1039 +// PDSCH Semi-Static Configuration +#define FAPI_PDSCH_CBG_SCHEME 0x103a +// Delay Management Configuration +#define FAPI_TIMING_WINDOW_TAG 0x011e +#define FAPI_TIMING_INFO_MODE_TAG 0x011f +#define FAPI_TIMING_INFO_PERIOD_TAG 0x0120 +// reserve 0x0f00 +//Rel-16 mTRP Configurations +#define FAPI_NUM_TX_PORTS_TRP1_TAG 0x103b +#define FAPI_NUM_RX_PORTS_TRP1_TAG 0x103c +#endif +//Vendor Specific Tags +#define FAPI_NUM_DIG_BEAMS 0xA000 +#define FAPI_NUM_TX_RUS 0xA001 +#define FAPI_BEAM_IDX 0xA002 +#define FAPI_DIG_BEAM_WEIGHT_RE 0xA003 +#define FAPI_DIG_BEAM_WEIGHT_IM 0xA004 +#define FAPI_PM_IDX 0xA005 +#define FAPI_NUM_LAYERS 0xA006 +#define FAPI_NUM_ANT_PORTS 0xA007 +#define FAPI_PRECODER_WEIGHT_RE 0xA008 +#define FAPI_PRECODER_WEIGHT_IM 0xA009 +// Error Codes updated per 5G FAPI Table 3-31 +#define FAPI_MSG_OK 0x0 +#define FAPI_MSG_INVALID_STATE 0x1 +#define FAPI_MSG_INVALID_CONFIG 0x2 +#define FAPI_MSG_SFN_OUT_OF_SYNC 0x3 +#define FAPI_MSG_SLOT_ERR 0x4 +#define FAPI_MSG_BCH_MISSING 0x5 +#define FAPI_MSG_INVALID_SFN 0x6 +#define FAPI_MSG_UL_DCI_ERR 0x7 +#define FAPI_MSG_TX_ERR 0x8 +#ifdef FAPI_222_10_03 +#define MSG_INVALID_PHY_ID 0x9 +#define MSG_UNINSTANTIATED_PHY 0xA +#define MSG_INVALID_DFE_Profile 0xB +#define PHY_Profile_Selection_incompatible 0xC +#endif +#define FAPI_MAX_NUM_CW 1 +#define FAPI_MAX_FREQ_DOMAIN_RES 6 + +#ifdef FAPI_222_10_03 +#define FAPI_PROTOCOLVERSION_TAG 0X0037 +#define FAPI_POWER_PROFILES_SUPPORTED_TAG 0X0038 +#define FAPI_MAXNUMPDUS_INDL_TTI_TAG 0X0039 +#define FAPI_MAXNUMPDUS_INUL_TTI_TAG 0X003A +#define FAPI_MAXNUMPDUS_INUL_DCI_TAG 0X003B +#define FAPI_SSPBCH_MULTIPLE_CARRIERS_IN_A_BAND_TAG 0x003C +#define FAPI_MULTIPLE_CELLS_SSPBCH_IN_A_CARRIER_TAG 0x003D +#define FAPI_PUCCHGROUP_AND_SEQUENCE_HOPPING_TAG 0x003E +#define FAPI_MAXNUM_UlBWPIDS_TAG 0x003F +#define FAPI_PUCCH_AGGREGATION_TAG 0x0040 +#define FAPI_SSB_RATE_MATCH_TAG 0x0041 +#define FAPI_SUPPORTED_RATE_MATCH_PATTERN_TYPE_TAG 0x0042 +#define FAPI_PDCCH_RATE_MATCH_TAG 0x0043 +#define FAPI_NUM_OF_RATE_MATCH_PATTERNLTECRCPERSLOT_TAG 0x0044 +#define FAPI_NUMOFRATE_MATCH_PATTERN_LTECRC_INPHY_TAG 0x0045 +#define FAPI_CSI_RS_RATE_MATCH_TAG 0x0046 +#define FAPI_PDSCH_TRANS_TYPE_SUPPORT_TAG 0x0047 +#define FAPI_PDSCH_MAC_PDU_BIT_ALIGNMENT_TAG 0x0048 +#define FAPI_MAX_NUMBER_MIMO_LAYERS_CB_PUSCH_TAG 0x0049 +#define FAPI_PUSCH_LBRM_SUPPORT_TAG 0x004A +#define FAPI_PUSCH_TRANS_TYPE_SUPPORT_TAG 0x004B +#define FAPI_PUSCH_MAC_PDU_BIT_ALIGNMENT_TAG 0x004C +#define FAPI_MAXNUM_PRACH_CONFIGURATIONS_TAG 0x004D +#define FAPI_PRACH_MULTIPLE_CARRIERS_IN_A_Band_TAG 0x004E +#define FAPI_MAX_NUM_UCIMAPS_TAG 0x004F +#define FAPI_CAPABILITY_VALIDITY_TAG 0x0050 +#define FAPI_PHY_PARAMS_TAG 0x0051 +#define FAPI_TIME_MANAGEMENT_TAG 0x0052 +#define FAPI_PHY_PROTOCOL_VERSION_TAG 0x0053 +#define FAPI_DFE_PROFILE_TAG 0x0054 +#define FAPI_MORE_THAN_ONE_INDICATION_PER_SLOT_TAG 0x0055 +#define FAPI_MORE_THAN_ONE_REQUEST_PER_SLOT_TAG 0x0056 +#define FAPI_MTRP_SUPPORT_TAG 0x0057 +#define FAPI_DL_TTI_TIMING_OFFSET_TAG 0X0106 +#define FAPI_UL_TTI_TIMING_OFFSET_TAG 0X0107 +#define FAPI_UL_DCI_TIMING_OFFSET_TAG 0X0108 +#define FAPI_TX_DATA_TIMING_OFFSET_TAG 0X0109 +#endif +// TODO : Work out what the correct maximums should be// Needs Review for 5G +#if 0 +// Number of UL/DL configurations, I, as defined by 36.212 section 5.3.3.1.4 +// todo : work out what the max is +#define FAPI_MAX_UL_DL_CONFIGURATIONS 4 +#define FAPI_MAX_NUM_PHYSICAL_ANTENNAS 4 +#define FAPI_MAX_NUM_SCHEDULED_UES 8 +#define FAPI_MAX_NUM_SUBBANDS 8 +#define FAPI_MAX_ANTENNA_PORT_COUNT 2 +#endif + +// 5G FAPI Definitions +#define NUMEROLOGIES 5 +#define MAX_NUM_UNUSED_ROOT_SEQUENCES 63 // 38.331 page 383 +#define MAX_NUM_PRACH_FD_OCCASIONS 64 // 38.331 page 383 +#define MAX_NUM_OF_SYMBOLS_PER_SLOT 14 +#define MAX_TDD_PERIODICITY 160// 38.212 11.1 for u = 4 and P=10 ms +#define MAX_NUMBER_TX_RUS 4 // m = p*q with p number of panels and q number of TxRU/RxRU per panel, depends on +// the RF configuration, currently n = m = 4, q = 1, p = 4 and k = 21 (number of beams per pannel). n number of antenna ports +#define MAX_NUMBER_OF_BEAMS 64 // Intel API Page 27 +#define MAX_NUM_ANT_PORTS 8 // Based on current RF +#define MAX_NUM_LAYERS 8 // 38.211 Table 7.3.1.3-1 +#ifdef VZ_VERIPHY_INTEG +#define MAX_NUM_TLVS_CELL_CONFIG 46 // 5G FAPI Table 3-9 (A) +#else +#define MAX_NUM_TLVS_CELL_CONFIG 2 // 5G FAPI Table 3-9 (A) +#endif +#define MAX_NUM_TLVS_CARRIER_CONFIG 27 // 5G FAPI Table 3-10 (B) +#define MAX_NUM_TLVS_PDCCH_CONFIG 6 // 5G FAPI Table 3-11 (C) +#define MAX_NUM_TLVS_PUCCH_CONFIG 2 // 5G FAPI Table 3-12 (D) +#define MAX_NUM_TLVS_PDSCH_CONFIG 14 // 5G FAPI Table 3-13 (E) +#define MAX_NUM_TLVS_PUSCH_CONFIG 17 // 5G FAPI Table 3-14 (F) +#define MAX_NUM_TLVS_PRACH_CONFIG 4 // 5G FAPI Table 3-15 (G) +#define MAX_NUM_TLVS_MEAS_CONFIG 1 // 5G FAPI Table 3-16 (H) +#ifdef VZ_VERIPHY_INTEG +#define MAX_NUM_TLVS_CONFIG 117 // A+B+C+D+E+F+G+H + Padding +#else +#define MAX_NUM_TLVS_CONFIG 74 // A+B+C+D+E+F+G+H + Padding +#endif +#define MAX_NUMBER_UNSUPPORTED_TLVS 74 +#define MAX_NUMBER_OF_INVALID_IDLE_ONLY_TLVS 74 +#define MAX_NUMBER_OF_INVALID_RUNNING_ONLY_TLVS 74 +#define MAX_NUMBER_OF_MISSING_TLVS 74 +#define MAX_NUM_DIGBFINTERFACES 4 // Based on RF, 5G FAPI says {0, 255} +#define MAX_NUM_PRGS_PER_TTI 4 // Based on 38.214 5.1.2.3 +#define DCI_PAYLOAD_BYTE_LEN 32 // Based on Intel API MAX_DCI_BIT_BYTE_LEN +#define MAX_NUMBER_DL_DCI 32 // Based on Intel API MAX_NUM_PDCCH +#define MAX_NUMBER_OF_CODEWORDS_PER_PDU 2 // Based on MAX_DL_CODEWORD +#define MAX_NUMBER_DL_PDUS_PER_TTI 129 // Based on (MAX_NUM_PDSCH*MAX_DL_CODEWORD + MAX_NUM_PDCCH + MAX_NUM_SRS + 1 PBCH/SLOT) +#define MAX_NUMBER_OF_UES_PER_TTI 16 // Per common_ran_parameters.h +#define MAX_NUM_CB_PER_TTI_IN_BYTES 192 // Based on Max Tb size of 1376264 bits + 24 crc over (8848-24) and O/H +#define MAX_NUM_PTRS_PORTS 12 // Per 3GPP 38.212 Table 7.3.1.1.2-21 +#define MAX_NUMBER_OF_GROUPS_PER_TTI 8 // FlexRAN API Table 33 +#define MAX_NUMBER_UL_PDUS_PER_TTI 328 // (MAX_NUM_PUSCH+MAX_NUM_PUCCH+MAX_NUM_SRS+MAX_NUM_PRACH_DET) +#define MAX_NUMBER_DCI_PDUS_PER_TTI 32 // Based on MAX_NUM_PDCCH +#define MAX_NUMBER_OF_TLVS_PER_PDU 32 // Based on FAPI/nFAPI implementation +#define MAX_NUMBER_TX_PDUS_PER_TTI 129 // Same as MAX_NUMBER_DL_PDUS_PER_TTI +#define MAX_PDU_LENGTH 172096 // Based on 38.214 5.1.3.4, the TBS is 1376264 bits and divided by 8 and aligned to 64 bytes +#define MAX_NUMBER_OF_PDUS_PER_TTI 129 // Same as MAX_NUMBER_DL_PDUS_PER_TTI +#define MAX_NUMBER_OF_ULSCH_PDUS_PER_TTI 64 // NUM_PUSCH_CHAN*MAX_NUMBER_OF_CODEWORDS_PER_PDU +#define MAX_NUMBER_OF_CRCS_PER_SLOT 32 // Based on MAX_NUM_UL_CHAN +#define MAX_HARQ_INFO_LEN_BYTES 214 // Based on 5G FAPI Table 3-70 +#define MAX_CSI_PART1_DATA_BYTES 214 // Based on 5G FAPI Table 3-71 +#define MAX_CSI_PART2_DATA_BYTES 214 // Based on 5G FAPI Table 3-72 +#define MAX_NUMBER_OF_HARQS_PER_IND 2 // Based on 5G FAPI Table 3-68 +#define MAX_SR_PAYLOAD_SIZE 1 // Based on 5G FAPI Table 3-69 +#define MAX_HARQ_PAYLOAD_SIZE 214 // Based on 5G FAPI Table 3-70 +#define MAX_NUMBER_UCI_PDUS_PER_SLOT 200 // Based on MAX_NUM_PUCCH +#define MAX_NUMBER_RBS 273 // Based on MAX_NUM_OF_PRB_IN_FULL_BAND +#define MAX_NUMBER_OF_REP_SYMBOLS 4 // Based on 5g FAPI Table 3-73 +#define MAX_NUMBER_SRS_PDUS_PER_SLOT 32 // Based on MAX_NUM_SRS +#define MAX_NUM_PREAMBLES_PER_SLOT 64 // Based on MAX_NUM_PRACH_DET +#define MAX_NUMBER_RACH_PDUS_PER_SLOT 64 // Based on MAX_NUM_PRACH_DET +#define TA_AVG_TIME 32 +#define TA_AVG_TIMElog2 5 +#ifdef FAPI_222_10_03 +#define MAX_NDLTYPES_DL_TTI_REQ 5 +#define MAX_NDLTYPES_UL_DCI_REQ 2 +#define MAX_SIGNAL_INDEX 7 +#define MAX_NUM_UL_TYPES 5 +#endif + +typedef enum nr_ssb_periodicity +{ + FAPI_NR_SSB_PERIODICITY_5MS, + FAPI_NR_SSB_PERIODICITY_10MS, + FAPI_NR_SSB_PERIODICITY_20MS, + FAPI_NR_SSB_PERIODICITY_40MS, + FAPI_NR_SSB_PERIODICITY_80MS, + FAPI_NR_SSB_PERIODICITY_160MS + +} nr_ssb_periodicity_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_msg +{ + uint16_t message_type_id; + uint32_t length; // Length of the message body in bytes +} fapi_msg_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_msg_header +{ + uint8_t numberOfMessagesIncluded; + uint8_t handle; // Can be used for Phy Id or Carrier Id + fapi_msg_t_ue_sim msg_details; +} fapi_msg_header_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_tl +{ + uint16_t tag; + uint16_t length; +} fapi_tl_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uint8_tlv +{ + fapi_tl_t_ue_sim tl; + uint8_t value; +#ifdef VZ_VERIPHY_INTEG + uint8_t rsv[3]; +#endif +} fapi_uint8_tlv_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uint16_tlv +{ + fapi_tl_t_ue_sim tl; + uint16_t value; +#ifdef VZ_VERIPHY_INTEG + uint8_t rsv[2]; +#endif +} fapi_uint16_tlv_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_int16_tlv +{ + fapi_tl_t_ue_sim tl; + int16_t value; +#ifdef VZ_VERIPHY_INTEG + uint8_t rsv[2]; +#endif +} fapi_int16_tlv_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uint32_tlv +{ + fapi_tl_t_ue_sim tl; + uint32_t value; +} fapi_uint32_tlv_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_tx_dat_tlv +{ + uint16_t tag; + //Currently DU is not supporting more than 1 TLVs. So length type changed to uint32_t as per DU team. To be modified once it is resolved. + uint32_t length; +#ifdef VZ_VERIPHY_INTEG + uint64_t valueOrOffset; // TLV with unsigned 32 bit value +#else + uint32_t value[]; +#endif + +} fapi_tx_dat_tlv_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_config_tlv +{ + uint16_t tag; // In 5G FAPI for Cell Params + uint8_t length; + uint8_t value; +} fapi_config_tlv_t_ue_sim; + +#ifdef VZ_VERIPHY_INTEG +// Updated per 5G FAPI +typedef struct { + fapi_tl_t_ue_sim tl; + uint16_t value[NUMEROLOGIES]; + uint16_t rsv; // To be 32-bit aligned, if FAPI_NUMEROLOGIES changes to some other value than 5 please ensure 32 bit alignment +} fapi_config_num_tlv_t; +#endif + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_param_req +{ + fapi_msg_header_t_ue_sim header; // For PARAM.req message length in fapi_msg_t_ue_sim is zero +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim protocolVersion; +#endif +} fapi_param_req_t_ue_sim; + +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_signal_index +{ + uint8_t referenceRS; + int16_t powerOffsetMin; + int16_t powerOffsetMax; +} fapi_signal_index_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_cell_params +{ + fapi_uint16_tlv_t_ue_sim releaseCapability; + fapi_uint16_tlv_t_ue_sim phyState; + fapi_uint8_tlv_t_ue_sim skipBlankDlConfig; + fapi_uint8_tlv_t_ue_sim skipBlankUlConfig; + fapi_uint16_tlv_t_ue_sim numTlvsToReport; + //fapi_param_tlv_t tlvStatus[MAX_NUMBER_OF_CONFIG_PARMS]; // Need to define this value based on 5G FAPI +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim powerProfilesSupported; + fapi_signal_index_t signalIndex[MAX_SIGNAL_INDEX]; + fapi_uint16_tlv_t_ue_sim maxNumPDUsInDL_TTI; + fapi_uint16_tlv_t_ue_sim maxNumPDUsInUL_TTI; + fapi_uint16_tlv_t_ue_sim maxNumPDUsInUL_DCI; +#endif +} fapi_cell_parms_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_carrier_parms +{ + fapi_uint8_tlv_t_ue_sim cyclicPrefix; + fapi_uint8_tlv_t_ue_sim supportedSubcarrierSpacingDl; + fapi_uint16_tlv_t_ue_sim supportedBandwidthDl; + fapi_uint8_tlv_t_ue_sim supportedSubcarrierSpecingsUl; + fapi_uint16_tlv_t_ue_sim supportedBandwidthUl; +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim ssPbchMultipleCarriersInABand; + fapi_uint8_tlv_t_ue_sim multipleCellsSsPbchInACarrier; +#endif +} fapi_carrier_parms_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pdcch_parms +{ + fapi_uint8_tlv_t_ue_sim cceMappingType; + fapi_uint8_tlv_t_ue_sim coresetOutsideFirst3OfdmSymsOfSlot; + fapi_uint8_tlv_t_ue_sim precoderGranularityCoreset; + fapi_uint8_tlv_t_ue_sim pdcchMuMimo; + fapi_uint8_tlv_t_ue_sim pdcchPrecoderCycling; + fapi_uint8_tlv_t_ue_sim maxPdcchsPerSlot; +} fapi_pdcch_parms_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pucch_parms +{ + fapi_uint8_tlv_t_ue_sim pucchFormats; + fapi_uint8_tlv_t_ue_sim maxPucchsPerSlot; +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim pucchGroupAndSequenceHopping; + fapi_uint8_tlv_t_ue_sim maxNumUlBwpIds; + fapi_uint8_tlv_t_ue_sim pucchAggregation; +#endif +} fapi_pucch_parms_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pdsch_parms +{ + fapi_uint8_tlv_t_ue_sim pdschMappingType; + fapi_uint8_tlv_t_ue_sim pdschAllocationTypes; + fapi_uint8_tlv_t_ue_sim pdschVrbToPrbMapping; + fapi_uint8_tlv_t_ue_sim pdschCbg; + fapi_uint8_tlv_t_ue_sim pdschDmrsConfigTypes; + fapi_uint8_tlv_t_ue_sim pdschDmrsMaxLength; + fapi_uint8_tlv_t_ue_sim pdschDmrsAdditionalPos; + fapi_uint8_tlv_t_ue_sim maxPdschsTBsPerSlot; + fapi_uint8_tlv_t_ue_sim maxNumberMimoLayersPdsch; + fapi_uint8_tlv_t_ue_sim supportedMaxModulationOrderDl; + fapi_uint8_tlv_t_ue_sim maxMuMimoUsersDl; + fapi_uint8_tlv_t_ue_sim pdschDataInDmrsSymbols; + fapi_uint8_tlv_t_ue_sim premptionSupport; + fapi_uint8_tlv_t_ue_sim pdschNonSlotSupport; +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim ssbRateMatch; + fapi_uint8_tlv_t_ue_sim supportedRateMatchPatternType; + fapi_uint8_tlv_t_ue_sim pdcchRateMatch; + fapi_uint8_tlv_t_ue_sim numOfRateMatchPatternLTECrsPerSlot; + fapi_uint8_tlv_t_ue_sim numOfRateMatchPatternLTECrsInPhy; + fapi_uint8_tlv_t_ue_sim csiRsRateMatch; + fapi_uint8_tlv_t_ue_sim pdschTransTypeSupport; + fapi_uint8_tlv_t_ue_sim pdschMacPduBitAlignment; +#endif +} fapi_pdsch_parms_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pusch_parms +{ + fapi_uint8_tlv_t_ue_sim uciMuxUlschInPusch; + fapi_uint8_tlv_t_ue_sim uciOnlyPusch; + fapi_uint8_tlv_t_ue_sim puschFrequencyHopping; + fapi_uint8_tlv_t_ue_sim puschDmrsConfigTypes; + fapi_uint8_tlv_t_ue_sim puschDmrsMaxLen; + fapi_uint8_tlv_t_ue_sim puschDmrsAditionalPos; + fapi_uint8_tlv_t_ue_sim puschCbg; + fapi_uint8_tlv_t_ue_sim puschMappingType; + fapi_uint8_tlv_t_ue_sim puschAllocationTypes; + fapi_uint8_tlv_t_ue_sim puschVrbToPrbMapping; + fapi_uint8_tlv_t_ue_sim puschMaxPtrsPorts; + fapi_uint8_tlv_t_ue_sim maxPduschsTBsPerSlot; + fapi_uint8_tlv_t_ue_sim maxNumberMimoLayersnonCbPusch; +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim maxNumberMimoLayersCbPusch; +#endif + fapi_uint8_tlv_t_ue_sim supportedModulationOrderUl; + fapi_uint8_tlv_t_ue_sim maxMuMimoUsersUl; + fapi_uint8_tlv_t_ue_sim dftsOfdmSupport; + fapi_uint8_tlv_t_ue_sim puschAggregationFactor; +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim puschLbrmSupport; + fapi_uint8_tlv_t_ue_sim puschTransTypeSupport; + fapi_uint8_tlv_t_ue_sim puschMacPduBitAlignment; +#endif +}fapi_pusch_parms_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_prach_parms +{ + fapi_uint8_tlv_t_ue_sim prachLongFormats; + fapi_uint8_tlv_t_ue_sim prachShortFormats; + fapi_uint8_tlv_t_ue_sim prachRestrictedSets; + fapi_uint8_tlv_t_ue_sim maxPrachFdOccasionsInASlot; +#ifdef FAPI_222_10_03 + fapi_uint16_tlv_t_ue_sim maxNumPrachConfigurations; + fapi_uint8_tlv_t_ue_sim prachMultipleCarriersInABand; +#endif +}fapi_prach_parms_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_meas_parms +{ + fapi_uint8_tlv_t_ue_sim rssiMeasurementSupport; +} fapi_meas_parms_t_ue_sim; +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_uci_parms +{ + fapi_uint16_tlv_t_ue_sim maxNumUciMaps; +} fapi_uci_parms_t; +typedef struct PACK_STRUCT fapi_capability +{ + uint16_t capabilityTag; + uint8_t validityScope; +} fapi_capability_t; +typedef struct PACK_STRUCT fapi_capability_validity +{ + fapi_tl_t_ue_sim fapi_capability_validity; + uint16_t numCapabilities; + fapi_capability_t capability[]; +} fapi_capability_validity_t; +typedef struct PACK_STRUCT fapi_phy_port +{ + uint8_t numDlPortRanges; /* Number of DL port ranges for this PHYs */ + uint16_t dlPortRangeStart[0]; /* Start of each range of DL ports, depends on Number of DL port ranges for this PHYs*/ + uint16_t dlPortRangeLen[0]; + uint8_t numUlPortRanges; + uint16_t ulPortRangeStart[0]; + uint16_t ulPortRangeLen[0]; +}fapi_phy_port_t; +typedef struct PACK_STRUCT fapi_phy_profile +{ + uint8_t maxNumPhys; + fapi_phy_port_t phy_port[0]; +}fapi_phy_profile_t; +typedef struct PACK_STRUCT fapi_phy_parms +{ + fapi_tl_t_ue_sim phySupport; + uint16_t numPhyProfiles; + uint16_t numDlBbPorts; + uint16_t numUlBbPorts; + fapi_phy_profile_t phyProfiles[0]; + fapi_uint8_tlv_t_ue_sim timeManagement; + fapi_tl_t_ue_sim protocolVersion; + uint8_t phyFapiProtocolVersion; + uint8_t phyFapiNegotiatedProtocolVersion; + fapi_uint8_tlv_t_ue_sim moreThanOneIndicationPerSlot[6]; + fapi_uint8_tlv_t_ue_sim moreThanOneRequestPerSlot[4]; +}fapi_phy_support_t; +typedef struct PACK_STRUCT fapi_dfe_profile +{ + fapi_tl_t_ue_sim dfe_profile; + uint16_t numPhyProfiles; + uint16_t numDfeProfiles; + uint8_t profileValidityMap; +}fapi_dfe_profile_t; +typedef struct PACK_STRUCT fapi_delay_management_parms +{ + fapi_uint32_tlv_t_ue_sim dl_tti_timing_offset; + fapi_uint32_tlv_t_ue_sim ul_tti_timing_offset; + fapi_uint32_tlv_t_ue_sim ul_dci_timing_offset; + fapi_uint32_tlv_t_ue_sim tx_data_timing_offset; + fapi_uint16_tlv_t_ue_sim timing_window; + fapi_uint8_tlv_t_ue_sim timing_info_period; +}fapi_delay_management_parms_t; +typedef struct PACK_STRUCT fapi_rel16_mTRP_parameters +{ + fapi_uint32_tlv_t_ue_sim mTRP_Support; +}fapi_rel16_mTRP_parameters_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_params +{ + fapi_cell_parms_t_ue_sim cellParms; + fapi_carrier_parms_t_ue_sim carrParms; + fapi_pdcch_parms_t_ue_sim pdcchParms; + fapi_pucch_parms_t_ue_sim pucchParms; + fapi_pdsch_parms_t_ue_sim pdschParms; + fapi_pusch_parms_t_ue_sim puschParms; + fapi_prach_parms_t_ue_sim prachParms; + fapi_meas_parms_t_ue_sim measParms; +#ifdef FAPI_222_10_03 + fapi_uci_parms_t uciParms; + fapi_capability_validity_t capabilityValidity; + fapi_phy_support_t phySupport; + fapi_dfe_profile_t dfeProfile; + fapi_delay_management_parms_t delayManagementParms; + fapi_rel16_mTRP_parameters_t rel16mTRPParameters; +#endif +} fapi_params_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_param_resp +{ + fapi_msg_header_t_ue_sim header; + uint8_t error_code; + uint8_t number_of_tlvs; + fapi_uint16_tlv_t_ue_sim tlvs[MAX_NUM_TLVS_CONFIG]; +} fapi_param_resp_t_ue_sim; + +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_phy_config +{ + fapi_uint16_tlv_t_ue_sim phyProfileId; + fapi_uint8_tlv_t_ue_sim indicationInstancePerSlot[6]; + fapi_uint8_tlv_t_ue_sim requestInstancePerSlot[4]; +}fapi_phy_config_t; +#endif +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_carrier_config +{ + fapi_tl_t_ue_sim carrierConfig; + uint16_t dlBandwidth; + uint32_t dlFrequency; +#ifdef VZ_VERIPHY_INTEG + fapi_config_num_tlv_t dlk0; + fapi_config_num_tlv_t dlGridSize; +#else + uint16_t dlk0[NUMEROLOGIES]; + uint16_t dlGridSize[NUMEROLOGIES]; +#endif + uint16_t numTxAnt; + uint16_t uplinkBandwidth; + uint32_t uplinkFrequency; +#ifdef VZ_VERIPHY_INTEG + fapi_config_num_tlv_t ulk0; + fapi_config_num_tlv_t ulGridSize; +#else + uint16_t ulk0[NUMEROLOGIES]; + uint16_t ulGridSize[NUMEROLOGIES]; +#endif + uint16_t numRxAnt; + uint8_t frequencyShift7p5KHz; + uint8_t powerProfile; + uint8_t powerOffsetRsIndex; +} fapi_carrier_config_t_ue_sim; +#else +typedef struct PACK_STRUCT fapi_carrier_config +{ + fapi_uint16_tlv_t_ue_sim dlBandwidth; + fapi_uint32_tlv_t_ue_sim dlFrequency; +#ifdef VZ_VERIPHY_INTEG + fapi_config_num_tlv_t dlk0; + fapi_config_num_tlv_t dlGridSize; +#else + fapi_uint16_tlv_t_ue_sim dlk0[NUMEROLOGIES]; + fapi_uint16_tlv_t_ue_sim dlGridSize[NUMEROLOGIES]; +#endif + fapi_uint16_tlv_t_ue_sim numTxAnt; + fapi_uint16_tlv_t_ue_sim uplinkBandwidth; + fapi_uint32_tlv_t_ue_sim uplinkFrequency; +#ifdef VZ_VERIPHY_INTEG + fapi_config_num_tlv_t ulk0; + fapi_config_num_tlv_t ulGridSize; +#else + fapi_uint16_tlv_t_ue_sim ulk0[NUMEROLOGIES]; + fapi_uint16_tlv_t_ue_sim ulGridSize[NUMEROLOGIES]; +#endif + fapi_uint16_tlv_t_ue_sim numRxAnt; + fapi_uint8_tlv_t_ue_sim frequencyShift7p5KHz; +} fapi_carrier_config_t_ue_sim; +#endif + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_cell_config +{ + fapi_uint16_tlv_t_ue_sim phyCellId; //in legacy data type mentioned was uint8_t, though in spec it was uint16_t + fapi_uint8_tlv_t_ue_sim frameDuplexType; +#ifdef FAPI_222_10_03 + fapi_uint8_tlv_t_ue_sim pdschTransTypeValidity; + fapi_uint8_tlv_t_ue_sim puschTransTypeValidity; +#endif +} fapi_cell_config_t_ue_sim; + +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_ssb_pwr_pbch_config +{ + fapi_uint32_tlv_t_ue_sim ssPbchPower; + fapi_int16_tlv_t_ue_sim ssPbchBlockPowerScaling; + fapi_uint8_tlv_t_ue_sim bchPayloadFlag; +}fapi_ssb_pwr_pbch_config_t; +#else +typedef struct PACK_STRUCT fapi_ssb_config +{ + fapi_uint32_tlv_t_ue_sim ssPbchPower; + fapi_uint8_tlv_t_ue_sim bchPayload; + fapi_uint8_tlv_t_ue_sim scsCommon; +} fapi_ssb_config_t_ue_sim; +#endif + +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_prachFdOccasion +{ + uint16_t prachRootSequenceIndex; + uint8_t numRootSequences; + int16_t k1; + uint8_t prachZeroCorrConf; + uint16_t numUnusedRootSequences; // 5G FAPI Table 3-24 Subset + uint16_t unusedRootSequences[MAX_NUM_UNUSED_ROOT_SEQUENCES]; +} fapi_prachFdOccasion_t_ue_sim; +#else +typedef struct PACK_STRUCT fapi_prachFdOccasion +{ + fapi_uint16_tlv_t_ue_sim prachRootSequenceIndex; + fapi_uint8_tlv_t_ue_sim numRootSequences; + fapi_uint16_tlv_t_ue_sim k1; + fapi_uint8_tlv_t_ue_sim prachZeroCorrConf; + fapi_uint16_tlv_t_ue_sim numUnusedRootSequences; // 5G FAPI Table 3-24 Subset + fapi_uint8_tlv_t_ue_sim unusedRootSequences[MAX_NUM_UNUSED_ROOT_SEQUENCES]; +} fapi_prachFdOccasion_t_ue_sim; +#endif +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_prach_configuration +{ + fapi_tl_t_ue_sim prachConfig; + uint16_t prachResConfigIndex; + uint8_t prachSequenceLength; + uint8_t prachSubCSpacing; + uint8_t ulBwpPuschScs; + uint8_t restrictedSetConfig; + uint8_t numPrachFdOccasions; + uint8_t prachConfigIndex; + fapi_prachFdOccasion_t_ue_sim prachFdOccasion[MAX_NUM_PRACH_FD_OCCASIONS]; + uint8_t ssbPerRach; +} fapi_prach_configuration_t_ue_sim; +#else +typedef struct PACK_STRUCT fapi_prach_configuration +{ + fapi_uint8_tlv_t_ue_sim prachSequenceLength; + fapi_uint8_tlv_t_ue_sim prachSubCSpacing; + fapi_uint8_tlv_t_ue_sim restrictedSetConfig; + fapi_uint8_tlv_t_ue_sim numPrachFdOccasions; + fapi_uint8_tlv_t_ue_sim prachConfigIndex; + fapi_prachFdOccasion_t_ue_sim prachFdOccasion[MAX_NUM_PRACH_FD_OCCASIONS]; + fapi_uint8_tlv_t_ue_sim ssbPerRach; + fapi_uint8_tlv_t_ue_sim prachMultipleCarriersInABand; +} fapi_prach_configuration_t_ue_sim; +#endif + +#ifdef FAPI_222_10_03 +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_multi_prach_config +{ + fapi_tl_t_ue_sim multiPrachConfig; + uint16_t numPrachConfigurations; + fapi_prach_configuration_t_ue_sim numPrachConfigurationsTlv[]; +}fapi_multi_prach_config_t; +#endif + +//Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_ssb_res_config_table +{ + fapi_tl_t_ue_sim ssbTableConfig; + uint16_t ssbConfigIndex; + uint16_t ssbOffsetPointA; + uint8_t betaPssProfileNR; + int16_t betaPssProfileSSS; + uint8_t ssbPeriod; + uint8_t ssbSubcarrierOffset; + uint8_t cases; + uint8_t subCarrierSpacing; + uint8_t subCarrierSpacingCommon; + uint32_t ssbMask[2]; + uint8_t beamId[64]; + uint8_t imax; + uint8_t rmsiPresence; +}fapi_ssb_res_config_table_t; +#else +typedef struct PACK_STRUCT fapi_ssb_table +{ + fapi_uint16_tlv_t_ue_sim ssbOffsetPointA; + fapi_uint8_tlv_t_ue_sim betaPss; + fapi_uint8_tlv_t_ue_sim ssbPeriod; + fapi_uint8_tlv_t_ue_sim ssbSubCarrierOffset; + fapi_uint32_tlv_t_ue_sim mib; + fapi_uint32_tlv_t_ue_sim ssbMask[2]; + fapi_uint8_tlv_t_ue_sim beamId[64]; + fapi_uint8_tlv_t_ue_sim ssPbchMultipleCarriersInABand; + fapi_uint8_tlv_t_ue_sim multipleCellsSsPbchInACarrier; +} fapi_ssb_table_t_ue_sim; +#endif + +#ifdef FAPI_222_10_03 +//Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_multi_ssb_resource_config_table +{ + fapi_tl_t_ue_sim multiSsbResourceConfig; + uint8_t numSsbConfigurations; + fapi_ssb_res_config_table_t ssbConfigurationsTLVs[]; +}fapi_multi_ssb_resource_config_table_t; +#endif + +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_slotconfig +{ + uint8_t slotConfig[MAX_NUM_OF_SYMBOLS_PER_SLOT]; +} fapi_slotconfig_t_ue_sim; +#else +typedef struct PACK_STRUCT fapi_slotconfig +{ + fapi_uint8_tlv_t_ue_sim slotConfig[MAX_NUM_OF_SYMBOLS_PER_SLOT]; +} fapi_slotconfig_t_ue_sim; +#endif + +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_tdd_table +{ + fapi_tl_t_ue_sim tddTableConfig; + uint8_t tddPeriod; + fapi_slotconfig_t_ue_sim slotConfig[MAX_TDD_PERIODICITY]; +} fapi_tdd_table_t_ue_sim; +#else +typedef struct PACK_STRUCT fapi_tdd_table +{ + fapi_uint8_tlv_t_ue_sim tddPeriod; + fapi_slotconfig_t_ue_sim slotConfig[MAX_TDD_PERIODICITY]; +} fapi_tdd_table_t_ue_sim; +#endif + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_meas_config +{ + fapi_uint8_tlv_t_ue_sim rssiMeasurement; +} fapi_meas_config_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dig_beam_weight +{ + int16_t digBeamWeightRe; + int16_t digBeamWeightIm; +} fapi_dig_beam_weight_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dig_beam_config +{ + uint16_t beamIdx; + fapi_dig_beam_weight_t_ue_sim digBeamWeight[MAX_NUMBER_TX_RUS]; +} fapi_dig_beam_config_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_beamforming_table +{ + uint16_t numDigBeams; +#ifndef FAPI_222_10_03 + uint16_t numTxRus; +#else + uint16_t numBasebandPorts; +#endif + fapi_dig_beam_config_t_ue_sim digBeam[MAX_NUMBER_OF_BEAMS]; +} fapi_beamforming_table_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_precoderWeight +{ + int16_t preCoderWeightRe; + int16_t preCoderWeightIm; +} fapi_precoderWeight_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_precoder_weight +{ + fapi_precoderWeight_t_ue_sim precoder_weight[MAX_NUM_ANT_PORTS]; +} fapi_precoder_weight_t_ue_sim; + +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_map_index +{ + uint8_t numPart1Params; + uint8_t sizePart1Params[0]; /* Shall Not exced 12 */ + uint16_t map[0]; +}fapi_map_index_t; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uci_config +{ + fapi_tl_t_ue_sim uciConfig; + uint16_t numUci2Maps; + fapi_map_index_t mapIndex[]; +}fapi_uci_config_t; + +// Updated per 5G FAPI + +typedef struct PACK_STRUCT fapi_prb_sym_rate_match_pattern +{ + uint8_t prbSymbRateMatchPatternID; + uint8_t freqDomainRB[35]; + uint8_t oneOrTwoSlots; + uint32_t symbolsInRB; + uint8_t timeDomainPeriodicity; + uint8_t timeDomainPattern[5]; + uint8_t subCarrierSpacing; +}fapi_prb_sym_rate_match_pattern_t; + +typedef struct PACK_STRUCT fapi_prb_symbol_rate_match_pattern +{ + fapi_tl_t_ue_sim prbSymRateMatchPattern; + uint8_t numPrbSymbRatePattern; + fapi_prb_sym_rate_match_pattern_t prbSymbRateMatchPatterns[]; +}fapi_prb_symbol_rate_match_pattern_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_mbsfn_sf_config_list +{ + uint8_t radioframeAllocationPeriod; + uint8_t radioframeAllocationOffset; + uint8_t lteFrameStructureType; + uint8_t subframeAllocLength; + uint32_t subframeAllocationBitmap; /* Ref: Table 3-42 LTE-CRS rate match patterns configuration*/ +}fapi_mbsfn_sf_config_list_t; + +typedef struct PACK_STRUCT fapi_lte_crs_rm_ptrn +{ + uint8_t crsRateMatchPatternID; + uint16_t carrierFreqDL; + uint8_t carrierBandwidthDL; + uint8_t nrCrsPorts; + uint8_t vShift; + uint8_t sizeMbsfnSubframeConfigList; + fapi_mbsfn_sf_config_list_t mbsfnSFConfigList[0]; +}fapi_lte_crs_rm_ptrn_t; + +typedef struct PACK_STRUCT fapi_lte_crs_rm_pattern +{ + fapi_tl_t_ue_sim lteCrsRmPattern; + uint8_t numLteCrsRmPattern; + fapi_lte_crs_rm_ptrn_t lteCrsRmPtrn[0]; +}fapi_lte_crs_rm_pattern_t; + +// Updated per 5G Fapi +typedef struct PACK_STRUCT fapi_ul_bwp_id +{ + uint8_t pucchGroupHopping; + uint16_t nIdPucchHopping; +}fapi_ul_bwp_id_t; + +typedef struct PACK_STRUCT fapi_pucch_semi_static_config +{ + fapi_uint8_tlv_t_ue_sim numUlBwpIds; + fapi_ul_bwp_id_t ulBwpId[0]; +}fapi_pucch_semi_static_config_t; + +// Updated per 5G Fapi +typedef struct PACK_STRUCT fapi_pdsch_config +{ + fapi_uint8_tlv_t_ue_sim pdschCbgScheme; +}fapi_pdsch_config_t; + +// Updated per 5G Fapi +typedef struct PACK_STRUCT fapi_delay_mgmt_config +{ + fapi_uint16_tlv_t_ue_sim timingWindow; + fapi_uint8_tlv_t_ue_sim timingInfoMode; + fapi_uint8_tlv_t_ue_sim timingInfoPeriod; +}fapi_delay_mgmt_config_t; + +// Updated per 5G Fapi +typedef struct PACK_STRUCT fapi_rel16_mtrp_config +{ + fapi_uint8_tlv_t_ue_sim numTxPortsTRP1; + fapi_uint8_tlv_t_ue_sim numRxPortsTRP1; +}fapi_rel16_mtrp_config_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT +{ + uint16_t pmIdx; + uint16_t numLayers; + uint16_t numAntPorts; + fapi_precoder_weight_t_ue_sim precoderWeight[MAX_NUM_LAYERS]; +} fapi_precoding_table_t_ue_sim; + +// Updated per 5G FAPI +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_config +{ + fapi_phy_config_t phyConfig; + fapi_carrier_config_t_ue_sim carrierConfig; + fapi_cell_config_t_ue_sim cellConfig; + fapi_ssb_pwr_pbch_config_t ssbPowerPbchConfig; + fapi_prach_configuration_t_ue_sim prachConfig; + fapi_multi_prach_config_t multiPrachConfig; + fapi_ssb_res_config_table_t ssbResConfigTable; + fapi_multi_ssb_resource_config_table_t multiSsbResourceConfigTable; + fapi_tdd_table_t_ue_sim tddTable; + fapi_meas_config_t_ue_sim measConfig; + fapi_beamforming_table_t_ue_sim beamformingTable; + fapi_precoding_table_t_ue_sim precodingTable; + fapi_uci_config_t uciConfig; + fapi_prb_symbol_rate_match_pattern_t prbSymRmPtrn; + fapi_lte_crs_rm_pattern_t lteCrsRmPtrn; + fapi_pucch_semi_static_config_t pucchSemiStaticConfig; + fapi_pdsch_config_t pdschConfig; + fapi_delay_mgmt_config_t delayMgmtConfig; + fapi_rel16_mtrp_config_t rel16MtrpConfig; +}fapi_config_t_ue_sim; +#else +typedef struct PACK_STRUCT fapi_config +{ + fapi_carrier_config_t_ue_sim carrierConfig; + fapi_cell_config_t_ue_sim cellConfig; + fapi_ssb_config_t_ue_sim ssbConfig; + //fapi_prach_config_t prachConfig; + fapi_prach_configuration_t_ue_sim prachConfig; + fapi_ssb_table_t_ue_sim ssbTable; + fapi_tdd_table_t_ue_sim tddTable; + fapi_meas_config_t_ue_sim measConfig; + fapi_beamforming_table_t_ue_sim beamformingTable; + fapi_precoding_table_t_ue_sim precodingTable; +}fapi_config_t_ue_sim; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_config_req +{ + fapi_msg_header_t_ue_sim header; + uint8_t number_of_tlvs; + fapi_uint16_tlv_t_ue_sim tlvs[MAX_NUM_TLVS_CONFIG]; +} fapi_config_req_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_config_resp +{ + fapi_msg_header_t_ue_sim header; + uint8_t error_code; + uint8_t number_of_invalid_tlvs; + uint8_t number_of_inv_tlvs_idle_only; + uint8_t number_of_inv_tlvs_running_only; + uint8_t number_of_missing_tlvs; + fapi_uint16_tlv_t_ue_sim tlvs[4 * MAX_NUM_TLVS_CONFIG]; +// fapi_uint16_tlv_t_ue_sim unsupported_or_invalid_tlvs[MAX_NUMBER_UNSUPPORTED_TLVS]; +// fapi_uint16_tlv_t_ue_sim invalid_idle_only_tlvs[MAX_NUMBER_OF_INVALID_IDLE_ONLY_TLVS]; +// fapi_uint16_tlv_t_ue_sim invalid_running_only_tlvs[MAX_NUMBER_OF_INVALID_RUNNING_ONLY_TLVS]; +// fapi_uint16_tlv_t_ue_sim missing_tlvs[MAX_NUMBER_OF_MISSING_TLVS]; +} fapi_config_resp_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_start_req +{ + fapi_msg_header_t_ue_sim header; // Message Length is zero for START.request +} fapi_start_req_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_stop_req +{ + fapi_msg_header_t_ue_sim header; // Message Length is zero for STOP.request +} fapi_stop_req_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_stop_ind +{ + fapi_msg_header_t_ue_sim header; // Message Length is zero for STOP.indication +} fapi_stop_ind_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_error_ind +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint8_t message_id; + uint8_t error_code; +#ifdef FAPI_222_10_03 + uint16_t expectedSFN; + uint16_t expectedSlot; +#endif +} fapi_error_ind_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_slot_ind +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; +} fapi_slot_ind_t_ue_sim; + +#ifdef FAPI_222_10_03 +/* Ref: section 3.1.9 of* SCF-225 */ +typedef struct PACK_STRUCT fapi_start_resp +{ + fapi_msg_header_t_ue_sim header; + uint8_t errorCode; +}fapi_start_resp_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_bmi +{ + uint16_t beamidx; +} fapi_bmi_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pmi_bfi +{ + uint16_t pm_idx; + fapi_bmi_t_ue_sim beam_idx[]; +} fapi_pmi_bfi_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_bmform +{ +#ifndef FAPI_222_10_03 + uint8_t trpScheme; +#endif + uint16_t num_prgs; + uint16_t prg_size; + uint8_t dig_bf_interfaces; + uint16_t beam_idx[][1]; +} fapi_bmform_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_precoding_bmform +{ +#ifndef FAPI_222_10_03 + uint8_t trpScheme; +#endif + uint16_t num_prgs; + uint16_t prg_size; + uint8_t dig_bf_interfaces; + fapi_pmi_bfi_t_ue_sim pmi_bfi[1]; +} fapi_precoding_bmform_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_tx_power_info +{ + uint8_t beta_pdcch_1_0; +#ifndef FAPI_222_10_03 + uint8_t power_control_ofsset_ss; +#else + int8_t powerControlOffsetSSProfileNR; +#endif +} fapi_tx_power_info_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_bwp +{ + uint16_t bwp_size; /* BWP configuration Start */ + uint16_t bwp_start; + uint8_t sub_carrier_spacing; + uint8_t cyclic_prefix; /* BWP Configuration End*/ +}fapi_bwp_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_coreset +{ + uint8_t start_symbol_index; /* Coreset Configuration Start */ + uint8_t duration_symbols; + uint8_t freq_domain_resource[FAPI_MAX_FREQ_DOMAIN_RES]; + uint8_t cce_reg_mapping_type; + uint8_t reg_bundle_size; + uint8_t interleaver_size; + uint8_t core_set_type; + uint16_t shift_index; + uint8_t precoder_granularity; /* Coreset Configuration End */ +}fapi_coreset_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dl_dci +{ + uint16_t rnti; +#ifdef FAPI_222_10_03 + uint16_t nIdPdcchData; + uint16_t nRntiPdcchData; +#else + uint16_t scrambling_id; + uint16_t scrambling_rnti; +#endif + uint8_t cce_index; + uint8_t aggregation_level; + fapi_precoding_bmform_t_ue_sim pc_and_bform; + fapi_tx_power_info_t tx_power_info; + uint16_t payload_size_bits; + uint8_t payload[]; +} fapi_dl_dci_t_ue_sim; +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_coreset_parms +{ + uint16_t pdcchPduIndex; + uint16_t nIdPdcchDmrs; +} fapi_coreset_parms_t; + +typedef struct PACK_STRUCT fapi_dci_specific_parms +{ + uint16_t dciIndex; + uint8_t collocatedAl16Candidate; + int16_t pdcchDmrsPowerOffsetProfileSSS; + int16_t pdcchDataPowerOffsetProfileSSS; +} fapi_dci_specific_parms_t; + +typedef struct PACK_STRUCT fapi_pdcch_mnt_parms +{ + fapi_coreset_parms_t coresetParms; + fapi_dci_specific_parms_t dciSpecificParms; +} fapi_pdcch_mnt_parms_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dl_pdcch_pdu +{ + fapi_bwp_t bwp; + fapi_coreset_t coreset; + uint16_t num_dl_dci; /*Number of DCIs in this CORESET */ + fapi_dl_dci_t_ue_sim dl_dci[0]; +#ifdef FAPI_222_10_03 + fapi_pdcch_mnt_parms_t pdcchMntParms; +#endif +} fapi_dl_pdcch_pdu_t_ue_sim; +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_codeword_pdu +{ + uint16_t target_code_rate; + uint8_t qam_mod_order; + uint8_t mcs_index; + uint8_t mcs_table; + uint8_t rv_index; + uint32_t tb_size; +} fapi_codeword_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dmrs +{ + uint16_t dl_dmrs_symb_pos; /*SCF: DMRS Config Start */ + uint8_t dmrs_config_type; + uint16_t dl_dmrs_scrambling_id; + uint8_t scid; + uint8_t num_dmrs_cdm_grps_no_data; + uint16_t dmrs_ports; /*SCF: DMRS Config End */ +} fapi_dmrs_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pdsch_freq_dom_alloc +{ + uint8_t resource_alloc; /*SCF: PDSCH Allocation in Frequency Domain Start */ + uint8_t rb_bitmap[36]; + uint16_t rb_start; + uint16_t rb_size; + uint8_t vrb_to_prb_mapping;/*SCF : PDSCH Allocation in Frequency Domain End */ +} fapi_pdsch_freq_dom_alloc_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pdsch_time_dom_alloc +{ + uint8_t start_symb_index;/*SCF : PDSCH Allocation in Time Domain Start */ + uint8_t nr_of_symbols; /*SCF : PDSCH Allocation in Time Domain End */ +} fapi_pdsch_time_dom_alloc_t; + +typedef struct PACK_STRUCT fapi_dl_pdsch_ptrs_info +{ + uint8_t ptrs_port_index; + uint8_t ptrs_time_density; + uint8_t ptrs_freq_density; + uint8_t ptrs_re_offset; + uint8_t n_epre_ratio_of_pdsch_to_ptrs; + +} fapi_dl_pdsch_ptrs_info_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_tx_pwr_info +{ +#ifndef FAPI_222_10_03 + uint8_t power_control_offset; /*SCF : TX Power Info Start */ + uint8_t power_control_offset_ss; /*SCF : Tx Power Info End */ +#else + uint8_t powerControlOffsetProfileNR; /*SCF : TX Power Info Start */ + uint8_t powerControlOffsetSSProfileNR; /*SCF : Tx Power Info End */ +#endif +} fapi_tx_pwr_info_t; + +typedef struct PACK_STRUCT fapi_dl_pdsch_cbg_info +{ + uint8_t is_last_cb_present; + uint8_t is_inline_tb_crc; +#ifndef FAPI_222_10_03 + uint32_t dl_tb_crc; +#else + uint32_t dlTbCrc[2]; +#endif + +} fapi_dl_pdsch_cbg_info_t; + +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_dl_prb_sym_rm_patrn_by_val +{ + uint8_t freqDomainRB[35]; + uint16_t symbolsInRB; +} fapi_dl_prb_sym_rm_patrn_by_val_t; + +typedef struct PACK_STRUCT fapi_dl_coreset_rm_patrn +{ + uint8_t freqDomainResources[6]; + uint16_t symbolsPatrn; +} fapi_dl_coreset_rm_patrn_t; + + +typedef struct PACK_STRUCT fapi_dl_rate_match_ref +{ + uint8_t ssbPdusForRateMatching[2]; + uint8_t ssbConfigForRateMatching; + uint8_t prbSymRmPatrnBitmapSizeByRef; + uint8_t prbSymRmPatrnBitmapByRef[0]; // side depends on ceil(prbSymRmPatrnBitmapSizeByRef / 8) + uint8_t numPrbSymRmPatrnByVal; + fapi_dl_prb_sym_rm_patrn_by_val_t prbSymRmPatrnByValue[0]; + uint8_t numCoresetRmPatrn; + fapi_dl_coreset_rm_patrn_t coresetRmPatrn[0]; + uint16_t pdcchPduIndex; + uint16_t dciIndex; + uint8_t lteCrsRaMaPatrnBitmapSize; + uint8_t lteCrsRaMaPatrn[0]; // side depends on ceil(lteCrsRaMaPatrnBitmapSize / 8) + uint8_t numCsiRsForRaMa; + uint16_t csiRsForRaMa[0]; // side depends on numCsiRsForRaMa + +} fapi_dl_rate_match_ref_t; + +typedef struct PACK_STRUCT fapi_dl_code_word +{ + uint8_t cbgTxInfo; +} fapi_dl_code_word_t; + +typedef struct PACK_STRUCT fapi_dl_tx_pwr_info +{ + uint16_t pdschDmrsPwrOffsetPrfSSS; + uint16_t pdschDataPwrOffsetPrfSSS; + uint8_t maxNumCbgPerTb; + fapi_dl_code_word_t codeWord[0]; +} fapi_dl_tx_pwr_info_t; + +typedef struct PACK_STRUCT fapi_dl_codeword_info +{ + uint8_t ldpcBaseGraph; + uint32_t tbSizeLbrmBytes; + uint8_t tbCrcRequired; + +} fapi_dl_codeword_info_t; + +typedef struct PACK_STRUCT fapi_dl_pdsch_mnt_parms +{ + uint8_t pdschTransType; + uint16_t coresetStartPoint; + uint16_t initialDlBwpSize; + fapi_dl_codeword_info_t codewordInfo; + fapi_dl_rate_match_ref_t rateMatchRef; + fapi_dl_tx_pwr_info_t txPwrInfo; +} fapi_dl_pdsch_mnt_parms_t; + +typedef struct PACK_STRUCT fapi_dl_ptrs_tx_pwr_info +{ + uint16_t pdschPtrsPwrOffsetPrfSSS; +}fapi_dl_ptrs_tx_pwr_info_t; + +typedef struct PACK_STRUCT fapi_dl_pdsch_ptrs_mnt_parms +{ + fapi_dl_ptrs_tx_pwr_info_t txPwrInfo; +} fapi_dl_pdsch_ptrs_mnt_parms_t; + +typedef struct PACK_STRUCT fapi_dl_pdsch_ptrs2 +{ + uint8_t ptrsPortIndex; + uint8_t ptrsTimeDensity; + uint8_t ptrsFreqDensity; + uint8_t ptrsReOffset; + uint8_t nEpreRatOfPdschToPtrsProfNR; +} fapi_dl_pdsch_ptrs2_t; + +typedef struct PACK_STRUCT fapi_dl_pdsch_ptrsv3 +{ + fapi_dl_ptrs_tx_pwr_info_t txPwrInfo; +}fapi_dl_pdsch_ptrsv3_t; + +typedef struct PACK_STRUCT fapi_dl_rel16_pdsch_parms_t +{ + uint8_t repetitionScheme; + fapi_dl_pdsch_ptrs2_t pdschPtrs2; + fapi_dl_pdsch_ptrsv3_t pdschPtrsV3; +} fapi_dl_rel16_pdsch_parms_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dl_pdsch_pdu +{ + uint16_t pdu_bit_map; /* Bit 0: pdschPtrs - Indicates PTRS included (FR2) + Bit 1:cbgRetxCtrl (Present when CBG based retransmit is used) */ + uint16_t rnti; + uint16_t pdu_index; + fapi_bwp_t bwp; + uint8_t nr_of_code_words; /* SCF : Code Word Info Start */ + fapi_codeword_pdu_t_ue_sim cw_info[FAPI_MAX_NUM_CW]; /* SCF : Code Word Info End */ +#ifdef FAPI_222_10_03 + uint16_t nIdPdsch; +#else + uint16_t data_scrambling_id; +#endif + uint8_t nr_of_layers; + uint8_t transmission_scheme; + uint8_t ref_point; + fapi_dmrs_t dmrs; + fapi_pdsch_freq_dom_alloc_t pdsch_freq_dom_alloc; + fapi_pdsch_time_dom_alloc_t pdsch_time_dom_alloc; + fapi_dl_pdsch_ptrs_info_t pdsch_ptrs_info; + fapi_precoding_bmform_t_ue_sim pre_coding_and_beamforming; + fapi_tx_pwr_info_t tx_pwr_info; + fapi_dl_pdsch_cbg_info_t cbg_info; +#ifdef FAPI_222_10_03 + fapi_dl_pdsch_mnt_parms_t dlPdschMntparms; + fapi_dl_pdsch_ptrs_mnt_parms_t dlPdschPtrsMntParms; + fapi_dl_rel16_pdsch_parms_t rel16PdschParms; +#endif +} fapi_dl_pdsch_pdu_t_ue_sim; + +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_basic_parms +{ + uint16_t csiRsPduIndex; +} fapi_basic_parms_t; + +typedef struct PACK_STRUCT ifapi_csi_rs_tx_pwr_info +{ + uint16_t csiRsPowerOffsetProfileSSS; +} fapi_csi_rs_tx_pwr_info_t; + + +typedef struct PACK_STRUCT fapi_dl_csi_rs_mnt_parms +{ + fapi_basic_parms_t basic; + fapi_csi_rs_tx_pwr_info_t txPwrInfo; +}fapi_dl_csi_rs_mnt_parms_t; +#endif + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dl_csi_rs_pdu +{ +#ifdef FAPI_222_10_03 + uint8_t subCarrierSpacing; + uint8_t cyclicPrefix; /* BWP Configuration End*/ +#else + fapi_bwp_t bwp; +#endif + uint16_t start_rb; + uint16_t nr_of_rbs; + uint8_t csi_type; + uint8_t row; + uint16_t freq_domain; + uint8_t symb_l0; + uint8_t symb_l1; + uint8_t cdm_type; + uint8_t freq_density; + uint16_t scram_id; + fapi_tx_pwr_info_t tx_pwr_info; + fapi_precoding_bmform_t_ue_sim pre_coding_and_beamforming; +#ifdef FAPI_222_10_03 + fapi_dl_csi_rs_mnt_parms_t csiRsMntParms; +#endif +} fapi_dl_csi_rs_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_phy_mib_pdu +{ + uint8_t dmrs_type_a_position; + uint8_t pdcch_config_sib1; + uint8_t cell_barred; + uint8_t intra_freq_reselction; +} fapi_phy_mib_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_bch_payload +{ + union + { + uint32_t bch_payload; + fapi_phy_mib_pdu_t_ue_sim phy_mib_pdu; + } u; +} fapi_bch_payload_t_ue_sim; + +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_ssb_basic_parms +{ + uint8_t ssbPduIndex; + uint8_t cases; + uint8_t subcarrierSpacing; + uint8_t lMax; +} fapi_ssb_basic_parms_t; + +typedef struct PACK_STRUCT fapi_ssb_tx_pwr_info +{ + uint16_t ssPbchBlockPowerScaling; + uint16_t betaPSSProfileSSS; +} fapi_ssb_tx_pwr_info_t; + +typedef struct PACK_STRUCT fapi_dl_ssb_pbch_mnt_parms +{ + fapi_ssb_basic_parms_t basicParams; + fapi_ssb_tx_pwr_info_t tx_pwr_info; +}fapi_dl_ssb_pbch_mnt_parms_t; + +#endif + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dl_ssb_pdu +{ + + uint16_t phys_cell_id; +#ifdef FAPI_222_10_03 + uint8_t betaPssProfileNR; +#else + uint8_t beta_pss; +#endif + uint8_t ssb_block_index; + uint8_t ssb_sub_carrier_offset; + uint16_t ssb_offset_point_a; + uint8_t bch_payload_flag; + fapi_bch_payload_t_ue_sim bch_payload; + fapi_precoding_bmform_t_ue_sim pre_coding_and_beamforming; +#ifdef FAPI_222_10_03 + fapi_dl_ssb_pbch_mnt_parms_t ssbPbchMntParms; +#endif +} fapi_dl_ssb_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dl_tti_req_pdu +{ + uint16_t pdu_type; + uint16_t pdu_size; + union + { + fapi_dl_pdcch_pdu_t_ue_sim pdcch_pdu; + fapi_dl_pdsch_pdu_t_ue_sim pdsch_pdu; + fapi_dl_csi_rs_pdu_t_ue_sim csi_rs_pdu; + fapi_dl_ssb_pdu_t_ue_sim ssb_pdu; + }u; +} fapi_dl_tti_req_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ue_info +{ + uint8_t n_ue; + uint8_t pdu_idx[]; +} fapi_ue_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dl_tti_req +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; +#ifdef FAPI_222_10_03 + uint16_t n_pdus; + uint8_t nDlTypes; + uint16_t nPDUsOfEachType[MAX_NDLTYPES_DL_TTI_REQ]; +#else + uint8_t n_pdus; +#endif + uint8_t n_group; + fapi_dl_tti_req_pdu_t_ue_sim pdus[0]; + fapi_ue_info_t_ue_sim ueGrpInfo[0]; +} fapi_dl_tti_req_t_ue_sim; +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_pRACH_Mntnc_param +{ + uint32_t handle; + uint8_t prachConfigScope; + uint16_t prachResConfigIndex; + uint8_t numFdRa; + uint8_t startPreambleIndex; + uint8_t numPreambleIndices; +}fapi_pRACH_Mntnc_param_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ul_prach_pdu +{ + uint16_t phys_cell_id; + uint8_t num_prach_ocas; + uint8_t prach_format; +#ifdef FAPI_222_10_03 + uint8_t indexFdRa; +#else + uint8_t num_ra; +#endif + uint8_t prach_start_symbol; + uint16_t num_cs; + fapi_bmform_t beamforming; +#ifdef FAPI_222_10_03 + fapi_pRACH_Mntnc_param_t pRACH_Mntnc; +#endif +} fapi_ul_prach_pdu_t_ue_sim; + + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pusch_data +{ + uint8_t rv_index; + uint8_t harq_process_id; + uint8_t new_data_indicator; + uint32_t tb_size; + uint16_t num_cb; + uint8_t cb_present_and_position[1]; +} fapi_pusch_data_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pusch_uci +{ + uint16_t harq_ack_bit_length; + uint16_t csi_part1_bit_length; +#ifdef FAPI_222_10_03 + uint16_t flagCsiPart2; +#else + uint16_t csi_part2_bit_length; +#endif + uint8_t alpha_scaling; + uint8_t beta_offset_harq_ack; + uint8_t beta_offset_csi1; + uint8_t beta_offset_csi2; +} fapi_pusch_uci_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ptrs_info +{ + uint16_t ptrs_port_index; + uint8_t ptrs_dmrs_port; + uint8_t ptrs_re_offset; +} fapi_ptrs_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pusch_ptrs +{ + uint8_t num_ptrs_ports; + fapi_ptrs_info_t_ue_sim ptrs_info[MAX_NUM_PTRS_PORTS]; + uint8_t ptrs_time_density; + uint8_t ptrs_freq_density; + uint8_t ul_ptrs_power; +} fapi_pusch_ptrs_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dfts_ofdm +{ + uint8_t low_papr_group_number; + uint16_t low_papr_sequence_number; + uint8_t ul_ptrs_sample_density; + uint8_t ul_ptrs_time_density_transform_precoding; +} fapi_dfts_ofdm_t_ue_sim; + +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_pusch_mnt_parms +{ + uint8_t puschTransType; + uint16_t deltaBwp0StartFromActiveBwp; + uint16_t initialUlBwpSize; + uint8_t groupOrSequenceHopping; + uint16_t puschSecondHopPRB; + uint8_t ldpcBaseGraph; + uint32_t tbSizeLbrmBytes; +} fapi_pusch_mnt_parms_t; + +typedef struct PACK_STRUCT fapi_part2_parms +{ + uint16_t priority; + uint8_t numPart1Params; + uint16_t paramOffsets[0]; + uint8_t paramSizes[0]; + uint16_t part2SizeMapIndex; +} fapi_part2_parms_t; + +typedef struct PACK_STRUCT fapi_optional_pusch_uci +{ + uint16_t numPart2s; + fapi_part2_parms_t part2_parms[0]; +} fapi_optional_pusch_uci_t; +#endif + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ul_pusch_pdu +{ + uint16_t pdu_bitmap; + uint16_t rnti; + uint32_t handle; +#ifdef VZ_VERIPHY_INTEG + fapi_bwp_t bwp; +#else + uint16_t bwp_size; + uint16_t bwp_start; + uint8_t sub_carrier_spacing; + uint8_t cyclic_prefix; +#endif + uint16_t target_code_rate; + uint8_t qam_mod_order; + uint8_t mcs_index; + uint8_t mcs_table; + uint8_t transform_precoding; +#ifdef FAPI_222_10_03 + uint16_t nIdPusch; +#else + uint16_t data_scrambling_id; +#endif + uint8_t nr_of_layers; + uint16_t ul_dmrs_symb_pos; + uint8_t dmrs_config_type; + uint16_t ul_dmrs_scrambling_id; + uint16_t pusch_identity; +#ifdef FAPI_222_10_03 + uint8_t nScid; +#else + uint8_t scid; +#endif + uint8_t num_dmrs_cdm_grps_no_data; + uint16_t dmrs_ports; + uint8_t resource_alloc; + uint8_t rb_bitmap[36]; + uint16_t rb_start; + uint16_t rb_size; + uint8_t vrb_to_prb_mapping; +#ifdef FAPI_222_10_03 + uint8_t IntraSlotFrequencyHopping; +#else + uint8_t frequency_hopping; +#endif + uint16_t tx_direct_current_location; + uint8_t uplink_frequency_shift7p5khz; + uint8_t start_symb_index; + uint8_t nr_of_symbols; + fapi_pusch_data_t_ue_sim pusch_data; + fapi_pusch_uci_t_ue_sim pusch_uci; + fapi_pusch_ptrs_t_ue_sim pusch_ptrs; + fapi_dfts_ofdm_t_ue_sim dfts_ofdm; + fapi_bmform_t beamforming; +#ifdef FAPI_222_10_03 + fapi_pusch_mnt_parms_t puschMntParms; + fapi_optional_pusch_uci_t optionalPuschUci; +#endif +} fapi_ul_pusch_pdu_t_ue_sim; +#ifdef FAPI_222_10_03 +typedef struct PACK_STRUCT fapi_pUCCH_Mntnnc_params +{ + uint8_t maxCodeRate; + uint8_t ulBwpId; +} fapi_pucch_mntnnc_params_t; +typedef struct PACK_STRUCT fapi_uci_part2 +{ + uint16_t priority; + uint8_t numPart1Params; + uint16_t paramOffsets[0]; + uint8_t paramSizes[0]; + uint8_t part2SizeMapIndex; +}fapi_uci_part2_t; +typedef struct PACK_STRUCT fapi_uci_part1_part2 +{ + uint16_t numPart2s; + fapi_uci_part2_t uci_part2[0]; +} fapi_uci_part1_part2_t; +#endif +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ul_pucch_pdu +{ + uint16_t rnti; + uint32_t handle; +#ifdef VZ_VERIPHY_INTEG + fapi_bwp_t bwp; +#else + uint16_t bwp_size; + uint16_t bwp_start; + uint8_t sub_carrier_spacing; + uint8_t cyclic_prefix; +#endif + uint8_t format_type; + uint8_t multi_slot_tx_indicator; + uint8_t pi2_bpsk; + uint16_t prb_start; + uint16_t prb_size; + uint8_t start_symbol_index; + uint8_t nr_of_symbols; +#ifdef FAPI_222_10_03 + uint8_t intraSlotFrequencyHopping; +#else + uint8_t freq_hop_flag; +#endif + uint16_t second_hop_prb; +#ifdef FAPI_222_10_03 + uint8_t pucchGroupHopping; + uint8_t obsolete8bit; + uint8_t nIdPucchHopping; +#else + uint8_t group_hop_flag; + uint8_t sequence_hop_flag; + uint16_t hopping_id; +#endif + uint16_t initial_cyclic_shift; +#ifdef FAPI_222_10_03 + uint16_t nIdPucchScrambling; +#else + uint16_t data_scrambling_id; +#endif + uint8_t time_domain_occ_idx; + uint8_t pre_dft_occ_idx; + uint8_t pre_dft_occ_len; + uint8_t add_dmrs_flag; + uint16_t dmrs_scrambling_id; + uint8_t dmrs_cyclic_shift; + uint8_t sr_flag; + uint16_t bit_len_harq; +#ifdef FAPI_222_10_03 + uint16_t csiPart1BitLength; +#else + uint16_t bit_len_csi_part1; + uint16_t bit_len_csi_part2; +#endif + fapi_bmform_t beamforming; +#ifdef FAPI_222_10_03 + fapi_pucch_mntnnc_params_t pucch_basicextension; + fapi_uci_part1_part2_t uci_part1_part2; +#endif +} fapi_ul_pucch_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ul_srs_pdu +{ + uint16_t rnti; + uint32_t handle; +#ifdef VZ_VERIPHY_INTEG + fapi_bwp_t bwp; +#else + uint16_t bwp_size; + uint16_t bwp_start; + uint8_t sub_carrier_spacing; + uint8_t cyclic_prefix; +#endif + uint8_t num_ant_ports; + uint8_t num_symbols; + uint8_t num_repetitions; + uint8_t time_start_position; + uint8_t config_index; + uint16_t sequence_id; + uint8_t bandwidth_index; + uint8_t comb_size; + uint8_t comb_offset; + uint8_t cyclic_shift; + uint8_t frequency_position; + uint16_t frequency_shift; + uint8_t frequency_hopping; + uint8_t group_or_sequence_hopping; + uint8_t resource_type; + uint16_t t_srs; + uint16_t t_offset; + fapi_bmform_t beamforming; +} fapi_ul_srs_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ul_tti_req_pdu +{ + uint16_t pdu_type; + uint16_t pdu_size; + union + { + fapi_ul_prach_pdu_t_ue_sim prach_pdu; + fapi_ul_pusch_pdu_t_ue_sim pusch_pdu; + fapi_ul_pucch_pdu_t_ue_sim pucch_pdu; + fapi_ul_srs_pdu_t_ue_sim srs_pdu; + //fapi_ul_rx_bmform_pdu_t rx_beamforming_pdu; + }u; +} fapi_ul_tti_req_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ul_tti_req +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; +#ifdef FAPI_222_10_03 + uint16_t n_pdus; + uint8_t nUlTypes; +/* [0]: number of PRACH PDUs [1]: number of PUSCH PDUs [2]: number of Format 0/1 PUCCH PDUs [3]: number of Format 2/3/4 PUCCH PDUs [4]: number of SRS PDUs */ + uint16_t nPDUsOfEachType[MAX_NUM_UL_TYPES]; +#else + /* Indicates if a RACH PDU will be included in this message. + * 0: no RACH in this slot + * 1: RACH in this slot */ + uint8_t rach_present; + uint8_t n_ulsch; /* Number of ULSCH PDUs that are included in this message.*/ + uint8_t n_ulcch; /* Number of ULCCH PDUs that are included in this message.*/ + uint8_t n_pdus; +#endif + uint8_t n_group; /* Number of UE Groups included in this message.*/ + fapi_ul_tti_req_pdu_t_ue_sim pdus[0]; + fapi_ue_info_t_ue_sim ueGrpInfo[0]; +} fapi_ul_tti_req_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_dci_pdu +{ + uint16_t pdu_type; + uint16_t pdu_size; + fapi_dl_pdcch_pdu_t_ue_sim pdcch_pdu; +} fapi_dci_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_ul_dci_req +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint8_t num_pdus; +#ifdef FAPI_222_10_03 + uint8_t nDlTypes; + uint16_t nPDUsOfEachType[MAX_NDLTYPES_UL_DCI_REQ]; +#endif + fapi_dci_pdu_t_ue_sim pdus[]; +} fapi_ul_dci_req_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_tx_pdu_desc +{ + uint32_t pduLength; + uint16_t pduIndex; +#ifdef FAPI_222_10_03 + uint8_t cwIndex; /* Ref: Table 3-90 Tx_Data.request message */ +#endif + uint32_t numTlvs; + fapi_tx_dat_tlv_t tlvs[]; +} fapi_tx_pdu_desc_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_tx_data_req +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint16_t numPdus; +#ifdef VZ_VERIPHY_INTEG + fapi_tx_pdu_desc_t_ue_sim pduDesc[]; +#else + fapi_tx_pdu_desc_t_ue_sim pduDesc[]; +#endif +} fapi_tx_data_req_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_pdu_ind_info +{ + uint32_t handle; + uint16_t rnti; + uint8_t harq_id; +#ifndef VZ_VERIPHY_INTEG + uint16_t pdu_length; +#endif + uint8_t ul_cqi; + uint16_t timing_advance; + uint16_t rssi; +#ifdef VZ_VERIPHY_INTEG + uint16_t pduTag; + uint32_t pdu_length; + uint64_t pduDataOrOffset; //Shared memory offset // 5G FAPI Table 3-61 Subset +#else + void* pdu_data; +#endif +} fapi_pdu_ind_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_rx_data_indication +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint16_t num_pdus; + fapi_pdu_ind_info_t_ue_sim pdus[MAX_NUMBER_OF_ULSCH_PDUS_PER_TTI]; +} fapi_rx_data_indication_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_crc_ind_info +{ + uint32_t handle; + uint16_t rnti; + uint8_t harq_id; + uint8_t tb_crc_status; + uint16_t num_cb; + uint8_t cb_crc_status[MAX_NUM_CB_PER_TTI_IN_BYTES]; + uint8_t ul_cqi; + uint16_t timing_advance; + uint16_t rssi; +} fapi_crc_ind_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_crc_ind +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint16_t num_crcs; + fapi_crc_ind_info_t_ue_sim crc[MAX_NUMBER_OF_CRCS_PER_SLOT]; +} fapi_crc_ind_t_ue_sim; + +typedef enum PACK_STRUCT fapi_uci_mux_typ +{ + FAPI_UCI_SR = 1, + FAPI_UCI_HQ = 2, + FAPI_UCI_CSI_P1 = 4, + FAPI_UCI_CSI_P2 = 8, + FAPI_UCI_MUX_TYP_SR_HQ = 3, + FAPI_UCI_MUX_TYP_SR_CSI_1 = 5, + FAPI_UCI_MUX_TYP_HQ_CSI_1 = 6, + FAPI_UCI_MUX_TYP_SR_HQ_CSI_1 = 7 +}fapi_uci_mux_typ_t; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_harq_info +{ + uint8_t harq_crc; + uint16_t harq_bit_len; + uint8_t harq_payload[MAX_HARQ_INFO_LEN_BYTES]; +} fapi_harq_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_csi_p1_info +{ + uint8_t csi_part1_crc; + uint16_t csi_part1_bit_len; + uint8_t csi_part1_payload[MAX_CSI_PART1_DATA_BYTES]; +} fapi_csi_p1_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_csi_p2_info +{ + uint8_t csi_part2_crc; + uint16_t csi_part2_bit_len; + uint8_t csi_part2_payload[MAX_CSI_PART2_DATA_BYTES]; +} fapi_csi_p2_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uci_o_pusch +{ + uint8_t pdu_bitmap; + uint32_t handle; + uint16_t rnti; + uint8_t ul_cqi; + uint16_t timing_advance; + uint16_t rssi; + fapi_harq_info_t_ue_sim harqInfo; // This is included if indicated by the pduBitmap + fapi_csi_p1_info_t_ue_sim csiPart1info; // This is included if indicated by the pduBitmap + fapi_csi_p2_info_t_ue_sim csiPart2info; // This is included if indicated by the pduBitmap +} fapi_uci_o_pusch_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_sr_f0f1_info +{ + uint8_t sr_indication; + uint8_t sr_confidence_level; +} fapi_sr_f0f1_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_harq_f0f1_info +{ + uint8_t num_harq; + uint8_t harq_confidence_level; + uint8_t harq_value[MAX_NUMBER_OF_HARQS_PER_IND]; +} fapi_harq_f0f1_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_sr_f2f3f4_info +{ + uint16_t sr_bitlen; + uint8_t sr_payload[MAX_SR_PAYLOAD_SIZE]; +} fapi_sr_f2f3f4_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_harq_f2f3f4_info +{ + uint8_t harq_crc; + uint16_t harq_bit_len; + uint8_t harq_payload[MAX_HARQ_PAYLOAD_SIZE]; +} fapi_harq_f2f3f4_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uci_o_pucch_f2f3f4 +{ + uint8_t pdu_bitmap; + uint32_t handle; + uint16_t rnti; + uint8_t pucch_format; + uint8_t ul_cqi; + uint16_t timing_advance; + uint16_t rssi; + fapi_sr_f2f3f4_info_t_ue_sim srInfo; // This is included if indicated by the pduBitmap + fapi_harq_f2f3f4_info_t_ue_sim harqInfo; // This is included if indicated by the pduBitmap + fapi_csi_p1_info_t_ue_sim csiPart1Info; // This is included if indicated by the pduBitmap + fapi_csi_p2_info_t_ue_sim csiPart2Info; // This is included if indicated by the pduBitmap +} fapi_uci_o_pucch_f2f3f4_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uci_o_pucch_f0f1 +{ + uint8_t pdu_bitmap; + uint32_t handle; + uint16_t rnti; + uint8_t pucch_format; + uint8_t ul_cqi; + uint16_t timing_advance; + uint16_t rssi; + fapi_sr_f0f1_info_t_ue_sim srInfo; // This is included if indicated by the pduBitmap + fapi_harq_f0f1_info_t_ue_sim harqInfo; // This is included if indicated by the pduBitmap +} fapi_uci_o_pucch_f0f1_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uci_pdu_info +{ + uint16_t pdu_type; + uint16_t pdu_size; + union + { + fapi_uci_o_pusch_t_ue_sim uci_pusch; + fapi_uci_o_pucch_f0f1_t_ue_sim uci_pucch_f0f1; + fapi_uci_o_pucch_f2f3f4_t_ue_sim uci_pucch_f2f3f4; + }u; +} fapi_uci_pdu_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_uci_indication +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint16_t num_ucis; + fapi_uci_pdu_info_t_ue_sim uci_pdu[] ;//max length of the array MAX_NUMBER_UCI_PDUS_PER_SLOT; +} fapi_uci_indication_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_symb_snr +{ + uint16_t numRbs; + uint8_t rbSNR[MAX_NUMBER_RBS]; +} fapi_symb_snr_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_srs_pdu +{ + uint32_t handle; + uint16_t rnti; + uint16_t timingAdvance; + uint8_t numSymbols; + uint8_t wideBandSnr; + uint8_t numReportedSymbols; + fapi_symb_snr_t_ue_sim symbSnr[MAX_NUMBER_OF_REP_SYMBOLS]; +} fapi_srs_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_srs_indication +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint8_t numPdus; + fapi_srs_pdu_t_ue_sim srsPdus[MAX_NUMBER_SRS_PDUS_PER_SLOT]; +} fapi_srs_indication_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_preamble_info +{ + uint8_t preambleIndex; + uint16_t timingAdvance; + uint32_t premblePwr; +#ifdef FAPI_222_10_03 + uint8_t preambleSnr; +#endif +} fapi_preamble_info_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_rach_pdu +{ +#ifdef FAPI_222_10_03 + uint16_t handle; +#else + uint16_t physCellId; +#endif + uint8_t symbolIndex; + uint8_t slotIndex; +#ifdef FAPI_222_10_03 + uint8_t raIndex; +#else + uint8_t freqIndex; +#endif +#ifdef VZ_VERIPHY_INTEG + uint8_t ulCarrierId; +#endif +#ifdef FAPI_222_10_03 + uint16_t avgRssi; +#else + uint8_t avgRssi; +#endif + uint8_t avgSnr; + uint8_t numPreamble; + fapi_preamble_info_t_ue_sim preambleInfo[MAX_NUM_PREAMBLES_PER_SLOT]; +} fapi_rach_pdu_t_ue_sim; + +// Updated per 5G FAPI +typedef struct PACK_STRUCT fapi_rach_indication +{ + fapi_msg_header_t_ue_sim header; + uint16_t sfn; + uint16_t slot; + uint8_t numPdus; + fapi_rach_pdu_t_ue_sim rachPdu[MAX_NUMBER_RACH_PDUS_PER_SLOT]; +} fapi_rach_indication_t_ue_sim; + +/*! + ** \struct pkd_fapi_l1api_msg_frmt + ** \brief This structure is FAPI L1API message format towards L1. + **/ +typedef struct PACK_STRUCT pkd_fapi_l1api_msg_frmt +{ + /*! + * Message Type ID + **/ + uint8_t msg_id; + /** + * Length of vendor-specific message body (bytes) + **/ + uint8_t vendor_spec_msg_len; + /** + * Length of message body (bytes) + **/ + uint16_t msg_len; + /** + * Message Body.(Dummy Field) + **/ + uint8_t* msg_body; + /** + * Vendor message Body.(Dummy Field) + **/ + uint8_t* vendor_spec_msg_body; + +} pkd_fapi_l1api_msg_frmt_t; + + + + +//------------------------------------------------------------------------------ + +#if defined(__cplusplus) +} +#endif +#endif diff --git a/src/fapi_cl/tags b/src/fapi_cl/tags new file mode 100644 index 000000000..1cd67b02a --- /dev/null +++ b/src/fapi_cl/tags @@ -0,0 +1,1576 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +CL_MEM_REGION fapi_cl_utils.h 19;" d +CL_POOL fapi_cl_utils.h 20;" d +ClCb fapi_cl.h /^}ClCb;$/;" t typeref:struct:clCb +DCI_PAYLOAD_BYTE_LEN fapi_interface_ue_sim.h 339;" d +EVT_CNTL_REQUEST fapi_cl.h 28;" d +EVT_DATA_REQUEST fapi_cl.h 27;" d +EVT_RECP_REQUEST fapi_cl.h 26;" d +FAPI_BCH_PAYLOAD_FLAG_TAG fapi_interface_ue_sim.h 153;" d +FAPI_BCH_PAYLOAD_TAG fapi_interface_ue_sim.h 155;" d +FAPI_BEAM_IDX fapi_interface_ue_sim.h 228;" d +FAPI_BEAM_ID_TAG fapi_interface_ue_sim.h 187;" d +FAPI_BETA_PSS_TAG fapi_interface_ue_sim.h 182;" d +FAPI_CAPABILITY_VALIDITY_TAG fapi_interface_ue_sim.h 281;" d +FAPI_CARRIER_CONFIGURATION_TAG fapi_interface_ue_sim.h 128;" d +FAPI_CCE_MAPPING_TYPE_TAG fapi_interface_ue_sim.h 71;" d +FAPI_CL_FREE fapi_cl_utils.h 33;" d +FAPI_CL_MEM_LOG fapi_cl_utils.h 23;" d +FAPI_CL_MEM_LOG fapi_cl_utils.h 29;" d +FAPI_CONFIG_REQUEST fapi_interface_ue_sim.h 32;" d +FAPI_CONFIG_RESPONSE fapi_interface_ue_sim.h 33;" d +FAPI_CORESET_OUTSIDE_FIRST_3_OFDM_SYMS_OF_SLOT_TAG fapi_interface_ue_sim.h 72;" d +FAPI_CRC_INDICATION fapi_interface_ue_sim.h 48;" d +FAPI_CSI_RS_RATE_MATCH_TAG fapi_interface_ue_sim.h 271;" d +FAPI_CYCLIC_PREFIX_TAG fapi_interface_ue_sim.h 65;" d +FAPI_DFE_PROFILE_TAG fapi_interface_ue_sim.h 285;" d +FAPI_DFTS_OFDM_SUPPORT_TAG fapi_interface_ue_sim.h 111;" d +FAPI_DIG_BEAM_WEIGHT_IM fapi_interface_ue_sim.h 230;" d +FAPI_DIG_BEAM_WEIGHT_RE fapi_interface_ue_sim.h 229;" d +FAPI_DL_BANDWIDTH_TAG fapi_interface_ue_sim.h 130;" d +FAPI_DL_FREQUENCY_TAG fapi_interface_ue_sim.h 131;" d +FAPI_DL_GRIDSIZE_TAG fapi_interface_ue_sim.h 133;" d +FAPI_DL_K0_TAG fapi_interface_ue_sim.h 132;" d +FAPI_DL_NODE_SYNC fapi_interface_ue_sim.h 54;" d +FAPI_DL_TTI_REQUEST fapi_interface_ue_sim.h 42;" d +FAPI_DL_TTI_TIMING_OFFSET_TAG fapi_interface_ue_sim.h 289;" d +FAPI_ERROR_INDICATION fapi_interface_ue_sim.h 40;" d +FAPI_FRAME_DUPLEX_TYPE_TAG fapi_interface_ue_sim.h 144;" d +FAPI_FREQUENCY_SHIFT_7P5_KHZ_TAG fapi_interface_ue_sim.h 140;" d +FAPI_INDICATION_INSTANCES_PER_SLOT_TAG fapi_interface_ue_sim.h 125;" d +FAPI_K1_TAG fapi_interface_ue_sim.h 168;" d +FAPI_LTE_CRS_RATE_MATCH_PATTERN_TAG fapi_interface_ue_sim.h 211;" d +FAPI_MAXNUMPDUS_INDL_TTI_TAG fapi_interface_ue_sim.h 258;" d +FAPI_MAXNUMPDUS_INUL_DCI_TAG fapi_interface_ue_sim.h 260;" d +FAPI_MAXNUMPDUS_INUL_TTI_TAG fapi_interface_ue_sim.h 259;" d +FAPI_MAXNUM_PRACH_CONFIGURATIONS_TAG fapi_interface_ue_sim.h 278;" d +FAPI_MAXNUM_UlBWPIDS_TAG fapi_interface_ue_sim.h 264;" d +FAPI_MAX_FREQ_DOMAIN_RES fapi_interface_ue_sim.h 253;" d +FAPI_MAX_MU_MIMO_USERS_DL_TAG fapi_interface_ue_sim.h 91;" d +FAPI_MAX_MU_MIMO_USERS_UL_TAG fapi_interface_ue_sim.h 110;" d +FAPI_MAX_NUMBER_MIMO_LAYERS_CB_PUSCH_TAG fapi_interface_ue_sim.h 274;" d +FAPI_MAX_NUMBER_MIMO_LAYERS_NON_CB_PUSCH_TAG fapi_interface_ue_sim.h 108;" d +FAPI_MAX_NUMBER_MIMO_LAYERS_PDSCH_TAG fapi_interface_ue_sim.h 89;" d +FAPI_MAX_NUM_CW fapi_interface_ue_sim.h 252;" d +FAPI_MAX_NUM_UCIMAPS_TAG fapi_interface_ue_sim.h 280;" d +FAPI_MAX_PDCCHS_PER_SLOT_TAG fapi_interface_ue_sim.h 76;" d +FAPI_MAX_PDSCHS_TBS_PER_SLOT_TAG fapi_interface_ue_sim.h 88;" d +FAPI_MAX_PDUSCHS_TBS_PER_SLOT_TAG fapi_interface_ue_sim.h 107;" d +FAPI_MAX_PRACH_FD_OCCASIONS_IN_A_SLOT_TAG fapi_interface_ue_sim.h 117;" d +FAPI_MAX_PUCCHS_PER_SLOT_TAG fapi_interface_ue_sim.h 79;" d +FAPI_MIB_TAG fapi_interface_ue_sim.h 185;" d +FAPI_MORE_THAN_ONE_INDICATION_PER_SLOT_TAG fapi_interface_ue_sim.h 286;" d +FAPI_MORE_THAN_ONE_REQUEST_PER_SLOT_TAG fapi_interface_ue_sim.h 287;" d +FAPI_MSG_BCH_MISSING fapi_interface_ue_sim.h 242;" d +FAPI_MSG_INVALID_CONFIG fapi_interface_ue_sim.h 239;" d +FAPI_MSG_INVALID_SFN fapi_interface_ue_sim.h 243;" d +FAPI_MSG_INVALID_STATE fapi_interface_ue_sim.h 238;" d +FAPI_MSG_OK fapi_interface_ue_sim.h 237;" d +FAPI_MSG_SFN_OUT_OF_SYNC fapi_interface_ue_sim.h 240;" d +FAPI_MSG_SLOT_ERR fapi_interface_ue_sim.h 241;" d +FAPI_MSG_TX_ERR fapi_interface_ue_sim.h 245;" d +FAPI_MSG_UL_DCI_ERR fapi_interface_ue_sim.h 244;" d +FAPI_MTRP_SUPPORT_TAG fapi_interface_ue_sim.h 288;" d +FAPI_MULTIPLE_CELLS_SSPBCH_IN_A_CARRIER_TAG fapi_interface_ue_sim.h 262;" d +FAPI_MULTIPLE_CELLS_SS_PBCH_IN_A_CARRIER_TAG fapi_interface_ue_sim.h 189;" d +FAPI_MULTI_PRACH_CONFIGURATION_TAG fapi_interface_ue_sim.h 177;" d +FAPI_MULTI_SSB_RESOURCE_CONFIGURATION_TAG fapi_interface_ue_sim.h 194;" d +FAPI_NR_SSB_PERIODICITY_10MS fapi_interface_ue_sim.h /^ FAPI_NR_SSB_PERIODICITY_10MS,$/;" e enum:nr_ssb_periodicity +FAPI_NR_SSB_PERIODICITY_160MS fapi_interface_ue_sim.h /^ FAPI_NR_SSB_PERIODICITY_160MS$/;" e enum:nr_ssb_periodicity +FAPI_NR_SSB_PERIODICITY_20MS fapi_interface_ue_sim.h /^ FAPI_NR_SSB_PERIODICITY_20MS,$/;" e enum:nr_ssb_periodicity +FAPI_NR_SSB_PERIODICITY_40MS fapi_interface_ue_sim.h /^ FAPI_NR_SSB_PERIODICITY_40MS,$/;" e enum:nr_ssb_periodicity +FAPI_NR_SSB_PERIODICITY_5MS fapi_interface_ue_sim.h /^ FAPI_NR_SSB_PERIODICITY_5MS,$/;" e enum:nr_ssb_periodicity +FAPI_NR_SSB_PERIODICITY_80MS fapi_interface_ue_sim.h /^ FAPI_NR_SSB_PERIODICITY_80MS,$/;" e enum:nr_ssb_periodicity +FAPI_NUMOFRATE_MATCH_PATTERN_LTECRC_INPHY_TAG fapi_interface_ue_sim.h 270;" d +FAPI_NUM_ANT_PORTS fapi_interface_ue_sim.h 233;" d +FAPI_NUM_CONFIG_TLVS_TO_REPORT_TYPE_TAG fapi_interface_ue_sim.h 64;" d +FAPI_NUM_DIG_BEAMS fapi_interface_ue_sim.h 226;" d +FAPI_NUM_LAYERS fapi_interface_ue_sim.h 232;" d +FAPI_NUM_OF_RATE_MATCH_PATTERNLTECRCPERSLOT_TAG fapi_interface_ue_sim.h 269;" d +FAPI_NUM_PRACH_FD_OCCASIONS_TAG fapi_interface_ue_sim.h 165;" d +FAPI_NUM_ROOT_SEQUENCES_TAG fapi_interface_ue_sim.h 167;" d +FAPI_NUM_RX_ANT_TAG fapi_interface_ue_sim.h 139;" d +FAPI_NUM_RX_PORTS_TRP1_TAG fapi_interface_ue_sim.h 223;" d +FAPI_NUM_TX_ANT_TAG fapi_interface_ue_sim.h 134;" d +FAPI_NUM_TX_PORTS_TRP1_TAG fapi_interface_ue_sim.h 222;" d +FAPI_NUM_TX_RUS fapi_interface_ue_sim.h 227;" d +FAPI_NUM_UNUSED_ROOT_SEQUENCES_TAG fapi_interface_ue_sim.h 170;" d +FAPI_PARAM_REQUEST fapi_interface_ue_sim.h 30;" d +FAPI_PARAM_RESPONSE fapi_interface_ue_sim.h 31;" d +FAPI_PDCCH_MU_MIMO_TAG fapi_interface_ue_sim.h 74;" d +FAPI_PDCCH_PRECODER_CYCLING_TAG fapi_interface_ue_sim.h 75;" d +FAPI_PDCCH_RATE_MATCH_TAG fapi_interface_ue_sim.h 268;" d +FAPI_PDSCH_ALLOCATION_TYPES_TAG fapi_interface_ue_sim.h 82;" d +FAPI_PDSCH_CBG_SCHEME fapi_interface_ue_sim.h 215;" d +FAPI_PDSCH_CBG_TAG fapi_interface_ue_sim.h 84;" d +FAPI_PDSCH_DATA_IN_DMRS_SYMBOLS_TAG fapi_interface_ue_sim.h 92;" d +FAPI_PDSCH_DMRS_ADDITIONAL_POS_TAG fapi_interface_ue_sim.h 87;" d +FAPI_PDSCH_DMRS_CONFIG_TYPES_TAG fapi_interface_ue_sim.h 85;" d +FAPI_PDSCH_DMRS_MAX_LENGTH_TAG fapi_interface_ue_sim.h 86;" d +FAPI_PDSCH_MAC_PDU_BIT_ALIGNMENT_TAG fapi_interface_ue_sim.h 273;" d +FAPI_PDSCH_MAPPING_TYPE_TAG fapi_interface_ue_sim.h 81;" d +FAPI_PDSCH_NON_SLOT_SUPPORT_TAG fapi_interface_ue_sim.h 94;" d +FAPI_PDSCH_TRANS_TYPE_SUPPORT_TAG fapi_interface_ue_sim.h 272;" d +FAPI_PDSCH_TRANS_TYPE_VALIDITY_TAG fapi_interface_ue_sim.h 146;" d +FAPI_PDSCH_VRB_TO_PRB_MAPPING_TAG fapi_interface_ue_sim.h 83;" d +FAPI_PHY_CELL_ID_TAG fapi_interface_ue_sim.h 143;" d +FAPI_PHY_PARAMS_TAG fapi_interface_ue_sim.h 282;" d +FAPI_PHY_PROFILE_ID_TAG fapi_interface_ue_sim.h 124;" d +FAPI_PHY_PROTOCOL_VERSION_TAG fapi_interface_ue_sim.h 284;" d +FAPI_PHY_STATE_TAG fapi_interface_ue_sim.h 61;" d +FAPI_PM_IDX fapi_interface_ue_sim.h 231;" d +FAPI_POWER_PROFILES_SUPPORTED_TAG fapi_interface_ue_sim.h 257;" d +FAPI_PRACH_CONFIGURATION_TAG fapi_interface_ue_sim.h 160;" d +FAPI_PRACH_CONFIG_INDEX_TAG fapi_interface_ue_sim.h 204;" d +FAPI_PRACH_LONG_FORMATS_TAG fapi_interface_ue_sim.h 114;" d +FAPI_PRACH_MULTIPLE_CARRIERS_IN_A_BAND_TAG fapi_interface_ue_sim.h 173;" d +FAPI_PRACH_MULTIPLE_CARRIERS_IN_A_Band_TAG fapi_interface_ue_sim.h 279;" d +FAPI_PRACH_RESTRICTED_SETS_TAG fapi_interface_ue_sim.h 116;" d +FAPI_PRACH_ROOT_SEQUENCE_INDEX_TAG fapi_interface_ue_sim.h 166;" d +FAPI_PRACH_SEQUENCE_LENGTH_TAG fapi_interface_ue_sim.h 162;" d +FAPI_PRACH_SHORT_FORMATS_TAG fapi_interface_ue_sim.h 115;" d +FAPI_PRACH_SUBC_SPACING_TAG fapi_interface_ue_sim.h 163;" d +FAPI_PRACH_ZERO_CORR_CONF_TAG fapi_interface_ue_sim.h 169;" d +FAPI_PRB_SYMBOL_RATE_MATCH_PATTERN_TAG fapi_interface_ue_sim.h 209;" d +FAPI_PRECODER_GRANULARITY_CORESET_TAG fapi_interface_ue_sim.h 73;" d +FAPI_PRECODER_WEIGHT_IM fapi_interface_ue_sim.h 235;" d +FAPI_PRECODER_WEIGHT_RE fapi_interface_ue_sim.h 234;" d +FAPI_PREMPTIONSUPPORT_TAG fapi_interface_ue_sim.h 93;" d +FAPI_PROTOCOLVERSION_TAG fapi_interface_ue_sim.h 256;" d +FAPI_PUCCHGROUP_AND_SEQUENCE_HOPPING_TAG fapi_interface_ue_sim.h 263;" d +FAPI_PUCCH_AGGREGATION_TAG fapi_interface_ue_sim.h 265;" d +FAPI_PUCCH_FORMATS_TAG fapi_interface_ue_sim.h 78;" d +FAPI_PUCCH_SEMI_STATIC_CONFIG_TAG fapi_interface_ue_sim.h 213;" d +FAPI_PUSCH_AGGREGATION_FACTOR_TAG fapi_interface_ue_sim.h 112;" d +FAPI_PUSCH_ALLOCATION_TYPES_TAG fapi_interface_ue_sim.h 104;" d +FAPI_PUSCH_CBG_TAG fapi_interface_ue_sim.h 102;" d +FAPI_PUSCH_DMRS_ADDITIONAL_POS_TAG fapi_interface_ue_sim.h 101;" d +FAPI_PUSCH_DMRS_CONFIG_TYPES_TAG fapi_interface_ue_sim.h 99;" d +FAPI_PUSCH_DMRS_MAX_LEN_TAG fapi_interface_ue_sim.h 100;" d +FAPI_PUSCH_FREQUENCY_HOPPING_TAG fapi_interface_ue_sim.h 98;" d +FAPI_PUSCH_LBRM_SUPPORT_TAG fapi_interface_ue_sim.h 275;" d +FAPI_PUSCH_MAC_PDU_BIT_ALIGNMENT_TAG fapi_interface_ue_sim.h 277;" d +FAPI_PUSCH_MAPPING_TYPE_TAG fapi_interface_ue_sim.h 103;" d +FAPI_PUSCH_MAX_PTRS_PORTS_TAG fapi_interface_ue_sim.h 106;" d +FAPI_PUSCH_TRANS_TYPE_SUPPORT_TAG fapi_interface_ue_sim.h 276;" d +FAPI_PUSCH_TRANS_TYPE_VALIDITY_TAG fapi_interface_ue_sim.h 147;" d +FAPI_PUSCH_VRB_TO_PRB_MAPPING_TAG fapi_interface_ue_sim.h 105;" d +FAPI_RACH_INDICATION fapi_interface_ue_sim.h 51;" d +FAPI_RELEASE_CAPABILITY_TAG fapi_interface_ue_sim.h 60;" d +FAPI_REQUEST_INSTANCES_PER_SLOT_TAG fapi_interface_ue_sim.h 126;" d +FAPI_RESTRICTED_SET_CONFIG_TAG fapi_interface_ue_sim.h 164;" d +FAPI_RSSI_MEASUREMENT_SUPPORT_TAG fapi_interface_ue_sim.h 119;" d +FAPI_RSSI_MESUREMENT_TAG fapi_interface_ue_sim.h 203;" d +FAPI_RX_DATA_INDICATION fapi_interface_ue_sim.h 47;" d +FAPI_SCS_COMMON_TAG fapi_interface_ue_sim.h 156;" d +FAPI_SKIP_BLANK_DL_CONFIG_TAG fapi_interface_ue_sim.h 62;" d +FAPI_SKIP_BLANK_UL_CONFIG_TAG fapi_interface_ue_sim.h 63;" d +FAPI_SLOT_CONFIG_TAG fapi_interface_ue_sim.h 200;" d +FAPI_SLOT_INDICATION fapi_interface_ue_sim.h 44;" d +FAPI_SRS_INDICATION fapi_interface_ue_sim.h 50;" d +FAPI_SSB_MASK_TAG fapi_interface_ue_sim.h 186;" d +FAPI_SSB_OFFSET_POINT_A_TAG fapi_interface_ue_sim.h 181;" d +FAPI_SSB_PERIOD_TAG fapi_interface_ue_sim.h 183;" d +FAPI_SSB_PER_RACH_TAG fapi_interface_ue_sim.h 172;" d +FAPI_SSB_RATE_MATCH_TAG fapi_interface_ue_sim.h 266;" d +FAPI_SSB_RESOURCE_CONFIGURATION_TAG fapi_interface_ue_sim.h 179;" d +FAPI_SSB_SUBCARRIER_OFFSET_TAG fapi_interface_ue_sim.h 184;" d +FAPI_SSPBCH_MULTIPLE_CARRIERS_IN_A_BAND_TAG fapi_interface_ue_sim.h 261;" d +FAPI_SS_PBCH_BLOCK_POWER_SCALING_TAG fapi_interface_ue_sim.h 152;" d +FAPI_SS_PBCH_MULTIPLE_CARRIERS_IN_A_BAND_TAG fapi_interface_ue_sim.h 188;" d +FAPI_SS_PBCH_POWER_TAG fapi_interface_ue_sim.h 150;" d +FAPI_START_REQUEST fapi_interface_ue_sim.h 34;" d +FAPI_START_RESPONSE fapi_interface_ue_sim.h 36;" d +FAPI_STOP_INDICATION fapi_interface_ue_sim.h 39;" d +FAPI_STOP_REQUEST fapi_interface_ue_sim.h 38;" d +FAPI_SUPPORTED_BANDWIDTH_DL_TAG fapi_interface_ue_sim.h 68;" d +FAPI_SUPPORTED_BANDWIDTH_UL_TAG fapi_interface_ue_sim.h 70;" d +FAPI_SUPPORTED_MAX_MODULATION_ORDER_DL_TAG fapi_interface_ue_sim.h 90;" d +FAPI_SUPPORTED_MODULATION_ORDER_UL_TAG fapi_interface_ue_sim.h 109;" d +FAPI_SUPPORTED_RATE_MATCH_PATTERN_TYPE_TAG fapi_interface_ue_sim.h 267;" d +FAPI_SUPPORTED_SUBCARRIER_SPACING_DL_TAG fapi_interface_ue_sim.h 67;" d +FAPI_SUPPORTED_SUBCARRIER_SPACING_UL_TAG fapi_interface_ue_sim.h 69;" d +FAPI_TDD_PERIOD_TAG fapi_interface_ue_sim.h 197;" d +FAPI_TDD_PERIOD_TAG fapi_interface_ue_sim.h 199;" d +FAPI_TIME_MANAGEMENT_TAG fapi_interface_ue_sim.h 283;" d +FAPI_TIMING_INFO fapi_interface_ue_sim.h 56;" d +FAPI_TIMING_INFO_MODE_TAG fapi_interface_ue_sim.h 218;" d +FAPI_TIMING_INFO_PERIOD_TAG fapi_interface_ue_sim.h 219;" d +FAPI_TIMING_WINDOW_TAG fapi_interface_ue_sim.h 217;" d +FAPI_TX_DATA_REQUEST fapi_interface_ue_sim.h 46;" d +FAPI_TX_DATA_TIMING_OFFSET_TAG fapi_interface_ue_sim.h 292;" d +FAPI_UCI_CONFIGURATION_TAG fapi_interface_ue_sim.h 207;" d +FAPI_UCI_CSI_P1 fapi_interface_ue_sim.h /^ FAPI_UCI_CSI_P1 = 4,$/;" e enum:fapi_uci_mux_typ +FAPI_UCI_CSI_P2 fapi_interface_ue_sim.h /^ FAPI_UCI_CSI_P2 = 8,$/;" e enum:fapi_uci_mux_typ +FAPI_UCI_HQ fapi_interface_ue_sim.h /^ FAPI_UCI_HQ = 2,$/;" e enum:fapi_uci_mux_typ +FAPI_UCI_INDICATION fapi_interface_ue_sim.h 49;" d +FAPI_UCI_MUX_TYP_HQ_CSI_1 fapi_interface_ue_sim.h /^ FAPI_UCI_MUX_TYP_HQ_CSI_1 = 6,$/;" e enum:fapi_uci_mux_typ +FAPI_UCI_MUX_TYP_SR_CSI_1 fapi_interface_ue_sim.h /^ FAPI_UCI_MUX_TYP_SR_CSI_1 = 5, $/;" e enum:fapi_uci_mux_typ +FAPI_UCI_MUX_TYP_SR_HQ fapi_interface_ue_sim.h /^ FAPI_UCI_MUX_TYP_SR_HQ = 3, $/;" e enum:fapi_uci_mux_typ +FAPI_UCI_MUX_TYP_SR_HQ_CSI_1 fapi_interface_ue_sim.h /^ FAPI_UCI_MUX_TYP_SR_HQ_CSI_1 = 7$/;" e enum:fapi_uci_mux_typ +FAPI_UCI_MUX_ULSCH_IN_PUSCH_TAG fapi_interface_ue_sim.h 96;" d +FAPI_UCI_ONLY_PUSCH_TAG fapi_interface_ue_sim.h 97;" d +FAPI_UCI_SR fapi_interface_ue_sim.h /^ FAPI_UCI_SR = 1,$/;" e enum:fapi_uci_mux_typ +FAPI_UL_DCI_REQUEST fapi_interface_ue_sim.h 45;" d +FAPI_UL_DCI_TIMING_OFFSET_TAG fapi_interface_ue_sim.h 291;" d +FAPI_UL_GRID_SIZE_TAG fapi_interface_ue_sim.h 138;" d +FAPI_UL_K0_TAG fapi_interface_ue_sim.h 137;" d +FAPI_UL_NODE_SYNC fapi_interface_ue_sim.h 55;" d +FAPI_UL_TTI_REQUEST fapi_interface_ue_sim.h 43;" d +FAPI_UL_TTI_TIMING_OFFSET_TAG fapi_interface_ue_sim.h 290;" d +FAPI_UNUSED_ROOT_SEQUENCES_TAG fapi_interface_ue_sim.h 171;" d +FAPI_UPLINK_BANDWIDTH_TAG fapi_interface_ue_sim.h 135;" d +FAPI_UPLINK_FREQUENCY_TAG fapi_interface_ue_sim.h 136;" d +IntraSlotFrequencyHopping fapi_interface_ue_sim.h /^ uint8_t IntraSlotFrequencyHopping;$/;" m struct:fapi_ul_pusch_pdu +MAX_BUF_LEN fapi_cl.h 24;" d +MAX_CSI_PART1_DATA_BYTES fapi_interface_ue_sim.h 356;" d +MAX_CSI_PART2_DATA_BYTES fapi_interface_ue_sim.h 357;" d +MAX_HARQ_INFO_LEN_BYTES fapi_interface_ue_sim.h 355;" d +MAX_HARQ_PAYLOAD_SIZE fapi_interface_ue_sim.h 360;" d +MAX_NDLTYPES_DL_TTI_REQ fapi_interface_ue_sim.h 370;" d +MAX_NDLTYPES_UL_DCI_REQ fapi_interface_ue_sim.h 371;" d +MAX_NUMBER_DCI_PDUS_PER_TTI fapi_interface_ue_sim.h 348;" d +MAX_NUMBER_DL_DCI fapi_interface_ue_sim.h 340;" d +MAX_NUMBER_DL_PDUS_PER_TTI fapi_interface_ue_sim.h 342;" d +MAX_NUMBER_OF_BEAMS fapi_interface_ue_sim.h 313;" d +MAX_NUMBER_OF_CODEWORDS_PER_PDU fapi_interface_ue_sim.h 341;" d +MAX_NUMBER_OF_CRCS_PER_SLOT fapi_interface_ue_sim.h 354;" d +MAX_NUMBER_OF_GROUPS_PER_TTI fapi_interface_ue_sim.h 346;" d +MAX_NUMBER_OF_HARQS_PER_IND fapi_interface_ue_sim.h 358;" d +MAX_NUMBER_OF_INVALID_IDLE_ONLY_TLVS fapi_interface_ue_sim.h 334;" d +MAX_NUMBER_OF_INVALID_RUNNING_ONLY_TLVS fapi_interface_ue_sim.h 335;" d +MAX_NUMBER_OF_MISSING_TLVS fapi_interface_ue_sim.h 336;" d +MAX_NUMBER_OF_PDUS_PER_TTI fapi_interface_ue_sim.h 352;" d +MAX_NUMBER_OF_REP_SYMBOLS fapi_interface_ue_sim.h 363;" d +MAX_NUMBER_OF_TLVS_PER_PDU fapi_interface_ue_sim.h 349;" d +MAX_NUMBER_OF_UES_PER_TTI fapi_interface_ue_sim.h 343;" d +MAX_NUMBER_OF_ULSCH_PDUS_PER_TTI fapi_interface_ue_sim.h 353;" d +MAX_NUMBER_RACH_PDUS_PER_SLOT fapi_interface_ue_sim.h 366;" d +MAX_NUMBER_RBS fapi_interface_ue_sim.h 362;" d +MAX_NUMBER_SRS_PDUS_PER_SLOT fapi_interface_ue_sim.h 364;" d +MAX_NUMBER_TX_PDUS_PER_TTI fapi_interface_ue_sim.h 350;" d +MAX_NUMBER_TX_RUS fapi_interface_ue_sim.h 311;" d +MAX_NUMBER_UCI_PDUS_PER_SLOT fapi_interface_ue_sim.h 361;" d +MAX_NUMBER_UL_PDUS_PER_TTI fapi_interface_ue_sim.h 347;" d +MAX_NUMBER_UNSUPPORTED_TLVS fapi_interface_ue_sim.h 333;" d +MAX_NUM_ANT_PORTS fapi_interface_ue_sim.h 314;" d +MAX_NUM_CB_PER_TTI_IN_BYTES fapi_interface_ue_sim.h 344;" d +MAX_NUM_DIGBFINTERFACES fapi_interface_ue_sim.h 337;" d +MAX_NUM_LAYERS fapi_interface_ue_sim.h 315;" d +MAX_NUM_OF_SYMBOLS_PER_SLOT fapi_interface_ue_sim.h 309;" d +MAX_NUM_PRACH_FD_OCCASIONS fapi_interface_ue_sim.h 308;" d +MAX_NUM_PREAMBLES_PER_SLOT fapi_interface_ue_sim.h 365;" d +MAX_NUM_PRGS_PER_TTI fapi_interface_ue_sim.h 338;" d +MAX_NUM_PTRS_PORTS fapi_interface_ue_sim.h 345;" d +MAX_NUM_TLVS_CARRIER_CONFIG fapi_interface_ue_sim.h 321;" d +MAX_NUM_TLVS_CELL_CONFIG fapi_interface_ue_sim.h 317;" d +MAX_NUM_TLVS_CELL_CONFIG fapi_interface_ue_sim.h 319;" d +MAX_NUM_TLVS_CONFIG fapi_interface_ue_sim.h 329;" d +MAX_NUM_TLVS_CONFIG fapi_interface_ue_sim.h 331;" d +MAX_NUM_TLVS_MEAS_CONFIG fapi_interface_ue_sim.h 327;" d +MAX_NUM_TLVS_PDCCH_CONFIG fapi_interface_ue_sim.h 322;" d +MAX_NUM_TLVS_PDSCH_CONFIG fapi_interface_ue_sim.h 324;" d +MAX_NUM_TLVS_PRACH_CONFIG fapi_interface_ue_sim.h 326;" d +MAX_NUM_TLVS_PUCCH_CONFIG fapi_interface_ue_sim.h 323;" d +MAX_NUM_TLVS_PUSCH_CONFIG fapi_interface_ue_sim.h 325;" d +MAX_NUM_UL_TYPES fapi_interface_ue_sim.h 373;" d +MAX_NUM_UNUSED_ROOT_SEQUENCES fapi_interface_ue_sim.h 307;" d +MAX_PDU_LENGTH fapi_interface_ue_sim.h 351;" d +MAX_SIGNAL_INDEX fapi_interface_ue_sim.h 372;" d +MAX_SR_PAYLOAD_SIZE fapi_interface_ue_sim.h 359;" d +MAX_TDD_PERIODICITY fapi_interface_ue_sim.h 310;" d +MSG_INVALID_DFE_Profile fapi_interface_ue_sim.h 249;" d +MSG_INVALID_PHY_ID fapi_interface_ue_sim.h 247;" d +MSG_UNINSTANTIATED_PHY fapi_interface_ue_sim.h 248;" d +NUMEROLOGIES fapi_interface_ue_sim.h 306;" d +PACK_STRUCT fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT$/;" s +PACK_STRUCT fapi_interface_ue_sim.h 12;" d +PHY_Profile_Selection_incompatible fapi_interface_ue_sim.h 250;" d +SELF_IP fapi_cl.h 19;" d +SELF_PORT fapi_cl.h 20;" d +TA_AVG_TIME fapi_interface_ue_sim.h 367;" d +TA_AVG_TIMElog2 fapi_interface_ue_sim.h 368;" d +UE_SIM_IP fapi_cl.h 21;" d +UE_SIM_PORT fapi_cl.h 22;" d +_FAPI_INTERFACE_UE_SIM_H_ fapi_interface_ue_sim.h 9;" d +add_dmrs_flag fapi_interface_ue_sim.h /^ uint8_t add_dmrs_flag;$/;" m struct:fapi_ul_pucch_pdu +aggregation_level fapi_interface_ue_sim.h /^ uint8_t aggregation_level;$/;" m struct:fapi_dl_dci +alpha_scaling fapi_interface_ue_sim.h /^ uint8_t alpha_scaling;$/;" m struct:fapi_pusch_uci +avgRssi fapi_interface_ue_sim.h /^ uint16_t avgRssi;$/;" m struct:fapi_rach_pdu +avgRssi fapi_interface_ue_sim.h /^ uint8_t avgRssi;$/;" m struct:fapi_rach_pdu +avgSnr fapi_interface_ue_sim.h /^ uint8_t avgSnr; $/;" m struct:fapi_rach_pdu +bandwidth_index fapi_interface_ue_sim.h /^ uint8_t bandwidth_index;$/;" m struct:fapi_ul_srs_pdu +basic fapi_interface_ue_sim.h /^ fapi_basic_parms_t basic;$/;" m struct:fapi_dl_csi_rs_mnt_parms +basicParams fapi_interface_ue_sim.h /^ fapi_ssb_basic_parms_t basicParams;$/;" m struct:fapi_dl_ssb_pbch_mnt_parms +bchPayload fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim bchPayload;$/;" m struct:fapi_ssb_config +bchPayloadFlag fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim bchPayloadFlag;$/;" m struct:fapi_ssb_pwr_pbch_config +bch_payload fapi_interface_ue_sim.h /^ uint32_t bch_payload;$/;" m union:fapi_bch_payload::__anon2 +bch_payload fapi_interface_ue_sim.h /^ fapi_bch_payload_t_ue_sim bch_payload;$/;" m struct:fapi_dl_ssb_pdu +bch_payload_flag fapi_interface_ue_sim.h /^ uint8_t bch_payload_flag;$/;" m struct:fapi_dl_ssb_pdu +beamId fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim beamId[64];$/;" m struct:fapi_ssb_table +beamId fapi_interface_ue_sim.h /^ uint8_t beamId[64];$/;" m struct:fapi_ssb_res_config_table +beamIdx fapi_interface_ue_sim.h /^ uint16_t beamIdx;$/;" m struct:fapi_dig_beam_config +beam_idx fapi_interface_ue_sim.h /^ fapi_bmi_t_ue_sim beam_idx[];$/;" m struct:fapi_pmi_bfi +beam_idx fapi_interface_ue_sim.h /^ uint16_t beam_idx[][1];$/;" m struct:fapi_bmform +beamforming fapi_interface_ue_sim.h /^ fapi_bmform_t beamforming;$/;" m struct:fapi_ul_prach_pdu +beamforming fapi_interface_ue_sim.h /^ fapi_bmform_t beamforming;$/;" m struct:fapi_ul_pucch_pdu +beamforming fapi_interface_ue_sim.h /^ fapi_bmform_t beamforming;$/;" m struct:fapi_ul_pusch_pdu +beamforming fapi_interface_ue_sim.h /^ fapi_bmform_t beamforming;$/;" m struct:fapi_ul_srs_pdu +beamformingTable fapi_interface_ue_sim.h /^ fapi_beamforming_table_t_ue_sim beamformingTable;$/;" m struct:fapi_config +beamformingTable fapi_interface_ue_sim.h /^ fapi_beamforming_table_t_ue_sim beamformingTable;$/;" m struct:fapi_config +beamidx fapi_interface_ue_sim.h /^ uint16_t beamidx;$/;" m struct:fapi_bmi +betaPSSProfileSSS fapi_interface_ue_sim.h /^ uint16_t betaPSSProfileSSS;$/;" m struct:fapi_ssb_tx_pwr_info +betaPss fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim betaPss;$/;" m struct:fapi_ssb_table +betaPssProfileNR fapi_interface_ue_sim.h /^ uint8_t betaPssProfileNR;$/;" m struct:fapi_dl_ssb_pdu +betaPssProfileNR fapi_interface_ue_sim.h /^ uint8_t betaPssProfileNR;$/;" m struct:fapi_ssb_res_config_table +betaPssProfileSSS fapi_interface_ue_sim.h /^ int16_t betaPssProfileSSS;$/;" m struct:fapi_ssb_res_config_table +beta_offset_csi1 fapi_interface_ue_sim.h /^ uint8_t beta_offset_csi1;$/;" m struct:fapi_pusch_uci +beta_offset_csi2 fapi_interface_ue_sim.h /^ uint8_t beta_offset_csi2;$/;" m struct:fapi_pusch_uci +beta_offset_harq_ack fapi_interface_ue_sim.h /^ uint8_t beta_offset_harq_ack;$/;" m struct:fapi_pusch_uci +beta_pdcch_1_0 fapi_interface_ue_sim.h /^ uint8_t beta_pdcch_1_0;$/;" m struct:fapi_tx_power_info +beta_pss fapi_interface_ue_sim.h /^ uint8_t beta_pss;$/;" m struct:fapi_dl_ssb_pdu +bit_len_csi_part1 fapi_interface_ue_sim.h /^ uint16_t bit_len_csi_part1;$/;" m struct:fapi_ul_pucch_pdu +bit_len_csi_part2 fapi_interface_ue_sim.h /^ uint16_t bit_len_csi_part2;$/;" m struct:fapi_ul_pucch_pdu +bit_len_harq fapi_interface_ue_sim.h /^ uint16_t bit_len_harq;$/;" m struct:fapi_ul_pucch_pdu +bwp fapi_interface_ue_sim.h /^ fapi_bwp_t bwp;$/;" m struct:fapi_dl_pdsch_pdu +bwp fapi_interface_ue_sim.h /^ fapi_bwp_t bwp;$/;" m struct:fapi_ul_pucch_pdu +bwp fapi_interface_ue_sim.h /^ fapi_bwp_t bwp;$/;" m struct:fapi_ul_pusch_pdu +bwp fapi_interface_ue_sim.h /^ fapi_bwp_t bwp;$/;" m struct:fapi_ul_srs_pdu +bwp fapi_interface_ue_sim.h /^ fapi_bwp_t bwp;$/;" m struct:fapi_dl_pdcch_pdu +bwp_size fapi_interface_ue_sim.h /^ uint16_t bwp_size; \/* BWP configuration Start *\/$/;" m struct:fapi_bwp +bwp_size fapi_interface_ue_sim.h /^ uint16_t bwp_size;$/;" m struct:fapi_ul_pucch_pdu +bwp_size fapi_interface_ue_sim.h /^ uint16_t bwp_size;$/;" m struct:fapi_ul_pusch_pdu +bwp_size fapi_interface_ue_sim.h /^ uint16_t bwp_size;$/;" m struct:fapi_ul_srs_pdu +bwp_start fapi_interface_ue_sim.h /^ uint16_t bwp_start;$/;" m struct:fapi_bwp +bwp_start fapi_interface_ue_sim.h /^ uint16_t bwp_start;$/;" m struct:fapi_ul_pucch_pdu +bwp_start fapi_interface_ue_sim.h /^ uint16_t bwp_start;$/;" m struct:fapi_ul_pusch_pdu +bwp_start fapi_interface_ue_sim.h /^ uint16_t bwp_start;$/;" m struct:fapi_ul_srs_pdu +capability fapi_interface_ue_sim.h /^ fapi_capability_t capability[];$/;" m struct:fapi_capability_validity +capabilityTag fapi_interface_ue_sim.h /^ uint16_t capabilityTag;$/;" m struct:fapi_capability +capabilityValidity fapi_interface_ue_sim.h /^ fapi_capability_validity_t capabilityValidity;$/;" m struct:fapi_params +carrParms fapi_interface_ue_sim.h /^ fapi_carrier_parms_t_ue_sim carrParms;$/;" m struct:fapi_params +carrierBandwidthDL fapi_interface_ue_sim.h /^ uint8_t carrierBandwidthDL;$/;" m struct:fapi_lte_crs_rm_ptrn +carrierConfig fapi_interface_ue_sim.h /^ fapi_carrier_config_t_ue_sim carrierConfig;$/;" m struct:fapi_config +carrierConfig fapi_interface_ue_sim.h /^ fapi_carrier_config_t_ue_sim carrierConfig;$/;" m struct:fapi_config +carrierConfig fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim carrierConfig;$/;" m struct:fapi_carrier_config +carrierFreqDL fapi_interface_ue_sim.h /^ uint16_t carrierFreqDL;$/;" m struct:fapi_lte_crs_rm_ptrn +cases fapi_interface_ue_sim.h /^ uint8_t cases;$/;" m struct:fapi_ssb_basic_parms +cases fapi_interface_ue_sim.h /^ uint8_t cases;$/;" m struct:fapi_ssb_res_config_table +cb_crc_status fapi_interface_ue_sim.h /^ uint8_t cb_crc_status[MAX_NUM_CB_PER_TTI_IN_BYTES];$/;" m struct:fapi_crc_ind_info +cb_present_and_position fapi_interface_ue_sim.h /^ uint8_t cb_present_and_position[1];$/;" m struct:fapi_pusch_data +cbgTxInfo fapi_interface_ue_sim.h /^ uint8_t cbgTxInfo;$/;" m struct:fapi_dl_code_word +cbg_info fapi_interface_ue_sim.h /^ fapi_dl_pdsch_cbg_info_t cbg_info;$/;" m struct:fapi_dl_pdsch_pdu +cceMappingType fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim cceMappingType;$/;" m struct:fapi_pdcch_parms +cce_index fapi_interface_ue_sim.h /^ uint8_t cce_index;$/;" m struct:fapi_dl_dci +cce_reg_mapping_type fapi_interface_ue_sim.h /^ uint8_t cce_reg_mapping_type;$/;" m struct:fapi_coreset +cdm_type fapi_interface_ue_sim.h /^ uint8_t cdm_type;$/;" m struct:fapi_dl_csi_rs_pdu +cellConfig fapi_interface_ue_sim.h /^ fapi_cell_config_t_ue_sim cellConfig;$/;" m struct:fapi_config +cellConfig fapi_interface_ue_sim.h /^ fapi_cell_config_t_ue_sim cellConfig;$/;" m struct:fapi_config +cellParms fapi_interface_ue_sim.h /^ fapi_cell_parms_t_ue_sim cellParms;$/;" m struct:fapi_params +cell_barred fapi_interface_ue_sim.h /^ uint8_t cell_barred;$/;" m struct:fapi_phy_mib_pdu +clCb fapi_cl.h /^ClCb clCb;$/;" v +clCb fapi_cl.h /^typedef struct clCb$/;" s +codeWord fapi_interface_ue_sim.h /^ fapi_dl_code_word_t codeWord[0];$/;" m struct:fapi_dl_tx_pwr_info +codewordInfo fapi_interface_ue_sim.h /^ fapi_dl_codeword_info_t codewordInfo;$/;" m struct:fapi_dl_pdsch_mnt_parms +collocatedAl16Candidate fapi_interface_ue_sim.h /^ uint8_t collocatedAl16Candidate;$/;" m struct:fapi_dci_specific_parms +comb_offset fapi_interface_ue_sim.h /^ uint8_t comb_offset;$/;" m struct:fapi_ul_srs_pdu +comb_size fapi_interface_ue_sim.h /^ uint8_t comb_size;$/;" m struct:fapi_ul_srs_pdu +config_index fapi_interface_ue_sim.h /^ uint8_t config_index;$/;" m struct:fapi_ul_srs_pdu +configured fapi_cl.h /^ bool configured;$/;" m struct:clCb +convertConfigRequest fapi_cl_mac2phy.c /^void convertConfigRequest(uint8_t handle, void *msg, uint16_t msgLen)$/;" f +core_set_type fapi_interface_ue_sim.h /^ uint8_t core_set_type;$/;" m struct:fapi_coreset +coreset fapi_interface_ue_sim.h /^ fapi_coreset_t coreset;$/;" m struct:fapi_dl_pdcch_pdu +coresetOutsideFirst3OfdmSymsOfSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim coresetOutsideFirst3OfdmSymsOfSlot;$/;" m struct:fapi_pdcch_parms +coresetParms fapi_interface_ue_sim.h /^ fapi_coreset_parms_t coresetParms;$/;" m struct:fapi_pdcch_mnt_parms +coresetRmPatrn fapi_interface_ue_sim.h /^ fapi_dl_coreset_rm_patrn_t coresetRmPatrn[0];$/;" m struct:fapi_dl_rate_match_ref +coresetStartPoint fapi_interface_ue_sim.h /^ uint16_t coresetStartPoint;$/;" m struct:fapi_dl_pdsch_mnt_parms +crc fapi_interface_ue_sim.h /^ fapi_crc_ind_info_t_ue_sim crc[MAX_NUMBER_OF_CRCS_PER_SLOT];$/;" m struct:fapi_crc_ind +crsRateMatchPatternID fapi_interface_ue_sim.h /^ uint8_t crsRateMatchPatternID;$/;" m struct:fapi_lte_crs_rm_ptrn +csiPart1BitLength fapi_interface_ue_sim.h /^ uint16_t csiPart1BitLength;$/;" m struct:fapi_ul_pucch_pdu +csiPart1Info fapi_interface_ue_sim.h /^ fapi_csi_p1_info_t_ue_sim csiPart1Info; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pucch_f2f3f4 +csiPart1info fapi_interface_ue_sim.h /^ fapi_csi_p1_info_t_ue_sim csiPart1info; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pusch +csiPart2Info fapi_interface_ue_sim.h /^ fapi_csi_p2_info_t_ue_sim csiPart2Info; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pucch_f2f3f4 +csiPart2info fapi_interface_ue_sim.h /^ fapi_csi_p2_info_t_ue_sim csiPart2info; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pusch +csiRsForRaMa fapi_interface_ue_sim.h /^ uint16_t csiRsForRaMa[0]; \/\/ side depends on numCsiRsForRaMa $/;" m struct:fapi_dl_rate_match_ref +csiRsMntParms fapi_interface_ue_sim.h /^ fapi_dl_csi_rs_mnt_parms_t csiRsMntParms;$/;" m struct:fapi_dl_csi_rs_pdu +csiRsPduIndex fapi_interface_ue_sim.h /^ uint16_t csiRsPduIndex; $/;" m struct:fapi_basic_parms +csiRsPowerOffsetProfileSSS fapi_interface_ue_sim.h /^ uint16_t csiRsPowerOffsetProfileSSS; $/;" m struct:ifapi_csi_rs_tx_pwr_info +csiRsRateMatch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim csiRsRateMatch;$/;" m struct:fapi_pdsch_parms +csi_part1_bit_len fapi_interface_ue_sim.h /^ uint16_t csi_part1_bit_len;$/;" m struct:fapi_csi_p1_info +csi_part1_bit_length fapi_interface_ue_sim.h /^ uint16_t csi_part1_bit_length;$/;" m struct:fapi_pusch_uci +csi_part1_crc fapi_interface_ue_sim.h /^ uint8_t csi_part1_crc;$/;" m struct:fapi_csi_p1_info +csi_part1_payload fapi_interface_ue_sim.h /^ uint8_t csi_part1_payload[MAX_CSI_PART1_DATA_BYTES];$/;" m struct:fapi_csi_p1_info +csi_part2_bit_len fapi_interface_ue_sim.h /^ uint16_t csi_part2_bit_len;$/;" m struct:fapi_csi_p2_info +csi_part2_bit_length fapi_interface_ue_sim.h /^ uint16_t csi_part2_bit_length;$/;" m struct:fapi_pusch_uci +csi_part2_crc fapi_interface_ue_sim.h /^ uint8_t csi_part2_crc;$/;" m struct:fapi_csi_p2_info +csi_part2_payload fapi_interface_ue_sim.h /^ uint8_t csi_part2_payload[MAX_CSI_PART2_DATA_BYTES];$/;" m struct:fapi_csi_p2_info +csi_rs_pdu fapi_interface_ue_sim.h /^ fapi_dl_csi_rs_pdu_t_ue_sim csi_rs_pdu;$/;" m union:fapi_dl_tti_req_pdu::__anon3 +csi_type fapi_interface_ue_sim.h /^ uint8_t csi_type;$/;" m struct:fapi_dl_csi_rs_pdu +cwIndex fapi_interface_ue_sim.h /^ uint8_t cwIndex; \/* Ref: Table 3-90 Tx_Data.request message *\/$/;" m struct:fapi_tx_pdu_desc +cw_info fapi_interface_ue_sim.h /^ fapi_codeword_pdu_t_ue_sim cw_info[FAPI_MAX_NUM_CW]; \/* SCF : Code Word Info End *\/$/;" m struct:fapi_dl_pdsch_pdu +cyclicPrefix fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim cyclicPrefix;$/;" m struct:fapi_carrier_parms +cyclicPrefix fapi_interface_ue_sim.h /^ uint8_t cyclicPrefix; \/* BWP Configuration End*\/$/;" m struct:fapi_dl_csi_rs_pdu +cyclic_prefix fapi_interface_ue_sim.h /^ uint8_t cyclic_prefix; \/* BWP Configuration End*\/$/;" m struct:fapi_bwp +cyclic_prefix fapi_interface_ue_sim.h /^ uint8_t cyclic_prefix;$/;" m struct:fapi_ul_pucch_pdu +cyclic_prefix fapi_interface_ue_sim.h /^ uint8_t cyclic_prefix;$/;" m struct:fapi_ul_pusch_pdu +cyclic_prefix fapi_interface_ue_sim.h /^ uint8_t cyclic_prefix;$/;" m struct:fapi_ul_srs_pdu +cyclic_shift fapi_interface_ue_sim.h /^ uint8_t cyclic_shift;$/;" m struct:fapi_ul_srs_pdu +data_scrambling_id fapi_interface_ue_sim.h /^ uint16_t data_scrambling_id;$/;" m struct:fapi_dl_pdsch_pdu +data_scrambling_id fapi_interface_ue_sim.h /^ uint16_t data_scrambling_id;$/;" m struct:fapi_ul_pucch_pdu +data_scrambling_id fapi_interface_ue_sim.h /^ uint16_t data_scrambling_id;$/;" m struct:fapi_ul_pusch_pdu +dciIndex fapi_interface_ue_sim.h /^ uint16_t dciIndex;$/;" m struct:fapi_dl_rate_match_ref +dciIndex fapi_interface_ue_sim.h /^ uint16_t dciIndex;$/;" m struct:fapi_dci_specific_parms +dciSpecificParms fapi_interface_ue_sim.h /^ fapi_dci_specific_parms_t dciSpecificParms;$/;" m struct:fapi_pdcch_mnt_parms +delayManagementParms fapi_interface_ue_sim.h /^ fapi_delay_management_parms_t delayManagementParms;$/;" m struct:fapi_params +delayMgmtConfig fapi_interface_ue_sim.h /^ fapi_delay_mgmt_config_t delayMgmtConfig;$/;" m struct:fapi_config +deltaBwp0StartFromActiveBwp fapi_interface_ue_sim.h /^ uint16_t deltaBwp0StartFromActiveBwp;$/;" m struct:fapi_pusch_mnt_parms +dfeProfile fapi_interface_ue_sim.h /^ fapi_dfe_profile_t dfeProfile;$/;" m struct:fapi_params +dfe_profile fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim dfe_profile;$/;" m struct:fapi_dfe_profile +dftsOfdmSupport fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim dftsOfdmSupport;$/;" m struct:fapi_pusch_parms +dfts_ofdm fapi_interface_ue_sim.h /^ fapi_dfts_ofdm_t_ue_sim dfts_ofdm;$/;" m struct:fapi_ul_pusch_pdu +digBeam fapi_interface_ue_sim.h /^ fapi_dig_beam_config_t_ue_sim digBeam[MAX_NUMBER_OF_BEAMS];$/;" m struct:fapi_beamforming_table +digBeamWeight fapi_interface_ue_sim.h /^ fapi_dig_beam_weight_t_ue_sim digBeamWeight[MAX_NUMBER_TX_RUS];$/;" m struct:fapi_dig_beam_config +digBeamWeightIm fapi_interface_ue_sim.h /^ int16_t digBeamWeightIm;$/;" m struct:fapi_dig_beam_weight +digBeamWeightRe fapi_interface_ue_sim.h /^ int16_t digBeamWeightRe;$/;" m struct:fapi_dig_beam_weight +dig_bf_interfaces fapi_interface_ue_sim.h /^ uint8_t dig_bf_interfaces;$/;" m struct:fapi_bmform +dig_bf_interfaces fapi_interface_ue_sim.h /^ uint8_t dig_bf_interfaces;$/;" m struct:fapi_precoding_bmform +dlBandwidth fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim dlBandwidth;$/;" m struct:fapi_carrier_config +dlBandwidth fapi_interface_ue_sim.h /^ uint16_t dlBandwidth;$/;" m struct:fapi_carrier_config +dlFrequency fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim dlFrequency;$/;" m struct:fapi_carrier_config +dlFrequency fapi_interface_ue_sim.h /^ uint32_t dlFrequency;$/;" m struct:fapi_carrier_config +dlGridSize fapi_interface_ue_sim.h /^ fapi_config_num_tlv_t dlGridSize;$/;" m struct:fapi_carrier_config +dlGridSize fapi_interface_ue_sim.h /^ fapi_config_num_tlv_t dlGridSize;$/;" m struct:fapi_carrier_config +dlGridSize fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim dlGridSize[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +dlGridSize fapi_interface_ue_sim.h /^ uint16_t dlGridSize[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +dlPdschMntparms fapi_interface_ue_sim.h /^ fapi_dl_pdsch_mnt_parms_t dlPdschMntparms;$/;" m struct:fapi_dl_pdsch_pdu +dlPdschPtrsMntParms fapi_interface_ue_sim.h /^ fapi_dl_pdsch_ptrs_mnt_parms_t dlPdschPtrsMntParms;$/;" m struct:fapi_dl_pdsch_pdu +dlPortRangeLen fapi_interface_ue_sim.h /^ uint16_t dlPortRangeLen[0];$/;" m struct:fapi_phy_port +dlPortRangeStart fapi_interface_ue_sim.h /^ uint16_t dlPortRangeStart[0]; \/* Start of each range of DL ports, depends on Number of DL port ranges for this PHYs*\/$/;" m struct:fapi_phy_port +dlTbCrc fapi_interface_ue_sim.h /^ uint32_t dlTbCrc[2];$/;" m struct:fapi_dl_pdsch_cbg_info +dl_dci fapi_interface_ue_sim.h /^ fapi_dl_dci_t_ue_sim dl_dci[0];$/;" m struct:fapi_dl_pdcch_pdu +dl_dmrs_scrambling_id fapi_interface_ue_sim.h /^ uint16_t dl_dmrs_scrambling_id;$/;" m struct:fapi_dmrs +dl_dmrs_symb_pos fapi_interface_ue_sim.h /^ uint16_t dl_dmrs_symb_pos; \/*SCF: DMRS Config Start *\/$/;" m struct:fapi_dmrs +dl_tb_crc fapi_interface_ue_sim.h /^ uint32_t dl_tb_crc;$/;" m struct:fapi_dl_pdsch_cbg_info +dl_tti_timing_offset fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim dl_tti_timing_offset;$/;" m struct:fapi_delay_management_parms +dlk0 fapi_interface_ue_sim.h /^ fapi_config_num_tlv_t dlk0;$/;" m struct:fapi_carrier_config +dlk0 fapi_interface_ue_sim.h /^ fapi_config_num_tlv_t dlk0;$/;" m struct:fapi_carrier_config +dlk0 fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim dlk0[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +dlk0 fapi_interface_ue_sim.h /^ uint16_t dlk0[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +dmrs fapi_interface_ue_sim.h /^ fapi_dmrs_t dmrs;$/;" m struct:fapi_dl_pdsch_pdu +dmrs_config_type fapi_interface_ue_sim.h /^ uint8_t dmrs_config_type;$/;" m struct:fapi_dmrs +dmrs_config_type fapi_interface_ue_sim.h /^ uint8_t dmrs_config_type;$/;" m struct:fapi_ul_pusch_pdu +dmrs_cyclic_shift fapi_interface_ue_sim.h /^ uint8_t dmrs_cyclic_shift;$/;" m struct:fapi_ul_pucch_pdu +dmrs_ports fapi_interface_ue_sim.h /^ uint16_t dmrs_ports; \/*SCF: DMRS Config End *\/$/;" m struct:fapi_dmrs +dmrs_ports fapi_interface_ue_sim.h /^ uint16_t dmrs_ports;$/;" m struct:fapi_ul_pusch_pdu +dmrs_scrambling_id fapi_interface_ue_sim.h /^ uint16_t dmrs_scrambling_id;$/;" m struct:fapi_ul_pucch_pdu +dmrs_type_a_position fapi_interface_ue_sim.h /^ uint8_t dmrs_type_a_position;$/;" m struct:fapi_phy_mib_pdu +dstAddr fapi_cl.h /^ struct sockaddr_in dstAddr;$/;" m struct:clCb typeref:struct:clCb::sockaddr_in +duration_symbols fapi_interface_ue_sim.h /^ uint8_t duration_symbols;$/;" m struct:fapi_coreset +errorCode fapi_interface_ue_sim.h /^ uint8_t errorCode;$/;" m struct:fapi_start_resp +error_code fapi_interface_ue_sim.h /^ uint8_t error_code;$/;" m struct:fapi_config_resp +error_code fapi_interface_ue_sim.h /^ uint8_t error_code;$/;" m struct:fapi_error_ind +error_code fapi_interface_ue_sim.h /^ uint8_t error_code;$/;" m struct:fapi_param_resp +expectedSFN fapi_interface_ue_sim.h /^ uint16_t expectedSFN;$/;" m struct:fapi_error_ind +expectedSlot fapi_interface_ue_sim.h /^ uint16_t expectedSlot;$/;" m struct:fapi_error_ind +fapiClProcessMac2UeSimFapiMsg fapi_cl_mac2phy.c /^void fapiClProcessMac2UeSimFapiMsg(void *msg)$/;" f +fapiClProcessUeSim2MacFapiMsg fapi_cl_phy2mac.c /^void fapiClProcessUeSim2MacFapiMsg(Data *msg)$/;" f +fapi_basic_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_basic_parms$/;" s +fapi_basic_parms_t fapi_interface_ue_sim.h /^} fapi_basic_parms_t;$/;" t typeref:struct:fapi_basic_parms +fapi_bch_payload fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_bch_payload$/;" s +fapi_bch_payload_t_ue_sim fapi_interface_ue_sim.h /^} fapi_bch_payload_t_ue_sim;$/;" t typeref:struct:fapi_bch_payload +fapi_beamforming_table fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_beamforming_table$/;" s +fapi_beamforming_table_t_ue_sim fapi_interface_ue_sim.h /^} fapi_beamforming_table_t_ue_sim;$/;" t typeref:struct:fapi_beamforming_table +fapi_bmform fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_bmform$/;" s +fapi_bmform_t fapi_interface_ue_sim.h /^} fapi_bmform_t;$/;" t typeref:struct:fapi_bmform +fapi_bmi fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_bmi$/;" s +fapi_bmi_t_ue_sim fapi_interface_ue_sim.h /^} fapi_bmi_t_ue_sim;$/;" t typeref:struct:fapi_bmi +fapi_bwp fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_bwp$/;" s +fapi_bwp_t fapi_interface_ue_sim.h /^}fapi_bwp_t;$/;" t typeref:struct:fapi_bwp +fapi_capability fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_capability$/;" s +fapi_capability_t fapi_interface_ue_sim.h /^} fapi_capability_t;$/;" t typeref:struct:fapi_capability +fapi_capability_validity fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim fapi_capability_validity;$/;" m struct:fapi_capability_validity +fapi_capability_validity fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_capability_validity$/;" s +fapi_capability_validity_t fapi_interface_ue_sim.h /^} fapi_capability_validity_t;$/;" t typeref:struct:fapi_capability_validity +fapi_carrier_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_carrier_config$/;" s +fapi_carrier_config_t_ue_sim fapi_interface_ue_sim.h /^} fapi_carrier_config_t_ue_sim;$/;" t typeref:struct:fapi_carrier_config +fapi_carrier_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_carrier_parms$/;" s +fapi_carrier_parms_t_ue_sim fapi_interface_ue_sim.h /^} fapi_carrier_parms_t_ue_sim;$/;" t typeref:struct:fapi_carrier_parms +fapi_cell_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_cell_config$/;" s +fapi_cell_config_t_ue_sim fapi_interface_ue_sim.h /^} fapi_cell_config_t_ue_sim;$/;" t typeref:struct:fapi_cell_config +fapi_cell_params fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_cell_params$/;" s +fapi_cell_parms_t_ue_sim fapi_interface_ue_sim.h /^} fapi_cell_parms_t_ue_sim;$/;" t typeref:struct:fapi_cell_params +fapi_codeword_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_codeword_pdu$/;" s +fapi_codeword_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_codeword_pdu_t_ue_sim;$/;" t typeref:struct:fapi_codeword_pdu +fapi_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_config$/;" s +fapi_config_num_tlv_t fapi_interface_ue_sim.h /^} fapi_config_num_tlv_t;$/;" t typeref:struct:__anon1 +fapi_config_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_config_req$/;" s +fapi_config_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_config_req_t_ue_sim;$/;" t typeref:struct:fapi_config_req +fapi_config_resp fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_config_resp$/;" s +fapi_config_resp_t_ue_sim fapi_interface_ue_sim.h /^} fapi_config_resp_t_ue_sim;$/;" t typeref:struct:fapi_config_resp +fapi_config_t_ue_sim fapi_interface_ue_sim.h /^}fapi_config_t_ue_sim;$/;" t typeref:struct:fapi_config +fapi_config_tlv fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_config_tlv$/;" s +fapi_config_tlv_t_ue_sim fapi_interface_ue_sim.h /^} fapi_config_tlv_t_ue_sim;$/;" t typeref:struct:fapi_config_tlv +fapi_coreset fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_coreset$/;" s +fapi_coreset_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_coreset_parms$/;" s +fapi_coreset_parms_t fapi_interface_ue_sim.h /^} fapi_coreset_parms_t;$/;" t typeref:struct:fapi_coreset_parms +fapi_coreset_t fapi_interface_ue_sim.h /^}fapi_coreset_t;$/;" t typeref:struct:fapi_coreset +fapi_crc_ind fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_crc_ind$/;" s +fapi_crc_ind_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_crc_ind_info$/;" s +fapi_crc_ind_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_crc_ind_info_t_ue_sim;$/;" t typeref:struct:fapi_crc_ind_info +fapi_crc_ind_t_ue_sim fapi_interface_ue_sim.h /^} fapi_crc_ind_t_ue_sim;$/;" t typeref:struct:fapi_crc_ind +fapi_csi_p1_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_csi_p1_info$/;" s +fapi_csi_p1_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_csi_p1_info_t_ue_sim;$/;" t typeref:struct:fapi_csi_p1_info +fapi_csi_p2_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_csi_p2_info$/;" s +fapi_csi_p2_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_csi_p2_info_t_ue_sim;$/;" t typeref:struct:fapi_csi_p2_info +fapi_csi_rs_tx_pwr_info_t fapi_interface_ue_sim.h /^} fapi_csi_rs_tx_pwr_info_t;$/;" t typeref:struct:ifapi_csi_rs_tx_pwr_info +fapi_dci_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dci_pdu$/;" s +fapi_dci_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dci_pdu_t_ue_sim;$/;" t typeref:struct:fapi_dci_pdu +fapi_dci_specific_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dci_specific_parms$/;" s +fapi_dci_specific_parms_t fapi_interface_ue_sim.h /^} fapi_dci_specific_parms_t;$/;" t typeref:struct:fapi_dci_specific_parms +fapi_delay_management_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_delay_management_parms$/;" s +fapi_delay_management_parms_t fapi_interface_ue_sim.h /^}fapi_delay_management_parms_t;$/;" t typeref:struct:fapi_delay_management_parms +fapi_delay_mgmt_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_delay_mgmt_config$/;" s +fapi_delay_mgmt_config_t fapi_interface_ue_sim.h /^}fapi_delay_mgmt_config_t;$/;" t typeref:struct:fapi_delay_mgmt_config +fapi_dfe_profile fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dfe_profile$/;" s +fapi_dfe_profile_t fapi_interface_ue_sim.h /^}fapi_dfe_profile_t;$/;" t typeref:struct:fapi_dfe_profile +fapi_dfts_ofdm fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dfts_ofdm$/;" s +fapi_dfts_ofdm_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dfts_ofdm_t_ue_sim;$/;" t typeref:struct:fapi_dfts_ofdm +fapi_dig_beam_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dig_beam_config$/;" s +fapi_dig_beam_config_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dig_beam_config_t_ue_sim;$/;" t typeref:struct:fapi_dig_beam_config +fapi_dig_beam_weight fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dig_beam_weight$/;" s +fapi_dig_beam_weight_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dig_beam_weight_t_ue_sim;$/;" t typeref:struct:fapi_dig_beam_weight +fapi_dl_code_word fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_code_word$/;" s +fapi_dl_code_word_t fapi_interface_ue_sim.h /^} fapi_dl_code_word_t;$/;" t typeref:struct:fapi_dl_code_word +fapi_dl_codeword_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_codeword_info$/;" s +fapi_dl_codeword_info_t fapi_interface_ue_sim.h /^} fapi_dl_codeword_info_t;$/;" t typeref:struct:fapi_dl_codeword_info +fapi_dl_coreset_rm_patrn fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_coreset_rm_patrn$/;" s +fapi_dl_coreset_rm_patrn_t fapi_interface_ue_sim.h /^} fapi_dl_coreset_rm_patrn_t;$/;" t typeref:struct:fapi_dl_coreset_rm_patrn +fapi_dl_csi_rs_mnt_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_csi_rs_mnt_parms$/;" s +fapi_dl_csi_rs_mnt_parms_t fapi_interface_ue_sim.h /^}fapi_dl_csi_rs_mnt_parms_t;$/;" t typeref:struct:fapi_dl_csi_rs_mnt_parms +fapi_dl_csi_rs_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_csi_rs_pdu$/;" s +fapi_dl_csi_rs_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dl_csi_rs_pdu_t_ue_sim;$/;" t typeref:struct:fapi_dl_csi_rs_pdu +fapi_dl_dci fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_dci$/;" s +fapi_dl_dci_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dl_dci_t_ue_sim;$/;" t typeref:struct:fapi_dl_dci +fapi_dl_pdcch_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdcch_pdu$/;" s +fapi_dl_pdcch_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dl_pdcch_pdu_t_ue_sim;$/;" t typeref:struct:fapi_dl_pdcch_pdu +fapi_dl_pdsch_cbg_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdsch_cbg_info$/;" s +fapi_dl_pdsch_cbg_info_t fapi_interface_ue_sim.h /^} fapi_dl_pdsch_cbg_info_t;$/;" t typeref:struct:fapi_dl_pdsch_cbg_info +fapi_dl_pdsch_mnt_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdsch_mnt_parms$/;" s +fapi_dl_pdsch_mnt_parms_t fapi_interface_ue_sim.h /^} fapi_dl_pdsch_mnt_parms_t;$/;" t typeref:struct:fapi_dl_pdsch_mnt_parms +fapi_dl_pdsch_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdsch_pdu$/;" s +fapi_dl_pdsch_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dl_pdsch_pdu_t_ue_sim;$/;" t typeref:struct:fapi_dl_pdsch_pdu +fapi_dl_pdsch_ptrs2 fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdsch_ptrs2$/;" s +fapi_dl_pdsch_ptrs2_t fapi_interface_ue_sim.h /^} fapi_dl_pdsch_ptrs2_t;$/;" t typeref:struct:fapi_dl_pdsch_ptrs2 +fapi_dl_pdsch_ptrs_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdsch_ptrs_info$/;" s +fapi_dl_pdsch_ptrs_info_t fapi_interface_ue_sim.h /^} fapi_dl_pdsch_ptrs_info_t;$/;" t typeref:struct:fapi_dl_pdsch_ptrs_info +fapi_dl_pdsch_ptrs_mnt_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdsch_ptrs_mnt_parms$/;" s +fapi_dl_pdsch_ptrs_mnt_parms_t fapi_interface_ue_sim.h /^} fapi_dl_pdsch_ptrs_mnt_parms_t;$/;" t typeref:struct:fapi_dl_pdsch_ptrs_mnt_parms +fapi_dl_pdsch_ptrsv3 fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_pdsch_ptrsv3$/;" s +fapi_dl_pdsch_ptrsv3_t fapi_interface_ue_sim.h /^}fapi_dl_pdsch_ptrsv3_t;$/;" t typeref:struct:fapi_dl_pdsch_ptrsv3 +fapi_dl_prb_sym_rm_patrn_by_val fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_prb_sym_rm_patrn_by_val$/;" s +fapi_dl_prb_sym_rm_patrn_by_val_t fapi_interface_ue_sim.h /^} fapi_dl_prb_sym_rm_patrn_by_val_t;$/;" t typeref:struct:fapi_dl_prb_sym_rm_patrn_by_val +fapi_dl_ptrs_tx_pwr_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_ptrs_tx_pwr_info$/;" s +fapi_dl_ptrs_tx_pwr_info_t fapi_interface_ue_sim.h /^}fapi_dl_ptrs_tx_pwr_info_t; $/;" t typeref:struct:fapi_dl_ptrs_tx_pwr_info +fapi_dl_rate_match_ref fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_rate_match_ref$/;" s +fapi_dl_rate_match_ref_t fapi_interface_ue_sim.h /^} fapi_dl_rate_match_ref_t;$/;" t typeref:struct:fapi_dl_rate_match_ref +fapi_dl_rel16_pdsch_parms_t fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_rel16_pdsch_parms_t$/;" s +fapi_dl_rel16_pdsch_parms_t fapi_interface_ue_sim.h /^} fapi_dl_rel16_pdsch_parms_t;$/;" t typeref:struct:fapi_dl_rel16_pdsch_parms_t +fapi_dl_ssb_pbch_mnt_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_ssb_pbch_mnt_parms$/;" s +fapi_dl_ssb_pbch_mnt_parms_t fapi_interface_ue_sim.h /^}fapi_dl_ssb_pbch_mnt_parms_t;$/;" t typeref:struct:fapi_dl_ssb_pbch_mnt_parms +fapi_dl_ssb_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_ssb_pdu$/;" s +fapi_dl_ssb_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dl_ssb_pdu_t_ue_sim;$/;" t typeref:struct:fapi_dl_ssb_pdu +fapi_dl_tti_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_tti_req$/;" s +fapi_dl_tti_req_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_tti_req_pdu$/;" s +fapi_dl_tti_req_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dl_tti_req_pdu_t_ue_sim;$/;" t typeref:struct:fapi_dl_tti_req_pdu +fapi_dl_tti_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_dl_tti_req_t_ue_sim;$/;" t typeref:struct:fapi_dl_tti_req +fapi_dl_tx_pwr_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dl_tx_pwr_info$/;" s +fapi_dl_tx_pwr_info_t fapi_interface_ue_sim.h /^} fapi_dl_tx_pwr_info_t;$/;" t typeref:struct:fapi_dl_tx_pwr_info +fapi_dmrs fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_dmrs$/;" s +fapi_dmrs_t fapi_interface_ue_sim.h /^} fapi_dmrs_t;$/;" t typeref:struct:fapi_dmrs +fapi_error_ind fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_error_ind$/;" s +fapi_error_ind_t_ue_sim fapi_interface_ue_sim.h /^} fapi_error_ind_t_ue_sim;$/;" t typeref:struct:fapi_error_ind +fapi_harq_f0f1_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_harq_f0f1_info$/;" s +fapi_harq_f0f1_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_harq_f0f1_info_t_ue_sim;$/;" t typeref:struct:fapi_harq_f0f1_info +fapi_harq_f2f3f4_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_harq_f2f3f4_info$/;" s +fapi_harq_f2f3f4_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_harq_f2f3f4_info_t_ue_sim;$/;" t typeref:struct:fapi_harq_f2f3f4_info +fapi_harq_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_harq_info$/;" s +fapi_harq_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_harq_info_t_ue_sim;$/;" t typeref:struct:fapi_harq_info +fapi_int16_tlv fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_int16_tlv$/;" s +fapi_int16_tlv_t_ue_sim fapi_interface_ue_sim.h /^} fapi_int16_tlv_t_ue_sim;$/;" t typeref:struct:fapi_int16_tlv +fapi_lte_crs_rm_pattern fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_lte_crs_rm_pattern$/;" s +fapi_lte_crs_rm_pattern_t fapi_interface_ue_sim.h /^}fapi_lte_crs_rm_pattern_t;$/;" t typeref:struct:fapi_lte_crs_rm_pattern +fapi_lte_crs_rm_ptrn fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_lte_crs_rm_ptrn $/;" s +fapi_lte_crs_rm_ptrn_t fapi_interface_ue_sim.h /^}fapi_lte_crs_rm_ptrn_t; $/;" t typeref:struct:fapi_lte_crs_rm_ptrn +fapi_map_index fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_map_index$/;" s +fapi_map_index_t fapi_interface_ue_sim.h /^}fapi_map_index_t;$/;" t typeref:struct:fapi_map_index +fapi_mbsfn_sf_config_list fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_mbsfn_sf_config_list$/;" s +fapi_mbsfn_sf_config_list_t fapi_interface_ue_sim.h /^}fapi_mbsfn_sf_config_list_t;$/;" t typeref:struct:fapi_mbsfn_sf_config_list +fapi_meas_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_meas_config$/;" s +fapi_meas_config_t_ue_sim fapi_interface_ue_sim.h /^} fapi_meas_config_t_ue_sim;$/;" t typeref:struct:fapi_meas_config +fapi_meas_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_meas_parms$/;" s +fapi_meas_parms_t_ue_sim fapi_interface_ue_sim.h /^} fapi_meas_parms_t_ue_sim;$/;" t typeref:struct:fapi_meas_parms +fapi_msg fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_msg$/;" s +fapi_msg_header fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_msg_header$/;" s +fapi_msg_header_t_ue_sim fapi_interface_ue_sim.h /^} fapi_msg_header_t_ue_sim;$/;" t typeref:struct:fapi_msg_header +fapi_msg_t_ue_sim fapi_interface_ue_sim.h /^} fapi_msg_t_ue_sim;$/;" t typeref:struct:fapi_msg +fapi_multi_prach_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_multi_prach_config$/;" s +fapi_multi_prach_config_t fapi_interface_ue_sim.h /^}fapi_multi_prach_config_t;$/;" t typeref:struct:fapi_multi_prach_config +fapi_multi_ssb_resource_config_table fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_multi_ssb_resource_config_table$/;" s +fapi_multi_ssb_resource_config_table_t fapi_interface_ue_sim.h /^}fapi_multi_ssb_resource_config_table_t;$/;" t typeref:struct:fapi_multi_ssb_resource_config_table +fapi_optional_pusch_uci fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_optional_pusch_uci$/;" s +fapi_optional_pusch_uci_t fapi_interface_ue_sim.h /^} fapi_optional_pusch_uci_t;$/;" t typeref:struct:fapi_optional_pusch_uci +fapi_pRACH_Mntnc_param fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pRACH_Mntnc_param$/;" s +fapi_pRACH_Mntnc_param_t fapi_interface_ue_sim.h /^}fapi_pRACH_Mntnc_param_t;$/;" t typeref:struct:fapi_pRACH_Mntnc_param +fapi_pUCCH_Mntnnc_params fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pUCCH_Mntnnc_params$/;" s +fapi_param_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_param_req$/;" s +fapi_param_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_param_req_t_ue_sim;$/;" t typeref:struct:fapi_param_req +fapi_param_resp fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_param_resp$/;" s +fapi_param_resp_t_ue_sim fapi_interface_ue_sim.h /^} fapi_param_resp_t_ue_sim;$/;" t typeref:struct:fapi_param_resp +fapi_params fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_params$/;" s +fapi_params_t_ue_sim fapi_interface_ue_sim.h /^} fapi_params_t_ue_sim;$/;" t typeref:struct:fapi_params +fapi_part2_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_part2_parms$/;" s +fapi_part2_parms_t fapi_interface_ue_sim.h /^} fapi_part2_parms_t;$/;" t typeref:struct:fapi_part2_parms +fapi_pdcch_mnt_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pdcch_mnt_parms $/;" s +fapi_pdcch_mnt_parms_t fapi_interface_ue_sim.h /^} fapi_pdcch_mnt_parms_t;$/;" t typeref:struct:fapi_pdcch_mnt_parms +fapi_pdcch_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pdcch_parms$/;" s +fapi_pdcch_parms_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pdcch_parms_t_ue_sim;$/;" t typeref:struct:fapi_pdcch_parms +fapi_pdsch_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pdsch_config$/;" s +fapi_pdsch_config_t fapi_interface_ue_sim.h /^}fapi_pdsch_config_t;$/;" t typeref:struct:fapi_pdsch_config +fapi_pdsch_freq_dom_alloc fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pdsch_freq_dom_alloc$/;" s +fapi_pdsch_freq_dom_alloc_t fapi_interface_ue_sim.h /^} fapi_pdsch_freq_dom_alloc_t;$/;" t typeref:struct:fapi_pdsch_freq_dom_alloc +fapi_pdsch_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pdsch_parms$/;" s +fapi_pdsch_parms_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pdsch_parms_t_ue_sim;$/;" t typeref:struct:fapi_pdsch_parms +fapi_pdsch_time_dom_alloc fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pdsch_time_dom_alloc$/;" s +fapi_pdsch_time_dom_alloc_t fapi_interface_ue_sim.h /^} fapi_pdsch_time_dom_alloc_t;$/;" t typeref:struct:fapi_pdsch_time_dom_alloc +fapi_pdu_ind_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pdu_ind_info$/;" s +fapi_pdu_ind_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pdu_ind_info_t_ue_sim;$/;" t typeref:struct:fapi_pdu_ind_info +fapi_phy_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_phy_config$/;" s +fapi_phy_config_t fapi_interface_ue_sim.h /^}fapi_phy_config_t;$/;" t typeref:struct:fapi_phy_config +fapi_phy_mib_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_phy_mib_pdu$/;" s +fapi_phy_mib_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_phy_mib_pdu_t_ue_sim;$/;" t typeref:struct:fapi_phy_mib_pdu +fapi_phy_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_phy_parms$/;" s +fapi_phy_port fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_phy_port$/;" s +fapi_phy_port_t fapi_interface_ue_sim.h /^}fapi_phy_port_t;$/;" t typeref:struct:fapi_phy_port +fapi_phy_profile fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_phy_profile$/;" s +fapi_phy_profile_t fapi_interface_ue_sim.h /^}fapi_phy_profile_t;$/;" t typeref:struct:fapi_phy_profile +fapi_phy_support_t fapi_interface_ue_sim.h /^}fapi_phy_support_t;$/;" t typeref:struct:fapi_phy_parms +fapi_pmi_bfi fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pmi_bfi$/;" s +fapi_pmi_bfi_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pmi_bfi_t_ue_sim;$/;" t typeref:struct:fapi_pmi_bfi +fapi_prachFdOccasion fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_prachFdOccasion$/;" s +fapi_prachFdOccasion_t_ue_sim fapi_interface_ue_sim.h /^} fapi_prachFdOccasion_t_ue_sim;$/;" t typeref:struct:fapi_prachFdOccasion +fapi_prach_configuration fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_prach_configuration$/;" s +fapi_prach_configuration_t_ue_sim fapi_interface_ue_sim.h /^} fapi_prach_configuration_t_ue_sim;$/;" t typeref:struct:fapi_prach_configuration +fapi_prach_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_prach_parms$/;" s +fapi_prach_parms_t_ue_sim fapi_interface_ue_sim.h /^}fapi_prach_parms_t_ue_sim;$/;" t typeref:struct:fapi_prach_parms +fapi_prb_sym_rate_match_pattern fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_prb_sym_rate_match_pattern$/;" s +fapi_prb_sym_rate_match_pattern_t fapi_interface_ue_sim.h /^}fapi_prb_sym_rate_match_pattern_t;$/;" t typeref:struct:fapi_prb_sym_rate_match_pattern +fapi_prb_symbol_rate_match_pattern fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_prb_symbol_rate_match_pattern$/;" s +fapi_prb_symbol_rate_match_pattern_t fapi_interface_ue_sim.h /^}fapi_prb_symbol_rate_match_pattern_t;$/;" t typeref:struct:fapi_prb_symbol_rate_match_pattern +fapi_preamble_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_preamble_info$/;" s +fapi_preamble_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_preamble_info_t_ue_sim;$/;" t typeref:struct:fapi_preamble_info +fapi_precoderWeight fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_precoderWeight$/;" s +fapi_precoderWeight_t_ue_sim fapi_interface_ue_sim.h /^} fapi_precoderWeight_t_ue_sim;$/;" t typeref:struct:fapi_precoderWeight +fapi_precoder_weight fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_precoder_weight$/;" s +fapi_precoder_weight_t_ue_sim fapi_interface_ue_sim.h /^} fapi_precoder_weight_t_ue_sim;$/;" t typeref:struct:fapi_precoder_weight +fapi_precoding_bmform fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_precoding_bmform$/;" s +fapi_precoding_bmform_t_ue_sim fapi_interface_ue_sim.h /^} fapi_precoding_bmform_t_ue_sim;$/;" t typeref:struct:fapi_precoding_bmform +fapi_precoding_table_t_ue_sim fapi_interface_ue_sim.h /^} fapi_precoding_table_t_ue_sim;$/;" t typeref:struct:PACK_STRUCT +fapi_ptrs_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ptrs_info$/;" s +fapi_ptrs_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ptrs_info_t_ue_sim;$/;" t typeref:struct:fapi_ptrs_info +fapi_pucch_mntnnc_params_t fapi_interface_ue_sim.h /^} fapi_pucch_mntnnc_params_t;$/;" t typeref:struct:fapi_pUCCH_Mntnnc_params +fapi_pucch_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pucch_parms$/;" s +fapi_pucch_parms_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pucch_parms_t_ue_sim;$/;" t typeref:struct:fapi_pucch_parms +fapi_pucch_semi_static_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pucch_semi_static_config$/;" s +fapi_pucch_semi_static_config_t fapi_interface_ue_sim.h /^}fapi_pucch_semi_static_config_t;$/;" t typeref:struct:fapi_pucch_semi_static_config +fapi_pusch_data fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pusch_data$/;" s +fapi_pusch_data_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pusch_data_t_ue_sim;$/;" t typeref:struct:fapi_pusch_data +fapi_pusch_mnt_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pusch_mnt_parms$/;" s +fapi_pusch_mnt_parms_t fapi_interface_ue_sim.h /^} fapi_pusch_mnt_parms_t;$/;" t typeref:struct:fapi_pusch_mnt_parms +fapi_pusch_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pusch_parms$/;" s +fapi_pusch_parms_t_ue_sim fapi_interface_ue_sim.h /^}fapi_pusch_parms_t_ue_sim;$/;" t typeref:struct:fapi_pusch_parms +fapi_pusch_ptrs fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pusch_ptrs$/;" s +fapi_pusch_ptrs_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pusch_ptrs_t_ue_sim;$/;" t typeref:struct:fapi_pusch_ptrs +fapi_pusch_uci fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_pusch_uci$/;" s +fapi_pusch_uci_t_ue_sim fapi_interface_ue_sim.h /^} fapi_pusch_uci_t_ue_sim;$/;" t typeref:struct:fapi_pusch_uci +fapi_rach_indication fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_rach_indication$/;" s +fapi_rach_indication_t_ue_sim fapi_interface_ue_sim.h /^} fapi_rach_indication_t_ue_sim;$/;" t typeref:struct:fapi_rach_indication +fapi_rach_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_rach_pdu$/;" s +fapi_rach_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_rach_pdu_t_ue_sim;$/;" t typeref:struct:fapi_rach_pdu +fapi_rel16_mTRP_parameters fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_rel16_mTRP_parameters$/;" s +fapi_rel16_mTRP_parameters_t fapi_interface_ue_sim.h /^}fapi_rel16_mTRP_parameters_t;$/;" t typeref:struct:fapi_rel16_mTRP_parameters +fapi_rel16_mtrp_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_rel16_mtrp_config$/;" s +fapi_rel16_mtrp_config_t fapi_interface_ue_sim.h /^}fapi_rel16_mtrp_config_t;$/;" t typeref:struct:fapi_rel16_mtrp_config +fapi_rx_data_indication fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_rx_data_indication$/;" s +fapi_rx_data_indication_t_ue_sim fapi_interface_ue_sim.h /^} fapi_rx_data_indication_t_ue_sim;$/;" t typeref:struct:fapi_rx_data_indication +fapi_signal_index fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_signal_index$/;" s +fapi_signal_index_t fapi_interface_ue_sim.h /^} fapi_signal_index_t;$/;" t typeref:struct:fapi_signal_index +fapi_slot_ind fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_slot_ind$/;" s +fapi_slot_ind_t_ue_sim fapi_interface_ue_sim.h /^} fapi_slot_ind_t_ue_sim;$/;" t typeref:struct:fapi_slot_ind +fapi_slotconfig fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_slotconfig$/;" s +fapi_slotconfig_t_ue_sim fapi_interface_ue_sim.h /^} fapi_slotconfig_t_ue_sim;$/;" t typeref:struct:fapi_slotconfig +fapi_sr_f0f1_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_sr_f0f1_info$/;" s +fapi_sr_f0f1_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_sr_f0f1_info_t_ue_sim;$/;" t typeref:struct:fapi_sr_f0f1_info +fapi_sr_f2f3f4_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_sr_f2f3f4_info$/;" s +fapi_sr_f2f3f4_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_sr_f2f3f4_info_t_ue_sim;$/;" t typeref:struct:fapi_sr_f2f3f4_info +fapi_srs_indication fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_srs_indication$/;" s +fapi_srs_indication_t_ue_sim fapi_interface_ue_sim.h /^} fapi_srs_indication_t_ue_sim;$/;" t typeref:struct:fapi_srs_indication +fapi_srs_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_srs_pdu$/;" s +fapi_srs_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_srs_pdu_t_ue_sim;$/;" t typeref:struct:fapi_srs_pdu +fapi_ssb_basic_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ssb_basic_parms$/;" s +fapi_ssb_basic_parms_t fapi_interface_ue_sim.h /^} fapi_ssb_basic_parms_t;$/;" t typeref:struct:fapi_ssb_basic_parms +fapi_ssb_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ssb_config$/;" s +fapi_ssb_config_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ssb_config_t_ue_sim;$/;" t typeref:struct:fapi_ssb_config +fapi_ssb_pwr_pbch_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ssb_pwr_pbch_config$/;" s +fapi_ssb_pwr_pbch_config_t fapi_interface_ue_sim.h /^}fapi_ssb_pwr_pbch_config_t;$/;" t typeref:struct:fapi_ssb_pwr_pbch_config +fapi_ssb_res_config_table fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ssb_res_config_table$/;" s +fapi_ssb_res_config_table_t fapi_interface_ue_sim.h /^}fapi_ssb_res_config_table_t;$/;" t typeref:struct:fapi_ssb_res_config_table +fapi_ssb_table fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ssb_table$/;" s +fapi_ssb_table_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ssb_table_t_ue_sim;$/;" t typeref:struct:fapi_ssb_table +fapi_ssb_tx_pwr_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ssb_tx_pwr_info$/;" s +fapi_ssb_tx_pwr_info_t fapi_interface_ue_sim.h /^} fapi_ssb_tx_pwr_info_t;$/;" t typeref:struct:fapi_ssb_tx_pwr_info +fapi_start_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_start_req$/;" s +fapi_start_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_start_req_t_ue_sim;$/;" t typeref:struct:fapi_start_req +fapi_start_resp fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_start_resp$/;" s +fapi_start_resp_t fapi_interface_ue_sim.h /^}fapi_start_resp_t;$/;" t typeref:struct:fapi_start_resp +fapi_stop_ind fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_stop_ind$/;" s +fapi_stop_ind_t_ue_sim fapi_interface_ue_sim.h /^} fapi_stop_ind_t_ue_sim;$/;" t typeref:struct:fapi_stop_ind +fapi_stop_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_stop_req$/;" s +fapi_stop_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_stop_req_t_ue_sim;$/;" t typeref:struct:fapi_stop_req +fapi_symb_snr fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_symb_snr$/;" s +fapi_symb_snr_t_ue_sim fapi_interface_ue_sim.h /^} fapi_symb_snr_t_ue_sim;$/;" t typeref:struct:fapi_symb_snr +fapi_tdd_table fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_tdd_table$/;" s +fapi_tdd_table_t_ue_sim fapi_interface_ue_sim.h /^} fapi_tdd_table_t_ue_sim;$/;" t typeref:struct:fapi_tdd_table +fapi_tl fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_tl$/;" s +fapi_tl_t_ue_sim fapi_interface_ue_sim.h /^} fapi_tl_t_ue_sim;$/;" t typeref:struct:fapi_tl +fapi_tx_dat_tlv fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_tx_dat_tlv$/;" s +fapi_tx_dat_tlv_t fapi_interface_ue_sim.h /^} fapi_tx_dat_tlv_t;$/;" t typeref:struct:fapi_tx_dat_tlv +fapi_tx_data_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_tx_data_req$/;" s +fapi_tx_data_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_tx_data_req_t_ue_sim;$/;" t typeref:struct:fapi_tx_data_req +fapi_tx_pdu_desc fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_tx_pdu_desc$/;" s +fapi_tx_pdu_desc_t_ue_sim fapi_interface_ue_sim.h /^} fapi_tx_pdu_desc_t_ue_sim;$/;" t typeref:struct:fapi_tx_pdu_desc +fapi_tx_power_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_tx_power_info$/;" s +fapi_tx_power_info_t fapi_interface_ue_sim.h /^} fapi_tx_power_info_t;$/;" t typeref:struct:fapi_tx_power_info +fapi_tx_pwr_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_tx_pwr_info$/;" s +fapi_tx_pwr_info_t fapi_interface_ue_sim.h /^} fapi_tx_pwr_info_t;$/;" t typeref:struct:fapi_tx_pwr_info +fapi_uci_config fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_config$/;" s +fapi_uci_config_t fapi_interface_ue_sim.h /^}fapi_uci_config_t;$/;" t typeref:struct:fapi_uci_config +fapi_uci_indication fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_indication$/;" s +fapi_uci_indication_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uci_indication_t_ue_sim;$/;" t typeref:struct:fapi_uci_indication +fapi_uci_mux_typ fapi_interface_ue_sim.h /^typedef enum PACK_STRUCT fapi_uci_mux_typ$/;" g +fapi_uci_mux_typ_t fapi_interface_ue_sim.h /^}fapi_uci_mux_typ_t;$/;" t typeref:enum:fapi_uci_mux_typ +fapi_uci_o_pucch_f0f1 fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_o_pucch_f0f1$/;" s +fapi_uci_o_pucch_f0f1_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uci_o_pucch_f0f1_t_ue_sim;$/;" t typeref:struct:fapi_uci_o_pucch_f0f1 +fapi_uci_o_pucch_f2f3f4 fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_o_pucch_f2f3f4$/;" s +fapi_uci_o_pucch_f2f3f4_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uci_o_pucch_f2f3f4_t_ue_sim;$/;" t typeref:struct:fapi_uci_o_pucch_f2f3f4 +fapi_uci_o_pusch fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_o_pusch$/;" s +fapi_uci_o_pusch_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uci_o_pusch_t_ue_sim;$/;" t typeref:struct:fapi_uci_o_pusch +fapi_uci_parms fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_parms$/;" s +fapi_uci_parms_t fapi_interface_ue_sim.h /^} fapi_uci_parms_t;$/;" t typeref:struct:fapi_uci_parms +fapi_uci_part1_part2 fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_part1_part2$/;" s +fapi_uci_part1_part2_t fapi_interface_ue_sim.h /^} fapi_uci_part1_part2_t;$/;" t typeref:struct:fapi_uci_part1_part2 +fapi_uci_part2 fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_part2$/;" s +fapi_uci_part2_t fapi_interface_ue_sim.h /^}fapi_uci_part2_t;$/;" t typeref:struct:fapi_uci_part2 +fapi_uci_pdu_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uci_pdu_info$/;" s +fapi_uci_pdu_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uci_pdu_info_t_ue_sim;$/;" t typeref:struct:fapi_uci_pdu_info +fapi_ue_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ue_info$/;" s +fapi_ue_info_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ue_info_t_ue_sim; $/;" t typeref:struct:fapi_ue_info +fapi_uint16_tlv fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uint16_tlv$/;" s +fapi_uint16_tlv_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uint16_tlv_t_ue_sim;$/;" t typeref:struct:fapi_uint16_tlv +fapi_uint32_tlv fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uint32_tlv$/;" s +fapi_uint32_tlv_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uint32_tlv_t_ue_sim;$/;" t typeref:struct:fapi_uint32_tlv +fapi_uint8_tlv fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_uint8_tlv$/;" s +fapi_uint8_tlv_t_ue_sim fapi_interface_ue_sim.h /^} fapi_uint8_tlv_t_ue_sim;$/;" t typeref:struct:fapi_uint8_tlv +fapi_ul_bwp_id fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_bwp_id$/;" s +fapi_ul_bwp_id_t fapi_interface_ue_sim.h /^}fapi_ul_bwp_id_t;$/;" t typeref:struct:fapi_ul_bwp_id +fapi_ul_dci_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_dci_req$/;" s +fapi_ul_dci_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ul_dci_req_t_ue_sim;$/;" t typeref:struct:fapi_ul_dci_req +fapi_ul_prach_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_prach_pdu$/;" s +fapi_ul_prach_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ul_prach_pdu_t_ue_sim;$/;" t typeref:struct:fapi_ul_prach_pdu +fapi_ul_pucch_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_pucch_pdu$/;" s +fapi_ul_pucch_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ul_pucch_pdu_t_ue_sim;$/;" t typeref:struct:fapi_ul_pucch_pdu +fapi_ul_pusch_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_pusch_pdu$/;" s +fapi_ul_pusch_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ul_pusch_pdu_t_ue_sim;$/;" t typeref:struct:fapi_ul_pusch_pdu +fapi_ul_srs_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_srs_pdu$/;" s +fapi_ul_srs_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ul_srs_pdu_t_ue_sim;$/;" t typeref:struct:fapi_ul_srs_pdu +fapi_ul_tti_req fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_tti_req$/;" s +fapi_ul_tti_req_pdu fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT fapi_ul_tti_req_pdu$/;" s +fapi_ul_tti_req_pdu_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ul_tti_req_pdu_t_ue_sim;$/;" t typeref:struct:fapi_ul_tti_req_pdu +fapi_ul_tti_req_t_ue_sim fapi_interface_ue_sim.h /^} fapi_ul_tti_req_t_ue_sim;$/;" t typeref:struct:fapi_ul_tti_req +flagCsiPart2 fapi_interface_ue_sim.h /^ uint16_t flagCsiPart2;$/;" m struct:fapi_pusch_uci +format_type fapi_interface_ue_sim.h /^ uint8_t format_type;$/;" m struct:fapi_ul_pucch_pdu +frameDuplexType fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim frameDuplexType;$/;" m struct:fapi_cell_config +freqDomainRB fapi_interface_ue_sim.h /^ uint8_t freqDomainRB[35];$/;" m struct:fapi_prb_sym_rate_match_pattern +freqDomainRB fapi_interface_ue_sim.h /^ uint8_t freqDomainRB[35];$/;" m struct:fapi_dl_prb_sym_rm_patrn_by_val +freqDomainResources fapi_interface_ue_sim.h /^ uint8_t freqDomainResources[6];$/;" m struct:fapi_dl_coreset_rm_patrn +freqIndex fapi_interface_ue_sim.h /^ uint8_t freqIndex;$/;" m struct:fapi_rach_pdu +freq_density fapi_interface_ue_sim.h /^ uint8_t freq_density;$/;" m struct:fapi_dl_csi_rs_pdu +freq_domain fapi_interface_ue_sim.h /^ uint16_t freq_domain;$/;" m struct:fapi_dl_csi_rs_pdu +freq_domain_resource fapi_interface_ue_sim.h /^ uint8_t freq_domain_resource[FAPI_MAX_FREQ_DOMAIN_RES];$/;" m struct:fapi_coreset +freq_hop_flag fapi_interface_ue_sim.h /^ uint8_t freq_hop_flag;$/;" m struct:fapi_ul_pucch_pdu +frequencyShift7p5KHz fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim frequencyShift7p5KHz;$/;" m struct:fapi_carrier_config +frequencyShift7p5KHz fapi_interface_ue_sim.h /^ uint8_t frequencyShift7p5KHz;$/;" m struct:fapi_carrier_config +frequency_hopping fapi_interface_ue_sim.h /^ uint8_t frequency_hopping;$/;" m struct:fapi_ul_pusch_pdu +frequency_hopping fapi_interface_ue_sim.h /^ uint8_t frequency_hopping;$/;" m struct:fapi_ul_srs_pdu +frequency_position fapi_interface_ue_sim.h /^ uint8_t frequency_position;$/;" m struct:fapi_ul_srs_pdu +frequency_shift fapi_interface_ue_sim.h /^ uint16_t frequency_shift;$/;" m struct:fapi_ul_srs_pdu +groupOrSequenceHopping fapi_interface_ue_sim.h /^ uint8_t groupOrSequenceHopping;$/;" m struct:fapi_pusch_mnt_parms +group_hop_flag fapi_interface_ue_sim.h /^ uint8_t group_hop_flag;$/;" m struct:fapi_ul_pucch_pdu +group_or_sequence_hopping fapi_interface_ue_sim.h /^ uint8_t group_or_sequence_hopping;$/;" m struct:fapi_ul_srs_pdu +handle fapi_interface_ue_sim.h /^ uint16_t handle;$/;" m struct:fapi_rach_pdu +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_crc_ind_info +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_pdu_ind_info +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_srs_pdu +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_uci_o_pucch_f0f1 +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_uci_o_pucch_f2f3f4 +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_uci_o_pusch +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_ul_pucch_pdu +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_ul_pusch_pdu +handle fapi_interface_ue_sim.h /^ uint32_t handle;$/;" m struct:fapi_ul_srs_pdu +handle fapi_interface_ue_sim.h /^ uint8_t handle; \/\/ Can be used for Phy Id or Carrier Id$/;" m struct:fapi_msg_header +handle fapi_interface_ue_sim.h /^ uint32_t handle; $/;" m struct:fapi_pRACH_Mntnc_param +harqInfo fapi_interface_ue_sim.h /^ fapi_harq_f0f1_info_t_ue_sim harqInfo; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pucch_f0f1 +harqInfo fapi_interface_ue_sim.h /^ fapi_harq_f2f3f4_info_t_ue_sim harqInfo; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pucch_f2f3f4 +harqInfo fapi_interface_ue_sim.h /^ fapi_harq_info_t_ue_sim harqInfo; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pusch +harq_ack_bit_length fapi_interface_ue_sim.h /^ uint16_t harq_ack_bit_length;$/;" m struct:fapi_pusch_uci +harq_bit_len fapi_interface_ue_sim.h /^ uint16_t harq_bit_len;$/;" m struct:fapi_harq_info +harq_bit_len fapi_interface_ue_sim.h /^ uint16_t harq_bit_len;$/;" m struct:fapi_harq_f2f3f4_info +harq_confidence_level fapi_interface_ue_sim.h /^ uint8_t harq_confidence_level;$/;" m struct:fapi_harq_f0f1_info +harq_crc fapi_interface_ue_sim.h /^ uint8_t harq_crc;$/;" m struct:fapi_harq_info +harq_crc fapi_interface_ue_sim.h /^ uint8_t harq_crc;$/;" m struct:fapi_harq_f2f3f4_info +harq_id fapi_interface_ue_sim.h /^ uint8_t harq_id;$/;" m struct:fapi_crc_ind_info +harq_id fapi_interface_ue_sim.h /^ uint8_t harq_id;$/;" m struct:fapi_pdu_ind_info +harq_payload fapi_interface_ue_sim.h /^ uint8_t harq_payload[MAX_HARQ_INFO_LEN_BYTES];$/;" m struct:fapi_harq_info +harq_payload fapi_interface_ue_sim.h /^ uint8_t harq_payload[MAX_HARQ_PAYLOAD_SIZE];$/;" m struct:fapi_harq_f2f3f4_info +harq_process_id fapi_interface_ue_sim.h /^ uint8_t harq_process_id;$/;" m struct:fapi_pusch_data +harq_value fapi_interface_ue_sim.h /^ uint8_t harq_value[MAX_NUMBER_OF_HARQS_PER_IND];$/;" m struct:fapi_harq_f0f1_info +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header; \/\/ Message Length is zero for START.request$/;" m struct:fapi_start_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header; \/\/ Message Length is zero for STOP.request$/;" m struct:fapi_stop_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header; \/\/ Message Length is zero for STOP.indication$/;" m struct:fapi_stop_ind +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header; \/\/ For PARAM.req message length in fapi_msg_t_ue_sim is zero$/;" m struct:fapi_param_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_config_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_config_resp +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_crc_ind +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_dl_tti_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_error_ind +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_param_resp +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_rach_indication +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_rx_data_indication +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_slot_ind +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_srs_indication +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_tx_data_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_uci_indication +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_ul_dci_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_ul_tti_req +header fapi_interface_ue_sim.h /^ fapi_msg_header_t_ue_sim header;$/;" m struct:fapi_start_resp +hopping_id fapi_interface_ue_sim.h /^ uint16_t hopping_id;$/;" m struct:fapi_ul_pucch_pdu +ifapi_csi_rs_tx_pwr_info fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT ifapi_csi_rs_tx_pwr_info$/;" s +imax fapi_interface_ue_sim.h /^ uint8_t imax;$/;" m struct:fapi_ssb_res_config_table +indexFdRa fapi_interface_ue_sim.h /^ uint8_t indexFdRa;$/;" m struct:fapi_ul_prach_pdu +indicationInstancePerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim indicationInstancePerSlot[6];$/;" m struct:fapi_phy_config +initialDlBwpSize fapi_interface_ue_sim.h /^ uint16_t initialDlBwpSize;$/;" m struct:fapi_dl_pdsch_mnt_parms +initialUlBwpSize fapi_interface_ue_sim.h /^ uint16_t initialUlBwpSize;$/;" m struct:fapi_pusch_mnt_parms +initial_cyclic_shift fapi_interface_ue_sim.h /^ uint16_t initial_cyclic_shift;$/;" m struct:fapi_ul_pucch_pdu +int16_t fapi_interface_ue_sim.h /^typedef int16_t int16_t;$/;" t +int32_t fapi_interface_ue_sim.h /^typedef int32_t int32_t;$/;" t +int8_t fapi_interface_ue_sim.h /^typedef signed char int8_t;$/;" t +interleaver_size fapi_interface_ue_sim.h /^ uint8_t interleaver_size;$/;" m struct:fapi_coreset +intraSlotFrequencyHopping fapi_interface_ue_sim.h /^ uint8_t intraSlotFrequencyHopping;$/;" m struct:fapi_ul_pucch_pdu +intra_freq_reselction fapi_interface_ue_sim.h /^ uint8_t intra_freq_reselction;$/;" m struct:fapi_phy_mib_pdu +is_inline_tb_crc fapi_interface_ue_sim.h /^ uint8_t is_inline_tb_crc;$/;" m struct:fapi_dl_pdsch_cbg_info +is_last_cb_present fapi_interface_ue_sim.h /^ uint8_t is_last_cb_present;$/;" m struct:fapi_dl_pdsch_cbg_info +k1 fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim k1;$/;" m struct:fapi_prachFdOccasion +k1 fapi_interface_ue_sim.h /^ int16_t k1;$/;" m struct:fapi_prachFdOccasion +lMax fapi_interface_ue_sim.h /^ uint8_t lMax;$/;" m struct:fapi_ssb_basic_parms +ldpcBaseGraph fapi_interface_ue_sim.h /^ uint8_t ldpcBaseGraph;$/;" m struct:fapi_pusch_mnt_parms +ldpcBaseGraph fapi_interface_ue_sim.h /^ uint8_t ldpcBaseGraph;$/;" m struct:fapi_dl_codeword_info +length fapi_interface_ue_sim.h /^ uint16_t length;$/;" m struct:fapi_tl +length fapi_interface_ue_sim.h /^ uint32_t length; \/\/ Length of the message body in bytes$/;" m struct:fapi_msg +length fapi_interface_ue_sim.h /^ uint32_t length;$/;" m struct:fapi_tx_dat_tlv +length fapi_interface_ue_sim.h /^ uint8_t length;$/;" m struct:fapi_config_tlv +low_papr_group_number fapi_interface_ue_sim.h /^ uint8_t low_papr_group_number;$/;" m struct:fapi_dfts_ofdm +low_papr_sequence_number fapi_interface_ue_sim.h /^ uint16_t low_papr_sequence_number;$/;" m struct:fapi_dfts_ofdm +lteCrsRaMaPatrn fapi_interface_ue_sim.h /^ uint8_t lteCrsRaMaPatrn[0]; \/\/ side depends on ceil(lteCrsRaMaPatrnBitmapSize \/ 8)$/;" m struct:fapi_dl_rate_match_ref +lteCrsRaMaPatrnBitmapSize fapi_interface_ue_sim.h /^ uint8_t lteCrsRaMaPatrnBitmapSize;$/;" m struct:fapi_dl_rate_match_ref +lteCrsRmPattern fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim lteCrsRmPattern;$/;" m struct:fapi_lte_crs_rm_pattern +lteCrsRmPtrn fapi_interface_ue_sim.h /^ fapi_lte_crs_rm_pattern_t lteCrsRmPtrn;$/;" m struct:fapi_config +lteCrsRmPtrn fapi_interface_ue_sim.h /^ fapi_lte_crs_rm_ptrn_t lteCrsRmPtrn[0];$/;" m struct:fapi_lte_crs_rm_pattern +lteFrameStructureType fapi_interface_ue_sim.h /^ uint8_t lteFrameStructureType;$/;" m struct:fapi_mbsfn_sf_config_list +mTRP_Support fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim mTRP_Support; $/;" m struct:fapi_rel16_mTRP_parameters +map fapi_interface_ue_sim.h /^ uint16_t map[0];$/;" m struct:fapi_map_index +mapIndex fapi_interface_ue_sim.h /^ fapi_map_index_t mapIndex[];$/;" m struct:fapi_uci_config +maxCodeRate fapi_interface_ue_sim.h /^ uint8_t maxCodeRate;$/;" m struct:fapi_pUCCH_Mntnnc_params +maxMuMimoUsersDl fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxMuMimoUsersDl;$/;" m struct:fapi_pdsch_parms +maxMuMimoUsersUl fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxMuMimoUsersUl;$/;" m struct:fapi_pusch_parms +maxNumCbgPerTb fapi_interface_ue_sim.h /^ uint8_t maxNumCbgPerTb;$/;" m struct:fapi_dl_tx_pwr_info +maxNumPDUsInDL_TTI fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim maxNumPDUsInDL_TTI;$/;" m struct:fapi_cell_params +maxNumPDUsInUL_DCI fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim maxNumPDUsInUL_DCI; $/;" m struct:fapi_cell_params +maxNumPDUsInUL_TTI fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim maxNumPDUsInUL_TTI;$/;" m struct:fapi_cell_params +maxNumPhys fapi_interface_ue_sim.h /^ uint8_t maxNumPhys;$/;" m struct:fapi_phy_profile +maxNumPrachConfigurations fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim maxNumPrachConfigurations;$/;" m struct:fapi_prach_parms +maxNumUciMaps fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim maxNumUciMaps;$/;" m struct:fapi_uci_parms +maxNumUlBwpIds fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxNumUlBwpIds;$/;" m struct:fapi_pucch_parms +maxNumberMimoLayersCbPusch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxNumberMimoLayersCbPusch;$/;" m struct:fapi_pusch_parms +maxNumberMimoLayersPdsch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxNumberMimoLayersPdsch;$/;" m struct:fapi_pdsch_parms +maxNumberMimoLayersnonCbPusch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxNumberMimoLayersnonCbPusch;$/;" m struct:fapi_pusch_parms +maxPdcchsPerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxPdcchsPerSlot;$/;" m struct:fapi_pdcch_parms +maxPdschsTBsPerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxPdschsTBsPerSlot;$/;" m struct:fapi_pdsch_parms +maxPduschsTBsPerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxPduschsTBsPerSlot;$/;" m struct:fapi_pusch_parms +maxPrachFdOccasionsInASlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxPrachFdOccasionsInASlot;$/;" m struct:fapi_prach_parms +maxPucchsPerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim maxPucchsPerSlot;$/;" m struct:fapi_pucch_parms +mbsfnSFConfigList fapi_interface_ue_sim.h /^ fapi_mbsfn_sf_config_list_t mbsfnSFConfigList[0];$/;" m struct:fapi_lte_crs_rm_ptrn +mcs_index fapi_interface_ue_sim.h /^ uint8_t mcs_index;$/;" m struct:fapi_codeword_pdu +mcs_index fapi_interface_ue_sim.h /^ uint8_t mcs_index;$/;" m struct:fapi_ul_pusch_pdu +mcs_table fapi_interface_ue_sim.h /^ uint8_t mcs_table;$/;" m struct:fapi_codeword_pdu +mcs_table fapi_interface_ue_sim.h /^ uint8_t mcs_table;$/;" m struct:fapi_ul_pusch_pdu +measConfig fapi_interface_ue_sim.h /^ fapi_meas_config_t_ue_sim measConfig;$/;" m struct:fapi_config +measConfig fapi_interface_ue_sim.h /^ fapi_meas_config_t_ue_sim measConfig;$/;" m struct:fapi_config +measParms fapi_interface_ue_sim.h /^ fapi_meas_parms_t_ue_sim measParms;$/;" m struct:fapi_params +message_id fapi_interface_ue_sim.h /^ uint8_t message_id;$/;" m struct:fapi_error_ind +message_type_id fapi_interface_ue_sim.h /^ uint16_t message_type_id;$/;" m struct:fapi_msg +mib fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim mib;$/;" m struct:fapi_ssb_table +moreThanOneIndicationPerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim moreThanOneIndicationPerSlot[6];$/;" m struct:fapi_phy_parms +moreThanOneRequestPerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim moreThanOneRequestPerSlot[4]; $/;" m struct:fapi_phy_parms +msg_body fapi_interface_ue_sim.h /^ uint8_t* msg_body;$/;" m struct:pkd_fapi_l1api_msg_frmt +msg_details fapi_interface_ue_sim.h /^ fapi_msg_t_ue_sim msg_details;$/;" m struct:fapi_msg_header +msg_id fapi_interface_ue_sim.h /^ uint8_t msg_id;$/;" m struct:pkd_fapi_l1api_msg_frmt +msg_len fapi_interface_ue_sim.h /^ uint16_t msg_len;$/;" m struct:pkd_fapi_l1api_msg_frmt +multiPrachConfig fapi_interface_ue_sim.h /^ fapi_multi_prach_config_t multiPrachConfig;$/;" m struct:fapi_config +multiPrachConfig fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim multiPrachConfig;$/;" m struct:fapi_multi_prach_config +multiSsbResourceConfig fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim multiSsbResourceConfig;$/;" m struct:fapi_multi_ssb_resource_config_table +multiSsbResourceConfigTable fapi_interface_ue_sim.h /^ fapi_multi_ssb_resource_config_table_t multiSsbResourceConfigTable;$/;" m struct:fapi_config +multi_slot_tx_indicator fapi_interface_ue_sim.h /^ uint8_t multi_slot_tx_indicator;$/;" m struct:fapi_ul_pucch_pdu +multipleCellsSsPbchInACarrier fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim multipleCellsSsPbchInACarrier;$/;" m struct:fapi_carrier_parms +multipleCellsSsPbchInACarrier fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim multipleCellsSsPbchInACarrier;$/;" m struct:fapi_ssb_table +nDlTypes fapi_interface_ue_sim.h /^ uint8_t nDlTypes;$/;" m struct:fapi_dl_tti_req +nDlTypes fapi_interface_ue_sim.h /^ uint8_t nDlTypes;$/;" m struct:fapi_ul_dci_req +nEpreRatOfPdschToPtrsProfNR fapi_interface_ue_sim.h /^ uint8_t nEpreRatOfPdschToPtrsProfNR; $/;" m struct:fapi_dl_pdsch_ptrs2 +nIdPdcchData fapi_interface_ue_sim.h /^ uint16_t nIdPdcchData;$/;" m struct:fapi_dl_dci +nIdPdcchDmrs fapi_interface_ue_sim.h /^ uint16_t nIdPdcchDmrs; $/;" m struct:fapi_coreset_parms +nIdPdsch fapi_interface_ue_sim.h /^ uint16_t nIdPdsch;$/;" m struct:fapi_dl_pdsch_pdu +nIdPucchHopping fapi_interface_ue_sim.h /^ uint16_t nIdPucchHopping;$/;" m struct:fapi_ul_bwp_id +nIdPucchHopping fapi_interface_ue_sim.h /^ uint8_t nIdPucchHopping;$/;" m struct:fapi_ul_pucch_pdu +nIdPucchScrambling fapi_interface_ue_sim.h /^ uint16_t nIdPucchScrambling;$/;" m struct:fapi_ul_pucch_pdu +nIdPusch fapi_interface_ue_sim.h /^ uint16_t nIdPusch;$/;" m struct:fapi_ul_pusch_pdu +nPDUsOfEachType fapi_interface_ue_sim.h /^ uint16_t nPDUsOfEachType[MAX_NDLTYPES_DL_TTI_REQ]; $/;" m struct:fapi_dl_tti_req +nPDUsOfEachType fapi_interface_ue_sim.h /^ uint16_t nPDUsOfEachType[MAX_NDLTYPES_UL_DCI_REQ];$/;" m struct:fapi_ul_dci_req +nPDUsOfEachType fapi_interface_ue_sim.h /^ uint16_t nPDUsOfEachType[MAX_NUM_UL_TYPES]; $/;" m struct:fapi_ul_tti_req +nRntiPdcchData fapi_interface_ue_sim.h /^ uint16_t nRntiPdcchData;$/;" m struct:fapi_dl_dci +nScid fapi_interface_ue_sim.h /^ uint8_t nScid;$/;" m struct:fapi_ul_pusch_pdu +nUlTypes fapi_interface_ue_sim.h /^ uint8_t nUlTypes;$/;" m struct:fapi_ul_tti_req +n_epre_ratio_of_pdsch_to_ptrs fapi_interface_ue_sim.h /^ uint8_t n_epre_ratio_of_pdsch_to_ptrs;$/;" m struct:fapi_dl_pdsch_ptrs_info +n_group fapi_interface_ue_sim.h /^ uint8_t n_group; \/* Number of UE Groups included in this message.*\/$/;" m struct:fapi_ul_tti_req +n_group fapi_interface_ue_sim.h /^ uint8_t n_group;$/;" m struct:fapi_dl_tti_req +n_pdus fapi_interface_ue_sim.h /^ uint16_t n_pdus;$/;" m struct:fapi_dl_tti_req +n_pdus fapi_interface_ue_sim.h /^ uint16_t n_pdus;$/;" m struct:fapi_ul_tti_req +n_pdus fapi_interface_ue_sim.h /^ uint8_t n_pdus;$/;" m struct:fapi_dl_tti_req +n_pdus fapi_interface_ue_sim.h /^ uint8_t n_pdus;$/;" m struct:fapi_ul_tti_req +n_ue fapi_interface_ue_sim.h /^ uint8_t n_ue;$/;" m struct:fapi_ue_info +n_ulcch fapi_interface_ue_sim.h /^ uint8_t n_ulcch; \/* Number of ULCCH PDUs that are included in this message.*\/$/;" m struct:fapi_ul_tti_req +n_ulsch fapi_interface_ue_sim.h /^ uint8_t n_ulsch; \/* Number of ULSCH PDUs that are included in this message.*\/$/;" m struct:fapi_ul_tti_req +new_data_indicator fapi_interface_ue_sim.h /^ uint8_t new_data_indicator;$/;" m struct:fapi_pusch_data +nrCrsPorts fapi_interface_ue_sim.h /^ uint8_t nrCrsPorts;$/;" m struct:fapi_lte_crs_rm_ptrn +nr_of_code_words fapi_interface_ue_sim.h /^ uint8_t nr_of_code_words; \/* SCF : Code Word Info Start *\/$/;" m struct:fapi_dl_pdsch_pdu +nr_of_layers fapi_interface_ue_sim.h /^ uint8_t nr_of_layers;$/;" m struct:fapi_dl_pdsch_pdu +nr_of_layers fapi_interface_ue_sim.h /^ uint8_t nr_of_layers;$/;" m struct:fapi_ul_pusch_pdu +nr_of_rbs fapi_interface_ue_sim.h /^ uint16_t nr_of_rbs;$/;" m struct:fapi_dl_csi_rs_pdu +nr_of_symbols fapi_interface_ue_sim.h /^ uint8_t nr_of_symbols; \/*SCF : PDSCH Allocation in Time Domain End *\/$/;" m struct:fapi_pdsch_time_dom_alloc +nr_of_symbols fapi_interface_ue_sim.h /^ uint8_t nr_of_symbols;$/;" m struct:fapi_ul_pucch_pdu +nr_of_symbols fapi_interface_ue_sim.h /^ uint8_t nr_of_symbols;$/;" m struct:fapi_ul_pusch_pdu +nr_ssb_periodicity fapi_interface_ue_sim.h /^typedef enum nr_ssb_periodicity$/;" g +nr_ssb_periodicity_t fapi_interface_ue_sim.h /^} nr_ssb_periodicity_t;$/;" t typeref:enum:nr_ssb_periodicity +numAntPorts fapi_interface_ue_sim.h /^ uint16_t numAntPorts;$/;" m struct:PACK_STRUCT +numBasebandPorts fapi_interface_ue_sim.h /^ uint16_t numBasebandPorts;$/;" m struct:fapi_beamforming_table +numCapabilities fapi_interface_ue_sim.h /^ uint16_t numCapabilities;$/;" m struct:fapi_capability_validity +numCoresetRmPatrn fapi_interface_ue_sim.h /^ uint8_t numCoresetRmPatrn;$/;" m struct:fapi_dl_rate_match_ref +numCsiRsForRaMa fapi_interface_ue_sim.h /^ uint8_t numCsiRsForRaMa;$/;" m struct:fapi_dl_rate_match_ref +numDfeProfiles fapi_interface_ue_sim.h /^ uint16_t numDfeProfiles;$/;" m struct:fapi_dfe_profile +numDigBeams fapi_interface_ue_sim.h /^ uint16_t numDigBeams;$/;" m struct:fapi_beamforming_table +numDlBbPorts fapi_interface_ue_sim.h /^ uint16_t numDlBbPorts;$/;" m struct:fapi_phy_parms +numDlPortRanges fapi_interface_ue_sim.h /^ uint8_t numDlPortRanges; \/* Number of DL port ranges for this PHYs *\/$/;" m struct:fapi_phy_port +numFdRa fapi_interface_ue_sim.h /^ uint8_t numFdRa;$/;" m struct:fapi_pRACH_Mntnc_param +numLayers fapi_interface_ue_sim.h /^ uint16_t numLayers;$/;" m struct:PACK_STRUCT +numLteCrsRmPattern fapi_interface_ue_sim.h /^ uint8_t numLteCrsRmPattern;$/;" m struct:fapi_lte_crs_rm_pattern +numOfRateMatchPatternLTECrsInPhy fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim numOfRateMatchPatternLTECrsInPhy;$/;" m struct:fapi_pdsch_parms +numOfRateMatchPatternLTECrsPerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim numOfRateMatchPatternLTECrsPerSlot;$/;" m struct:fapi_pdsch_parms +numPart1Params fapi_interface_ue_sim.h /^ uint8_t numPart1Params;$/;" m struct:fapi_map_index +numPart1Params fapi_interface_ue_sim.h /^ uint8_t numPart1Params;$/;" m struct:fapi_part2_parms +numPart1Params fapi_interface_ue_sim.h /^ uint8_t numPart1Params;$/;" m struct:fapi_uci_part2 +numPart2s fapi_interface_ue_sim.h /^ uint16_t numPart2s;$/;" m struct:fapi_optional_pusch_uci +numPart2s fapi_interface_ue_sim.h /^ uint16_t numPart2s;$/;" m struct:fapi_uci_part1_part2 +numPdus fapi_interface_ue_sim.h /^ uint16_t numPdus;$/;" m struct:fapi_tx_data_req +numPdus fapi_interface_ue_sim.h /^ uint8_t numPdus;$/;" m struct:fapi_rach_indication +numPdus fapi_interface_ue_sim.h /^ uint8_t numPdus;$/;" m struct:fapi_srs_indication +numPhyProfiles fapi_interface_ue_sim.h /^ uint16_t numPhyProfiles;$/;" m struct:fapi_phy_parms +numPhyProfiles fapi_interface_ue_sim.h /^ uint16_t numPhyProfiles;$/;" m struct:fapi_dfe_profile +numPrachConfigurations fapi_interface_ue_sim.h /^ uint16_t numPrachConfigurations;$/;" m struct:fapi_multi_prach_config +numPrachConfigurationsTlv fapi_interface_ue_sim.h /^ fapi_prach_configuration_t_ue_sim numPrachConfigurationsTlv[]; $/;" m struct:fapi_multi_prach_config +numPrachFdOccasions fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim numPrachFdOccasions;$/;" m struct:fapi_prach_configuration +numPrachFdOccasions fapi_interface_ue_sim.h /^ uint8_t numPrachFdOccasions;$/;" m struct:fapi_prach_configuration +numPrbSymRmPatrnByVal fapi_interface_ue_sim.h /^ uint8_t numPrbSymRmPatrnByVal; $/;" m struct:fapi_dl_rate_match_ref +numPrbSymbRatePattern fapi_interface_ue_sim.h /^ uint8_t numPrbSymbRatePattern;$/;" m struct:fapi_prb_symbol_rate_match_pattern +numPreamble fapi_interface_ue_sim.h /^ uint8_t numPreamble;$/;" m struct:fapi_rach_pdu +numPreambleIndices fapi_interface_ue_sim.h /^ uint8_t numPreambleIndices;$/;" m struct:fapi_pRACH_Mntnc_param +numRbs fapi_interface_ue_sim.h /^ uint16_t numRbs;$/;" m struct:fapi_symb_snr +numReportedSymbols fapi_interface_ue_sim.h /^ uint8_t numReportedSymbols;$/;" m struct:fapi_srs_pdu +numRootSequences fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim numRootSequences;$/;" m struct:fapi_prachFdOccasion +numRootSequences fapi_interface_ue_sim.h /^ uint8_t numRootSequences;$/;" m struct:fapi_prachFdOccasion +numRxAnt fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim numRxAnt;$/;" m struct:fapi_carrier_config +numRxAnt fapi_interface_ue_sim.h /^ uint16_t numRxAnt;$/;" m struct:fapi_carrier_config +numRxPortsTRP1 fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim numRxPortsTRP1;$/;" m struct:fapi_rel16_mtrp_config +numSsbConfigurations fapi_interface_ue_sim.h /^ uint8_t numSsbConfigurations;$/;" m struct:fapi_multi_ssb_resource_config_table +numSymbols fapi_interface_ue_sim.h /^ uint8_t numSymbols;$/;" m struct:fapi_srs_pdu +numTlvs fapi_interface_ue_sim.h /^ uint32_t numTlvs;$/;" m struct:fapi_tx_pdu_desc +numTlvsToReport fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim numTlvsToReport;$/;" m struct:fapi_cell_params +numTxAnt fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim numTxAnt;$/;" m struct:fapi_carrier_config +numTxAnt fapi_interface_ue_sim.h /^ uint16_t numTxAnt;$/;" m struct:fapi_carrier_config +numTxPortsTRP1 fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim numTxPortsTRP1;$/;" m struct:fapi_rel16_mtrp_config +numTxRus fapi_interface_ue_sim.h /^ uint16_t numTxRus;$/;" m struct:fapi_beamforming_table +numUci2Maps fapi_interface_ue_sim.h /^ uint16_t numUci2Maps; $/;" m struct:fapi_uci_config +numUlBbPorts fapi_interface_ue_sim.h /^ uint16_t numUlBbPorts;$/;" m struct:fapi_phy_parms +numUlBwpIds fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim numUlBwpIds;$/;" m struct:fapi_pucch_semi_static_config +numUlPortRanges fapi_interface_ue_sim.h /^ uint8_t numUlPortRanges;$/;" m struct:fapi_phy_port +numUnusedRootSequences fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim numUnusedRootSequences; \/\/ 5G FAPI Table 3-24 Subset$/;" m struct:fapi_prachFdOccasion +numUnusedRootSequences fapi_interface_ue_sim.h /^ uint16_t numUnusedRootSequences; \/\/ 5G FAPI Table 3-24 Subset$/;" m struct:fapi_prachFdOccasion +num_ant_ports fapi_interface_ue_sim.h /^ uint8_t num_ant_ports;$/;" m struct:fapi_ul_srs_pdu +num_cb fapi_interface_ue_sim.h /^ uint16_t num_cb;$/;" m struct:fapi_crc_ind_info +num_cb fapi_interface_ue_sim.h /^ uint16_t num_cb;$/;" m struct:fapi_pusch_data +num_crcs fapi_interface_ue_sim.h /^ uint16_t num_crcs;$/;" m struct:fapi_crc_ind +num_cs fapi_interface_ue_sim.h /^ uint16_t num_cs;$/;" m struct:fapi_ul_prach_pdu +num_dl_dci fapi_interface_ue_sim.h /^ uint16_t num_dl_dci; \/*Number of DCIs in this CORESET *\/ $/;" m struct:fapi_dl_pdcch_pdu +num_dmrs_cdm_grps_no_data fapi_interface_ue_sim.h /^ uint8_t num_dmrs_cdm_grps_no_data;$/;" m struct:fapi_dmrs +num_dmrs_cdm_grps_no_data fapi_interface_ue_sim.h /^ uint8_t num_dmrs_cdm_grps_no_data;$/;" m struct:fapi_ul_pusch_pdu +num_harq fapi_interface_ue_sim.h /^ uint8_t num_harq;$/;" m struct:fapi_harq_f0f1_info +num_pdus fapi_interface_ue_sim.h /^ uint16_t num_pdus;$/;" m struct:fapi_rx_data_indication +num_pdus fapi_interface_ue_sim.h /^ uint8_t num_pdus;$/;" m struct:fapi_ul_dci_req +num_prach_ocas fapi_interface_ue_sim.h /^ uint8_t num_prach_ocas;$/;" m struct:fapi_ul_prach_pdu +num_prgs fapi_interface_ue_sim.h /^ uint16_t num_prgs;$/;" m struct:fapi_bmform +num_prgs fapi_interface_ue_sim.h /^ uint16_t num_prgs;$/;" m struct:fapi_precoding_bmform +num_ptrs_ports fapi_interface_ue_sim.h /^ uint8_t num_ptrs_ports;$/;" m struct:fapi_pusch_ptrs +num_ra fapi_interface_ue_sim.h /^ uint8_t num_ra;$/;" m struct:fapi_ul_prach_pdu +num_repetitions fapi_interface_ue_sim.h /^ uint8_t num_repetitions;$/;" m struct:fapi_ul_srs_pdu +num_symbols fapi_interface_ue_sim.h /^ uint8_t num_symbols;$/;" m struct:fapi_ul_srs_pdu +num_ucis fapi_interface_ue_sim.h /^ uint16_t num_ucis;$/;" m struct:fapi_uci_indication +numberOfMessagesIncluded fapi_interface_ue_sim.h /^ uint8_t numberOfMessagesIncluded;$/;" m struct:fapi_msg_header +number_of_inv_tlvs_idle_only fapi_interface_ue_sim.h /^ uint8_t number_of_inv_tlvs_idle_only;$/;" m struct:fapi_config_resp +number_of_inv_tlvs_running_only fapi_interface_ue_sim.h /^ uint8_t number_of_inv_tlvs_running_only; $/;" m struct:fapi_config_resp +number_of_invalid_tlvs fapi_interface_ue_sim.h /^ uint8_t number_of_invalid_tlvs;$/;" m struct:fapi_config_resp +number_of_missing_tlvs fapi_interface_ue_sim.h /^ uint8_t number_of_missing_tlvs;$/;" m struct:fapi_config_resp +number_of_tlvs fapi_interface_ue_sim.h /^ uint8_t number_of_tlvs;$/;" m struct:fapi_config_req +number_of_tlvs fapi_interface_ue_sim.h /^ uint8_t number_of_tlvs;$/;" m struct:fapi_param_resp +obsolete8bit fapi_interface_ue_sim.h /^ uint8_t obsolete8bit;$/;" m struct:fapi_ul_pucch_pdu +oneOrTwoSlots fapi_interface_ue_sim.h /^ uint8_t oneOrTwoSlots;$/;" m struct:fapi_prb_sym_rate_match_pattern +optionalPuschUci fapi_interface_ue_sim.h /^ fapi_optional_pusch_uci_t optionalPuschUci; $/;" m struct:fapi_ul_pusch_pdu +pRACH_Mntnc fapi_interface_ue_sim.h /^ fapi_pRACH_Mntnc_param_t pRACH_Mntnc; $/;" m struct:fapi_ul_prach_pdu +paramOffsets fapi_interface_ue_sim.h /^ uint16_t paramOffsets[0];$/;" m struct:fapi_part2_parms +paramOffsets fapi_interface_ue_sim.h /^ uint16_t paramOffsets[0];$/;" m struct:fapi_uci_part2 +paramSizes fapi_interface_ue_sim.h /^ uint8_t paramSizes[0];$/;" m struct:fapi_part2_parms +paramSizes fapi_interface_ue_sim.h /^ uint8_t paramSizes[0];$/;" m struct:fapi_uci_part2 +part2SizeMapIndex fapi_interface_ue_sim.h /^ uint16_t part2SizeMapIndex; $/;" m struct:fapi_part2_parms +part2SizeMapIndex fapi_interface_ue_sim.h /^ uint8_t part2SizeMapIndex;$/;" m struct:fapi_uci_part2 +part2_parms fapi_interface_ue_sim.h /^ fapi_part2_parms_t part2_parms[0]; $/;" m struct:fapi_optional_pusch_uci +payload fapi_interface_ue_sim.h /^ uint8_t payload[];$/;" m struct:fapi_dl_dci +payload_size_bits fapi_interface_ue_sim.h /^ uint16_t payload_size_bits;$/;" m struct:fapi_dl_dci +pc_and_bform fapi_interface_ue_sim.h /^ fapi_precoding_bmform_t_ue_sim pc_and_bform;$/;" m struct:fapi_dl_dci +pdcchDataPowerOffsetProfileSSS fapi_interface_ue_sim.h /^ int16_t pdcchDataPowerOffsetProfileSSS; $/;" m struct:fapi_dci_specific_parms +pdcchDmrsPowerOffsetProfileSSS fapi_interface_ue_sim.h /^ int16_t pdcchDmrsPowerOffsetProfileSSS;$/;" m struct:fapi_dci_specific_parms +pdcchMntParms fapi_interface_ue_sim.h /^ fapi_pdcch_mnt_parms_t pdcchMntParms;$/;" m struct:fapi_dl_pdcch_pdu +pdcchMuMimo fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdcchMuMimo;$/;" m struct:fapi_pdcch_parms +pdcchParms fapi_interface_ue_sim.h /^ fapi_pdcch_parms_t_ue_sim pdcchParms;$/;" m struct:fapi_params +pdcchPduIndex fapi_interface_ue_sim.h /^ uint16_t pdcchPduIndex;$/;" m struct:fapi_dl_rate_match_ref +pdcchPduIndex fapi_interface_ue_sim.h /^ uint16_t pdcchPduIndex; $/;" m struct:fapi_coreset_parms +pdcchPrecoderCycling fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdcchPrecoderCycling;$/;" m struct:fapi_pdcch_parms +pdcchRateMatch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdcchRateMatch; $/;" m struct:fapi_pdsch_parms +pdcch_config_sib1 fapi_interface_ue_sim.h /^ uint8_t pdcch_config_sib1;$/;" m struct:fapi_phy_mib_pdu +pdcch_pdu fapi_interface_ue_sim.h /^ fapi_dl_pdcch_pdu_t_ue_sim pdcch_pdu;$/;" m union:fapi_dl_tti_req_pdu::__anon3 +pdcch_pdu fapi_interface_ue_sim.h /^ fapi_dl_pdcch_pdu_t_ue_sim pdcch_pdu;$/;" m struct:fapi_dci_pdu +pdschAllocationTypes fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschAllocationTypes;$/;" m struct:fapi_pdsch_parms +pdschCbg fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschCbg;$/;" m struct:fapi_pdsch_parms +pdschCbgScheme fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschCbgScheme;$/;" m struct:fapi_pdsch_config +pdschConfig fapi_interface_ue_sim.h /^ fapi_pdsch_config_t pdschConfig;$/;" m struct:fapi_config +pdschDataInDmrsSymbols fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschDataInDmrsSymbols;$/;" m struct:fapi_pdsch_parms +pdschDataPwrOffsetPrfSSS fapi_interface_ue_sim.h /^ uint16_t pdschDataPwrOffsetPrfSSS;$/;" m struct:fapi_dl_tx_pwr_info +pdschDmrsAdditionalPos fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschDmrsAdditionalPos;$/;" m struct:fapi_pdsch_parms +pdschDmrsConfigTypes fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschDmrsConfigTypes;$/;" m struct:fapi_pdsch_parms +pdschDmrsMaxLength fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschDmrsMaxLength;$/;" m struct:fapi_pdsch_parms +pdschDmrsPwrOffsetPrfSSS fapi_interface_ue_sim.h /^ uint16_t pdschDmrsPwrOffsetPrfSSS;$/;" m struct:fapi_dl_tx_pwr_info +pdschMacPduBitAlignment fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschMacPduBitAlignment;$/;" m struct:fapi_pdsch_parms +pdschMappingType fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschMappingType;$/;" m struct:fapi_pdsch_parms +pdschNonSlotSupport fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschNonSlotSupport;$/;" m struct:fapi_pdsch_parms +pdschParms fapi_interface_ue_sim.h /^ fapi_pdsch_parms_t_ue_sim pdschParms;$/;" m struct:fapi_params +pdschPtrs2 fapi_interface_ue_sim.h /^ fapi_dl_pdsch_ptrs2_t pdschPtrs2;$/;" m struct:fapi_dl_rel16_pdsch_parms_t +pdschPtrsPwrOffsetPrfSSS fapi_interface_ue_sim.h /^ uint16_t pdschPtrsPwrOffsetPrfSSS; $/;" m struct:fapi_dl_ptrs_tx_pwr_info +pdschPtrsV3 fapi_interface_ue_sim.h /^ fapi_dl_pdsch_ptrsv3_t pdschPtrsV3;$/;" m struct:fapi_dl_rel16_pdsch_parms_t +pdschTransType fapi_interface_ue_sim.h /^ uint8_t pdschTransType;$/;" m struct:fapi_dl_pdsch_mnt_parms +pdschTransTypeSupport fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschTransTypeSupport;$/;" m struct:fapi_pdsch_parms +pdschTransTypeValidity fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschTransTypeValidity;$/;" m struct:fapi_cell_config +pdschVrbToPrbMapping fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pdschVrbToPrbMapping;$/;" m struct:fapi_pdsch_parms +pdsch_freq_dom_alloc fapi_interface_ue_sim.h /^ fapi_pdsch_freq_dom_alloc_t pdsch_freq_dom_alloc;$/;" m struct:fapi_dl_pdsch_pdu +pdsch_pdu fapi_interface_ue_sim.h /^ fapi_dl_pdsch_pdu_t_ue_sim pdsch_pdu;$/;" m union:fapi_dl_tti_req_pdu::__anon3 +pdsch_ptrs_info fapi_interface_ue_sim.h /^ fapi_dl_pdsch_ptrs_info_t pdsch_ptrs_info;$/;" m struct:fapi_dl_pdsch_pdu +pdsch_time_dom_alloc fapi_interface_ue_sim.h /^ fapi_pdsch_time_dom_alloc_t pdsch_time_dom_alloc; $/;" m struct:fapi_dl_pdsch_pdu +pduDataOrOffset fapi_interface_ue_sim.h /^ uint64_t pduDataOrOffset; \/\/Shared memory offset \/\/ 5G FAPI Table 3-61 Subset$/;" m struct:fapi_pdu_ind_info +pduDesc fapi_interface_ue_sim.h /^ fapi_tx_pdu_desc_t_ue_sim pduDesc[];$/;" m struct:fapi_tx_data_req +pduIndex fapi_interface_ue_sim.h /^ uint16_t pduIndex;$/;" m struct:fapi_tx_pdu_desc +pduLength fapi_interface_ue_sim.h /^ uint32_t pduLength;$/;" m struct:fapi_tx_pdu_desc +pduTag fapi_interface_ue_sim.h /^ uint16_t pduTag;$/;" m struct:fapi_pdu_ind_info +pdu_bit_map fapi_interface_ue_sim.h /^ uint16_t pdu_bit_map; \/* Bit 0: pdschPtrs - Indicates PTRS included (FR2)$/;" m struct:fapi_dl_pdsch_pdu +pdu_bitmap fapi_interface_ue_sim.h /^ uint16_t pdu_bitmap;$/;" m struct:fapi_ul_pusch_pdu +pdu_bitmap fapi_interface_ue_sim.h /^ uint8_t pdu_bitmap;$/;" m struct:fapi_uci_o_pucch_f0f1 +pdu_bitmap fapi_interface_ue_sim.h /^ uint8_t pdu_bitmap;$/;" m struct:fapi_uci_o_pucch_f2f3f4 +pdu_bitmap fapi_interface_ue_sim.h /^ uint8_t pdu_bitmap;$/;" m struct:fapi_uci_o_pusch +pdu_data fapi_interface_ue_sim.h /^ void* pdu_data;$/;" m struct:fapi_pdu_ind_info +pdu_idx fapi_interface_ue_sim.h /^ uint8_t pdu_idx[];$/;" m struct:fapi_ue_info +pdu_index fapi_interface_ue_sim.h /^ uint16_t pdu_index;$/;" m struct:fapi_dl_pdsch_pdu +pdu_length fapi_interface_ue_sim.h /^ uint32_t pdu_length;$/;" m struct:fapi_pdu_ind_info +pdu_length fapi_interface_ue_sim.h /^ uint16_t pdu_length;$/;" m struct:fapi_pdu_ind_info +pdu_size fapi_interface_ue_sim.h /^ uint16_t pdu_size;$/;" m struct:fapi_dci_pdu +pdu_size fapi_interface_ue_sim.h /^ uint16_t pdu_size;$/;" m struct:fapi_dl_tti_req_pdu +pdu_size fapi_interface_ue_sim.h /^ uint16_t pdu_size;$/;" m struct:fapi_uci_pdu_info +pdu_size fapi_interface_ue_sim.h /^ uint16_t pdu_size;$/;" m struct:fapi_ul_tti_req_pdu +pdu_type fapi_interface_ue_sim.h /^ uint16_t pdu_type;$/;" m struct:fapi_dci_pdu +pdu_type fapi_interface_ue_sim.h /^ uint16_t pdu_type;$/;" m struct:fapi_dl_tti_req_pdu +pdu_type fapi_interface_ue_sim.h /^ uint16_t pdu_type;$/;" m struct:fapi_uci_pdu_info +pdu_type fapi_interface_ue_sim.h /^ uint16_t pdu_type;$/;" m struct:fapi_ul_tti_req_pdu +pdus fapi_interface_ue_sim.h /^ fapi_dci_pdu_t_ue_sim pdus[];$/;" m struct:fapi_ul_dci_req +pdus fapi_interface_ue_sim.h /^ fapi_dl_tti_req_pdu_t_ue_sim pdus[0];$/;" m struct:fapi_dl_tti_req +pdus fapi_interface_ue_sim.h /^ fapi_pdu_ind_info_t_ue_sim pdus[MAX_NUMBER_OF_ULSCH_PDUS_PER_TTI];$/;" m struct:fapi_rx_data_indication +pdus fapi_interface_ue_sim.h /^ fapi_ul_tti_req_pdu_t_ue_sim pdus[0];$/;" m struct:fapi_ul_tti_req +phyCellId fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim phyCellId; \/\/in legacy data type mentioned was uint8_t, though in spec it was uint16_t$/;" m struct:fapi_cell_config +phyConfig fapi_interface_ue_sim.h /^ fapi_phy_config_t phyConfig;$/;" m struct:fapi_config +phyFapiNegotiatedProtocolVersion fapi_interface_ue_sim.h /^ uint8_t phyFapiNegotiatedProtocolVersion;$/;" m struct:fapi_phy_parms +phyFapiProtocolVersion fapi_interface_ue_sim.h /^ uint8_t phyFapiProtocolVersion;$/;" m struct:fapi_phy_parms +phyProfileId fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim phyProfileId;$/;" m struct:fapi_phy_config +phyProfiles fapi_interface_ue_sim.h /^ fapi_phy_profile_t phyProfiles[0];$/;" m struct:fapi_phy_parms +phyState fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim phyState;$/;" m struct:fapi_cell_params +phySupport fapi_interface_ue_sim.h /^ fapi_phy_support_t phySupport;$/;" m struct:fapi_params +phySupport fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim phySupport;$/;" m struct:fapi_phy_parms +phy_mib_pdu fapi_interface_ue_sim.h /^ fapi_phy_mib_pdu_t_ue_sim phy_mib_pdu;$/;" m union:fapi_bch_payload::__anon2 +phy_port fapi_interface_ue_sim.h /^ fapi_phy_port_t phy_port[0];$/;" m struct:fapi_phy_profile +phys_cell_id fapi_interface_ue_sim.h /^ uint16_t phys_cell_id;$/;" m struct:fapi_dl_ssb_pdu +phys_cell_id fapi_interface_ue_sim.h /^ uint16_t phys_cell_id;$/;" m struct:fapi_ul_prach_pdu +pi2_bpsk fapi_interface_ue_sim.h /^ uint8_t pi2_bpsk;$/;" m struct:fapi_ul_pucch_pdu +pkd_fapi_l1api_msg_frmt fapi_interface_ue_sim.h /^typedef struct PACK_STRUCT pkd_fapi_l1api_msg_frmt$/;" s +pkd_fapi_l1api_msg_frmt_t fapi_interface_ue_sim.h /^} pkd_fapi_l1api_msg_frmt_t;$/;" t typeref:struct:pkd_fapi_l1api_msg_frmt +pmIdx fapi_interface_ue_sim.h /^ uint16_t pmIdx;$/;" m struct:PACK_STRUCT +pm_idx fapi_interface_ue_sim.h /^ uint16_t pm_idx;$/;" m struct:fapi_pmi_bfi +pmi_bfi fapi_interface_ue_sim.h /^ fapi_pmi_bfi_t_ue_sim pmi_bfi[1];$/;" m struct:fapi_precoding_bmform +powerControlOffsetSSProfileNR fapi_interface_ue_sim.h /^ int8_t powerControlOffsetSSProfileNR;$/;" m struct:fapi_tx_power_info +powerOffsetMax fapi_interface_ue_sim.h /^ int16_t powerOffsetMax;$/;" m struct:fapi_signal_index +powerOffsetMin fapi_interface_ue_sim.h /^ int16_t powerOffsetMin;$/;" m struct:fapi_signal_index +powerOffsetRsIndex fapi_interface_ue_sim.h /^ uint8_t powerOffsetRsIndex;$/;" m struct:fapi_carrier_config +powerProfile fapi_interface_ue_sim.h /^ uint8_t powerProfile;$/;" m struct:fapi_carrier_config +powerProfilesSupported fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim powerProfilesSupported;$/;" m struct:fapi_cell_params +power_control_offset fapi_interface_ue_sim.h /^ uint8_t power_control_offset; \/*SCF : TX Power Info Start *\/$/;" m struct:fapi_tx_pwr_info +power_control_offset_ss fapi_interface_ue_sim.h /^ uint8_t power_control_offset_ss; \/*SCF : Tx Power Info End *\/$/;" m struct:fapi_tx_pwr_info +power_control_ofsset_ss fapi_interface_ue_sim.h /^ uint8_t power_control_ofsset_ss;$/;" m struct:fapi_tx_power_info +prachConfig fapi_interface_ue_sim.h /^ fapi_prach_configuration_t_ue_sim prachConfig;$/;" m struct:fapi_config +prachConfig fapi_interface_ue_sim.h /^ fapi_prach_configuration_t_ue_sim prachConfig;$/;" m struct:fapi_config +prachConfig fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim prachConfig;$/;" m struct:fapi_prach_configuration +prachConfigIndex fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachConfigIndex;$/;" m struct:fapi_prach_configuration +prachConfigIndex fapi_interface_ue_sim.h /^ uint8_t prachConfigIndex;$/;" m struct:fapi_prach_configuration +prachConfigScope fapi_interface_ue_sim.h /^ uint8_t prachConfigScope;$/;" m struct:fapi_pRACH_Mntnc_param +prachFdOccasion fapi_interface_ue_sim.h /^ fapi_prachFdOccasion_t_ue_sim prachFdOccasion[MAX_NUM_PRACH_FD_OCCASIONS];$/;" m struct:fapi_prach_configuration +prachLongFormats fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachLongFormats;$/;" m struct:fapi_prach_parms +prachMultipleCarriersInABand fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachMultipleCarriersInABand;$/;" m struct:fapi_prach_configuration +prachMultipleCarriersInABand fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachMultipleCarriersInABand;$/;" m struct:fapi_prach_parms +prachParms fapi_interface_ue_sim.h /^ fapi_prach_parms_t_ue_sim prachParms;$/;" m struct:fapi_params +prachResConfigIndex fapi_interface_ue_sim.h /^ uint16_t prachResConfigIndex;$/;" m struct:fapi_prach_configuration +prachResConfigIndex fapi_interface_ue_sim.h /^ uint16_t prachResConfigIndex;$/;" m struct:fapi_pRACH_Mntnc_param +prachRestrictedSets fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachRestrictedSets;$/;" m struct:fapi_prach_parms +prachRootSequenceIndex fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim prachRootSequenceIndex;$/;" m struct:fapi_prachFdOccasion +prachRootSequenceIndex fapi_interface_ue_sim.h /^ uint16_t prachRootSequenceIndex;$/;" m struct:fapi_prachFdOccasion +prachSequenceLength fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachSequenceLength;$/;" m struct:fapi_prach_configuration +prachSequenceLength fapi_interface_ue_sim.h /^ uint8_t prachSequenceLength;$/;" m struct:fapi_prach_configuration +prachShortFormats fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachShortFormats;$/;" m struct:fapi_prach_parms +prachSubCSpacing fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachSubCSpacing;$/;" m struct:fapi_prach_configuration +prachSubCSpacing fapi_interface_ue_sim.h /^ uint8_t prachSubCSpacing;$/;" m struct:fapi_prach_configuration +prachZeroCorrConf fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim prachZeroCorrConf;$/;" m struct:fapi_prachFdOccasion +prachZeroCorrConf fapi_interface_ue_sim.h /^ uint8_t prachZeroCorrConf;$/;" m struct:fapi_prachFdOccasion +prach_format fapi_interface_ue_sim.h /^ uint8_t prach_format;$/;" m struct:fapi_ul_prach_pdu +prach_pdu fapi_interface_ue_sim.h /^ fapi_ul_prach_pdu_t_ue_sim prach_pdu;$/;" m union:fapi_ul_tti_req_pdu::__anon4 +prach_start_symbol fapi_interface_ue_sim.h /^ uint8_t prach_start_symbol;$/;" m struct:fapi_ul_prach_pdu +prbSymRateMatchPattern fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim prbSymRateMatchPattern;$/;" m struct:fapi_prb_symbol_rate_match_pattern +prbSymRmPatrnBitmapByRef fapi_interface_ue_sim.h /^ uint8_t prbSymRmPatrnBitmapByRef[0]; \/\/ side depends on ceil(prbSymRmPatrnBitmapSizeByRef \/ 8) $/;" m struct:fapi_dl_rate_match_ref +prbSymRmPatrnBitmapSizeByRef fapi_interface_ue_sim.h /^ uint8_t prbSymRmPatrnBitmapSizeByRef;$/;" m struct:fapi_dl_rate_match_ref +prbSymRmPatrnByValue fapi_interface_ue_sim.h /^ fapi_dl_prb_sym_rm_patrn_by_val_t prbSymRmPatrnByValue[0];$/;" m struct:fapi_dl_rate_match_ref +prbSymRmPtrn fapi_interface_ue_sim.h /^ fapi_prb_symbol_rate_match_pattern_t prbSymRmPtrn;$/;" m struct:fapi_config +prbSymbRateMatchPatternID fapi_interface_ue_sim.h /^ uint8_t prbSymbRateMatchPatternID;$/;" m struct:fapi_prb_sym_rate_match_pattern +prbSymbRateMatchPatterns fapi_interface_ue_sim.h /^ fapi_prb_sym_rate_match_pattern_t prbSymbRateMatchPatterns[];$/;" m struct:fapi_prb_symbol_rate_match_pattern +prb_size fapi_interface_ue_sim.h /^ uint16_t prb_size;$/;" m struct:fapi_ul_pucch_pdu +prb_start fapi_interface_ue_sim.h /^ uint16_t prb_start;$/;" m struct:fapi_ul_pucch_pdu +preCoderWeightIm fapi_interface_ue_sim.h /^ int16_t preCoderWeightIm;$/;" m struct:fapi_precoderWeight +preCoderWeightRe fapi_interface_ue_sim.h /^ int16_t preCoderWeightRe;$/;" m struct:fapi_precoderWeight +pre_coding_and_beamforming fapi_interface_ue_sim.h /^ fapi_precoding_bmform_t_ue_sim pre_coding_and_beamforming;$/;" m struct:fapi_dl_pdsch_pdu +pre_coding_and_beamforming fapi_interface_ue_sim.h /^ fapi_precoding_bmform_t_ue_sim pre_coding_and_beamforming;$/;" m struct:fapi_dl_ssb_pdu +pre_coding_and_beamforming fapi_interface_ue_sim.h /^ fapi_precoding_bmform_t_ue_sim pre_coding_and_beamforming;$/;" m struct:fapi_dl_csi_rs_pdu +pre_dft_occ_idx fapi_interface_ue_sim.h /^ uint8_t pre_dft_occ_idx;$/;" m struct:fapi_ul_pucch_pdu +pre_dft_occ_len fapi_interface_ue_sim.h /^ uint8_t pre_dft_occ_len;$/;" m struct:fapi_ul_pucch_pdu +preambleIndex fapi_interface_ue_sim.h /^ uint8_t preambleIndex;$/;" m struct:fapi_preamble_info +preambleInfo fapi_interface_ue_sim.h /^ fapi_preamble_info_t_ue_sim preambleInfo[MAX_NUM_PREAMBLES_PER_SLOT];$/;" m struct:fapi_rach_pdu +preambleSnr fapi_interface_ue_sim.h /^ uint8_t preambleSnr;$/;" m struct:fapi_preamble_info +precoderGranularityCoreset fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim precoderGranularityCoreset;$/;" m struct:fapi_pdcch_parms +precoderWeight fapi_interface_ue_sim.h /^ fapi_precoder_weight_t_ue_sim precoderWeight[MAX_NUM_LAYERS];$/;" m struct:PACK_STRUCT +precoder_granularity fapi_interface_ue_sim.h /^ uint8_t precoder_granularity; \/* Coreset Configuration End *\/$/;" m struct:fapi_coreset +precoder_weight fapi_interface_ue_sim.h /^ fapi_precoderWeight_t_ue_sim precoder_weight[MAX_NUM_ANT_PORTS];$/;" m struct:fapi_precoder_weight +precodingTable fapi_interface_ue_sim.h /^ fapi_precoding_table_t_ue_sim precodingTable;$/;" m struct:fapi_config +precodingTable fapi_interface_ue_sim.h /^ fapi_precoding_table_t_ue_sim precodingTable;$/;" m struct:fapi_config +premblePwr fapi_interface_ue_sim.h /^ uint32_t premblePwr;$/;" m struct:fapi_preamble_info +premptionSupport fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim premptionSupport;$/;" m struct:fapi_pdsch_parms +prg_size fapi_interface_ue_sim.h /^ uint16_t prg_size;$/;" m struct:fapi_bmform +prg_size fapi_interface_ue_sim.h /^ uint16_t prg_size;$/;" m struct:fapi_precoding_bmform +priority fapi_interface_ue_sim.h /^ uint16_t priority;$/;" m struct:fapi_part2_parms +priority fapi_interface_ue_sim.h /^ uint16_t priority;$/;" m struct:fapi_uci_part2 +profileValidityMap fapi_interface_ue_sim.h /^ uint8_t profileValidityMap;$/;" m struct:fapi_dfe_profile +protocolVersion fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim protocolVersion;$/;" m struct:fapi_phy_parms +protocolVersion fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim protocolVersion;$/;" m struct:fapi_param_req +ptrsFreqDensity fapi_interface_ue_sim.h /^ uint8_t ptrsFreqDensity; $/;" m struct:fapi_dl_pdsch_ptrs2 +ptrsPortIndex fapi_interface_ue_sim.h /^ uint8_t ptrsPortIndex;$/;" m struct:fapi_dl_pdsch_ptrs2 +ptrsReOffset fapi_interface_ue_sim.h /^ uint8_t ptrsReOffset; $/;" m struct:fapi_dl_pdsch_ptrs2 +ptrsTimeDensity fapi_interface_ue_sim.h /^ uint8_t ptrsTimeDensity;$/;" m struct:fapi_dl_pdsch_ptrs2 +ptrs_dmrs_port fapi_interface_ue_sim.h /^ uint8_t ptrs_dmrs_port;$/;" m struct:fapi_ptrs_info +ptrs_freq_density fapi_interface_ue_sim.h /^ uint8_t ptrs_freq_density;$/;" m struct:fapi_dl_pdsch_ptrs_info +ptrs_freq_density fapi_interface_ue_sim.h /^ uint8_t ptrs_freq_density;$/;" m struct:fapi_pusch_ptrs +ptrs_info fapi_interface_ue_sim.h /^ fapi_ptrs_info_t_ue_sim ptrs_info[MAX_NUM_PTRS_PORTS];$/;" m struct:fapi_pusch_ptrs +ptrs_port_index fapi_interface_ue_sim.h /^ uint16_t ptrs_port_index;$/;" m struct:fapi_ptrs_info +ptrs_port_index fapi_interface_ue_sim.h /^ uint8_t ptrs_port_index;$/;" m struct:fapi_dl_pdsch_ptrs_info +ptrs_re_offset fapi_interface_ue_sim.h /^ uint8_t ptrs_re_offset;$/;" m struct:fapi_dl_pdsch_ptrs_info +ptrs_re_offset fapi_interface_ue_sim.h /^ uint8_t ptrs_re_offset;$/;" m struct:fapi_ptrs_info +ptrs_time_density fapi_interface_ue_sim.h /^ uint8_t ptrs_time_density;$/;" m struct:fapi_dl_pdsch_ptrs_info +ptrs_time_density fapi_interface_ue_sim.h /^ uint8_t ptrs_time_density;$/;" m struct:fapi_pusch_ptrs +pucchAggregation fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pucchAggregation;$/;" m struct:fapi_pucch_parms +pucchFormats fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pucchFormats;$/;" m struct:fapi_pucch_parms +pucchGroupAndSequenceHopping fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim pucchGroupAndSequenceHopping;$/;" m struct:fapi_pucch_parms +pucchGroupHopping fapi_interface_ue_sim.h /^ uint8_t pucchGroupHopping;$/;" m struct:fapi_ul_bwp_id +pucchGroupHopping fapi_interface_ue_sim.h /^ uint8_t pucchGroupHopping;$/;" m struct:fapi_ul_pucch_pdu +pucchParms fapi_interface_ue_sim.h /^ fapi_pucch_parms_t_ue_sim pucchParms;$/;" m struct:fapi_params +pucchSemiStaticConfig fapi_interface_ue_sim.h /^ fapi_pucch_semi_static_config_t pucchSemiStaticConfig;$/;" m struct:fapi_config +pucch_basicextension fapi_interface_ue_sim.h /^ fapi_pucch_mntnnc_params_t pucch_basicextension;$/;" m struct:fapi_ul_pucch_pdu +pucch_format fapi_interface_ue_sim.h /^ uint8_t pucch_format;$/;" m struct:fapi_uci_o_pucch_f0f1 +pucch_format fapi_interface_ue_sim.h /^ uint8_t pucch_format;$/;" m struct:fapi_uci_o_pucch_f2f3f4 +pucch_pdu fapi_interface_ue_sim.h /^ fapi_ul_pucch_pdu_t_ue_sim pucch_pdu;$/;" m union:fapi_ul_tti_req_pdu::__anon4 +puschAggregationFactor fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschAggregationFactor;$/;" m struct:fapi_pusch_parms +puschAllocationTypes fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschAllocationTypes;$/;" m struct:fapi_pusch_parms +puschCbg fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschCbg;$/;" m struct:fapi_pusch_parms +puschDmrsAditionalPos fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschDmrsAditionalPos;$/;" m struct:fapi_pusch_parms +puschDmrsConfigTypes fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschDmrsConfigTypes;$/;" m struct:fapi_pusch_parms +puschDmrsMaxLen fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschDmrsMaxLen;$/;" m struct:fapi_pusch_parms +puschFrequencyHopping fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschFrequencyHopping;$/;" m struct:fapi_pusch_parms +puschLbrmSupport fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschLbrmSupport;$/;" m struct:fapi_pusch_parms +puschMacPduBitAlignment fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschMacPduBitAlignment;$/;" m struct:fapi_pusch_parms +puschMappingType fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschMappingType;$/;" m struct:fapi_pusch_parms +puschMaxPtrsPorts fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschMaxPtrsPorts;$/;" m struct:fapi_pusch_parms +puschMntParms fapi_interface_ue_sim.h /^ fapi_pusch_mnt_parms_t puschMntParms;$/;" m struct:fapi_ul_pusch_pdu +puschParms fapi_interface_ue_sim.h /^ fapi_pusch_parms_t_ue_sim puschParms;$/;" m struct:fapi_params +puschSecondHopPRB fapi_interface_ue_sim.h /^ uint16_t puschSecondHopPRB;$/;" m struct:fapi_pusch_mnt_parms +puschTransType fapi_interface_ue_sim.h /^ uint8_t puschTransType;$/;" m struct:fapi_pusch_mnt_parms +puschTransTypeSupport fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschTransTypeSupport;$/;" m struct:fapi_pusch_parms +puschTransTypeValidity fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschTransTypeValidity;$/;" m struct:fapi_cell_config +puschVrbToPrbMapping fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim puschVrbToPrbMapping;$/;" m struct:fapi_pusch_parms +pusch_data fapi_interface_ue_sim.h /^ fapi_pusch_data_t_ue_sim pusch_data;$/;" m struct:fapi_ul_pusch_pdu +pusch_identity fapi_interface_ue_sim.h /^ uint16_t pusch_identity;$/;" m struct:fapi_ul_pusch_pdu +pusch_pdu fapi_interface_ue_sim.h /^ fapi_ul_pusch_pdu_t_ue_sim pusch_pdu;$/;" m union:fapi_ul_tti_req_pdu::__anon4 +pusch_ptrs fapi_interface_ue_sim.h /^ fapi_pusch_ptrs_t_ue_sim pusch_ptrs;$/;" m struct:fapi_ul_pusch_pdu +pusch_uci fapi_interface_ue_sim.h /^ fapi_pusch_uci_t_ue_sim pusch_uci;$/;" m struct:fapi_ul_pusch_pdu +qam_mod_order fapi_interface_ue_sim.h /^ uint8_t qam_mod_order;$/;" m struct:fapi_codeword_pdu +qam_mod_order fapi_interface_ue_sim.h /^ uint8_t qam_mod_order;$/;" m struct:fapi_ul_pusch_pdu +raIndex fapi_interface_ue_sim.h /^ uint8_t raIndex;$/;" m struct:fapi_rach_pdu +rachPdu fapi_interface_ue_sim.h /^ fapi_rach_pdu_t_ue_sim rachPdu[MAX_NUMBER_RACH_PDUS_PER_SLOT];$/;" m struct:fapi_rach_indication +rach_present fapi_interface_ue_sim.h /^ uint8_t rach_present;$/;" m struct:fapi_ul_tti_req +radioframeAllocationOffset fapi_interface_ue_sim.h /^ uint8_t radioframeAllocationOffset;$/;" m struct:fapi_mbsfn_sf_config_list +radioframeAllocationPeriod fapi_interface_ue_sim.h /^ uint8_t radioframeAllocationPeriod;$/;" m struct:fapi_mbsfn_sf_config_list +rateMatchRef fapi_interface_ue_sim.h /^ fapi_dl_rate_match_ref_t rateMatchRef;$/;" m struct:fapi_dl_pdsch_mnt_parms +rbSNR fapi_interface_ue_sim.h /^ uint8_t rbSNR[MAX_NUMBER_RBS];$/;" m struct:fapi_symb_snr +rb_bitmap fapi_interface_ue_sim.h /^ uint8_t rb_bitmap[36];$/;" m struct:fapi_pdsch_freq_dom_alloc +rb_bitmap fapi_interface_ue_sim.h /^ uint8_t rb_bitmap[36];$/;" m struct:fapi_ul_pusch_pdu +rb_size fapi_interface_ue_sim.h /^ uint16_t rb_size; $/;" m struct:fapi_pdsch_freq_dom_alloc +rb_size fapi_interface_ue_sim.h /^ uint16_t rb_size;$/;" m struct:fapi_ul_pusch_pdu +rb_start fapi_interface_ue_sim.h /^ uint16_t rb_start;$/;" m struct:fapi_pdsch_freq_dom_alloc +rb_start fapi_interface_ue_sim.h /^ uint16_t rb_start;$/;" m struct:fapi_ul_pusch_pdu +recvMsgFromUeSim fapi_cl_comm.c /^void recvMsgFromUeSim()$/;" f +ref_point fapi_interface_ue_sim.h /^ uint8_t ref_point;$/;" m struct:fapi_dl_pdsch_pdu +referenceRS fapi_interface_ue_sim.h /^ uint8_t referenceRS;$/;" m struct:fapi_signal_index +reg_bundle_size fapi_interface_ue_sim.h /^ uint8_t reg_bundle_size;$/;" m struct:fapi_coreset +rel16MtrpConfig fapi_interface_ue_sim.h /^ fapi_rel16_mtrp_config_t rel16MtrpConfig;$/;" m struct:fapi_config +rel16PdschParms fapi_interface_ue_sim.h /^ fapi_dl_rel16_pdsch_parms_t rel16PdschParms;$/;" m struct:fapi_dl_pdsch_pdu +rel16mTRPParameters fapi_interface_ue_sim.h /^ fapi_rel16_mTRP_parameters_t rel16mTRPParameters;$/;" m struct:fapi_params +releaseCapability fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim releaseCapability;$/;" m struct:fapi_cell_params +repetitionScheme fapi_interface_ue_sim.h /^ uint8_t repetitionScheme;$/;" m struct:fapi_dl_rel16_pdsch_parms_t +requestInstancePerSlot fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim requestInstancePerSlot[4];$/;" m struct:fapi_phy_config +resource_alloc fapi_interface_ue_sim.h /^ uint8_t resource_alloc; \/*SCF: PDSCH Allocation in Frequency Domain Start *\/$/;" m struct:fapi_pdsch_freq_dom_alloc +resource_alloc fapi_interface_ue_sim.h /^ uint8_t resource_alloc;$/;" m struct:fapi_ul_pusch_pdu +resource_type fapi_interface_ue_sim.h /^ uint8_t resource_type;$/;" m struct:fapi_ul_srs_pdu +restrictedSetConfig fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim restrictedSetConfig;$/;" m struct:fapi_prach_configuration +restrictedSetConfig fapi_interface_ue_sim.h /^ uint8_t restrictedSetConfig;$/;" m struct:fapi_prach_configuration +rmsiPresence fapi_interface_ue_sim.h /^ uint8_t rmsiPresence;$/;" m struct:fapi_ssb_res_config_table +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_dl_pdsch_pdu +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_crc_ind_info +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_dl_dci +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_pdu_ind_info +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_srs_pdu +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_uci_o_pucch_f0f1 +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_uci_o_pucch_f2f3f4 +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_uci_o_pusch +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_ul_pucch_pdu +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_ul_pusch_pdu +rnti fapi_interface_ue_sim.h /^ uint16_t rnti;$/;" m struct:fapi_ul_srs_pdu +row fapi_interface_ue_sim.h /^ uint8_t row;$/;" m struct:fapi_dl_csi_rs_pdu +rssi fapi_interface_ue_sim.h /^ uint16_t rssi;$/;" m struct:fapi_crc_ind_info +rssi fapi_interface_ue_sim.h /^ uint16_t rssi;$/;" m struct:fapi_pdu_ind_info +rssi fapi_interface_ue_sim.h /^ uint16_t rssi;$/;" m struct:fapi_uci_o_pucch_f0f1 +rssi fapi_interface_ue_sim.h /^ uint16_t rssi;$/;" m struct:fapi_uci_o_pucch_f2f3f4 +rssi fapi_interface_ue_sim.h /^ uint16_t rssi;$/;" m struct:fapi_uci_o_pusch +rssiMeasurement fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim rssiMeasurement;$/;" m struct:fapi_meas_config +rssiMeasurementSupport fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim rssiMeasurementSupport;$/;" m struct:fapi_meas_parms +rsv fapi_interface_ue_sim.h /^ uint16_t rsv; \/\/ To be 32-bit aligned, if FAPI_NUMEROLOGIES changes to some other value than 5 please ensure 32 bit alignment$/;" m struct:__anon1 +rsv fapi_interface_ue_sim.h /^ uint8_t rsv[3];$/;" m struct:fapi_uint8_tlv +rsv fapi_interface_ue_sim.h /^ uint8_t rsv[2];$/;" m struct:fapi_int16_tlv +rsv fapi_interface_ue_sim.h /^ uint8_t rsv[2];$/;" m struct:fapi_uint16_tlv +rv_index fapi_interface_ue_sim.h /^ uint8_t rv_index;$/;" m struct:fapi_codeword_pdu +rv_index fapi_interface_ue_sim.h /^ uint8_t rv_index;$/;" m struct:fapi_pusch_data +scid fapi_interface_ue_sim.h /^ uint8_t scid;$/;" m struct:fapi_dmrs +scid fapi_interface_ue_sim.h /^ uint8_t scid;$/;" m struct:fapi_ul_pusch_pdu +scram_id fapi_interface_ue_sim.h /^ uint16_t scram_id;$/;" m struct:fapi_dl_csi_rs_pdu +scrambling_id fapi_interface_ue_sim.h /^ uint16_t scrambling_id;$/;" m struct:fapi_dl_dci +scrambling_rnti fapi_interface_ue_sim.h /^ uint16_t scrambling_rnti;$/;" m struct:fapi_dl_dci +scsCommon fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim scsCommon;$/;" m struct:fapi_ssb_config +second_hop_prb fapi_interface_ue_sim.h /^ uint16_t second_hop_prb;$/;" m struct:fapi_ul_pucch_pdu +sendMsgToUeSim fapi_cl_comm.c /^void sendMsgToUeSim(uint8_t event, Data *msg, uint16_t msgLen)$/;" f +sequence_hop_flag fapi_interface_ue_sim.h /^ uint8_t sequence_hop_flag;$/;" m struct:fapi_ul_pucch_pdu +sequence_id fapi_interface_ue_sim.h /^ uint16_t sequence_id;$/;" m struct:fapi_ul_srs_pdu +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_crc_ind +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_dl_tti_req +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_error_ind +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_rach_indication +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_rx_data_indication +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_slot_ind +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_srs_indication +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_tx_data_req +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_uci_indication +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_ul_dci_req +sfn fapi_interface_ue_sim.h /^ uint16_t sfn;$/;" m struct:fapi_ul_tti_req +shift_index fapi_interface_ue_sim.h /^ uint16_t shift_index;$/;" m struct:fapi_coreset +signalIndex fapi_interface_ue_sim.h /^ fapi_signal_index_t signalIndex[MAX_SIGNAL_INDEX];$/;" m struct:fapi_cell_params +sizeMbsfnSubframeConfigList fapi_interface_ue_sim.h /^ uint8_t sizeMbsfnSubframeConfigList;$/;" m struct:fapi_lte_crs_rm_ptrn +sizePart1Params fapi_interface_ue_sim.h /^ uint8_t sizePart1Params[0]; \/* Shall Not exced 12 *\/$/;" m struct:fapi_map_index +skipBlankDlConfig fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim skipBlankDlConfig;$/;" m struct:fapi_cell_params +skipBlankUlConfig fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim skipBlankUlConfig;$/;" m struct:fapi_cell_params +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_crc_ind +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_dl_tti_req +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_error_ind +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_rach_indication +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_rx_data_indication +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_slot_ind +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_srs_indication +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_tx_data_req +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_uci_indication +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_ul_dci_req +slot fapi_interface_ue_sim.h /^ uint16_t slot;$/;" m struct:fapi_ul_tti_req +slotConfig fapi_interface_ue_sim.h /^ fapi_slotconfig_t_ue_sim slotConfig[MAX_TDD_PERIODICITY];$/;" m struct:fapi_tdd_table +slotConfig fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim slotConfig[MAX_NUM_OF_SYMBOLS_PER_SLOT];$/;" m struct:fapi_slotconfig +slotConfig fapi_interface_ue_sim.h /^ uint8_t slotConfig[MAX_NUM_OF_SYMBOLS_PER_SLOT];$/;" m struct:fapi_slotconfig +slotIndex fapi_interface_ue_sim.h /^ uint8_t slotIndex;$/;" m struct:fapi_rach_pdu +sockfd fapi_cl.h /^ uint32_t sockfd;$/;" m struct:clCb +srInfo fapi_interface_ue_sim.h /^ fapi_sr_f0f1_info_t_ue_sim srInfo; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pucch_f0f1 +srInfo fapi_interface_ue_sim.h /^ fapi_sr_f2f3f4_info_t_ue_sim srInfo; \/\/ This is included if indicated by the pduBitmap$/;" m struct:fapi_uci_o_pucch_f2f3f4 +sr_bitlen fapi_interface_ue_sim.h /^ uint16_t sr_bitlen;$/;" m struct:fapi_sr_f2f3f4_info +sr_confidence_level fapi_interface_ue_sim.h /^ uint8_t sr_confidence_level;$/;" m struct:fapi_sr_f0f1_info +sr_flag fapi_interface_ue_sim.h /^ uint8_t sr_flag;$/;" m struct:fapi_ul_pucch_pdu +sr_indication fapi_interface_ue_sim.h /^ uint8_t sr_indication;$/;" m struct:fapi_sr_f0f1_info +sr_payload fapi_interface_ue_sim.h /^ uint8_t sr_payload[MAX_SR_PAYLOAD_SIZE];$/;" m struct:fapi_sr_f2f3f4_info +srcAddr fapi_cl.h /^ struct sockaddr_in srcAddr;$/;" m struct:clCb typeref:struct:clCb::sockaddr_in +srsPdus fapi_interface_ue_sim.h /^ fapi_srs_pdu_t_ue_sim srsPdus[MAX_NUMBER_SRS_PDUS_PER_SLOT];$/;" m struct:fapi_srs_indication +srs_pdu fapi_interface_ue_sim.h /^ fapi_ul_srs_pdu_t_ue_sim srs_pdu;$/;" m union:fapi_ul_tti_req_pdu::__anon4 +ssPbchBlockPowerScaling fapi_interface_ue_sim.h /^ fapi_int16_tlv_t_ue_sim ssPbchBlockPowerScaling;$/;" m struct:fapi_ssb_pwr_pbch_config +ssPbchBlockPowerScaling fapi_interface_ue_sim.h /^ uint16_t ssPbchBlockPowerScaling;$/;" m struct:fapi_ssb_tx_pwr_info +ssPbchMultipleCarriersInABand fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim ssPbchMultipleCarriersInABand;$/;" m struct:fapi_carrier_parms +ssPbchMultipleCarriersInABand fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim ssPbchMultipleCarriersInABand;$/;" m struct:fapi_ssb_table +ssPbchPower fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim ssPbchPower;$/;" m struct:fapi_ssb_config +ssPbchPower fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim ssPbchPower;$/;" m struct:fapi_ssb_pwr_pbch_config +ssbConfig fapi_interface_ue_sim.h /^ fapi_ssb_config_t_ue_sim ssbConfig;$/;" m struct:fapi_config +ssbConfigForRateMatching fapi_interface_ue_sim.h /^ uint8_t ssbConfigForRateMatching;$/;" m struct:fapi_dl_rate_match_ref +ssbConfigIndex fapi_interface_ue_sim.h /^ uint16_t ssbConfigIndex;$/;" m struct:fapi_ssb_res_config_table +ssbConfigurationsTLVs fapi_interface_ue_sim.h /^ fapi_ssb_res_config_table_t ssbConfigurationsTLVs[];$/;" m struct:fapi_multi_ssb_resource_config_table +ssbMask fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim ssbMask[2];$/;" m struct:fapi_ssb_table +ssbMask fapi_interface_ue_sim.h /^ uint32_t ssbMask[2];$/;" m struct:fapi_ssb_res_config_table +ssbOffsetPointA fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim ssbOffsetPointA;$/;" m struct:fapi_ssb_table +ssbOffsetPointA fapi_interface_ue_sim.h /^ uint16_t ssbOffsetPointA;$/;" m struct:fapi_ssb_res_config_table +ssbPbchMntParms fapi_interface_ue_sim.h /^ fapi_dl_ssb_pbch_mnt_parms_t ssbPbchMntParms;$/;" m struct:fapi_dl_ssb_pdu +ssbPduIndex fapi_interface_ue_sim.h /^ uint8_t ssbPduIndex;$/;" m struct:fapi_ssb_basic_parms +ssbPdusForRateMatching fapi_interface_ue_sim.h /^ uint8_t ssbPdusForRateMatching[2];$/;" m struct:fapi_dl_rate_match_ref +ssbPerRach fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim ssbPerRach;$/;" m struct:fapi_prach_configuration +ssbPerRach fapi_interface_ue_sim.h /^ uint8_t ssbPerRach;$/;" m struct:fapi_prach_configuration +ssbPeriod fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim ssbPeriod;$/;" m struct:fapi_ssb_table +ssbPeriod fapi_interface_ue_sim.h /^ uint8_t ssbPeriod;$/;" m struct:fapi_ssb_res_config_table +ssbPowerPbchConfig fapi_interface_ue_sim.h /^ fapi_ssb_pwr_pbch_config_t ssbPowerPbchConfig;$/;" m struct:fapi_config +ssbRateMatch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim ssbRateMatch;$/;" m struct:fapi_pdsch_parms +ssbResConfigTable fapi_interface_ue_sim.h /^ fapi_ssb_res_config_table_t ssbResConfigTable;$/;" m struct:fapi_config +ssbSubCarrierOffset fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim ssbSubCarrierOffset;$/;" m struct:fapi_ssb_table +ssbSubcarrierOffset fapi_interface_ue_sim.h /^ uint8_t ssbSubcarrierOffset;$/;" m struct:fapi_ssb_res_config_table +ssbTable fapi_interface_ue_sim.h /^ fapi_ssb_table_t_ue_sim ssbTable;$/;" m struct:fapi_config +ssbTableConfig fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim ssbTableConfig;$/;" m struct:fapi_ssb_res_config_table +ssb_block_index fapi_interface_ue_sim.h /^ uint8_t ssb_block_index;$/;" m struct:fapi_dl_ssb_pdu +ssb_offset_point_a fapi_interface_ue_sim.h /^ uint16_t ssb_offset_point_a;$/;" m struct:fapi_dl_ssb_pdu +ssb_pdu fapi_interface_ue_sim.h /^ fapi_dl_ssb_pdu_t_ue_sim ssb_pdu;$/;" m union:fapi_dl_tti_req_pdu::__anon3 +ssb_sub_carrier_offset fapi_interface_ue_sim.h /^ uint8_t ssb_sub_carrier_offset;$/;" m struct:fapi_dl_ssb_pdu +startPreambleIndex fapi_interface_ue_sim.h /^ uint8_t startPreambleIndex;$/;" m struct:fapi_pRACH_Mntnc_param +startReceiver fapi_cl_comm.c /^void startReceiver()$/;" f +start_rb fapi_interface_ue_sim.h /^ uint16_t start_rb;$/;" m struct:fapi_dl_csi_rs_pdu +start_symb_index fapi_interface_ue_sim.h /^ uint8_t start_symb_index;$/;" m struct:fapi_ul_pusch_pdu +start_symb_index fapi_interface_ue_sim.h /^ uint8_t start_symb_index;\/*SCF : PDSCH Allocation in Time Domain Start *\/$/;" m struct:fapi_pdsch_time_dom_alloc +start_symbol_index fapi_interface_ue_sim.h /^ uint8_t start_symbol_index; \/* Coreset Configuration Start *\/$/;" m struct:fapi_coreset +start_symbol_index fapi_interface_ue_sim.h /^ uint8_t start_symbol_index;$/;" m struct:fapi_ul_pucch_pdu +subCarrierSpacing fapi_interface_ue_sim.h /^ uint8_t subCarrierSpacing;$/;" m struct:fapi_dl_csi_rs_pdu +subCarrierSpacing fapi_interface_ue_sim.h /^ uint8_t subCarrierSpacing;$/;" m struct:fapi_prb_sym_rate_match_pattern +subCarrierSpacing fapi_interface_ue_sim.h /^ uint8_t subCarrierSpacing;$/;" m struct:fapi_ssb_res_config_table +subCarrierSpacingCommon fapi_interface_ue_sim.h /^ uint8_t subCarrierSpacingCommon;$/;" m struct:fapi_ssb_res_config_table +sub_carrier_spacing fapi_interface_ue_sim.h /^ uint8_t sub_carrier_spacing;$/;" m struct:fapi_bwp +sub_carrier_spacing fapi_interface_ue_sim.h /^ uint8_t sub_carrier_spacing;$/;" m struct:fapi_ul_pucch_pdu +sub_carrier_spacing fapi_interface_ue_sim.h /^ uint8_t sub_carrier_spacing;$/;" m struct:fapi_ul_pusch_pdu +sub_carrier_spacing fapi_interface_ue_sim.h /^ uint8_t sub_carrier_spacing;$/;" m struct:fapi_ul_srs_pdu +subcarrierSpacing fapi_interface_ue_sim.h /^ uint8_t subcarrierSpacing;$/;" m struct:fapi_ssb_basic_parms +subframeAllocLength fapi_interface_ue_sim.h /^ uint8_t subframeAllocLength;$/;" m struct:fapi_mbsfn_sf_config_list +subframeAllocationBitmap fapi_interface_ue_sim.h /^ uint32_t subframeAllocationBitmap; \/* Ref: Table 3-42 LTE-CRS rate match patterns configuration*\/$/;" m struct:fapi_mbsfn_sf_config_list +supportedBandwidthDl fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim supportedBandwidthDl;$/;" m struct:fapi_carrier_parms +supportedBandwidthUl fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim supportedBandwidthUl;$/;" m struct:fapi_carrier_parms +supportedMaxModulationOrderDl fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim supportedMaxModulationOrderDl;$/;" m struct:fapi_pdsch_parms +supportedModulationOrderUl fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim supportedModulationOrderUl;$/;" m struct:fapi_pusch_parms +supportedRateMatchPatternType fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim supportedRateMatchPatternType;$/;" m struct:fapi_pdsch_parms +supportedSubcarrierSpacingDl fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim supportedSubcarrierSpacingDl;$/;" m struct:fapi_carrier_parms +supportedSubcarrierSpecingsUl fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim supportedSubcarrierSpecingsUl;$/;" m struct:fapi_carrier_parms +symbSnr fapi_interface_ue_sim.h /^ fapi_symb_snr_t_ue_sim symbSnr[MAX_NUMBER_OF_REP_SYMBOLS];$/;" m struct:fapi_srs_pdu +symb_l0 fapi_interface_ue_sim.h /^ uint8_t symb_l0;$/;" m struct:fapi_dl_csi_rs_pdu +symb_l1 fapi_interface_ue_sim.h /^ uint8_t symb_l1;$/;" m struct:fapi_dl_csi_rs_pdu +symbolIndex fapi_interface_ue_sim.h /^ uint8_t symbolIndex;$/;" m struct:fapi_rach_pdu +symbolsInRB fapi_interface_ue_sim.h /^ uint16_t symbolsInRB; $/;" m struct:fapi_dl_prb_sym_rm_patrn_by_val +symbolsInRB fapi_interface_ue_sim.h /^ uint32_t symbolsInRB;$/;" m struct:fapi_prb_sym_rate_match_pattern +symbolsPatrn fapi_interface_ue_sim.h /^ uint16_t symbolsPatrn;$/;" m struct:fapi_dl_coreset_rm_patrn +t_offset fapi_interface_ue_sim.h /^ uint16_t t_offset;$/;" m struct:fapi_ul_srs_pdu +t_srs fapi_interface_ue_sim.h /^ uint16_t t_srs;$/;" m struct:fapi_ul_srs_pdu +tag fapi_interface_ue_sim.h /^ uint16_t tag; \/\/ In 5G FAPI for Cell Params$/;" m struct:fapi_config_tlv +tag fapi_interface_ue_sim.h /^ uint16_t tag;$/;" m struct:fapi_tl +tag fapi_interface_ue_sim.h /^ uint16_t tag;$/;" m struct:fapi_tx_dat_tlv +target_code_rate fapi_interface_ue_sim.h /^ uint16_t target_code_rate;$/;" m struct:fapi_codeword_pdu +target_code_rate fapi_interface_ue_sim.h /^ uint16_t target_code_rate;$/;" m struct:fapi_ul_pusch_pdu +tbCrcRequired fapi_interface_ue_sim.h /^ uint8_t tbCrcRequired;$/;" m struct:fapi_dl_codeword_info +tbSizeLbrmBytes fapi_interface_ue_sim.h /^ uint32_t tbSizeLbrmBytes; $/;" m struct:fapi_pusch_mnt_parms +tbSizeLbrmBytes fapi_interface_ue_sim.h /^ uint32_t tbSizeLbrmBytes;$/;" m struct:fapi_dl_codeword_info +tb_crc_status fapi_interface_ue_sim.h /^ uint8_t tb_crc_status;$/;" m struct:fapi_crc_ind_info +tb_size fapi_interface_ue_sim.h /^ uint32_t tb_size;$/;" m struct:fapi_codeword_pdu +tb_size fapi_interface_ue_sim.h /^ uint32_t tb_size;$/;" m struct:fapi_pusch_data +tddPeriod fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim tddPeriod;$/;" m struct:fapi_tdd_table +tddPeriod fapi_interface_ue_sim.h /^ uint8_t tddPeriod;$/;" m struct:fapi_tdd_table +tddTable fapi_interface_ue_sim.h /^ fapi_tdd_table_t_ue_sim tddTable;$/;" m struct:fapi_config +tddTable fapi_interface_ue_sim.h /^ fapi_tdd_table_t_ue_sim tddTable;$/;" m struct:fapi_config +tddTableConfig fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim tddTableConfig;$/;" m struct:fapi_tdd_table +timeDomainPattern fapi_interface_ue_sim.h /^ uint8_t timeDomainPattern[5];$/;" m struct:fapi_prb_sym_rate_match_pattern +timeDomainPeriodicity fapi_interface_ue_sim.h /^ uint8_t timeDomainPeriodicity;$/;" m struct:fapi_prb_sym_rate_match_pattern +timeManagement fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim timeManagement;$/;" m struct:fapi_phy_parms +time_domain_occ_idx fapi_interface_ue_sim.h /^ uint8_t time_domain_occ_idx;$/;" m struct:fapi_ul_pucch_pdu +time_start_position fapi_interface_ue_sim.h /^ uint8_t time_start_position;$/;" m struct:fapi_ul_srs_pdu +timingAdvance fapi_interface_ue_sim.h /^ uint16_t timingAdvance;$/;" m struct:fapi_preamble_info +timingAdvance fapi_interface_ue_sim.h /^ uint16_t timingAdvance;$/;" m struct:fapi_srs_pdu +timingInfoMode fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim timingInfoMode;$/;" m struct:fapi_delay_mgmt_config +timingInfoPeriod fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim timingInfoPeriod;$/;" m struct:fapi_delay_mgmt_config +timingWindow fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim timingWindow;$/;" m struct:fapi_delay_mgmt_config +timing_advance fapi_interface_ue_sim.h /^ uint16_t timing_advance;$/;" m struct:fapi_crc_ind_info +timing_advance fapi_interface_ue_sim.h /^ uint16_t timing_advance;$/;" m struct:fapi_pdu_ind_info +timing_advance fapi_interface_ue_sim.h /^ uint16_t timing_advance;$/;" m struct:fapi_uci_o_pucch_f0f1 +timing_advance fapi_interface_ue_sim.h /^ uint16_t timing_advance;$/;" m struct:fapi_uci_o_pucch_f2f3f4 +timing_advance fapi_interface_ue_sim.h /^ uint16_t timing_advance;$/;" m struct:fapi_uci_o_pusch +timing_info_period fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim timing_info_period;$/;" m struct:fapi_delay_management_parms +timing_window fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim timing_window;$/;" m struct:fapi_delay_management_parms +tl fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim tl;$/;" m struct:__anon1 +tl fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim tl;$/;" m struct:fapi_int16_tlv +tl fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim tl;$/;" m struct:fapi_uint16_tlv +tl fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim tl;$/;" m struct:fapi_uint32_tlv +tl fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim tl;$/;" m struct:fapi_uint8_tlv +tlvs fapi_interface_ue_sim.h /^ fapi_tx_dat_tlv_t tlvs[];$/;" m struct:fapi_tx_pdu_desc +tlvs fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim tlvs[4 * MAX_NUM_TLVS_CONFIG];$/;" m struct:fapi_config_resp +tlvs fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim tlvs[MAX_NUM_TLVS_CONFIG];$/;" m struct:fapi_config_req +tlvs fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim tlvs[MAX_NUM_TLVS_CONFIG];$/;" m struct:fapi_param_resp +transform_precoding fapi_interface_ue_sim.h /^ uint8_t transform_precoding;$/;" m struct:fapi_ul_pusch_pdu +transmission_scheme fapi_interface_ue_sim.h /^ uint8_t transmission_scheme;$/;" m struct:fapi_dl_pdsch_pdu +trpScheme fapi_interface_ue_sim.h /^ uint8_t trpScheme;$/;" m struct:fapi_bmform +trpScheme fapi_interface_ue_sim.h /^ uint8_t trpScheme;$/;" m struct:fapi_precoding_bmform +txPwrInfo fapi_interface_ue_sim.h /^ fapi_csi_rs_tx_pwr_info_t txPwrInfo;$/;" m struct:fapi_dl_csi_rs_mnt_parms +txPwrInfo fapi_interface_ue_sim.h /^ fapi_dl_ptrs_tx_pwr_info_t txPwrInfo; $/;" m struct:fapi_dl_pdsch_ptrs_mnt_parms +txPwrInfo fapi_interface_ue_sim.h /^ fapi_dl_ptrs_tx_pwr_info_t txPwrInfo; $/;" m struct:fapi_dl_pdsch_ptrsv3 +txPwrInfo fapi_interface_ue_sim.h /^ fapi_dl_tx_pwr_info_t txPwrInfo;$/;" m struct:fapi_dl_pdsch_mnt_parms +tx_data_timing_offset fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim tx_data_timing_offset;$/;" m struct:fapi_delay_management_parms +tx_direct_current_location fapi_interface_ue_sim.h /^ uint16_t tx_direct_current_location;$/;" m struct:fapi_ul_pusch_pdu +tx_power_info fapi_interface_ue_sim.h /^ fapi_tx_power_info_t tx_power_info;$/;" m struct:fapi_dl_dci +tx_pwr_info fapi_interface_ue_sim.h /^ fapi_ssb_tx_pwr_info_t tx_pwr_info;$/;" m struct:fapi_dl_ssb_pbch_mnt_parms +tx_pwr_info fapi_interface_ue_sim.h /^ fapi_tx_pwr_info_t tx_pwr_info;$/;" m struct:fapi_dl_pdsch_pdu +tx_pwr_info fapi_interface_ue_sim.h /^ fapi_tx_pwr_info_t tx_pwr_info;$/;" m struct:fapi_dl_csi_rs_pdu +u fapi_interface_ue_sim.h /^ } u;$/;" m struct:fapi_bch_payload typeref:union:fapi_bch_payload::__anon2 +u fapi_interface_ue_sim.h /^ }u;$/;" m struct:fapi_dl_tti_req_pdu typeref:union:fapi_dl_tti_req_pdu::__anon3 +u fapi_interface_ue_sim.h /^ }u;$/;" m struct:fapi_uci_pdu_info typeref:union:fapi_uci_pdu_info::__anon5 +u fapi_interface_ue_sim.h /^ }u;$/;" m struct:fapi_ul_tti_req_pdu typeref:union:fapi_ul_tti_req_pdu::__anon4 +uciConfig fapi_interface_ue_sim.h /^ fapi_tl_t_ue_sim uciConfig;$/;" m struct:fapi_uci_config +uciConfig fapi_interface_ue_sim.h /^ fapi_uci_config_t uciConfig;$/;" m struct:fapi_config +uciMuxUlschInPusch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim uciMuxUlschInPusch;$/;" m struct:fapi_pusch_parms +uciOnlyPusch fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim uciOnlyPusch;$/;" m struct:fapi_pusch_parms +uciParms fapi_interface_ue_sim.h /^ fapi_uci_parms_t uciParms;$/;" m struct:fapi_params +uci_part1_part2 fapi_interface_ue_sim.h /^ fapi_uci_part1_part2_t uci_part1_part2;$/;" m struct:fapi_ul_pucch_pdu +uci_part2 fapi_interface_ue_sim.h /^ fapi_uci_part2_t uci_part2[0];$/;" m struct:fapi_uci_part1_part2 +uci_pdu fapi_interface_ue_sim.h /^ fapi_uci_pdu_info_t_ue_sim uci_pdu[] ;\/\/max length of the array MAX_NUMBER_UCI_PDUS_PER_SLOT;$/;" m struct:fapi_uci_indication +uci_pucch_f0f1 fapi_interface_ue_sim.h /^ fapi_uci_o_pucch_f0f1_t_ue_sim uci_pucch_f0f1;$/;" m union:fapi_uci_pdu_info::__anon5 +uci_pucch_f2f3f4 fapi_interface_ue_sim.h /^ fapi_uci_o_pucch_f2f3f4_t_ue_sim uci_pucch_f2f3f4;$/;" m union:fapi_uci_pdu_info::__anon5 +uci_pusch fapi_interface_ue_sim.h /^ fapi_uci_o_pusch_t_ue_sim uci_pusch;$/;" m union:fapi_uci_pdu_info::__anon5 +ueGrpInfo fapi_interface_ue_sim.h /^ fapi_ue_info_t_ue_sim ueGrpInfo[0];$/;" m struct:fapi_dl_tti_req +ueGrpInfo fapi_interface_ue_sim.h /^ fapi_ue_info_t_ue_sim ueGrpInfo[0];$/;" m struct:fapi_ul_tti_req +uint16_t fapi_interface_ue_sim.h /^typedef uint16_t uint16_t;$/;" t +uint32_t fapi_interface_ue_sim.h /^typedef uint32_t uint32_t;$/;" t +uint64_t fapi_interface_ue_sim.h /^typedef uint64_t uint64_t;$/;" t +uint8_t fapi_interface_ue_sim.h /^typedef unsigned char uint8_t;$/;" t +ulBwpId fapi_interface_ue_sim.h /^ fapi_ul_bwp_id_t ulBwpId[0];$/;" m struct:fapi_pucch_semi_static_config +ulBwpId fapi_interface_ue_sim.h /^ uint8_t ulBwpId;$/;" m struct:fapi_pUCCH_Mntnnc_params +ulBwpPuschScs fapi_interface_ue_sim.h /^ uint8_t ulBwpPuschScs;$/;" m struct:fapi_prach_configuration +ulCarrierId fapi_interface_ue_sim.h /^ uint8_t ulCarrierId;$/;" m struct:fapi_rach_pdu +ulGridSize fapi_interface_ue_sim.h /^ fapi_config_num_tlv_t ulGridSize;$/;" m struct:fapi_carrier_config +ulGridSize fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim ulGridSize[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +ulGridSize fapi_interface_ue_sim.h /^ uint16_t ulGridSize[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +ulPortRangeLen fapi_interface_ue_sim.h /^ uint16_t ulPortRangeLen[0]; $/;" m struct:fapi_phy_port +ulPortRangeStart fapi_interface_ue_sim.h /^ uint16_t ulPortRangeStart[0];$/;" m struct:fapi_phy_port +ul_cqi fapi_interface_ue_sim.h /^ uint8_t ul_cqi;$/;" m struct:fapi_crc_ind_info +ul_cqi fapi_interface_ue_sim.h /^ uint8_t ul_cqi;$/;" m struct:fapi_pdu_ind_info +ul_cqi fapi_interface_ue_sim.h /^ uint8_t ul_cqi;$/;" m struct:fapi_uci_o_pucch_f0f1 +ul_cqi fapi_interface_ue_sim.h /^ uint8_t ul_cqi;$/;" m struct:fapi_uci_o_pucch_f2f3f4 +ul_cqi fapi_interface_ue_sim.h /^ uint8_t ul_cqi;$/;" m struct:fapi_uci_o_pusch +ul_dci_timing_offset fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim ul_dci_timing_offset;$/;" m struct:fapi_delay_management_parms +ul_dmrs_scrambling_id fapi_interface_ue_sim.h /^ uint16_t ul_dmrs_scrambling_id;$/;" m struct:fapi_ul_pusch_pdu +ul_dmrs_symb_pos fapi_interface_ue_sim.h /^ uint16_t ul_dmrs_symb_pos;$/;" m struct:fapi_ul_pusch_pdu +ul_ptrs_power fapi_interface_ue_sim.h /^ uint8_t ul_ptrs_power;$/;" m struct:fapi_pusch_ptrs +ul_ptrs_sample_density fapi_interface_ue_sim.h /^ uint8_t ul_ptrs_sample_density;$/;" m struct:fapi_dfts_ofdm +ul_ptrs_time_density_transform_precoding fapi_interface_ue_sim.h /^ uint8_t ul_ptrs_time_density_transform_precoding;$/;" m struct:fapi_dfts_ofdm +ul_tti_timing_offset fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim ul_tti_timing_offset;$/;" m struct:fapi_delay_management_parms +ulk0 fapi_interface_ue_sim.h /^ fapi_config_num_tlv_t ulk0;$/;" m struct:fapi_carrier_config +ulk0 fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim ulk0[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +ulk0 fapi_interface_ue_sim.h /^ uint16_t ulk0[NUMEROLOGIES];$/;" m struct:fapi_carrier_config +unusedRootSequences fapi_interface_ue_sim.h /^ fapi_uint8_tlv_t_ue_sim unusedRootSequences[MAX_NUM_UNUSED_ROOT_SEQUENCES];$/;" m struct:fapi_prachFdOccasion +unusedRootSequences fapi_interface_ue_sim.h /^ uint16_t unusedRootSequences[MAX_NUM_UNUSED_ROOT_SEQUENCES];$/;" m struct:fapi_prachFdOccasion +uplinkBandwidth fapi_interface_ue_sim.h /^ fapi_uint16_tlv_t_ue_sim uplinkBandwidth;$/;" m struct:fapi_carrier_config +uplinkBandwidth fapi_interface_ue_sim.h /^ uint16_t uplinkBandwidth;$/;" m struct:fapi_carrier_config +uplinkFrequency fapi_interface_ue_sim.h /^ fapi_uint32_tlv_t_ue_sim uplinkFrequency;$/;" m struct:fapi_carrier_config +uplinkFrequency fapi_interface_ue_sim.h /^ uint32_t uplinkFrequency;$/;" m struct:fapi_carrier_config +uplink_frequency_shift7p5khz fapi_interface_ue_sim.h /^ uint8_t uplink_frequency_shift7p5khz;$/;" m struct:fapi_ul_pusch_pdu +vShift fapi_interface_ue_sim.h /^ uint8_t vShift;$/;" m struct:fapi_lte_crs_rm_ptrn +validityScope fapi_interface_ue_sim.h /^ uint8_t validityScope;$/;" m struct:fapi_capability +value fapi_interface_ue_sim.h /^ uint16_t value[NUMEROLOGIES];$/;" m struct:__anon1 +value fapi_interface_ue_sim.h /^ int16_t value;$/;" m struct:fapi_int16_tlv +value fapi_interface_ue_sim.h /^ uint16_t value;$/;" m struct:fapi_uint16_tlv +value fapi_interface_ue_sim.h /^ uint32_t value;$/;" m struct:fapi_uint32_tlv +value fapi_interface_ue_sim.h /^ uint32_t value[];$/;" m struct:fapi_tx_dat_tlv +value fapi_interface_ue_sim.h /^ uint8_t value;$/;" m struct:fapi_config_tlv +value fapi_interface_ue_sim.h /^ uint8_t value;$/;" m struct:fapi_uint8_tlv +valueOrOffset fapi_interface_ue_sim.h /^ uint64_t valueOrOffset; \/\/ TLV with unsigned 32 bit value$/;" m struct:fapi_tx_dat_tlv +vendor_spec_msg_body fapi_interface_ue_sim.h /^ uint8_t* vendor_spec_msg_body;$/;" m struct:pkd_fapi_l1api_msg_frmt +vendor_spec_msg_len fapi_interface_ue_sim.h /^ uint8_t vendor_spec_msg_len;$/;" m struct:pkd_fapi_l1api_msg_frmt +vrb_to_prb_mapping fapi_interface_ue_sim.h /^ uint8_t vrb_to_prb_mapping;$/;" m struct:fapi_ul_pusch_pdu +vrb_to_prb_mapping fapi_interface_ue_sim.h /^ uint8_t vrb_to_prb_mapping;\/*SCF : PDSCH Allocation in Frequency Domain End *\/$/;" m struct:fapi_pdsch_freq_dom_alloc +wideBandSnr fapi_interface_ue_sim.h /^ uint8_t wideBandSnr;$/;" m struct:fapi_srs_pdu diff --git a/src/mt/mt_ss.c b/src/mt/mt_ss.c index b91b442da..b6522dfe7 100644 --- a/src/mt/mt_ss.c +++ b/src/mt/mt_ss.c @@ -502,7 +502,7 @@ SsRegCfg cfgRegInfo[SS_MAX_REGS] = { SS_POOL_STATIC, 0 } } } -#ifndef INTEL_WLS_MEM +#if ((!defined(INTEL_WLS_MEM)) || (defined(UE_SIM_TEST))) , { SS_DFLT_REGION + 7, SS_MAX_POOLS_PER_REG - 1, @@ -516,6 +516,20 @@ SsRegCfg cfgRegInfo[SS_MAX_REGS] = } } #endif +#ifdef UE_SIM_TEST + , + { + SS_DFLT_REGION + 8, SS_MAX_POOLS_PER_REG - 1, + { + { SS_POOL_DYNAMIC, MT_POOL_0_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_1_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_2_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_3_DSIZE }, + { SS_POOL_DYNAMIC, MT_POOL_4_DSIZE }, + { SS_POOL_STATIC, 0 } + } + } +#endif #endif /* SS_LOCKLESS_MEMORY */ }; @@ -612,7 +626,7 @@ MtDynMemCfg mtDynMemoCfg = {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} } } -#ifndef INTEL_WLS_MEM +#if ((!defined(INTEL_WLS_MEM)) || (defined(UE_SIM_TEST))) , { SS_DFLT_REGION + 7, /* region id */ @@ -627,6 +641,22 @@ MtDynMemCfg mtDynMemoCfg = } } #endif +#ifdef UE_SIM_TEST + , + { + SS_DFLT_REGION + 8, /* region id */ + MT_MAX_BKTS, /* number of buckets */ + { + /* block size, no. of blocks, Upper threshold, lower threshold */ + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD}, + {SS_BLK_RELEASE_THRESHOLD, SS_BLK_ACQUIRE_THRESHOLD} + } + } +#endif + #if ((defined (SPLIT_RLC_DL_TASK)) && (!defined (L2_L3_SPLIT))) , { @@ -793,7 +823,7 @@ MtMemCfg mtMemoCfg = {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} /* block size, no. of blocks */ } } -#ifndef INTEL_WLS_MEM +#if ((!defined(INTEL_WLS_MEM)) || (defined(UE_SIM_TEST))) , { SS_DFLT_REGION + 7, /* region id */ @@ -808,6 +838,22 @@ MtMemCfg mtMemoCfg = } } #endif +#ifdef UE_SIM_TEST + , + { + SS_DFLT_REGION + 8, /* region id */ + MT_MAX_BKTS, /* number of buckets */ + MT_HEAP_SIZE, /* heap size */ + { + {MT_BKT_0_DSIZE, MT_BKT_0_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_1_DSIZE, MT_BKT_1_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_2_DSIZE, MT_BKT_2_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_3_DSIZE, MT_BKT_3_STATIC_NUMBLKS}, /* block size, no. of blocks */ + {MT_BKT_4_DSIZE, MT_BKT_4_STATIC_NUMBLKS} /* block size, no. of blocks */ + } + } +#endif + #endif /* SS_LOCKLESS_MEMORY */ STATIC_MEM_CFG } @@ -5257,7 +5303,6 @@ Void mtTmrHdlrPublic() tsN.tv_nsec = 0; continue; } - if (gettimeofday(&tv2,NULL) == -1) { #if (ERRCLASS & ERRCLS_DEBUG) @@ -6618,7 +6663,7 @@ S16 SGlobMemInfoShow(Void) SDisplay(0, prntBuf); sprintf(prntBuf, "====================================================\n"); SDisplay(0, prntBuf); - sprintf(prntBuf, "Bucket Id Set Size Free Sets Allocated\n"); + sprintf(prntBuf, "PoolId PoolSize NoOfBlocks BucketSetSize NoOfFreeSets NoOfAllocatedSets\n"); SDisplay(0, prntBuf); sprintf(prntBuf, "====================================================\n"); SDisplay(0, prntBuf); @@ -6631,11 +6676,15 @@ S16 SGlobMemInfoShow(Void) idx, globReg->bktTbl[idx].size, globReg->bktTbl[idx].bucketSetSize, globReg->bktTbl[idx].listValidBktSet.count, globReg->bktTbl[idx].listFreeBktSet.count); #else #ifndef ALIGN_64BIT - sprintf(prntBuf, "%2u %12lu %8lu %9lu\n", - idx, globReg->bktTbl[idx].bucketSetSize, globReg->bktTbl[idx].listValidBktSet.count, globReg->bktTbl[idx].listFreeBktSet.count); + sprintf(prntBuf, "%d %ld %ld %12lu %8lu %9lu\n", + globReg->bktTbl[idx].poolId, globReg->bktTbl[idx].size, globReg->bktTbl[idx].numBlks, \ + globReg->bktTbl[idx].bucketSetSize, globReg->bktTbl[idx].listValidBktSet.count, globReg->bktTbl[idx].listFreeBktSet.count); #else - sprintf(prntBuf, "%2u %12u %8u %9u\n", - idx, globReg->bktTbl[idx].bucketSetSize, globReg->bktTbl[idx].listValidBktSet.count, globReg->bktTbl[idx].listFreeBktSet.count); +// sprintf(prntBuf, "%2u %12u %8u %9u\n", +// idx, globReg->bktTbl[idx].bucketSetSize, globReg->bktTbl[idx].listValidBktSet.count, globReg->bktTbl[idx].listFreeBktSet.count); + sprintf(prntBuf, "%d %ld %ld %12lu %8lu %9lu\n", + globReg->bktTbl[idx].poolId, globReg->bktTbl[idx].size, globReg->bktTbl[idx].numBlks, \ + globReg->bktTbl[idx].bucketSetSize, globReg->bktTbl[idx].listValidBktSet.count, globReg->bktTbl[idx].listFreeBktSet.count); #endif #endif SDisplay(0, prntBuf); diff --git a/src/mt/mt_ss.h b/src/mt/mt_ss.h index 4c002560c..ebd297e17 100755 --- a/src/mt/mt_ss.h +++ b/src/mt/mt_ss.h @@ -64,7 +64,11 @@ #endif #else #ifndef INTEL_WLS_MEM +#ifdef UE_SIM_TEST +#define SS_MAX_STSKS 9 +#else #define SS_MAX_STSKS 8 +#endif #else #define SS_MAX_STSKS 7 #endif -- 2.16.6