1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /* This file contains functions that maps values received in F1AP message with
20 * its corresponding values used in DU and vice-versa */
22 #include "common_def.h"
23 #include "BSR-Config.h"
24 #include "du_f1ap_conversions.h"
26 /************************************************************************
28 * @brief Coverts Internal Enum value to RRC code enum for RB type
32 * Function : covertRbTypeFromIntEnumToRrcEnum
34 * Functionality: Coverts Internal Enum value to RRC code enum for RB type
36 * @params[in] Internal Enum value for RB type
37 * @return RRC codec enum value for RB type
39 * **********************************************************************/
40 RLC_BearerConfig__servedRadioBearer_PR covertRbTypeFromIntEnumToRrcEnum(RlcRbType rbType)
45 return RLC_BearerConfig__servedRadioBearer_PR_srb_Identity;
47 return RLC_BearerConfig__servedRadioBearer_PR_drb_Identity;
49 return RLC_BearerConfig__servedRadioBearer_PR_NOTHING;
53 /************************************************************************
55 * @brief Coverts internal enum value to RRC code enum for RLC mode
59 * Function : covertRlcModeFromIntEnumToRrcEnum
61 * Functionality: Coverts internal enum value to RRC code enum for RLC mode
63 * @params[in] Internal enum value for RLC mode
64 * @return RRC codec enum value for RLC mode
66 * **********************************************************************/
67 RLC_Config_PR covertRlcModeFromIntEnumToRrcEnum(RlcMode mode)
72 return RLC_Config_PR_am;
73 case RLC_UM_BI_DIRECTIONAL:
74 return RLC_Config_PR_um_Bi_Directional;
75 case RLC_UM_UNI_DIRECTIONAL_UL:
76 return RLC_Config_PR_um_Uni_Directional_UL;
77 case RLC_UM_UNI_DIRECTIONAL_DL:
78 return RLC_Config_PR_um_Uni_Directional_DL;
80 return RLC_Config_PR_NOTHING;
84 /************************************************************************
86 * @brief Converts Internal enum value to RRC code enum value for AM mode
91 * Function : covertAmSnLenFromIntEnumToRrcEnum
93 * Functionality: Converts Internal enum value to RRC code enum value for AM
96 * @params[in] Internal Enum value
97 * @return RRC Enum value
99 * **********************************************************************/
100 SN_FieldLengthAM_t covertAmSnLenFromIntEnumToRrcEnum(SnLenAm snLen)
105 return SN_FieldLengthAM_size12;
107 return SN_FieldLengthAM_size18;
109 return SN_FieldLengthAM_size12;
113 /************************************************************************
115 * @brief Coverts RRC ASN enum value to Internal Enum value
119 * Function : covertAmSnLenFromRrcEnumToIntEnum
121 * Functionality: Coverts RRC ASN enum value to Internal Enum value for
124 * @params[in] RRC ASN Enum value
125 * @return Internal Enum value
127 * **********************************************************************/
128 SnLenAm covertAmSnLenFromRrcEnumToIntEnum(SN_FieldLengthAM_t snLen)
132 case SN_FieldLengthAM_size12:
134 case SN_FieldLengthAM_size18:
141 /************************************************************************
143 * @brief Coverts Internal Enum value to RRC ASN enum value
147 * Function : covertUmSnLenFromIntEnumToRrcEnum
149 * Functionality: Coverts Internal ennum value to RRC ASN enum value
150 * for UM mode SN length
152 * @params[in] Internal enum value
153 * @return RRC ASN value
155 * **********************************************************************/
156 SN_FieldLengthUM_t covertUmSnLenFromIntEnumToRrcEnum(SnLenUm snLen)
161 return SN_FieldLengthUM_size6;
163 return SN_FieldLengthUM_size12;
165 return SN_FieldLengthUM_size12;
169 /************************************************************************
171 * @brief Converts RRC ASN enum value to Internal enum value
175 * Function : covertUmSnLenFromRrcEnumToIntEnum
177 * Functionality: Converts RRC ASN enum value to Internal enum value
178 * for UM mode SN length
180 * @params[in] RRC ASN enum value
181 * @return Internal enum value
183 * **********************************************************************/
184 SnLenUm covertUmSnLenFromRrcEnumToIntEnum(SN_FieldLengthUM_t snLen)
188 case SN_FieldLengthUM_size6:
190 case SN_FieldLengthUM_size12:
197 /************************************************************************
199 * @brief Converts poll retransmission timer value to its corresponding enum
203 * Function : covertPollRetxTmrValueToEnum
205 * Functionality: Converts poll retransmission timer value to its
208 * @params[in] Poll retransmission timer value
209 * @return Poll retransmission timer enum
211 * **********************************************************************/
212 T_PollRetransmit_t covertPollRetxTmrValueToEnum(uint16_t pollRetxTmr)
214 /* All values of poll retx timer are at interval of 5ms starting from 5ms(Enum value 0) upto 250ms
215 * Hence converting the value to enum by dividing it to 5 and subtracting 1.
217 if((pollRetxTmr <= 250) && ((pollRetxTmr%5) == 0))
218 return ((pollRetxTmr/5) -1);
224 return T_PollRetransmit_ms300;
226 return T_PollRetransmit_ms350;
228 return T_PollRetransmit_ms400;
230 return T_PollRetransmit_ms450;
232 return T_PollRetransmit_ms500;
234 return T_PollRetransmit_ms800;
236 return T_PollRetransmit_spare5;
241 /************************************************************************
243 * @brief Converts enum values into actual value of Poll retransmit timer
247 * Function : covertPollRetxTmrEnumToValue
249 * Functionality: Converts enum values into actual value of poll
252 * @params[in] Enum value of pollPdu
253 * @return Actual value of pollPdu
255 * **********************************************************************/
257 uint16_t covertPollRetxTmrEnumToValue(uint8_t pollRetxTmrCfg)
259 uint16_t pollRetxTmr;
261 /* All values of poll retx timer are at interval of 5ms.
262 * This is valid upto 250ms
263 * Hence converting the enum value to actual value by multiplying it to 5
265 if(pollRetxTmrCfg <= T_PollRetransmit_ms250)
266 pollRetxTmr = (pollRetxTmrCfg + 1) * 5;
269 switch(pollRetxTmrCfg)
271 case T_PollRetransmit_ms300:
274 case T_PollRetransmit_ms350:
277 case T_PollRetransmit_ms400:
280 case T_PollRetransmit_ms450:
283 case T_PollRetransmit_ms500:
286 case T_PollRetransmit_ms800:
290 DU_LOG("\nERROR --> F1AP: Invalid value of Poll Retransmit timer");
297 /************************************************************************
299 * @brief Coverts the value of Poll pdu to its corresponding enum
303 * Function : covertPollPduValueToEnum
305 * Functionality: Coverts the value of Poll pdu to its corresponding enum
307 * @params[in] Poll PDU value
308 * @return Poll PDU enum
310 * **********************************************************************/
311 PollPDU_t covertPollPduValueToEnum(int32_t pollPdu)
332 return PollPDU_p1024;
334 return PollPDU_p2048;
336 return PollPDU_p4096;
338 return PollPDU_p6144;
340 return PollPDU_p8192;
342 return PollPDU_p12288;
344 return PollPDU_p16384;
346 return PollPDU_p20480;
348 return PollPDU_p24576;
350 return PollPDU_p28672;
352 return PollPDU_p32768;
354 return PollPDU_p40960;
356 return PollPDU_p49152;
358 return PollPDU_p57344;
360 return PollPDU_p65536;
362 return PollPDU_infinity;
364 return PollPDU_spare8;
366 return PollPDU_spare8;
369 /*******************************************************************
371 * @brief Converts enum values into actual value of PollPdu
375 * Function : covertPollPduEnumToValue
377 * Functionality: Converts enum values into actual value of PollPdu
379 * @params[in] Enum value of pollPdu
380 * @return Actual value of pollPdu
382 * ****************************************************************/
383 int32_t covertPollPduEnumToValue(uint8_t pollPduCfg)
457 case PollPDU_infinity:
461 DU_LOG("\nERROR --> F1AP: Invalid value of poll pdu");
468 /************************************************************************
470 * @brief Converts Poll byte value to its corresponding enum
474 * Function : covertPollByteValueToEnum
476 * Functionality: Converts Poll byte value to its corresponding enum
478 * @params[in] Poll Byte value
479 * @return Poll Byte enum
481 * **********************************************************************/
482 PollByte_t covertPollByteValueToEnum(int32_t pollByte)
495 return PollByte_kB10;
497 return PollByte_kB15;
499 return PollByte_kB25;
501 return PollByte_kB50;
503 return PollByte_kB75;
505 return PollByte_kB100;
507 return PollByte_kB125;
509 return PollByte_kB250;
511 return PollByte_kB375;
513 return PollByte_kB500;
515 return PollByte_kB750;
517 return PollByte_kB1000;
519 return PollByte_kB1250;
521 return PollByte_kB1500;
523 return PollByte_kB2000;
525 return PollByte_kB3000;
527 return PollByte_kB4000;
529 return PollByte_kB4500;
531 return PollByte_kB5000;
533 return PollByte_kB5500;
535 return PollByte_kB6000;
537 return PollByte_kB6500;
539 return PollByte_kB7000;
541 return PollByte_kB7500;
547 return PollByte_mB10;
549 return PollByte_mB11;
551 return PollByte_mB12;
553 return PollByte_mB13;
555 return PollByte_mB14;
557 return PollByte_mB15;
559 return PollByte_mB16;
561 return PollByte_mB17;
563 return PollByte_mB18;
565 return PollByte_mB20;
567 return PollByte_mB25;
569 return PollByte_mB30;
571 return PollByte_mB40;
573 return PollByte_infinity;
575 return PollByte_spare20;
579 /*******************************************************************
581 * @brief Converts enum values into actual value of poll bytes
585 * Function : covertPollByteEnumToValue
587 * Functionality: Converts enum values into actual value of pollBytes
589 * @params[in] Enum value
590 * @return Actual value
592 * ****************************************************************/
593 int32_t covertPollByteEnumToValue(uint16_t pollBytesCfg)
643 case PollByte_kB1000:
646 case PollByte_kB1250:
649 case PollByte_kB1500:
652 case PollByte_kB2000:
655 case PollByte_kB3000:
658 case PollByte_kB4000:
661 case PollByte_kB4500:
664 case PollByte_kB5000:
667 case PollByte_kB5500:
670 case PollByte_kB6000:
673 case PollByte_kB6500:
676 case PollByte_kB7000:
679 case PollByte_kB7500:
689 pollBytes = 10000000;
692 pollBytes = 11000000;
695 pollBytes = 12000000;
698 pollBytes = 13000000;
701 pollBytes = 14000000;
704 pollBytes = 15000000;
707 pollBytes = 16000000;
710 pollBytes = 17000000;
713 pollBytes = 18000000;
716 pollBytes = 20000000;
719 pollBytes = 25000000;
722 pollBytes = 30000000;
725 pollBytes = 40000000;
727 case PollByte_infinity:
731 DU_LOG("\nERROR --> F1AP: Invalid value of poll bytes");
737 /************************************************************************
739 * @brief Converts Max retranmission value to enum
743 * Function : covertMaxRetxValueToEnum
745 * Functionality: Converts Max retranmission value to enum
747 * @params[in] Max retransmission value
748 * @return Max retransmission enum
750 * **********************************************************************/
751 uint8_t covertMaxRetxValueToEnum(uint8_t maxRetx)
756 return UL_AM_RLC__maxRetxThreshold_t1;
758 return UL_AM_RLC__maxRetxThreshold_t2;
760 return UL_AM_RLC__maxRetxThreshold_t3;
762 return UL_AM_RLC__maxRetxThreshold_t4;
764 return UL_AM_RLC__maxRetxThreshold_t6;
766 return UL_AM_RLC__maxRetxThreshold_t8;
768 return UL_AM_RLC__maxRetxThreshold_t16;
770 return UL_AM_RLC__maxRetxThreshold_t32;
772 return UL_AM_RLC__maxRetxThreshold_t8;
775 /*******************************************************************
777 * @brief Converts enum values into actual value of maxRetx
781 * Function : covertMaxRetxEnumToValue
783 * Functionality: Converts enum values into actual value of maxRetx
785 * @params[in] Enum value
786 * @return Actual value
788 * ****************************************************************/
789 uint8_t covertMaxRetxEnumToValue(uint8_t maxRetxCfg)
794 case UL_AM_RLC__maxRetxThreshold_t1:
797 case UL_AM_RLC__maxRetxThreshold_t2:
800 case UL_AM_RLC__maxRetxThreshold_t3:
803 case UL_AM_RLC__maxRetxThreshold_t4:
806 case UL_AM_RLC__maxRetxThreshold_t6:
809 case UL_AM_RLC__maxRetxThreshold_t8:
812 case UL_AM_RLC__maxRetxThreshold_t16:
815 case UL_AM_RLC__maxRetxThreshold_t32:
819 DU_LOG("\nERROR --> F1AP: Invalid configuration for Max retransmission threshold");
825 /************************************************************************
827 * @brief Converts reassembly timer value to its ASN enum
831 * Function : convertReasmblTmrValueToEnum
833 * Functionality: Converts reassembly timer value to its ASN enum
835 * @params[in] Reassembly timer value
836 * @return Reassembly timer enum
838 * **********************************************************************/
839 T_Reassembly_t convertReasmblTmrValueToEnum(int8_t reasmblTmr)
842 return T_Reassembly_ms0;
843 else if((reasmblTmr >=5 && reasmblTmr <= 100) && ((reasmblTmr % 5) == 0))
844 return (reasmblTmr/5);
845 else if((reasmblTmr <= 200) && ((reasmblTmr % 10) == 0))
846 return ((reasmblTmr/10) +10);
848 return T_Reassembly_spare1;
851 /*******************************************************************
852 * @brief Converts enum values into actual value of reassembly timer
856 * Function : convertReasmblTmrEnumToValue
858 * Functionality: Converts enum values into actual value of reassembly
861 * @params[in] Enum value of reassembly timer
862 * @return Actual value of reassembly timer
864 * **********************************************************************/
866 int8_t convertReasmblTmrEnumToValue(uint8_t reAsmblTmrCfg)
868 int8_t reAsmblTmr = 0;
870 if(reAsmblTmrCfg == T_Reassembly_ms0)
874 else if(reAsmblTmrCfg >= T_Reassembly_ms5 || reAsmblTmrCfg <= T_Reassembly_ms100)
876 /* All values of re assembly timer are at interval of 5ms.
877 * This is valid upto 100ms
878 * Hence converting the enum value to actual value by multiplying it to 5
880 reAsmblTmr = reAsmblTmrCfg * 5;
882 else if(reAsmblTmrCfg >= T_Reassembly_ms110 || reAsmblTmrCfg <= T_Reassembly_ms200)
884 /* All values of re assembly timer are at interval of 10ms.
885 * This is valid upto 200ms
886 * since enum value starts from 20 for 100ms, subtracting 10 and
887 * converting the enum value to actual value by multiplying it to 10
889 reAsmblTmr = ((reAsmblTmrCfg-10) * 10);
893 DU_LOG("\nERROR --> F1AP : Invalid value of Re Assembly timer %d", reAsmblTmrCfg);
899 /************************************************************************
901 * @brief Converts Prohibit timer value to its ASN enum
905 * Function : convertProhibitTmrValueToEnum
907 * Functionality: Converts Prohibit timer value to its ASN enum
909 * @params[in] Prohibit timer value
910 * @return Prohibit timer enum
912 * **********************************************************************/
913 T_StatusProhibit_t convertProhibitTmrValueToEnum(int16_t prohibitTmr)
916 return T_StatusProhibit_ms0;
917 else if((prohibitTmr >= 5) && (prohibitTmr <= 250) && ((prohibitTmr % 5) == 0))
918 return prohibitTmr/5;
924 return T_StatusProhibit_ms300;
926 return T_StatusProhibit_ms350;
928 return T_StatusProhibit_ms400;
930 return T_StatusProhibit_ms450;
932 return T_StatusProhibit_ms500;
934 return T_StatusProhibit_ms800;
936 return T_StatusProhibit_ms1000;
938 return T_StatusProhibit_ms1200;
940 return T_StatusProhibit_ms1600;
942 return T_StatusProhibit_ms2000;
944 return T_StatusProhibit_ms2400;
946 return T_StatusProhibit_spare2;
951 /************************************************************************
953 * @brief Converts Prohibit timer enum to its actual value
957 * Function : convertProhibitTmrEnumToValue
959 * Functionality: Converts Prohibit timer enum to its actual value
961 * @params[in] Prohibit timer enum
962 * @return Prohibit timer value
964 * **********************************************************************/
965 int16_t convertProhibitTmrEnumToValue(T_StatusProhibit_t prohibitTmr)
967 if(prohibitTmr == T_StatusProhibit_ms0)
969 else if((prohibitTmr >= T_StatusProhibit_ms5) && (prohibitTmr <= T_StatusProhibit_ms250))
970 return prohibitTmr*5;
975 case T_StatusProhibit_ms300:
977 case T_StatusProhibit_ms350:
979 case T_StatusProhibit_ms400:
981 case T_StatusProhibit_ms450:
983 case T_StatusProhibit_ms500:
985 case T_StatusProhibit_ms800:
987 case T_StatusProhibit_ms1000:
989 case T_StatusProhibit_ms1200:
991 case T_StatusProhibit_ms1600:
993 case T_StatusProhibit_ms2000:
995 case T_StatusProhibit_ms2400:
1003 /************************************************************************
1005 * @brief Converts internal enum value to RRC ASN enum value
1009 * Function : covertPucchFormatIntEnumToRrcEnum
1011 * Functionality: Converts internal enum value to RRC ASN enum value
1014 * @params[in] PUCCH format value in internal enum
1015 * @return PUCCH format value RRC ASN enum
1017 * **********************************************************************/
1018 PUCCH_Resource__format_PR covertPucchFormatIntEnumToRrcEnum(uint8_t pucchFormat)
1022 case PUCCH_FORMAT_0:
1023 return PUCCH_Resource__format_PR_format0;
1024 case PUCCH_FORMAT_1:
1025 return PUCCH_Resource__format_PR_format1;
1026 case PUCCH_FORMAT_2:
1027 return PUCCH_Resource__format_PR_format2;
1028 case PUCCH_FORMAT_3:
1029 return PUCCH_Resource__format_PR_format3;
1030 case PUCCH_FORMAT_4:
1031 return PUCCH_Resource__format_PR_format4;
1033 return PUCCH_Resource__format_PR_NOTHING;
1035 return PUCCH_Resource__format_PR_NOTHING;
1038 /************************************************************************
1040 * @brief Converts BSR Periodic timer value to its ASN enum value
1044 * Function : convertBsrPeriodicTmrValueToEnum
1046 * Functionality: Converts BSR Periodic timer timer value to its ASN enum value
1048 * @params[in] BSR Periodic timer value
1049 * @return BSR Periodic timer ASN enum
1051 * **********************************************************************/
1052 long convertBsrPeriodicTmrValueToEnum(int16_t periodicTmr)
1057 return BSR_Config__periodicBSR_Timer_sf1;
1059 return BSR_Config__periodicBSR_Timer_sf5;
1061 return BSR_Config__periodicBSR_Timer_sf10;
1063 return BSR_Config__periodicBSR_Timer_sf16;
1065 return BSR_Config__periodicBSR_Timer_sf20;
1067 return BSR_Config__periodicBSR_Timer_sf32;
1069 return BSR_Config__periodicBSR_Timer_sf40;
1071 return BSR_Config__periodicBSR_Timer_sf64;
1073 return BSR_Config__periodicBSR_Timer_sf80;
1075 return BSR_Config__periodicBSR_Timer_sf128;
1077 return BSR_Config__periodicBSR_Timer_sf320;
1079 return BSR_Config__periodicBSR_Timer_sf640;
1081 return BSR_Config__periodicBSR_Timer_sf1280;
1083 return BSR_Config__periodicBSR_Timer_sf2560;
1085 return BSR_Config__periodicBSR_Timer_infinity;
1087 return BSR_Config__periodicBSR_Timer_sf10;
1091 /************************************************************************
1093 * @brief Converts BSR Retransmission timer value to its ASN enum value
1097 * Function : convertBsrRetxTmrValueToEnum
1099 * Functionality: Converts BSR Retransmission timer timer value to its ASN enum value
1101 * @params[in] BSR Retransmission timer value
1102 * @return BSR Restransmission timer ASN enum
1104 * **********************************************************************/
1105 long convertBsrRetxTmrValueToEnum(uint16_t retxTmr)
1110 return BSR_Config__retxBSR_Timer_sf10;
1112 return BSR_Config__retxBSR_Timer_sf20;
1114 return BSR_Config__retxBSR_Timer_sf40;
1116 return BSR_Config__retxBSR_Timer_sf80;
1118 return BSR_Config__retxBSR_Timer_sf160;
1120 return BSR_Config__retxBSR_Timer_sf320;
1122 return BSR_Config__retxBSR_Timer_sf640;
1124 return BSR_Config__retxBSR_Timer_sf1280;
1126 return BSR_Config__retxBSR_Timer_sf2560;
1128 return BSR_Config__retxBSR_Timer_sf5120;
1130 return BSR_Config__retxBSR_Timer_sf10240;
1132 return BSR_Config__retxBSR_Timer_sf320;
1136 /************************************************************************
1138 * @brief Converts LC SR Delay timer value to its ASN enum value
1142 * Function : convertLcSrDelayTmrValueToEnum
1144 * Functionality: Converts LC SR Delay timer value to its ASN enum value
1146 * @params[in] LC SR Delay timer value
1147 * @return LC SR Delay timer ASN enum
1149 * **********************************************************************/
1150 long convertLcSrDelayTmrValueToEnum(uint16_t delayTimer)
1155 return BSR_Config__logicalChannelSR_DelayTimer_sf20;
1157 return BSR_Config__logicalChannelSR_DelayTimer_sf40;
1159 return BSR_Config__logicalChannelSR_DelayTimer_sf64;
1161 return BSR_Config__logicalChannelSR_DelayTimer_sf128;
1163 return BSR_Config__logicalChannelSR_DelayTimer_sf512;
1165 return BSR_Config__logicalChannelSR_DelayTimer_sf1024;
1167 return BSR_Config__logicalChannelSR_DelayTimer_sf2560;
1169 return BSR_Config__logicalChannelSR_DelayTimer_sf2560;
1173 /************************************************************************
1175 * @brief Converts actual values into enum value of Paging DRX cycle
1179 * Function : convertPagingCycleValueToEnum
1181 * Functionality: As per Spec 38.331,
1182 * Converts Actual values into enum value of Paging DRX cycle
1185 * @params[in] Actual value of PagingDRX
1186 * @return Enum value of DRX cycle
1188 * **********************************************************************/
1189 e_PagingDRX convertPagingCycleValueToEnum(uint16_t pagingDrxCycle)
1191 switch(pagingDrxCycle)
1194 return PagingDRX_v32;
1196 return PagingDRX_v64;
1198 return PagingDRX_v128;
1200 return PagingDRX_v256;
1202 return PagingDRX_v32;
1206 /************************************************************************
1208 * @brief Converts enum values into actual value of Paging DRX cycle
1212 * Function : convertPagingCycleEnumToValue
1214 * Functionality: As per Spec 38.331,
1215 * Converts enum values into actual value of Paging DRX cycle
1218 * @params[in] Enum value of PagingDRX
1219 * @return Actual value of DRX cycle
1220 * Note: Returning the MAX value in case of Incorrect Enum Value as DRX
1221 * cycle is MIN of Various DRX cycle
1223 * **********************************************************************/
1224 uint16_t convertPagingCycleEnumToValue(e_PagingDRX pagingDrx)
1232 case PagingDRX_v128:
1234 case PagingDRX_v256:
1240 /************************************************************************
1242 * @brief Converts enum values into actual value of Num of Paging Ocassions
1246 * Function : convertPagingOccEnumToValue
1248 * Functionality: As per Spec 38.331,
1249 * Converts enum values into actual value of Num of Paging Ocassion
1252 * @params[in] Enum value of Ns
1253 * @return Actual value of Num of Paging Ocassions
1255 * **********************************************************************/
1256 uint8_t convertNsEnumToValue(e_PCCH_Config__ns Ns)
1260 case PCCH_Config__ns_four:
1262 case PCCH_Config__ns_two:
1264 case PCCH_Config__ns_one:
1271 /************************************************************************
1273 * @brief Converts actual values into enum value of Num of Paging Ocassions
1277 * Function : convertNsValueToEnum
1279 * Functionality: As per Spec 38.331,
1280 * Converts actual values into enum value of Num of Paging Ocassions
1283 * @params[in] Actual value of Num of Paging Ocassions
1284 * @return Enum value of Ns
1286 * **********************************************************************/
1287 e_PCCH_Config__ns convertNsValueToEnum(uint8_t numPO)
1292 return PCCH_Config__ns_one;
1294 return PCCH_Config__ns_two;
1296 return PCCH_Config__ns_four;
1298 return PCCH_Config__ns_one;
1301 /**********************************************************************
1303 **********************************************************************/