/* This file contains F1AP message handler functions */
#include "common_def.h"
+#include "du_tmr.h"
#include "ckw.h"
#include "ckw.x"
#include "kwu.h"
extern StartupConfig g_cfg;
#endif
-DuCfgParams duCfgParam;
+extern DuCfgParams duCfgParam;
/******************************************************************
*
printf("%x",encBuf[ieIdx]);
}
#endif
+
- duCb.f1SetupReqAndRspMsg.f1MsgReqBufSize = encBufSize;
- DU_ALLOC(duCb.f1SetupReqAndRspMsg.f1MsgReqBuf, encBufSize);
- if(duCb.f1SetupReqAndRspMsg.f1MsgReqBuf == NULLP)
- {
- DU_LOG("\nERROR --> F1AP : Memory allocation failed to store the encoding of f1setup req");
- return RFAILED;
- }
- memcpy(duCb.f1SetupReqAndRspMsg.f1MsgReqBuf, &encBuf, duCb.f1SetupReqAndRspMsg.f1MsgReqBufSize);
}
-
+
/* Sending msg */
if(sendF1APMsg() != ROK)
{
DU_LOG("\nERROR --> F1AP : Sending F1 Setup request failed");
break;
}
+
+ if(fillE2NodeComponentReqInfo(F1, duCfgParam.duId, E2_NODE_COMPONENT_ADD, encBufSize, encBuf) !=ROK)
+ {
+ DU_LOG("\nERROR --> F1AP : Failed to add the e2 node in the list");
+ break;
+ }
ret=ROK;
break;
}
#endif
}
+
/* Sending msg */
if(sendF1APMsg() != ROK)
{
DU_LOG("\nERROR --> F1AP : Sending GNB-DU Config Update failed");
break;
}
+
+ if(fillE2NodeComponentReqInfo(F1, duCfgParam.duId, E2_NODE_COMPONENT_UPDATE, encBufSize, encBuf)!=ROK)
+ {
+ DU_LOG("\nERROR --> F1AP : Failed to update the e2 node in the list");
+ break;
+ }
ret = ROK;
break;
return ROK;
} /* End BuildControlRSetToAddModList */
+/*******************************************************************
+ *
+ * @brief build SlotOffset for SearchSpace
+ *
+ * @details
+ *
+ * Function : BuildSearchSpcSlotOffset
+ *
+ * Functionality: Build Slot Offset for search space to add/modify list
+ *
+ * @params[in] SearchSpace__monitoringSlotPeriodicityAndOffset *mSlotPeriodicityAndOffset
+ * uint16_t slotOffset
+ * @return void
+ *
+ * ****************************************************************/
+void BuildSearchSpcSlotOffset(struct SearchSpace__monitoringSlotPeriodicityAndOffset *mSlotPeriodicityAndOffset, uint16_t slotOffset)
+{
+ switch(mSlotPeriodicityAndOffset->present)
+ {
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1:
+ mSlotPeriodicityAndOffset->choice.sl1 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2:
+ mSlotPeriodicityAndOffset->choice.sl2 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl4:
+ mSlotPeriodicityAndOffset->choice.sl4 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl5:
+ mSlotPeriodicityAndOffset->choice.sl5 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl8:
+ mSlotPeriodicityAndOffset->choice.sl8 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl10:
+ mSlotPeriodicityAndOffset->choice.sl10 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl16:
+ mSlotPeriodicityAndOffset->choice.sl16 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl20:
+ mSlotPeriodicityAndOffset->choice.sl20 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl40:
+ mSlotPeriodicityAndOffset->choice.sl40 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl80:
+ mSlotPeriodicityAndOffset->choice.sl80 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl160:
+ mSlotPeriodicityAndOffset->choice.sl160 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl320:
+ mSlotPeriodicityAndOffset->choice.sl320 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl640:
+ mSlotPeriodicityAndOffset->choice.sl640 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1280:
+ mSlotPeriodicityAndOffset->choice.sl1280 = slotOffset;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2560:
+ mSlotPeriodicityAndOffset->choice.sl2560 = slotOffset;
+ break;
+ default:
+ break;
+ }
+}
+
+
/*******************************************************************
*
* @brief Build search space to add/modify list
if(pdcchCfg == NULLP)
searchSpc->monitoringSlotPeriodicityAndOffset->present = SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1;
else
- searchSpc->monitoringSlotPeriodicityAndOffset->present = pdcchCfg->searchSpcToAddModList[idx].mSlotPeriodicityAndOffset;
+ {
+ searchSpc->monitoringSlotPeriodicityAndOffset->present = \
+ pdcchCfg->searchSpcToAddModList[idx].mSlotPeriodicityAndOffset.mSlotPeriodicity;
+ BuildSearchSpcSlotOffset(searchSpc->monitoringSlotPeriodicityAndOffset, \
+ pdcchCfg->searchSpcToAddModList[idx].mSlotPeriodicityAndOffset.mSlotOffset);
+ }
searchSpc->duration = NULLP;
searchSpc->monitoringSymbolsWithinSlot = NULLP;
}
/*******************************************************************
- *
* @brief Builds DMRS DL PDSCH Mapping type A
*
* @details
#ifdef O1_ENABLE
cmInetAddr((S8*)g_cfg.DU_IPV4_Addr, &ipv4_du);
#else
- cmInetAddr((char *)DU_IP_V4_ADDR, &ipv4_du);
+ ipv4_du = duCfgParam.egtpParams.localIp.ipV4Addr;
#endif
for(tnlIdx=0; tnlIdx < tnlInfo->list.count; tnlIdx++)
}
}
+/*******************************************************************
+ *
+ * @brief Fills SlotOffset value for SearchSpace received by CU
+ *
+ * @details
+ *
+ * Function : extractSlotOffset
+ *
+ * Functionality: Fills SlotOffset received by CU
+ *
+ * @params[in] SearchSpace__monitoringSlotPeriodicityAndOffset *mSlotPeriodicityOffset,
+ * uint16_t *slotOffset
+ * @return void
+ *
+ *
+ ****************************************************************/
+void extractSlotOffset(struct SearchSpace__monitoringSlotPeriodicityAndOffset *mSlotPeriodicityAndOffset, uint16_t *slotOffset)
+{
+ switch(mSlotPeriodicityAndOffset->present)
+ {
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_NOTHING:
+ *slotOffset = NULLD;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl1;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl2;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl4:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl4;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl5:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl5;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl8:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl8;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl10:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl10;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl16:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl16;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl20:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl20;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl40:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl40;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl80:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl80;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl160:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl160;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl320:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl320;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl640:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl640;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1280:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl1280;
+ break;
+ case SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2560:
+ *slotOffset = mSlotPeriodicityAndOffset->choice.sl2560;
+ break;
+ default:
+ *slotOffset = 0;
+ }
+}
+
+
/*******************************************************************
*
* @brief Fills PdcchCfg received by CU
*(srchSpcToAddModList->list.array[srchSpcIdx]->controlResourceSetId);
if(srchSpcToAddModList->list.array[srchSpcIdx]->monitoringSlotPeriodicityAndOffset)
{
- macPdcchCfg->searchSpcToAddModList[srchSpcIdx].mSlotPeriodicityAndOffset =\
- srchSpcToAddModList->list.array[srchSpcIdx]->monitoringSlotPeriodicityAndOffset->present;
+ macPdcchCfg->searchSpcToAddModList[srchSpcIdx].mSlotPeriodicityAndOffset.mSlotPeriodicity =\
+ srchSpcToAddModList->list.array[srchSpcIdx]->monitoringSlotPeriodicityAndOffset->present;
+ extractSlotOffset(srchSpcToAddModList->list.array[srchSpcIdx]->monitoringSlotPeriodicityAndOffset,\
+ &macPdcchCfg->searchSpcToAddModList[srchSpcIdx].mSlotPeriodicityAndOffset.mSlotOffset);
}
if(srchSpcToAddModList->list.array[srchSpcIdx]->monitoringSymbolsWithinSlot)
{
duProcF1SetupRsp();
freeAperDecodeF1SetupRsp(f1SetRspMsg);
-
- duCb.f1SetupReqAndRspMsg.f1MsgRspBufSize = recvBufLen;
- DU_ALLOC(duCb.f1SetupReqAndRspMsg.f1MsgRspBuf, duCb.f1SetupReqAndRspMsg.f1MsgRspBufSize);
- if(duCb.f1SetupReqAndRspMsg.f1MsgReqBuf == NULLP)
+
+ if(fillE2NodeComponentRspInfo(F1, duCfgParam.duId, E2_NODE_COMPONENT_ADD, recvBufLen, recvBuf) !=ROK)
{
- DU_LOG("\nERROR --> F1AP : Memory allocation failed to store the buf of F1setup response");
+ DU_LOG("\nERROR --> F1AP : Failed to add the e2 node in the list");
return RFAILED;
}
- memcpy(duCb.f1SetupReqAndRspMsg.f1MsgRspBuf, recvBuf, recvBufLen);
if(BuildAndSendE2SetupReq() != ROK)
{
*
* Functionality: added free part for the memory allocated by aper_decoder
*
-* @params[in] F1AP_PDU_t *f1apMsg
+* @params[in] F1AP_PDU_t *f1apMsg, MsgLen recvBufLen, char *recvBuf
* @return void
*
* ****************************************************************/
-uint8_t procF1GNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg)
+
+uint8_t procF1GNBDUCfgUpdAck(F1AP_PDU_t *f1apMsg, MsgLen recvBufLen, char *recvBuf)
{
uint8_t ieIdx=0,transId=0;
GNBDUConfigurationUpdateAcknowledge_t *gnbDuAck = NULLP;
#endif
freeAperDecodeGnbDuAck(gnbDuAck);
+
+ if(fillE2NodeComponentRspInfo(F1,duCfgParam.duId, E2_NODE_COMPONENT_UPDATE, recvBufLen, recvBuf) !=ROK)
+ {
+ DU_LOG("\nERROR --> F1AP : Failed to update the e2 node in the list");
+ return RFAILED;
+ }
+
return ROK;
}
/******************************************************************
case SuccessfulOutcome__value_PR_GNBDUConfigurationUpdateAcknowledge:
{
- procF1GNBDUCfgUpdAck(f1apMsg);
+ procF1GNBDUCfgUpdAck(f1apMsg, recvBufLen, recvBuf);
break;
}