X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcu_stub%2Fcu_f1ap_msg_hdl.c;h=8ede3eff3612a90fb6cea6541447149e9f43b903;hb=fdf994581c1b672158c911a9a5f7a4191832c695;hp=bba7b90380d215ef9bbc148ebc593175ce3d600a;hpb=775c05505b7b9ae227bbe72b0e0bf32b52e6a89f;p=o-du%2Fl2.git diff --git a/src/cu_stub/cu_f1ap_msg_hdl.c b/src/cu_stub/cu_f1ap_msg_hdl.c index bba7b9038..8ede3eff3 100644 --- a/src/cu_stub/cu_f1ap_msg_hdl.c +++ b/src/cu_stub/cu_f1ap_msg_hdl.c @@ -171,6 +171,7 @@ #define SCRAMBLING_ID NR_PCI #define DMRS_ADDITIONAL_POS 0 /* DMRS Additional poistion */ #define RES_ALLOC_TYPE 1 /* Resource allocation type */ +#define FIVE_QI_VALUE 9 /*spec 23.501, Table 5.7.4-1*/ /******************************************************************* * @@ -1767,6 +1768,9 @@ uint8_t setDlRRCMsgType() case RRC_RECONFIG: rrcMsgType = RRC_RECONFIG; break; + case UE_CONTEXT_MOD_REQ: + rrcMsgType = UE_CONTEXT_MOD_REQ; + break; default: break; } @@ -2027,7 +2031,7 @@ uint8_t BuildQOSInfo(QoSFlowLevelQoSParameters_t *drbQos) return RFAILED; } /*FiveQI*/ - drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->fiveQI = 0; + drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->fiveQI = FIVE_QI_VALUE; /*AveragingWindow*/ CU_ALLOC(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow,\ sizeof(AveragingWindow_t)); @@ -2048,11 +2052,10 @@ uint8_t BuildQOSInfo(QoSFlowLevelQoSParameters_t *drbQos) *(drbQos->qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume) = 0; /*nRGRAN Allocation Retention Priority*/ - drbQos->nGRANallocationRetentionPriority.priorityLevel = PriorityLevel_highest; + drbQos->nGRANallocationRetentionPriority.priorityLevel = PriorityLevel_lowest; drbQos->nGRANallocationRetentionPriority.pre_emptionCapability = Pre_emptionCapability_may_trigger_pre_emption; drbQos->nGRANallocationRetentionPriority.pre_emptionVulnerability = Pre_emptionVulnerability_not_pre_emptable; - /* TO DO: GBR_QoSFlowInformation */ return ROK; }/*End of BuildQOSInfo*/ @@ -2204,14 +2207,15 @@ uint8_t BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) { return RFAILED; } + /* NOTE: Below IP address must be changed if running on different IP configuration */ ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ - transportLayerAddress.buf[0] = 4; + transportLayerAddress.buf[0] = 192; ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ - transportLayerAddress.buf[1] = 4; + transportLayerAddress.buf[1] = 168; ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ - transportLayerAddress.buf[2] = 4; + transportLayerAddress.buf[2] = 130; ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ - transportLayerAddress.buf[3] = 5; + transportLayerAddress.buf[3] = 82; ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ transportLayerAddress.bits_unused = 0; /*GTP TEID*/ @@ -2226,13 +2230,13 @@ uint8_t BuildULTnlInfo(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) return RFAILED; } ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ - gTP_TEID.buf[0] = 11; + gTP_TEID.buf[0] = 0; ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ gTP_TEID.buf[1] = 0; ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ gTP_TEID.buf[2] = 0; ulInfo->list.array[idx]->uLUPTNLInformation.choice.gTPTunnel->\ - gTP_TEID.buf[3] = 2; + gTP_TEID.buf[3] = 1; return ROK; }/*End of BuildULTnlInfo*/ @@ -6550,6 +6554,11 @@ uint8_t procUlRrcMsg(F1AP_PDU_t *f1apMsg) BuildAndSendDLRRCMessageTransfer(srbId, rrcMsgType); } } + if(rrcMsgType == UE_CONTEXT_MOD_REQ) + { + DU_LOG("\nINFO --> F1AP: Sending UE Context Modification Request"); + BuildAndSendUeContextModificationReq(); + } } return ret; } @@ -6830,13 +6839,13 @@ uint8_t BuildUlTnlInfoforDrb2(ULUPTNLInformation_ToBeSetup_List_t *ulInfo) return RFAILED; } ulInfo->list.array[arrIdx]->uLUPTNLInformation.choice.gTPTunnel->\ - gTP_TEID.buf[0] = 11; + gTP_TEID.buf[0] = 0; ulInfo->list.array[arrIdx]->uLUPTNLInformation.choice.gTPTunnel->\ gTP_TEID.buf[1] = 0; ulInfo->list.array[arrIdx]->uLUPTNLInformation.choice.gTPTunnel->\ gTP_TEID.buf[2] = 0; ulInfo->list.array[arrIdx]->uLUPTNLInformation.choice.gTPTunnel->\ - gTP_TEID.buf[3] = 1; + gTP_TEID.buf[3] = 2; return ROK; }/*End of BuildULTnlInfo*/ @@ -7095,7 +7104,7 @@ void FreeDrbToBeSetupModList(DRBs_ToBeSetupMod_List_t *drbSet) { if(arrIdx == 0) { - drbItemIe =drbSet->list.array[arrIdx]; + drbItemIe = (DRBs_ToBeSetupMod_ItemIEs_t *)drbSet->list.array[arrIdx]; FreeDrb2Item(&(drbItemIe->value.choice.DRBs_ToBeSetupMod_Item)); } CU_FREE(drbSet->list.array[arrIdx], sizeof(DRBs_ToBeSetupMod_ItemIEs_t)); @@ -7150,7 +7159,7 @@ uint8_t BuildDrbToBeSetupModList(DRBs_ToBeSetupMod_List_t *drbSet) } arrIdx=0; - ret = FillDrbItemList(drbSet->list.array[arrIdx]); + ret = FillDrbItemList((DRBs_ToBeSetupMod_ItemIEs_t *)drbSet->list.array[arrIdx]); if(ret != ROK) { DU_LOG("\nERROR --> F1AP : FillDrbItemList failed"); @@ -7176,10 +7185,8 @@ uint8_t BuildDrbToBeSetupModList(DRBs_ToBeSetupMod_List_t *drbSet) * ****************************************************************/ void FreeUeContextModicationRequest(F1AP_PDU_t *f1apMsg) { - uint8_t arrIdx =0 , ieId=0, drbIe=0, arrIdx1; + uint8_t arrIdx =0 , ieId=0; UEContextModificationRequest_t *UeContextModifyReq = NULLP; - DRBs_ToBeSetupMod_List_t *drbSet; - DRBs_ToBeSetupMod_ItemIEs_t *drbItemIe = NULLP; if(f1apMsg) { @@ -7488,6 +7495,11 @@ void F1APMsgHdlr(Buffer *mBuf) f1apMsgDb.dlRrcMsgCount++; /* keeping DL RRC Msg Count */ break; } + case SuccessfulOutcome__value_PR_UEContextModificationResponse: + { + DU_LOG("\nINFO --> F1AP : UE Context Modification Response received"); + break; + } default: { DU_LOG("\nERROR --> F1AP : Invalid type of successful outcome message [%d]",\