JIRA ID: ODUHIGH-314 : Time domain allocation for SSB in TDD mode
[o-du/l2.git] / src / cu_stub / cu_f1ap_msg_hdl.c
index bba7b90..8ede3ef 100644 (file)
 #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]",\