X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_f1ap_conversions.c;h=df0e62eae72694246e7d3ace522106c568cf271c;hb=2aa3cc7f94edf59f4fdb04ad81c7a14322bde00e;hp=518094c1e3f2f49563e0b5b781bccefd3e77b4fb;hpb=d43106e9959db218ce4a4c278f73405d6d70579f;p=o-du%2Fl2.git diff --git a/src/du_app/du_f1ap_conversions.c b/src/du_app/du_f1ap_conversions.c index 518094c1e..df0e62eae 100644 --- a/src/du_app/du_f1ap_conversions.c +++ b/src/du_app/du_f1ap_conversions.c @@ -20,20 +20,8 @@ * 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 **********************************************************************/