[Epic-ID: ODUHIGH-406][Task-ID: ODUHIGH-423]Filled ReconfigurationWithSync IE,
[o-du/l2.git] / src / du_app / du_f1ap_conversions.c
index 518094c..df0e62e 100644 (file)
  * its corresponding values used in DU and vice-versa */
 
 #include "common_def.h"
-#include "SN-FieldLengthUM.h"
-#include "SN-FieldLengthAM.h"
-#include "T-PollRetransmit.h"
-#include "PollPDU.h"
-#include "PollByte.h"
-#include "UL-AM-RLC.h"
-#include "T-Reassembly.h"
-#include "T-StatusProhibit.h"
-#include "DL-AM-RLC.h"
-#include "RLC-Config.h"
-#include "RLC-BearerConfig.h"
 #include "BSR-Config.h"
-#include "PUCCH-Resource.h"
-#include "du_app_rlc_inf.h"
+#include "du_f1ap_conversions.h"
 
 /************************************************************************
  *
@@ -1047,6 +1035,104 @@ PUCCH_Resource__format_PR covertPucchFormatIntEnumToRrcEnum(uint8_t pucchFormat)
    return PUCCH_Resource__format_PR_NOTHING;
 }
 
+/************************************************************************
+ *
+ * @brief Converts BSR Periodic timer value to its ASN enum value
+ *
+ * @details
+ *
+ *    Function : convertBsrPeriodicTmrValueToEnum
+ *
+ *    Functionality: Converts BSR Periodic timer timer value to its ASN enum value
+ *
+ * @params[in] BSR Periodic timer value
+ * @return BSR Periodic timer ASN enum
+ *
+ * **********************************************************************/
+long convertBsrPeriodicTmrValueToEnum(int16_t periodicTmr)
+{
+   switch(periodicTmr)
+   {
+      case 1:
+         return BSR_Config__periodicBSR_Timer_sf1;
+      case 5:
+         return BSR_Config__periodicBSR_Timer_sf5;
+      case 10:
+         return BSR_Config__periodicBSR_Timer_sf10;
+      case 16:
+         return BSR_Config__periodicBSR_Timer_sf16;
+      case 20:
+         return BSR_Config__periodicBSR_Timer_sf20;
+      case 32:
+         return BSR_Config__periodicBSR_Timer_sf32;
+      case 40:
+         return BSR_Config__periodicBSR_Timer_sf40;
+      case 64:
+         return BSR_Config__periodicBSR_Timer_sf64;
+      case 80:
+         return BSR_Config__periodicBSR_Timer_sf80;
+      case 128:
+         return BSR_Config__periodicBSR_Timer_sf128;
+      case 320:
+         return BSR_Config__periodicBSR_Timer_sf320;
+      case 640:
+         return BSR_Config__periodicBSR_Timer_sf640;
+      case 1280:
+         return BSR_Config__periodicBSR_Timer_sf1280;
+      case 2560:
+         return BSR_Config__periodicBSR_Timer_sf2560;
+      case -1:
+         return BSR_Config__periodicBSR_Timer_infinity;
+      default:
+         return BSR_Config__periodicBSR_Timer_sf10;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts BSR Retransmission timer value to its ASN enum value
+ *
+ * @details
+ *
+ *    Function : convertBsrRetxTmrValueToEnum
+ *
+ *    Functionality: Converts BSR Retransmission timer timer value to its ASN enum value
+ *
+ * @params[in] BSR Retransmission timer value
+ * @return BSR Restransmission timer ASN enum
+ *
+ * **********************************************************************/
+long convertBsrRetxTmrValueToEnum(uint16_t retxTmr)
+{
+   switch(retxTmr)
+   {
+      case 10:
+         return BSR_Config__retxBSR_Timer_sf10;
+      case 20:
+         return BSR_Config__retxBSR_Timer_sf20;
+      case 40:
+         return BSR_Config__retxBSR_Timer_sf40;
+      case 80:
+         return BSR_Config__retxBSR_Timer_sf80;
+      case 160:
+         return BSR_Config__retxBSR_Timer_sf160;
+      case 320:
+         return BSR_Config__retxBSR_Timer_sf320;
+      case 640:
+         return BSR_Config__retxBSR_Timer_sf640;
+      case 1280:
+         return BSR_Config__retxBSR_Timer_sf1280;
+      case 2560:
+         return BSR_Config__retxBSR_Timer_sf2560;
+      case 5120:
+         return BSR_Config__retxBSR_Timer_sf5120;
+      case 10240:
+         return BSR_Config__retxBSR_Timer_sf10240;
+      default:
+         return BSR_Config__retxBSR_Timer_sf320;
+   }
+}
+
 /************************************************************************
  *
  * @brief Converts LC SR Delay timer value to its ASN enum value
@@ -1084,6 +1170,332 @@ long convertLcSrDelayTmrValueToEnum(uint16_t delayTimer)
    }
 }
 
+/************************************************************************
+ *
+ * @brief Converts actual values into enum value of Paging DRX cycle
+ *
+ * @details
+ *
+ *    Function : convertPagingCycleValueToEnum
+ *
+ *    Functionality: As per Spec 38.331,
+ *          Converts Actual values into enum value of Paging DRX cycle 
+ *    
+ *
+ * @params[in] Actual value of PagingDRX
+ * @return Enum value of DRX cycle
+ *
+ * **********************************************************************/
+e_PagingDRX convertPagingCycleValueToEnum(uint16_t pagingDrxCycle)
+{
+   switch(pagingDrxCycle)
+   {
+      case 32:
+            return PagingDRX_v32;
+      case 64:
+            return PagingDRX_v64;
+      case 128:
+            return PagingDRX_v128;
+      case 256:
+            return PagingDRX_v256;
+      default:
+            return PagingDRX_v32;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts enum values into actual value of Paging DRX cycle
+ *
+ * @details
+ *
+ *    Function : convertPagingCycleEnumToValue
+ *
+ *    Functionality: As per Spec 38.331,
+ *          Converts enum values into actual value of Paging DRX cycle 
+ *    
+ *
+ * @params[in] Enum value of PagingDRX
+ * @return Actual value of DRX cycle
+ *    Note: Returning the MAX value in case of Incorrect Enum Value as DRX
+ *    cycle is MIN of Various DRX cycles(Mentioned in Spec38.304)
+ *
+ * **********************************************************************/
+uint16_t convertPagingCycleEnumToValue(e_PagingDRX pagingDrx)
+{
+   switch(pagingDrx)
+   {
+      case PagingDRX_v32:
+            return 32;
+      case PagingDRX_v64:
+            return 64;
+      case PagingDRX_v128:
+            return 128;
+      case PagingDRX_v256:
+            return 256;
+      default:
+            return 256;
+   }
+}
+/************************************************************************
+ *
+ * @brief Converts enum values into actual value of Num of Paging Ocassions
+ *
+ * @details
+ *
+ *    Function : convertPagingOccEnumToValue
+ *
+ *    Functionality: As per Spec 38.331,
+ *          Converts enum values into actual value of Num of Paging Ocassion
+ *    
+ *
+ * @params[in] Enum value of Ns
+ * @return Actual value of Num of Paging Ocassions
+ *
+ * **********************************************************************/
+uint8_t convertNsEnumToValue(e_PCCH_Config__ns Ns)
+{
+   switch(Ns)
+   {
+      case PCCH_Config__ns_four:
+            return 4;
+      case PCCH_Config__ns_two:
+            return 2;
+      case PCCH_Config__ns_one:
+            return 1;
+      default:
+            return 1;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts actual values into enum value of Num of Paging Ocassions
+ *
+ * @details
+ *
+ *    Function : convertNsValueToEnum
+ *
+ *    Functionality: As per Spec 38.331,
+ *          Converts actual values into enum value of Num of Paging Ocassions
+ *    
+ *
+ * @params[in] Actual value of Num of Paging Ocassions
+ * @return  Enum value of Ns
+ *
+ * **********************************************************************/
+e_PCCH_Config__ns convertNsValueToEnum(uint8_t numPO)
+{
+   switch(numPO)
+   {
+      case 1:
+            return PCCH_Config__ns_one;
+      case 2:
+            return PCCH_Config__ns_two;
+      case 4:
+            return PCCH_Config__ns_four;
+      default:
+            return PCCH_Config__ns_one;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts actual values into enum value of SSB Periodicity in SIB
+ *
+ * @details
+ *
+ *    Function : convertSsbPeriodicityValueToEnumForSib
+ *
+ *    Functionality: 
+ *          Converts actual values into enum value of SSB Periodicity in SIB
+ *    
+ *
+ * @params[in] Actual value of SSB Periodicity
+ * @return  Enum value of SSB Periodicity
+ *
+ * **********************************************************************/
+e_ServingCellConfigCommonSIB__ssb_PeriodicityServingCell convertSsbPeriodicityValueToEnumForSib(uint16_t ssbPeriodicity)
+{
+   switch(ssbPeriodicity)
+   {
+      case 5:
+         return ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms5;
+      case 10:
+         return ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms10;
+      case 20:
+         return ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms20;
+      case 40:
+         return ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms40;
+      case 80:
+         return ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms80;
+      case 160:
+         return ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms160;
+      default:
+         return ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms20;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts actual values into enum value of SSB Periodicity
+ *
+ * @details
+ *
+ *    Function : convertSsbPeriodicityValueToEnum
+ *
+ *    Functionality: 
+ *          Converts actual values into enum value of SSB Periodicity
+ *    
+ *
+ * @params[in] Actual value of SSB Periodicity
+ * @return  Enum value of SSB Periodicity
+ *
+ * **********************************************************************/
+e_ServingCellConfigCommon__ssb_periodicityServingCell convertSsbPeriodicityValueToEnum(uint16_t ssbPeriodicity)
+{
+   switch(ssbPeriodicity)
+   {
+      case 5:
+         return ServingCellConfigCommon__ssb_periodicityServingCell_ms5;
+      case 10:
+         return ServingCellConfigCommon__ssb_periodicityServingCell_ms10;
+      case 20:
+         return ServingCellConfigCommon__ssb_periodicityServingCell_ms20;
+      case 40:
+         return ServingCellConfigCommon__ssb_periodicityServingCell_ms40;
+      case 80:
+         return ServingCellConfigCommon__ssb_periodicityServingCell_ms80;
+      case 160:
+         return ServingCellConfigCommon__ssb_periodicityServingCell_ms160;
+      default:
+         return ServingCellConfigCommon__ssb_periodicityServingCell_ms20;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts actual values into enum value of SSB per RACH occassion
+ *        for CFRA
+ *
+ * @details
+ *
+ *    Function : convertCFRASsbPerRachOccasionValueToEnum
+ *
+ *    Functionality: 
+ *          Converts actual values into enum value of SSB occasion per RACH 
+ *          occassion for CFRA
+ *
+ * @params[in] Actual value of SSB Occasion per RACH
+ * @return  Enum value
+ *
+ * **********************************************************************/
+e_CFRA__occasions__ssb_perRACH_Occasion convertCFRASsbPerRachOccasionValueToEnum(uint8_t ssbOccPerRach)
+{
+   switch(ssbOccPerRach)
+   {
+      case 1:
+         return CFRA__occasions__ssb_perRACH_Occasion_one;
+      case 2:
+         return CFRA__occasions__ssb_perRACH_Occasion_two;
+      case 4:
+         return CFRA__occasions__ssb_perRACH_Occasion_four;
+      case 8:
+         return CFRA__occasions__ssb_perRACH_Occasion_eight;
+      case 16:
+         return CFRA__occasions__ssb_perRACH_Occasion_sixteen;
+      default:
+         return CFRA__occasions__ssb_perRACH_Occasion_one;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts actual values into enum value of CB Preamble per SSB
+ *           for one SSB per RACH occassion
+ *
+ * @details
+ *
+ *    Function : convertCbPreamblePerSsbValueToEnum 
+ *
+ *    Functionality: 
+ *          Converts actual values into enum value of CB Preamble per 
+ *          SSB for one SSB per RACH occasion
+ *
+ * @params[in] Actual value of CB preambles per SSB
+ * @return  Enum value
+ *
+ * **********************************************************************/
+e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one convertCbPreamblePerSsbValueToEnum(uint8_t numCbPreamblePerSsb)
+{
+   switch(numCbPreamblePerSsb)
+   {
+      case 4:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n4;
+      case 8:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n8;
+      case 12:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n12;
+      case 16:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n16;
+      case 20:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n20;
+      case 24:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n24;
+      case 28:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n28;
+      case 32:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n32;
+      case 36:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n36;
+      case 40:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n40;
+      case 44:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n44;
+      case 48:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n48;
+      case 52:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n52;
+      case 56:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n56;
+      case 60:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n60;
+      case 64:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n64;
+      default:
+         return RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n8;
+   }
+}
+
+/************************************************************************
+ *
+ * @brief Converts actual values into enum value of DMRS Type A Position
+ *        for CFRA
+ *
+ * @details
+ *
+ *    Function : convertDmrsTypeAPosValueToEnum
+ *
+ *    Functionality: 
+ *          Converts actual values into enum value of DMRS Type A Position
+ *
+ * @params[in] Actual value of DMRS Type A Position
+ * @return  Enum value
+ *
+ * **********************************************************************/
+e_ServingCellConfigCommon__dmrs_TypeA_Position convertDmrsTypeAPosValueToEnum(uint8_t dmrsTypeAPos)
+{
+   switch(dmrsTypeAPos)
+   {
+      case 2:
+         return ServingCellConfigCommon__dmrs_TypeA_Position_pos2;
+      case 3:
+         return ServingCellConfigCommon__dmrs_TypeA_Position_pos3;
+      default:
+         return ServingCellConfigCommon__dmrs_TypeA_Position_pos2;
+   }
+}
+
 /**********************************************************************
   End of file
  **********************************************************************/