[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/errc/5g/errc_nrrc_struct.h b/mcu/protocol/interface/errc/5g/errc_nrrc_struct.h
new file mode 100644
index 0000000..76a122a
--- /dev/null
+++ b/mcu/protocol/interface/errc/5g/errc_nrrc_struct.h
@@ -0,0 +1,1205 @@
+/*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2016
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * errc_nrrc_struct.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ * Messages and common definitions for ERRC-NRRC interface
+ *
+ * Author:
+ * -------
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 01 20 2022 tina.ma
+ * [MOLY00750695] N77/78????????
+ *
+ * .
+ *
+ * 11 09 2021 ashik.tj
+ * [MOLY00686649] [Gen97] NR EPS Voice Fallback Indicator (Porting from GEN98 MOLY00604278 )
+ *
+ * 11 02 2020 yi-han.chung
+ * [MOLY00584170] 5G SA elevator mode
+ *
+ * errc_nrrc_struct.h
+ *
+ * 09 23 2020 hoho.chen
+ * [MOLY00567882] [MT6875][Margaux][Q0][MP6][SQC][Globe][WW FT][Philippines][Manila][IMS][VoLTE][5GMM][NSA][TCID: FREE_TEST][Moving] EE ASSERT after power up in 5G Area
+ * .
+ *
+ * 09 18 2020 tsung-wei.tu
+ * [MOLY00561862] [Gen97][MP7][VzW][AFR] feature check-in, (check-in approved:?item_344)
+ * .
+ *
+ * 09 14 2020 tsung-wei.tu
+ * [MOLY00561862] [Gen97][MP7][VzW][AFR] feature check-in, (check-in approved:?item_344)
+ * .
+ *
+ * 07 17 2020 jari.korva
+ * [MOLY00534361] ?19420??UK??EE??FT??EVT?DUT can't always stay on NR while activating small data in the background
+ *
+ * [NCONN] NR Cell Detection with auto-gap (EN-DC).
+ *
+ * 06 30 2020 doris.jiang
+ * [MOLY00534637] [Gen97] EM/ICD check in for DMF feature
+ *
+ * [MOLY00525281] NSA°åç»´æ?求ïSCGæ·»å失败主动上报事件
+ *
+ * [Huawei requirement] ICD development - SCG Failure event/ SCG release event
+ *
+ * 06 19 2020 stephen-wy.chen
+ * [MOLY00534712] [MT6853][Mouton][MT6190][R3][MP5][Q0][SQC][China][Shantou][5GMM][NSA][Internal][FT][NSA Self-Cer][TCID:NSA_Self-Cer_FT_02_002][CU+CMCC][error times:1][Fatal error(MPU_NOT_ALLOW)] err_code1:0x0000001D err_code2:0x90CE30BE err_code3:0x29D0DF20
+ *
+ * SCG/MAIN pass release NR/LTE info to EL1 through NCONFIG
+ *
+ * 05 29 2020 jutta.liuska
+ * [MOLY00527121] LGE/FCC requirement for Band 41 AMPR
+ *
+ * MAIN, NRRC INTERFACE and UTILITY: AMPR
+ *
+ * 05 05 2020 shin.chen
+ * [MOLY00520212] (Code Sync to Gen97) [Gen98][UNITE][5G][R15_SA_IRAT_HO_NR2LTE_4]Assert fail: protocol/enl2/pdcp/common/src/epdcp_rbm.c 4076 - EL2
+ *
+ * .
+ *
+ * 03 23 2020 hoho.chen
+ * [MOLY00502844] 2713368Gi19165jiMPjiWIj?d`?5GA?kWI
+ * .
+ *
+ * 02 27 2020 hoho.chen
+ * [MOLY00501962] [MT6873][Margaux][Q0][MP2][SQC][China][Lanzhou][5GMM][NSA][Internal][FT][MDST][CAT][Static][CMCC+CT][ASSERT]err_code1:0x00000433 err_code2:0x2B4F8C1C err_code3:0xCCCCCCCC MD Offender:ERRC
+ * .
+ *
+ * 02 10 2020 shin.chen
+ * [MOLY00495934] [MT6873][Margaux][Q0][MP2][SQC][China][Shanghai][4GMM][Internal][FT][MDST][CAT][Moving][CT+CMCC]md1:(MCU_core0.vpe1.tc2(VPE1)) [ASSERT] file:mcu/driver/dpcopro/src/dpcopro_hisr.c line:775
+ *
+ * .
+ *
+ * 11 14 2019 chin-chia.chang
+ * [MOLY00458872] [Network Issue][MT6885][Petrus][Q0][SQC][MP1][TDD][CMCC][FT][IMS][CMCC FT][China][Changsha][1.3.2]Call drop 5 times
+ *
+ * [SCG][SecurityAlgo][VMTRK][EWSP]
+ *
+ * 09 25 2019 yuhhwang.yu
+ * [MOLY00443312] [MT6885][Petrus][Sanity][VMOLY][VMOLY][2019-09-21_1700] ASSERT = [1][core1,vpe0,tc0(vpe3)] Assert fail: epdcp_rbm.c 6392 - EL2 _
+ * . leave VC CONN part
+ *
+ * 09 17 2019 tereasa.huang
+ * [MOLY00440649] [Gen97][NL1_MOB][NRRC_MEAS] Gaming cell list for mobility enhancement
+ * [NRRC][MEAS] Remove PRS_GAP_IND.
+ *
+ * 08 26 2019 jutta.liuska
+ * [MOLY00432893] [Gen97][Interworking] refactor IRAT structure & procedure
+ * [NCONN] Update 'nas_container' field in ERRC_NRRC_HANDOVER_NRCELL_CNF (VMOLY.APOLLO.SQC)
+ *
+ * 08 15 2019 hoho.chen
+ * [MOLY00427072] [Gen97][NSA] Deactivate ENDC feature
+ * .
+ *
+ * 07 01 2019 chin-chia.chang
+ * [MOLY00415645] [MT6297][Apollo][IODT][MP0.5][Ericsson][Lab][5GSM][China][Beijing][NSA][TC7][Mobility] IE check error for LTE MeNB handover
+ * [VM TRK]NR SEC: SCG feedback NR Sec Algo back to ERRC by Config_Cnf.
+ *
+ * 06 20 2019 sakari.niemela
+ * [MOLY00407048] [6297][NRRC] LTE OTDOA Measurement in NR
+ * [NCONN] LTE OTDOA measurements in NR (MPD part)
+ *
+ * 05 30 2019 charley-cc.cheng
+ * [MOLY00402003] [VMOLY] GEMINI N+L DSDS
+ *
+ * [CONFIG][SA and NSA Gemini] Config code and interface
+ *
+ * 05 16 2019 bekim.abazi
+ * [MOLY00407048] [6297][NRRC] LTE OTDOA Measurement in NR
+ * NRRC MAIN: LTE OTDOA Measurements in NR message handling for MAIN, part 1
+ *
+ * 03 28 2019 hoho.chen
+ * [MOLY00379215] [MT6297][EN-DC] Scenario where SRB1 is configured to use NR PDCP before the initial security configuration does not work
+ * .
+ *
+ * 03 28 2019 hoho.chen
+ * [MOLY00379215] [MT6297][EN-DC] Scenario where SRB1 is configured to use NR PDCP before the initial security configuration does not work
+ * .
+ *
+ * 03 27 2019 shin.chen
+ * [MOLY00378596] [MT6297] SMTC received in LTE signaling for EN-DC PSCell add and EN-DC SN change is not handled at all
+ * .
+ *
+ * 03 26 2019 chin-chia.chang
+ * [MOLY00394187] [VMOLY] [ERRC] [SCG]: (R2-1817620) Introducing procedure for reporting RLC failures
+ *
+ * 1)
+ * [NRRC SCG] [RLC failure]
+ * interface
+ * must include evth_tbl
+ *
+ * 03 26 2019 chin-chia.chang
+ * [MOLY00388674] [VMOLY] [ERRC] [CONN]: IR Redirect: RatChangeInd is reserved till ERRC-CONN recv NRRC_CNF
+ *
+ * [1] = 1) + 7)
+ * [ERRC CONN]
+ * [IR Redirect] : RatChangeInd is reserved till ERRC-CONN recv NRRC_CNF
+ * [SCG_reconfigSyncFail]
+ *
+ * 03 25 2019 hannu.huusko
+ * [MOLY00393510] [6297][NRRC] InterRAT-RSTD
+ * [NRRC-ERRC SAP] InterRAT RSTD message structures
+ *
+ * 02 17 2019 jutta.liuska
+ * [MOLY00378596] [MT6297] SMTC received in LTE signaling for EN-DC PSCell add and EN-DC SN change is not handled at all
+ * Changes to SMTC implementation
+ *
+ * 12 24 2018 lorenz.lin
+ * [MOLY00374379] [ERRC][CEL] 5G4 RCGI development
+ * 5G4 RCGI related interface (MPD).
+ *
+ * 12 20 2018 farming.tseng
+ * [MOLY00373070] [VMOLY] CONN SA IRAT HO, interface part.
+ *
+ * 12 20 2018 po-yu.huang
+ * [MOLY00370464] [Gen97][ERRC][MOB] NR development on VMOLY.EVB.SEPT.DEV
+ *
+ * .
+ *
+ * 12 18 2018 po-yu.huang
+ * [MOLY00370464] [Gen97][ERRC][MOB] NR development on VMOLY.EVB.SEPT.DEV
+ *
+ * .
+ *
+ * 12 12 2018 otto.liu
+ * [MOLY00368748] [GEN97][CEL] SEP.DEV to VMOLY integrating
+ * 4G5 IR redirect
+ *
+ * 11 29 2018 otto.liu
+ * [MOLY00368748] [GEN97][CEL] SEP.DEV to VMOLY integrating
+ *
+ * SA to VMOLY
+ *
+ * 11 29 2018 po-yu.huang
+ * [MOLY00368762] [Gen97][ERRC][MOB] VMOLY.FPGA.SEP.DEV to VMOLY
+ *
+ * NR RCGI & ENDC auto gap IF
+ *
+ * 11 29 2018 tsung-wei.tu
+ * [MOLY00367484] [Gen97][SEARCH] NRRC-SEARCH 1st version
+ * NRRC-SEARCH common part
+ *
+ * 11 06 2018 yi-han.chung
+ * [MOLY00346944] [Gen97][NRRC] IDLE development
+ *
+ * .
+ *
+ * 10 31 2018 hannu.huusko
+ * [MOLY00361478] [Gen97] Gemini Compile Option Clean Up
+ *
+ * Replace __REMOTE_SIM__ with __GEMINI__
+ *
+ * 10 31 2018 chin-chia.chang
+ * [MOLY00346103] [6297] [NRRC] SCG dev
+ *
+ * [VMOLY]
+ * LTE fullConfig
+ * NRRC MAIN interface:
+ *
+ * 10 16 2018 doug.shih
+ * [MOLY00324797] [6297][ERRC] CHM development
+ * [ERRC-NRRC Interface] PSCell Status Indication in CHECK_IE_CNF/CONFIG_CNF.
+ *
+ * 10 03 2018 ming.shen
+ * [MOLY00356286] [Gen97] background search feature - interface
+ *
+ * 08 07 2018 antti.kaisto
+ * [MOLY00309859] [6297][NRRC] CONFIG module EN-DC implementation
+ * NRRC: drb_config_exist renamed to rb_config_exist. (CBr to GEN97.DEV merge)
+ *
+ * 07 31 2018 jutta.liuska
+ * [MOLY00309859] [6297][NRRC] CONFIG module EN-DC implementation
+ * Update CONFIG implementation according to the latest SAP agreements
+ *
+ * [Protocol build tag]
+ * [Is CL self testable: NO]
+ * [Group CL list: WAIT]
+ *
+ * 07 20 2018 esko.oikarinen
+ * [MOLY00311681] [6297][NRRC] MAIN module changes
+ * Background search for LTE
+ *
+ * [Protocol build tag]
+ * [Is CL self testable: YES]
+ * [Group CL list: NO]
+ *
+ * 07 04 2018 nicky.chou
+ * [MOLY00320629] [6297] PS.DEV patch back to GEN97.DEV
+ * [CONN][NSA] remove 'is_idle' and 'cmd' in ERRC_NRRC_QOS_UPDATE_REQ.
+ *
+ * [Protocol build tag]
+ * [Is CL self testable: NO]
+ * [Group CL list: WAIT]
+ *
+ * 06 19 2018 jutta.liuska
+ * [MOLY00309859] [6297][NRRC] CONFIG module EN-DC implementation
+ * NRRC CONFIG: Added suspend_scg to nrrc_errc_pdcp_config_req_struct
+ *
+ * [Protocol build tag]
+ * [Is CL self testable: YES]
+ * [Group CL list: n/a]
+ *
+ * 06 01 2018 shin.chen
+ * [MOLY00324797] [6297][ERRC] CHM development
+ * .
+ *
+ * 05 18 2018 nicky.chou
+ * [MOLY00320629] [6297] PS.DEV patch back to GEN97.DEV
+ * .
+ *
+ * 05 18 2018 nicky.chou
+ * [MOLY00320629] [6297] PS.DEV patch back to GEN97.DEV
+ * .
+ *
+ * 05 18 2018 nicky.chou
+ * [MOLY00320629] [6297] PS.DEV patch back to GEN97.DEV
+ * .
+ *
+ * 05 18 2018 nicky.chou
+ * [MOLY00320629] [6297] PS.DEV patch back to GEN97.DEV
+ * .
+ *
+ * 05 17 2018 jutta.liuska
+ * [MOLY00309859] [6297][NRRC] CONFIG module EN-DC implementation
+ * Correction for Qos update command
+ *
+ * 05 17 2018 jutta.liuska
+ * [MOLY00309859] [6297][NRRC] CONFIG module EN-DC implementation
+ * Corrections to QoS update structures
+ *
+ * 05 14 2018 jutta.liuska
+ * [MOLY00309859] [6297][NRRC] CONFIG module EN-DC implementation
+ * QOS update
+ *
+ * 04 27 2018 claud.li
+ * [MOLY00316750] [6297][NRRC] SCG development
+ * [SCG] SCG DEV basic procedures (Gen97 DEV)
+ *
+ * 04 03 2018 nicky.chou
+ * [MOLY00316692] [6297] Interface build-up for ERRC-NRRC, ERRC/NRRC-ENL2, ERRC-EL2 SAP
+ * .
+ *
+ * 04 03 2018 doug.shih
+ * [MOLY00316692] [6297] Interface build-up for ERRC-NRRC, ERRC/NRRC-ENL2, ERRC-EL2 SAP
+ * .
+ *
+ * 03 31 2018 nicky.chou
+ * [MOLY00316692] [6297] Interface build-up for ERRC-NRRC, ERRC/NRRC-ENL2, ERRC-EL2 SAP
+ * .
+ *
+ * 03 29 2018 hannu.huusko
+ * [MOLY00308815] [6297][NRRC] MAIN module implementation
+ * [NRRC][MAIN] ERRC_NRRC_SRB3_CONFIG_IND sending
+ *
+ * 03 28 2018 claud.li
+ * [MOLY00316750] [6297][NRRC] SCG development
+ * [SCG] interface: remvoe #define ENPDCP_SAP_MAX_NUM_RB_IDX 8
+ * use it in enl2_sap_common.h
+ *
+ * 03 28 2018 nicky.chou
+ * [MOLY00316692] [6297] Interface build-up for ERRC-NRRC, ERRC/NRRC-ENL2, ERRC-EL2 SAP
+ * .
+ *
+ * 03 28 2018 nicky.chou
+ * [MOLY00316692] [6297] Interface build-up for ERRC-NRRC, ERRC/NRRC-ENL2, ERRC-EL2 SAP
+ *
+ * 03 28 2018 claud.li
+ * [MOLY00316750] [6297][NRRC] SCG development
+ * [SCG] interface
+ *
+ * 03 27 2018 sam.tsai
+ * [MOLY00316475] [6297][NRRC] MEAS development
+ * . interface check-in
+ *
+ * 03 14 2018 sakari.niemela
+ * [MOLY00309859] [6297][NRRC] CONFIG module EN-DC implementation
+ * Take ERRC - NRRC SAP skeletons in use
+ *
+ * 02 21 2018 hannu.huusko
+ * [MOLY00308815] [6297][NRRC] MAIN module implementation
+ * [NRRC][MAIN] ERRC and SCG message sending functions.
+ *
+ ****************************************************************************/
+
+
+#ifndef _ERRC_NRRC_STRUCT_H
+#define _ERRC_NRRC_STRUCT_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+#include "enl2_sap_common.h"
+#include "nrrc_nl1_struct.h" // for NR_SCS_TYPE_E and nl1_primary_ssb_mtc_struct
+
+#include "irat_common_enums.h"
+#include "irat_common_struct.h"
+#include "mcd_l3_inc_struct.h"
+
+#include "as_inter_core_enum.h"
+
+#include "global_type.h"
+#include "as_inter_core_struct.h"
+#include "lpp_msg_struct.h" // For interRAT RSTD messages
+
+#include "enl2_sap_common.h" // for 1)enpdcp_ciphering_alg_enum 2)enpdcp_integrity_alg_enum
+
+/********************************************
+ * MACROS *
+ ********************************************/
+#define NR_CONFIG_IE_SCG 0x01
+#define NR_CONFIG_IE_MEAS 0x02
+
+#define ENRRC_ENL2_RB_ID_MAX 34 /* Maximum number of RB configuration between ERRC and NRRC IE check synchronization.
+ * DRB: 1~32 (32), SRB: 1~2 (2) */
+
+#define ERRC_NRRC_MAX_DRB 11
+
+#define LPP_OTDOA_MAX_IRAT_FREQ_NUM 3
+
+#define MAX_NUM_NR_CELL_INFO (16)
+#define MAX_NUM_NR_REDIRECTION_FREQ (64)
+#define MAX_NUM_LTE_REDIRECTION_FREQ (8)
+
+#define ERRC_NRRC_MAX_NR_FREQ_CFG_NUM (16)
+#define ERRC_NRRC_MAX_MULTI_BAND_NUM (8)
+
+#define MAX_PLMN_36331 (6) /* maxPLMN-r11 */
+#define MAX_PLMN_MINUS1_36331 (5) /* maxPLMN-1-r14 */
+#define MAX_NUM_OF_MULTI_BANDS_36331 (8) /* maxNrofMultiBands */
+
+#define MAX_PLMN_38331 (12) /* maxPLMN in 38.331 6.4 */
+#define MAX_NUM_OF_MULTI_BANDS_38331 (8) /* maxNrofMultiBands in 38.331 6.4 */
+
+#define CELL_REJ_INF_MAX_NUM (2)
+
+/********************************************
+ * TYPE DEFINITIONS & ENUMS *
+ ********************************************/
+
+typedef struct {
+ kal_uint16 freq_band_ind;
+ kal_uint8 multi_band_info_num;
+ kal_uint16 multi_band_info_list[MAX_NUM_OF_MULTI_BANDS_36331];
+ kal_bool freq_band_ind_pri;
+}errc_nrrc_eutra_mfbi_info_struct;
+
+typedef struct {
+ kal_uint8 plmn_id_num;
+ plmn_id_struct plmn_id_list[MAX_PLMN_36331];
+ kal_uint16 tracking_area_code;
+ kal_uint32 cell_identity;
+}errc_nrrc_cgi_info_epc_cell_struct;
+
+typedef struct {
+ errc_nrrc_cgi_info_epc_cell_struct cgi_info_epc_legacy;
+ kal_uint8 cgi_info_epc_num;
+ errc_nrrc_cgi_info_epc_cell_struct cgi_info_epc_list[MAX_PLMN_MINUS1_36331];
+}errc_nrrc_cgi_info_epc_struct;
+
+typedef struct {
+ kal_bool cgi_info_epc_valid;
+ errc_nrrc_cgi_info_epc_struct cgi_info_epc;
+ errc_nrrc_eutra_mfbi_info_struct mfbi_info;
+}errc_nrrc_eutra_cgi_info_struct;
+
+typedef enum {
+ ERRC_NRRC_RCGI_RESULT_SUCCESS = 0,
+ ERRC_NRRC_RCGI_RESULT_FAIL
+}errc_nrrc_rcgi_result_enum;
+
+typedef struct {
+ NRARFCN freq;
+ NR_SCS_TYPE_E ssb_scs; // or subcarrier_spacing_ssb
+ kal_bool is_smtc_valid;
+ nl1_primary_ssb_mtc_struct smtc;
+} nr_redirect_info_struct;
+
+typedef struct {
+ kal_uint8 redirect_freq_num;
+ nr_redirect_info_struct redirect_info[MAX_NUM_NR_REDIRECTION_FREQ];
+} errc_nrrc_redirectInfo;
+
+typedef enum {
+ ERRC_NRRC_NR_CONFIG_FROM_SRB1 = 0,
+ ERRC_NRRC_NR_CONFIG_FROM_SRB3
+} errc_nrrc_nr_config_src_enum;
+
+typedef enum {
+ ERRC_NRRC_NR_CONFIG_RELEASE = 0,
+ ERRC_NRRC_NR_CONFIG_SETUP
+} errc_nrrc_nr_config_type_enum;
+
+typedef enum {
+ ERRC_NRRC_LTE_RECONF_MCG_CHANGE = 0,
+ ERRC_NRRC_LTE_CONNECTION_REEST,
+ ERRC_NRRC_LTE_CONNECTION_RELEASE
+} errc_nrrc_lte_proc_enum;
+
+typedef enum {
+ ERRC_NRRC_NR_REL_DRB_KEEP = 0,
+ ERRC_NRRC_NR_REL_DRB_RELEASE,
+ ERRC_NRRC_NR_REL_DRB_REVERT_KEEP,
+ ERRC_NRRC_NR_REL_DRB_RELEASE_FROM_LTE
+} errc_nrrc_nr_rel_drb_ctrl_enum;
+
+typedef enum {
+ ERRC_NRRC_NR_REL_SRB_CTRL_INVALID = 0,
+ ERRC_NRRC_NR_REL_SRB_CTRL_SUSPEND,
+ ERRC_NRRC_NR_REL_SRB_CTRL_RELEASE
+} errc_nrrc_nr_rel_srb_ctrl_enum;
+
+typedef enum {
+ ERRC_NRRC_SCG_FAILURE_TYPE_T310_EXPIRY = 0,
+ ERRC_NRRC_SCG_FAILURE_TYPE_RANDOM_ACCESS_PROBLEM,
+ ERRC_NRRC_SCG_FAILURE_TYPE_RLC_MAX_NUM_RETX,
+ //ERRC_NRRC_SCG_FAILURE_TYPE_SCG_CHANGE_FAIL, /* 2018DEC ASN change it to SCG_SYNC_RECONFIG_FAIL */
+ ERRC_NRRC_SCG_FAILURE_TYPE_SCG_SYNC_RECONFIG_FAIL,
+ ERRC_NRRC_SCG_FAILURE_TYPE_SCG_RECONFIG_FAIL,
+ ERRC_NRRC_SCG_FAILURE_TYPE_SRB3_INTEGRITY_FAIL
+} errc_nrrc_scg_failure_type_enum;
+
+typedef enum {
+ ERRC_NRRC_NR_PSCELL_NO_CHANGE = 0,
+ ERRC_NRRC_NR_PSCELL_ADDITION,
+ ERRC_NRRC_NR_PSCELL_CHANGE,
+ ERRC_NRRC_NR_PSCELL_RELEASE
+} errc_nrrc_nr_pscell_status_enum;
+
+typedef enum {
+ ENRRC_ENL2_RB_CFG_CMD_INVALID,
+ ENRRC_ENL2_RB_CFG_CMD_ADD,
+ ENRRC_ENL2_RB_CFG_CMD_MOD,
+ ENRRC_ENL2_RB_CFG_CMD_REL
+} enrrc_enl2_rb_cfg_cmd_enum;
+
+#ifdef __GEMINI__
+typedef enum {
+ ERRC_NRRC_VC_RESUME_NORMAL = 0,
+ ERRC_NRRC_VC_RESUME_ABORT
+} errc_nrrc_vc_resume_action_enum;
+
+typedef enum {
+ ERRC_NRRC_VC_ABORT_TO_RELEASE = 0,
+ ERRC_NRRC_VC_ABORT_TO_REESTABLISH
+} errc_nrrc_vc_resume_abort_proc_type_enum;
+#endif /* __GEMINI__ */
+
+typedef enum {
+ ERRC_NRRC_NR_AUTO_GAP_PROCEDURE_5G_REPORT_CGI = 1,
+ ERRC_NRRC_NR_AUTO_GAP_PROCEDURE_NR_CELL_DETECTION
+} errc_nrrc_nr_auto_gap_procedure_enum;
+
+typedef struct {
+ kal_uint16 data_len;
+ kal_uint8 *data;
+} errc_nrrc_octet_string_struct;
+
+typedef struct {
+ kal_bool is_key256_valid;
+ kal_uint8 hw_idx;
+ kal_uint8 key256[32];
+} errc_nrrc_key256_struct;
+
+typedef struct {
+ enpdcp_rb_type_enum rb_type;
+ kal_uint8 rb_id;
+ kal_uint8 ebi;
+ enrrc_enl2_rb_cfg_cmd_enum rb_cfg_cmd;
+ kal_bool nr_pdcp_present;
+ kal_bool nr_pdcp_has_ul;
+ kal_bool nr_pdcp_has_dl;
+ kal_bool nr_leg_present;
+ enpdcp_rlc_mode_enum nr_leg_rlc_mode;
+} errc_nrrc_ie_check_cnf_nr_rb_config_struct;
+
+typedef struct {
+ kal_uint8 ebi; /* EPS bearer ID, value range: 0 - 15 */
+ kal_uint8 rb_idx; /* RB Index, value range: 0-36,
+ * SRB3: 16, SRB2: 17, SRB1: 18
+ * LTE PDCP DRB: 0-14; NR PDCP DRB: 0-14 + 20-36,
+ * MTCH: 15, MCCH: 19
+ */
+ kal_bool lte_leg_present;
+ enpdcp_rlc_mode_enum lte_leg_rlc_mode;
+} errc_nrrc_config_req_drb_struct;
+
+typedef struct {
+ kal_uint8 eps_bearer_id;
+ kal_uint8 qci;
+ kal_bool is_gbr_bearer;
+ kal_bool is_emc_related_bearer;
+ kal_bool is_qos_equivalent_to_teleservice_11;
+} errc_nrrc_qos_info_struct;
+
+typedef struct {
+ kal_uint8 periodicity; /* Range: 5(sf5), 10(sf10), 20(sf20), 40(sf40), 80(sf80), 160(sf160)*/
+ kal_uint8 offset; /* Range: 0..159*/
+} errc_nrrc_smtc_periodicity_and_offset_struct;
+
+typedef struct {
+ errc_nrrc_smtc_periodicity_and_offset_struct periodicity_and_offset;
+ kal_uint8 duration; /* Range: 1(sf1), 2(sf2), 3(sf3), 4(sf4), 5(sf5)*/
+} errc_nrrc_ssb_mtc_struct;
+
+/* The following structures with postfix *chctrl_param_struct are paramters used between channel control modules. e.g. ERRC CHM/NRRC CONFIG */
+typedef struct {
+ kal_bool release_nr_pdcp_for_srb1;
+ kal_bool release_nr_pdcp_for_srb2;
+ kal_bool release_all_drbs;
+} errc_nrrc_ie_check_req_chctrl_param_struct;
+
+typedef struct {
+ kal_uint8 nr_rb_config_num;
+ errc_nrrc_ie_check_cnf_nr_rb_config_struct nr_rb_config_list[ENRRC_ENL2_RB_ID_MAX]; /* NRRC's RB configurations in NR RB config IE */
+ errc_nrrc_nr_pscell_status_enum pscell_status; /* indicates the NR PSCell status of NR SCG configuration, valid only 'result' success */
+ kal_bool is_nr_pscell_valid;
+ nr_cell_info nr_pscell;
+} errc_nrrc_ie_check_cnf_chctrl_param_struct;
+
+typedef struct {
+ kal_bool lte_rf_config; /* indicate if LTE RF configuration is needed */
+ kal_uint8 drb_num;
+ errc_nrrc_config_req_drb_struct drb_list[ENPDCP_SAP_MAX_NUM_RB_IDX]; /* allocated RB index and EBI mapping for each RB */
+ kal_bool release_nr_pdcp_for_srb1;
+ kal_bool release_nr_pdcp_for_srb2;
+ kal_bool rb_reverting_possibility;
+ kal_bool release_all_drbs;
+ kal_bool is_smtc_valid;
+ errc_nrrc_ssb_mtc_struct smtc;
+} errc_nrrc_config_req_chctrl_param_struct;
+
+typedef struct
+{
+ kal_bool is_secondary_key_used;
+ enpdcp_ciphering_alg_enum ciphering_algo; // valid when is_secondary_key_used = true
+ enpdcp_integrity_alg_enum integrity_algo; // valid when is_secondary_key_used = true
+} errc_nrrc_nr_sec_algo_struct;
+
+typedef struct {
+ errc_nrrc_nr_pscell_status_enum pscell_status; /* indicates the NR PSCell status of NR SCG configuration */
+ errc_nrrc_nr_sec_algo_struct nr_sec_algo;
+} errc_nrrc_config_cnf_chctrl_param_struct;
+
+typedef struct {
+ errc_nrrc_nr_rel_drb_ctrl_enum drb_control;
+ kal_bool release_nr_pdcp_for_srb1;
+ errc_nrrc_nr_rel_srb_ctrl_enum srb2_control;
+} errc_nrrc_release_req_chctrl_param_struct;
+
+typedef struct {
+ kal_uint32 earfcn;
+ kal_uint8 prsOffset;
+} nrrc_errc_prs_gap_info_struct;
+
+/* TO_DO: To be removed - begin */
+typedef struct {
+ kal_uint32 earfcn;
+ kal_uint8 prsOffset;
+} errc_nrrc_prs_gap_info_struct;
+/* TO_DO: To be removed - end */
+
+/*MSG_ID_ERRC_NRRC_SRB1_SEC_ACTIVATE_REQ*/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 lte_krrc_int_idx;
+ kal_uint8 lte_krrc_enc_idx;
+ enpdcp_integrity_alg_enum integrity_algo;
+ enpdcp_ciphering_alg_enum ciphering_algo;
+} errc_nrrc_srb1_sec_activate_req_struct;
+
+/* MSG_ID_ERRC_NRRC_SRB1_SEC_ACTIVATE_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_srb1_sec_activate_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_IE_CHECK_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_nr_config_src_enum source_srb;
+ kal_bool is_nr_config_type_valid;
+ errc_nrrc_nr_config_type_enum nr_config_type;
+ kal_bool scg_releaseAndAdd;
+ kal_bool is_sk_counter_valid;
+ kal_uint16 sk_counter;
+ kal_bool release_scg_configuration;
+ errc_nrrc_octet_string_struct nr_secondaryCellGroupConfig;
+ errc_nrrc_octet_string_struct nr_radioBearerConfig1;
+ errc_nrrc_octet_string_struct nr_radioBearerConfig2;
+ errc_nrrc_ie_check_req_chctrl_param_struct chctrl_param;
+ kal_bool is_mcg_change;
+ kal_bool is_current_plmn_valid;
+ plmn_id_struct current_plmn;
+} errc_nrrc_ie_check_req_struct;
+
+/* MSG_ID_ERRC_NRRC_IE_CHECK_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool result;
+ kal_uint8 config_bitmap;
+ errc_nrrc_ie_check_cnf_chctrl_param_struct chctrl_param;
+} errc_nrrc_ie_check_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_MEAS_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_meas_req_struct;
+
+/* MSG_ID_ERRC_NRRC_MEAS_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_meas_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_CONFIG_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_nr_config_src_enum source_srb;
+ kal_bool is_nr_config_type_valid;
+ errc_nrrc_nr_config_type_enum nr_config_type;
+ kal_bool scg_releaseAndAdd;
+ kal_bool is_sk_counter_valid;
+ kal_uint16 sk_counter;
+ kal_bool release_scg_configuration;
+ errc_nrrc_octet_string_struct nr_secondaryCellGroupConfig;
+ errc_nrrc_octet_string_struct nr_radioBearerConfig1;
+ errc_nrrc_octet_string_struct nr_radioBearerConfig2;
+ errc_nrrc_key256_struct kenb;
+ errc_nrrc_config_req_chctrl_param_struct chctrl_param;
+ kal_bool is_current_plmn_valid;
+ plmn_id_struct current_plmn;
+} errc_nrrc_config_req_struct;
+
+/* MSG_ID_ERRC_NRRC_CONFIG_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool scg_exist;
+ kal_bool rb_config_exist;
+ errc_nrrc_octet_string_struct rrcReconfigurationComplete;
+ errc_nrrc_config_cnf_chctrl_param_struct chctrl_param;
+} errc_nrrc_config_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_CONFIG_IND */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool nr_rf_config; /* indicate if NR RF configuration is needed */
+} errc_nrrc_config_ind_struct;
+
+/* MSG_ID_NRRC_ERRC_PDCP_CONFIG_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool suspend_scg;
+ kal_uint8 rb_add_num;
+ kal_uint8 rb_mod_num;
+ kal_uint8 rb_rel_num;
+ enpdcp_rb_addmod_struct rb_add_list[ENPDCP_SAP_MAX_NUM_CFG_RB];
+ enpdcp_rb_addmod_struct rb_mod_list[ENPDCP_SAP_MAX_NUM_CFG_RB];
+ enpdcp_rb_rel_struct rb_rel_list[ENPDCP_SAP_MAX_NUM_CFG_RB];
+ kal_bool wait_for_key_update;
+} nrrc_errc_pdcp_config_req_struct;
+
+/* MSG_ID_NRRC_ERRC_PDCP_CONFIG_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} nrrc_errc_pdcp_config_cnf_struct;
+
+/* MSG_ID_NRRC_ERRC_PDCP_SWITCH_VIRTUAL_CONNECTED_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ rrc_enl2_switch_virtual_connected_enum status;
+} nrrc_errc_pdcp_switch_virtual_connected_req_struct;
+
+/* MSG_ID_NRRC_ERRC_PDCP_SWITCH_VIRTUAL_CONNECTED_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} nrrc_errc_pdcp_switch_virtual_connected_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_RB_REVERT_FORGET_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_rb_revert_forget_req_struct;
+
+/* MSG_ID_ERRC_NRRC_RB_REVERT_FORGET_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_rb_revert_forget_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_CONFIG_CONTINUE_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool lte_key_indices_valid;
+ kal_uint8 lte_krrc_int_idx;
+ kal_uint8 lte_krrc_enc_idx;
+ kal_uint8 lte_kup_enc_idx;
+} errc_nrrc_config_continue_req_struct;
+
+/* MSG_ID_ERRC_NRRC_CONFIG_CONTINUE_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_config_continue_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_SCG_FAILURE_IND */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_scg_failure_ind_struct;
+
+/* MSG_ID_ERRC_NRRC_SUSPEND_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_suspend_req_struct;
+
+/* MSG_ID_ERRC_NRRC_SUSPEND_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_scg_failure_type_enum scg_failure_type;
+ errc_nrrc_octet_string_struct measResultScg;
+ kal_bool scg_fake_fail;
+} errc_nrrc_suspend_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_SRB3_CONFIG_IND */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_octet_string_struct rrcReconfiguration;
+} errc_nrrc_srb3_config_ind_struct;
+
+/* MSG_ID_ERRC_NRRC_RELEASE_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_release_req_chctrl_param_struct chctrl_param;
+ kal_bool is_lte_nr_rel;
+ kal_uint8 lte_nr_rel_tid;
+ errc_nrrc_lte_proc_enum lte_proc;
+ kal_bool enpdcp_first;
+} errc_nrrc_release_req_struct;
+
+/* MSG_ID_ERRC_NRRC_RELEASE_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool rb_config_exist;
+} errc_nrrc_release_cnf_struct;
+
+/* MSG_ID_ERRC_NRRC_MEAS_REPORT_IND */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_octet_string_struct measurementReport;
+} errc_nrrc_meas_report_ind_struct;
+
+/* MSG_ID_ERRC_NRRC_FAILURE_INFO_IND */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_octet_string_struct failure_information;
+} errc_nrrc_failure_info_ind_struct;
+
+/* MSG_ID_ERRC_NRRC_QOS_UPDATE_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 qos_info_num;
+ errc_nrrc_qos_info_struct qos_info[ERRC_NRRC_MAX_DRB];
+} errc_nrrc_qos_update_req_struct;
+
+/* MSG_ID_ERRC_NRRC_QOS_UPDATE_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_qos_update_cnf_struct;
+
+/*ERRC to NRRC rat_change_req container*/
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool smtc_vaild;
+ errc_nrrc_ssb_mtc_struct smtc;
+}errc_nrrc_handover_to_nr_container_struct;
+
+#ifdef __GEMINI__
+/* MSG_ID_ERRC_NRRC_VIRTUAL_CONNECTED_RESUME_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_vc_resume_action_enum vc_resume_action;
+ errc_nrrc_vc_resume_abort_proc_type_enum vc_abort_proc; /* only used when vc_resume_action is ERRC_NRRC_VC_RESUME_ABORT */
+} errc_nrrc_virtual_connected_resume_req_struct;
+#endif /* __GEMINI__ */
+
+/*MSG_ID_ERRC_NRRC_HANDOVER_NRCELL_REQ*/
+typedef struct{
+ LOCAL_PARA_HDR
+ plmn_search_type_enum plmn_search_type;
+ kal_bool is_current_plmn_valid;
+ plmn_id_struct current_plmn;
+}errc_nrrc_handover_nrcell_req_struct;
+
+/*MSG_ID_ERRC_NRRC_HANDOVER_NRCELL_CNF*/
+typedef struct{
+ LOCAL_PARA_HDR
+ te_ir_handover_status ir_ho_eval_status;
+ errc_nrrc_nas_container_octet_string_struct nas_container;
+ nr_cell_info target_cell;
+}errc_nrrc_handover_nrcell_cnf_struct;
+
+/*MSG_ID_NRRC_ERRC_HANDOVER_ECELL_REQ*/
+typedef struct{
+ LOCAL_PARA_HDR
+ plmn_search_type_enum plmn_search_type;
+} nrrc_errc_handover_ecell_req_struct;
+
+/*MSG_ID_NRRC_ERRC_HANDOVER_ECELL_CNF*/
+typedef struct{
+ LOCAL_PARA_HDR
+ te_ir_handover_status ir_ho_eval_status;
+} nrrc_errc_handover_ecell_cnf_struct;
+
+/* MSG_ID_NRRC_ERRC_HO_ACTIVATE_ECELL_REQ */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool is_eps_voice_fallback;
+} nrrc_errc_ho_activate_ecell_req_struct;
+
+/* MSG_ID_NRRC_ERRC_HO_ACTIVATE_ECELL_CNF */
+typedef struct{
+ LOCAL_PARA_HDR
+ kal_bool is_lte_cell_available;
+} nrrc_errc_ho_activate_ecell_cnf_struct;
+
+/*MSG_ID_NRRC_ERRC_EVALUATE_ECELL_CNF*/
+typedef struct {
+ LOCAL_PARA_HDR
+ te_ir_cell_reselection_status eval_status;
+ ts_eval_activate_fail_handle eval_activate_fail_handle;
+} nrrc_errc_evaluate_ecell_cnf_struct;
+
+/*MSG_ID_NRRC_ERRC_ACTIVATE_ECELL_STOP_CNF*/
+typedef struct {
+ LOCAL_PARA_HDR
+ /* No parameters here */
+} nrrc_errc_evaluate_ecell_stop_cnf_struct;
+
+/*MSG_ID_NRRC_ERRC_ACTIVATE_ECELL_CNF*/
+typedef struct {
+ LOCAL_PARA_HDR
+ te_ir_cell_reselection_status active_status;
+ ts_eval_activate_fail_handle eval_activate_fail_handle;
+} nrrc_errc_activate_ecell_cnf_struct;
+
+
+/*MSG_ID_ERRC_NRRC_EVALUATE_NRCELL_REQ*/
+typedef struct{
+ LOCAL_PARA_HDR
+ nr_cell_info target_cell;
+ plmn_search_type_enum plmn_search_type;
+ kal_bool is_background_search_trigger;
+ eas_cell_info serving_cell_info;
+} errc_nrrc_evaluate_nrcell_req_struct;
+
+/* MSG_ID_ERRC_NRRC_EVALUATE_NRCELL_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+ te_ir_cell_reselection_status eval_status;
+ ts_eval_activate_fail_handle eval_activate_fail_handle;
+} errc_nrrc_evaluate_nrcell_cnf_struct;
+
+/*MSG_ID_ERRC_NRRC_EVALUATE_NRCELL_STOP_REQ*/
+typedef struct{
+ LOCAL_PARA_HDR
+ /* No parameters here */
+} errc_nrrc_evaluate_nrcell_stop_req_struct;
+
+/* MSG_ID_ERRC_NRRC_EVALUATE_NRCELL_STOP_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_evaluate_nrcell_stop_cnf_struct;
+
+/*MSG_ID_ERRC_NRRC_ACTIVATE_NRCELL_REQ*/
+typedef struct{
+ LOCAL_PARA_HDR
+ te_ir_cell_change_trigger trigger;
+ nr_cell_info target_cell;
+ plmn_search_type_enum plmn_search_type;
+ kal_uint8 redirect_freq_num;
+ nr_redirect_info_struct redirect_info[MAX_NUM_NR_REDIRECTION_FREQ];
+ kal_uint32 nr_afr_timer;
+ kal_bool is_elevator_mode; // used for 4G5 elevator mode
+} errc_nrrc_activate_nrcell_req_struct;
+
+/* MSG_ID_ERRC_NRRC_ACTIVATE_NRCELL_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+ te_ir_cell_reselection_status active_status;
+ ts_eval_activate_fail_handle eval_activate_fail_handle;
+ kal_uint32 remaining_time_afr;
+} errc_nrrc_activate_nrcell_cnf_struct;
+
+/* For 5G4 IRCR or IR Redirection */
+/* MSG_ID_NRRC_ERRC_EVALUATE_ECELL_REQ*/
+typedef struct {
+ LOCAL_PARA_HDR
+ eas_target_cell_info target_cell;
+ plmn_search_type_enum plmn_search_type;
+ /*5G4 background search parameter*/
+ kal_bool is_background_search_trigger;
+ nr_cell_info serving_cell_info;
+} nrrc_errc_evaluate_ecell_req_struct;
+
+/*MSG_ID_NRRC_ERRC_EVALUATE_ECELL_STOP_REQ*/
+typedef struct {
+ LOCAL_PARA_HDR
+ /* No parameters here */
+} nrrc_errc_evaluate_ecell_stop_req_struct;
+
+/* MSG_ID_NRRC_ERRC_ACTIVATE_ECELL_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ te_ir_cell_change_trigger trigger;
+ eas_target_cell_info target_cell;
+ plmn_search_type_enum plmn_search_type;
+ kal_uint8 redirect_freq_num;
+ lte_redirect_info redirect_freq_info[MAX_NUM_LTE_REDIRECTION_FREQ];
+ kal_uint32 wait_time;
+ kal_bool is_eps_voice_fallback;
+} nrrc_errc_activate_ecell_req_struct;
+
+/* __5G_BACKGROUND_SEARCH__ */
+/*MSG_ID_ERRC_NRRC_BACKGROUND_SEARCH_START_REQ*/
+typedef struct {
+ LOCAL_PARA_HDR
+ /* No parameters here */
+} errc_nrrc_background_search_start_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+} errc_nrrc_background_search_start_cnf_struct;
+
+/*MSG_ID_ERRC_NRRC_BACKGROUND_SEARCH_STOP_REQ*/
+typedef struct {
+ LOCAL_PARA_HDR
+ /* No parameters here */
+} errc_nrrc_background_search_stop_req_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+ /* NR detected cell info */
+ nr_cell_info detected_cell;
+} errc_nrrc_background_search_found_ind_struct;
+
+/* MSG_ID_NRRC_ERRC_PRS_GAP_IND */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool action;
+ kal_uint8 num;
+ nrrc_errc_prs_gap_info_struct freq[LPP_OTDOA_MAX_IRAT_FREQ_NUM];
+} nrrc_errc_prs_gap_ind_struct;
+
+/* MSG_ID_NRRC_ERRC_OTDOA_MEAS_REQ */
+typedef lpp_nrrc_otdoa_meas_req_struct nrrc_errc_otdoa_meas_req_struct;
+
+/* MSG_ID_NRRC_ERRC_OTDOA_MEAS_CNF */
+typedef lpp_nrrc_otdoa_meas_cnf_struct nrrc_errc_otdoa_meas_cnf_struct;
+
+/* MSG_ID_NRRC_ERRC_OTDOA_MEAS_IND */
+typedef lpp_nrrc_otdoa_meas_ind_struct nrrc_errc_otdoa_meas_ind_struct;
+
+/* MSG_ID_NRRC_ERRC_OTDOA_MEAS_ABORT_REQ */
+typedef lpp_nrrc_otdoa_meas_abort_req_struct nrrc_errc_otdoa_meas_abort_req_struct;
+
+/* MSG_ID_NRRC_ERRC_OTDOA_AUTO_GAP_OFF_IND */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} nrrc_errc_otdoa_auto_gap_off_ind_struct;
+
+typedef enum {
+ ERRC_NRRC_NR_SCS_15KHZ,
+ ERRC_NRRC_NR_SCS_30KHZ,
+ ERRC_NRRC_NR_SCS_120KHZ,
+ ERRC_NRRC_NR_SCS_240KHZ,
+ ERRC_NRRC_NR_SCS_UNKNOWN,
+} errc_nrrc_nr_scs_enum;
+
+typedef enum {
+ ERRC_NRRC_INTER_RAT_FREQ_SIB24,
+ ERRC_NRRC_INTER_RAT_FREQ_RRC_CONN_RECONFIG,
+ ERRC_NRRC_INTER_RAT_FREQ_SIB24_PRIORITY_FREQ
+} errc_nrrc_inter_rat_freq_update_cause_enum;
+
+typedef enum {
+ ERRC_NRRC_SIB24_PRIORITY_INVALID,
+ ERRC_NRRC_SIB24_PRIORITY_LOW,
+ ERRC_NRRC_SIB24_PRIORITY_EQUAL,
+ ERRC_NRRC_SIB24_PRIORITY_NONE,
+ ERRC_NRRC_SIB24_PRIORITY_HIGH
+} errc_nrrc_sib24_priority_enum;
+
+typedef struct {
+ NRARFCN freq;
+ kal_uint8 band_num;
+ kal_uint16 band_list[ERRC_NRRC_MAX_MULTI_BAND_NUM];
+ errc_nrrc_nr_scs_enum ssb_scs;
+ kal_bool is_ssb_mtc_valid;
+ errc_nrrc_ssb_mtc_struct ssb_mtc;
+ errc_nrrc_sib24_priority_enum sib24_priority; // The NR frequency priority compared with LTE serving cell priority
+} errc_nrrc_inter_rat_freq_info_struct;
+
+/* MSG_ID_ERRC_NRRC_INTER_RAT_FREQ_UPDATE_IND */
+typedef struct {
+ LOCAL_PARA_HDR
+ plmn_id_struct plmn_id;
+ errc_nrrc_inter_rat_freq_update_cause_enum update_cause;
+ kal_uint8 freq_num;
+ errc_nrrc_inter_rat_freq_info_struct freq_list[ERRC_NRRC_MAX_NR_FREQ_CFG_NUM];
+} errc_nrrc_inter_rat_freq_update_ind_struct;
+
+/* MSG_ID_ERRC_NRRC_REPORT_CGI_REQ */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 tid;
+ report_cgi_req_type_enum report_cgi_req_type; // in as_inter_core_enum.h
+ nr_cell_info cgi_cell;
+ kal_bool is_auto_gap_used;
+} errc_nrrc_report_cgi_req_struct;
+
+typedef struct {
+ kal_uint8 plmn_id_num;
+ plmn_id_struct plmn_id_list[MAX_PLMN_38331];
+ kal_bool tracking_area_code_valid; // tac is optional in SIB1
+ kal_uint8 tracking_area_code[3]; // BIT STRING (SIZE (24))
+ // tracking_area_code[0] = bit 23:16
+ // tracking_area_code[1] = bit 15:8
+ // tracking_area_code[2] = bit 7:0
+ kal_bool ran_area_code_valid; // rac is optional in SIB1
+ kal_uint8 ran_area_code; // 0~255
+ kal_uint8 cell_identity[5]; // BIT STRING (SIZE (36))
+ // cell_identity[0] = bit 35:28
+ // cell_identity[1] = bit 27:20
+ // cell_identity[2] = bit 19:12
+ // cell_identity[3] = bit 11:4
+ // cell_identity[4] = bit 3:0 (XXXX-0000) 4 LSB is not used
+} errc_nrrc_plmn_id_info_nr_struct;
+
+typedef struct {
+ kal_uint8 ssb_subcarrier_offset; // INTEGER (0..15)
+ kal_uint8 pdcch_config_sib1; // INTEGER (0..255) = controlResourceSetZero (4 MSB) << 4 | searchSpaceZero (4 LSB)
+} errc_nrrc_no_nr_sib1_struct;
+
+typedef struct {
+ kal_uint8 plmn_id_info_num;
+ errc_nrrc_plmn_id_info_nr_struct plmn_id_info_list[MAX_PLMN_38331];
+ kal_uint8 freq_band_num;
+ kal_uint16 freq_band_list[MAX_NUM_OF_MULTI_BANDS_38331];
+ kal_bool nr_no_sib1_valid;
+ errc_nrrc_no_nr_sib1_struct nr_no_sib1;
+} errc_nrrc_nr_cgi_info_struct;
+
+/* MSG_ID_ERRC_NRRC_REPORT_CGI_CNF */
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 tid;
+ nr_cell_info cgi_cell;
+ cgi_info_status_enum cgi_info_status; // in as_inter_core_enum.h
+ errc_nrrc_nr_cgi_info_struct cgi_info;
+} errc_nrrc_report_cgi_cnf_struct;
+
+/*MSG_ID_NRRC_ERRC_CGI_CONFLICT_JUDGE_REQ*/
+
+/*MSG_ID_NRRC_ERRC_CGI_CONFLICT_JUDGE_CNF*/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_cgi_allowed;
+} nrrc_errc_cgi_conflict_judge_cnf_struct;
+
+/*MSG_ID_ERRC_NRRC_CGI_CONFLICT_FINISH_IND*/
+
+/*MSG_ID_NRRC_ERRC_AUTO_GAP_ON_REQ*/
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_nr_auto_gap_procedure_enum auto_gap_procedure;
+} nrrc_errc_auto_gap_on_req_struct;
+
+/*MSG_ID_NRRC_ERRC_AUTO_GAP_ON_CNF*/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_bool is_auto_gap_activate_success;
+} nrrc_errc_auto_gap_on_cnf_struct;
+
+/*MSG_ID_NRRC_ERRC_AUTO_GAP_OFF_REQ*/
+/*MSG_ID_NRRC_ERRC_AUTO_GAP_OFF_CNF*/
+
+/*MSG_ID_NRRC_ERRC_AUTO_GAP_OFF_IND*/
+/*MSG_ID_NRRC_ERRC_AUTO_GAP_OFF_RSP*/
+
+/*MSG_ID_NRRC_ERRC_REPORT_CGI_REQ*/
+typedef struct {
+ LOCAL_PARA_HDR
+ kal_uint8 tid;
+ report_cgi_req_type_enum report_cgi_req_type;
+ EARFCN earfcn;
+ kal_uint16 pci;
+ kal_bool is_auto_gap_used;
+} nrrc_errc_report_cgi_req_struct;
+/*MSG_ID_NRRC_ERRC_REPORT_CGI_CNF*/
+typedef struct {
+ LOCAL_PARA_HDR
+ errc_nrrc_rcgi_result_enum rcgi_result;
+ kal_uint8 tid;
+ errc_nrrc_eutra_cgi_info_struct cgi_info;
+} nrrc_errc_report_cgi_cnf_struct;
+
+/*MSG_ID_NRRC_ERRC_CELL_REJ_IND*/
+typedef struct
+{
+ kal_bool is_valid;
+ nr_cell_info reject_cell; /* Rejected Information */
+ cell_rej_cause_enum cause; /* Rejected cause */
+ kal_uint16 timer_val; /* Period of timer for rejection unit:s */
+} nrrc_errc_cell_rej_info_struct;
+
+typedef struct {
+ LOCAL_PARA_HDR
+
+ nrrc_errc_cell_rej_info_struct rej_info[CELL_REJ_INF_MAX_NUM];
+} nrrc_errc_cell_rej_ind_struct;
+#endif /* _ERRC_NRRC_STRUCT_H */
+
diff --git a/mcu/protocol/interface/errc/errc_mrs_interface.h b/mcu/protocol/interface/errc/errc_mrs_interface.h
new file mode 100644
index 0000000..baac78e
--- /dev/null
+++ b/mcu/protocol/interface/errc/errc_mrs_interface.h
@@ -0,0 +1,542 @@
+/*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2012
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/****************************************************************************
+ * Filename:
+ * ---------
+ * errc_mrs_interface.h
+ *
+ * Project:
+ * --------
+ * UMOLY
+ *
+ * Description:
+ * ------------
+ * ERRC MRS interface functions
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 05 13 2021 mandy.zheng
+ * [MOLY00627894] [Blocking][MT6885][Petrus][TMO-US][MP7 Excluded][q0][Lab IOT][Ericsson-Nokia][VoNR]VoNR PSHO to LTE failed because no B2 MR from UE
+ * R3-interface.
+ *
+ * 07 27 2020 po-yu.huang
+ * [MOLY00545809] [Colgin] Global SKU CA band customization feature - ERRC
+ *
+ * .
+ *
+ * 06 01 2020 yi-han.chung
+ * [MOLY00527121] LGE/FCC requirement for Band 41 AMPR
+ *
+ * ERRC/MRS
+ *
+ * 04 29 2020 plum.tseng
+ * [MOLY00515893] [HCR][MT6875][Margaux][Q0][MP5][R3][SQC][HQ][MTBF][Lab][Ericsson][ErrorTimes:4][ASSERT] file:mcu/protocol/lte_sec/errc/common/src/errc_asn1_wrapper.c line:159
+ *
+ * [VMOLY_R3] UE capability restriction. (and recover enter connected mode)
+ *
+ * 02 07 2020 plum.tseng
+ * [MOLY00496701] [VMOLY][ERRC&NRRC][Capability] Gemini status sync between ERRC&NRRC
+ *
+ * 12 02 2019 yung-chun.chang
+ * [MOLY00462472] [Gen97][95.OPPO patch back to VMOLY]�i�G?�e?���ѡjFast return to 4G should be disabled on UE
+ *
+ * .
+ *
+ * 09 25 2019 mandy.zheng
+ * [MOLY00443402] [Gen97]2019 Jun CR - Clarification on SA fallback BC support
+ *
+ * -[ERRC]LTE SA band combination derived from ENDC support check API.
+ *
+ * 09 23 2019 yung-chun.chang
+ * [MOLY00440687] VMOLY code sync CR
+ *
+ * 1. CA TBL V2 main part
+ * 2. fix rf_param_v1390 not reset problem
+ *
+ * 06 13 2019 plum.tseng
+ * [MOLY00413522] [VMOLY][Code Sync][ERRC][RCM] CA HPUE class B/C clarify
+ *
+ * 04 10 2019 plum.tseng
+ * [MOLY00395173] [Gen97][ERRC][MRA_EAS] Assertion removal
+ *
+ * and remove some internal info from interface file.
+ *
+ * 03 28 2019 morton.lin
+ * [MOLY00393767] [MT6297] TS 36.331 2018 December baseline migration
+ * [ERRC][RCM] 2018DEC version upgrading (MPD)
+ *
+ * 03 14 2019 plum.tseng
+ * [MOLY00391178] [MCF][VMOLY][ERRC] custom disable band feature with MCF
+ *
+ * [MCF][COSTOM_DISABLE_BAND][RCM & MRS].
+ *
+ * 12 27 2018 morton.lin
+ * [MOLY00375221] [Gen97][NSA] UE Capability development - Feature Set
+ * [ERRC][RCM] EUTRA Feature Set development
+ *
+ * 12 10 2018 morton.lin
+ * [MOLY00371624] [VMOLY][ERRC] provide API for NRRC to calculate P_compensation for LTE neighbor cells
+ * [ERRC][RCM][MRS] Pcompensation retrieval interface for 5G4 IRCR development
+ *
+ * 08 20 2018 plum.tseng
+ * [MOLY00346737] [ERRC][RCM] B41C HPUE
+ *
+ * [VMOLY] (OA)
+ *
+ * 07 03 2018 yung-chun.chang
+ * [MOLY00334670] [CV5a] block specific LTE bands for particular roaming plmns
+ * rcm/mrs part.
+ *
+ * 03 09 2018 morton.lin
+ * [MOLY00309570] [Gen93/95][UMOLYE][ERRC][RCM] WWLTEDB table movement for better customization
+ * 1. LTEBand and CAComb table movement
+ * 2. Introduce LTEBandExcl
+ * 3. Add new DL only bands: B75 & B76
+ *
+ * 12 11 2017 morton.lin
+ * [MOLY00295077] [Gen93][ERRC][RCM] LTE support band and CA combination customization re-arch
+ * Common IF and MRS part (LR12A.R3.MP) (Not in V-List)
+ *
+ * 11 29 2017 yung-chun.chang
+ * [MOLY00292082]
+ * rcm oa part
+ *
+ * 01 25 2017 menghau.wu
+ * [MOLY00217129] [MT6293] code sync from UMOLY (Phase4)
+ * UMOLY CR : [MOLY00223173] [6292][Gemini][L+L][Merge LR12]
+ * UMOLY CL : 3370203
+ *
+ * 03 09 2016 sabrina.hsu
+ * [MOLY00156230] [6292] ERRC code sync LR11 to UMOLY
+ * merge LR11 CL 1801342 [MOLY00148166]
+ *
+ * 02 17 2016 sabrina.hsu
+ * [MOLY00156230] [6292] ERRC code sync LR11 to UMOLY
+ * mrs/nvram/sbp merge
+ *
+ *
+ ****************************************************************************/
+
+#ifndef _ERRC_MRS_INTERFACE_H_
+#define _ERRC_MRS_INTERFACE_H_
+
+#include "kal_general_types.h"
+#include "mrs_as_enums.h"
+#include "mrs_as_struct.h"
+#include "el1d_rf_public.h"
+#include "custom_eas_config.h"
+#include "errc_nvram_editor.h"
+#include "mrs_eas_capability.h"
+#include "mcd_l3_inc_struct.h" //plmn_id_struct
+
+/****************************************************************************
+ * FUNCTION
+ * errc_ue_eutra_capability_get
+ *
+ * DESCRIPTION
+ * Get the encoded UE-EUTRA-Capability IE as defined in 36.311
+ *
+ * PARAMETERS
+ * @param
+ * MRS_SIM_INDEX sim_index:
+ * SIM Index.
+ * @param
+ * kal_uint8 **pp_ue_eutra_capa:
+ * Address of pointer to the encoded UE-EUTRA-Capability IE.
+ * Function allocates memory for the encoded IE and sets the
+ * pointer (*pp_ue_eutra_capa) to point to it.
+ * Caller is responsible for releasing the memory.
+ * @param
+ * mrs_plmn_id_list *p_plmn_id_list
+ * The list of PLMN Id on which UE camped.
+ * NOTE: The mnc3 should be set to 0x00 or 0x0F if it's not
+ * being used. (i.e. 5 digits PLMN Id)
+ * @param
+ * kal_bool is_disable_gsm
+ * Flag used by other RATs to tell if 2G is disabled or not.
+ *
+ * RETURNS
+ * @return
+ * kal_uint32: Length of the encoded UE-EUTRA-Capability IE in bytes.
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+
+kal_uint32 errc_ue_eutra_capability_get(
+ MRS_SIM_INDEX sim_index, kal_uint8 **pp_ue_eutra_capa, mrs_plmn_id_list *p_plmn_id_list, kal_bool is_disable_gsm);
+
+
+#if (CUR_GEN >= MD_GEN97)
+/**
+ * @brief Function to get UE-EUTRA-Capability for NRRC.
+ * @param[in] SIM index
+ * @param[in] The list of PLMN id of serving cell (on which UE camped). Use NULL
+ * pointer if caller didn't have such a list but bear in mind the
+ * PLMN-specific filtering is not applied then.
+ * @param[in] Indicates that if GSM RAT is disabled or not (by operator requirement)
+ * @param[in] String data of the IE "capabilityRequestFilter" from TS 38.331.
+ * @param[out] The address of the encoded data of UE-EUTRA-Capability, callers
+ * shall release this control buffer by themselves.
+ * @return The data length of encoded UE-EUTRA-Capability.
+ */
+kal_uint32 errc_ue_eutra_capability_get_for_nr(
+ MRS_SIM_INDEX sim_index,
+ mrs_plmn_id_list *p_plmn_id_list,
+ kal_bool is_disable_gsm,
+ mrs_nras_octet_string_struct cap_request_filter,
+ kal_uint8 **pp_ue_eutra_capa,
+ mrs_gemini_status_enum gemini_status,
+ kal_bool is_restriction_size_valid,
+ kal_uint32 restriction_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * errc_is_mrdc_lte_standalone_band_combination_supported
+ *
+ * DESCRIPTION
+ * This function is used to check whether the LTE standalone band-combination
+ * derived from a given MR-DC band combination is supported.
+ *
+ * PARAMETERS
+ * @param
+ * MRS_SIM_INDEX sim_index:
+ * SIM index if Gemini applied.
+ *
+ * mrs_plmn_id_list *p_plmn_id_list:
+ * The list of PLMN id of serving cell (on which UE camped). Use NULL
+ * pointer if caller didn't have such a list but bear in mind the
+ * PLMN-specific filtering is not applied then.
+ * NOTE: The mnc3 should be set to 0x00 or 0x0F if it's not being used.
+ * (i.e. 5 digits PLMN Id)
+ *
+ * mrs_eas_mrdc_lte_standalone_bc_list *p_band_comb_list:
+ * User should send the LTE SA band combination part, and function will fill
+ * the support status of the band combination.
+ *
+ *
+ *
+ *****************************************************************************/
+void errc_is_mrdc_lte_standalone_band_combination_supported(
+ MRS_SIM_INDEX sim_index,
+ mrs_plmn_id_list *p_plmn_id_list,
+ mrs_eas_mrdc_lte_standalone_bc_list *p_band_comb_list);
+
+#endif /* (CUR_GEN >= MD_GEN97) */
+
+
+/****************************************************************************
+ * FUNCTION
+ * errc_rcm_any_get_ue_category
+ *
+ * DESCRIPTION
+ * Get the LTE UE category
+ *
+ * PARAMETERS
+ * @param
+ * void
+ * RETURNS
+ * @return
+ * kal_uint8: LTE UE categoty defined by ERRC RCM
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+kal_uint8 errc_rcm_any_get_ue_category(void);
+
+
+/****************************************************************************
+ * FUNCTION
+ * errc_rcm_get_lte_support_band_from_table
+ *
+ * DESCRIPTION
+ * Get the LTE Support Band from table
+ *
+ * PARAMETERS
+ * @param
+ * [in] SIM index
+ * [in] PLMN Id (MNC part will be skipped)
+ * [out] Pointer to an array which can hold 32 elements each contains
+ * kal_uint8 bitmask. The LSB in byte 0 is the Band 1.
+ * Bit '1': supported ; Bit '0': not supported
+ * [in] which table: can choose Capability size table/CA selection table
+ * [in] plmn num for source table
+ * RETURNS
+ * @return
+ * kal_bool: TRUE if valid support band bitmask got successfully, and
+ * the content of p_lte_band_bitmask is the result.
+ * FALSE if no valid support band information got.
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+
+kal_bool errc_rcm_get_lte_support_band_from_table(
+ const MRS_SIM_INDEX sim_idx,
+ const mrs_plmn_id *p_plmn_id,
+ kal_uint8 *p_lte_band_bitmask,
+ const eas_global_support_band_struct *src_table,
+ kal_uint32 src_table_plmn_num);
+
+/****************************************************************************
+ * FUNCTION
+ * errc_rcm_get_lte_support_band_for_plmn_list
+ *
+ * DESCRIPTION
+ * Get the World Wide LTE Support Band by Public Land Mobile Network
+ * Identity list
+ *
+ * PARAMETERS
+ * @param
+ * [in] SIM index
+ * [in] PLMN Id List
+ * [out] Pointer to an array which can hold 32 elements each contains
+ * kal_uint8 bitmask. The LSB in byte 0 is the Band 1.
+ * Bit '1': supported ; Bit '0': not supported
+ * [in] whether support requestFrequencyband(NW+UE)
+ * RETURNS
+ * @return
+ * kal_bool: TRUE if valid support band bitmask got successfully, and
+ * the content of p_lte_band_bitmask is the result.
+ * FALSE if no valid support band information got.
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+kal_bool errc_rcm_get_lte_support_band_for_plmn_list(
+ const MRS_SIM_INDEX sim_idx,
+ const mrs_plmn_id_list *p_plmn_id_list,
+ kal_uint8 *p_lte_band_bitmask,
+ kal_bool is_requestfreband);
+
+/****************************************************************************
+ * FUNCTION
+ * errc_rcm_get_custom_disable_band_list
+ *
+ * DESCRIPTION
+ * Get the custom disable band list setting by nvram
+ *
+ * PARAMETERS
+ * @param
+ * [in] SIM index
+ * [out] p_positive_disable_band_list
+ * [out] p_inverted_disable_band_list
+ * RETURNS
+ * @return
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+void errc_rcm_get_custom_disable_band_list(
+ const MRS_SIM_INDEX sim_idx,
+ nvram_errc_custom_disable_band_positive_struct *p_positive_disable_band_list,
+ nvram_errc_custom_disable_band_inverted_struct *p_inverted_disable_band_list);
+
+/****************************************************************************
+ * FUNCTION
+ * errc_rcm_check_special_plmn_excluded
+ *
+ * DESCRIPTION
+ * Check if the input PLMN List contains any special PLMN which is set to
+ * be excluded from being filtered by global LTE support band table.
+ *
+ * PARAMETERS
+ * @param
+ * [in] SIM index
+ * [in] PLMN Id List
+ *
+ * RETURNS
+ * @return
+ * kal_bool: TRUE if the input PLMN list contains one or more special
+ * PLMN identities.
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+kal_bool errc_rcm_check_special_plmn_excluded(
+ const MRS_SIM_INDEX sim_idx,
+ const mrs_plmn_id_list *p_plmn_id_list);
+
+
+#if defined(__GEMINI_LTE__) && defined(UNIT_TEST) //Gemini Multi LTE UT
+/****************************************************************************
+ * FUNCTION
+ * errc_ut_duplicate_nvram_for_multiSIM
+ *
+ * DESCRIPTION
+ * Function called by MRS_EAS to get ERRC MoDIS ut_duplicate_nvram_multiSIM setting
+ *
+ * PARAMETERS
+ * @param
+ * void
+ * RETURNS
+ * @return
+ * 0: default duplicate NVRAM fro other SIM; 1: no duplicating, setting nvram is invoked by MSC
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+kal_uint8 errc_ut_duplicate_nvram_for_multiSIM(void);
+#endif // defined(__GEMINI_LTE__) && defined(UNIT_TEST)
+
+/****************************************************************************
+ * FUNCTION
+ * errc_is_any_lte_band_exist
+ *
+ * DESCRIPTION
+ *
+ *
+ * PARAMETERS
+ * @param
+ * void
+ * RETURNS
+ *
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+
+kal_bool errc_is_any_lte_band_exist(MRS_SIM_INDEX sim_index, mrs_plmn_id_list *p_plmn_list);
+
+/****************************************************************************
+ * FUNCTION
+ * errc_com_get_hplmn
+ *
+ * DESCRIPTION
+ * To get hplmn
+ *
+ * PARAMETERS
+ * @param
+ * void
+ * RETURNS
+ * whether get hplmn successfully
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+
+kal_bool errc_com_get_hplmn(plmn_id_struct *plmn_id, MRS_SIM_INDEX sim_idx);
+
+/****************************************************************************
+ * FUNCTION
+ * errc_com_get_splmn
+ *
+ * DESCRIPTION
+ * To get splmn
+ *
+ * PARAMETERS
+ * @param
+ * void
+ * RETURNS
+ * whether get splmn successfully
+ *
+ * GLOBALS AFFECTED
+ ****************************************************************************/
+
+kal_bool errc_com_get_splmn(plmn_id_struct *plmn_id, MRS_SIM_INDEX sim_idx);
+
+#ifdef __NR_RAT__
+/****************************************************************************
+ * FUNCTION
+ * errc_calculate_p_compensation
+ *
+ * DESCRIPTION
+ * calculate p_compensation for NRRC
+ *
+ * PARAMETERS
+ * @param
+ * sim_idx
+ * target_earfcn
+ * p_max
+ * *p_multi_band_list
+ * RETURNS
+ * @return
+ * Pcompensation
+ ****************************************************************************/
+kal_int8 errc_calculate_p_compensation(
+ MRS_SIM_INDEX sim_idx,
+ EARFCN target_earfcn,
+ kal_int8 p_max,
+ eutra_multibandinfo_list_struct *p_multi_band_list,
+ const plmn_id_struct *p_plmn_id);
+#endif /* __NR_RAT__ */
+
+#ifdef __NVM_GLOBAL_CABC__
+/****************************************************************************
+ * FUNCTION
+ * errc_rcm_chk_nvram_global_band_ca_custom
+ *
+ * DESCRIPTION
+ * API for checking if Global Band CA custom actiavted
+ *
+ * PARAMETERS
+ * @param
+ * [in] p_plmn_id_list
+ * RETURNS
+ * @return
+ * TRUE means Global Band CA Custom actiavted
+ ****************************************************************************/
+kal_bool errc_rcm_chk_is_global_band_ca_custom(const mrs_plmn_id_list *p_plmn_id_list);
+/****************************************************************************
+ * FUNCTION
+ * errc_rcm_get_lte_band_from_nvram_global
+ *
+ * DESCRIPTION
+ * API for geting LTE support band by filtering of Global Band CA Custom
+ *
+ * PARAMETERS
+ * @param
+ * [in] p_plmn_id_list
+ * [out] p_lte_band_bitmask
+ * RETURNS
+ * @return
+ * void
+ ****************************************************************************/
+void errc_rcm_get_lte_band_from_nvram_global(mrs_plmn_id_list *p_plmn_id_list, kal_uint8 *p_lte_band_bitmask);
+#endif
+
+/****************************************************************************
+ * FUNCTION
+ * errc_check_eutra_capability_supported
+ *
+ * DESCRIPTION
+ * API for checking eutra capability support status
+ *
+ * PARAMETERS
+ * @param
+ * [in] eutra feature
+ * RETURNS
+ * @return
+ * TRUE means the feature is supported
+ ****************************************************************************/
+kal_bool errc_check_eutra_capability_supported(eas_cap_feature_enum feature);
+#endif /* _ERRC_MRS_INTERFACE_H_ */
diff --git a/mcu/protocol/interface/errc/errc_public_api.h b/mcu/protocol/interface/errc/errc_public_api.h
new file mode 100644
index 0000000..719c3c7
--- /dev/null
+++ b/mcu/protocol/interface/errc/errc_public_api.h
@@ -0,0 +1,130 @@
+/*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2012
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * errc_public_api.h
+ *
+ * Project:
+ * --------
+ * UMOLYA
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ * ==========================================================================
+
+ ****************************************************************************/
+
+#ifndef ERRC_PUBLIC_API_H
+#define ERRC_PUBLIC_API_H
+
+#include "nl1_comm_inter_core_public.h"
+#include "as_inter_core_enum.h"
+
+#if (CUR_GEN >= MD_GEN95)
+typedef enum{
+ ERRC_PUBLIC_SIM1 = 0,
+#ifdef __GEMINI_LTE__
+ ERRC_PUBLIC_SIM2 = 1,
+#if (GEMINI_PLUS_LTE >=3)
+ ERRC_PUBLIC_SIM3 = 2,
+#if (GEMINI_PLUS_LTE >=4)
+ ERRC_PUBLIC_SIM4 = 3
+#endif /*GEMINI_PLUS_LTE >=4*/
+#endif /*GEMINI_PLUS_LTE >=3*/
+#endif /*__GEMINI_LTE__*/
+}errc_public_sim_idx_enum;
+
+typedef enum{
+ MOB_CELL_QUALITY_STRONG,
+ MOB_CELL_QUALITY_WEAK,
+ MOB_CELL_QUALITY_INVALID = 0xFF
+}errc_mob_cell_quality_enum;
+
+kal_uint8 errc_public_any_get_max_ul_cc_num(errc_public_sim_idx_enum sim_idx); //SIM1=0, SIM2=1, SIM3=2, SIM4=3
+
+kal_bool errc_public_any_chk_ul_256qam_supported(errc_public_sim_idx_enum sim_idx); //SIM1=0, SIM2=1, SIM3=2, SIM4=3
+
+errc_mob_cell_quality_enum errc_query_servcell_quality_custom_thresh(errc_public_sim_idx_enum sim_idx,
+ kal_int32 thresh_rsrp,
+ kal_int32 thresh_rsrq,
+ kal_int32 thresh_sinr );
+
+#ifdef __VOLTE_SI_ENH__
+/* mod_id is the module who call this callback function */
+void errc_mob_disable_status_sync_tau(module_type mod_id, errc_public_sim_idx_enum sim_idx);
+#endif
+
+#endif /* #if (CUR_GEN >= MD_GEN95) */
+
+void errc_any_alloc_srb_ul_buffer(KAL_AFM_ID afm_id, kal_uint32 size, kal_uint8 **o_ptr);
+
+void errc_any_free_srb_ul_buffer(KAL_AFM_ID afm_id, void *ptr);
+
+kal_int32 errc_any_get_left_buffer_num(KAL_AFM_ID afm_id, kal_uint32 buffer_size);
+
+/*sim_idx ranges (0, GEMINI_PLUS_LTE-1)*/
+kal_uint8 errc_mob_otdoa_pcell_info_query(kal_uint8 sim_idx, kal_uint32 *pcellEarfcn, kal_bool *isFourAntPortConfig);
+
+
+kal_bool errc_mob_enpdcp_is_smart_idle_rel_a2_trigger(kal_uint8 sim_idx);
+
+
+kal_bool errc_current_cell_get(kal_uint8 sim_idx, kal_uint32 *earfcn, kal_uint16 *pci);
+
+void errc_public_get_new_nh_from_ncc(kal_uint8 ncc, kal_uint8* nh, kal_uint8 sim_index);
+
+void errc_mob_update_gapless_related_rfdb(errc_public_sim_idx_enum sim_idx);
+
+kal_uint32 errc_public_get_operator_id(errc_public_sim_idx_enum sim_index);
+
+void errc_chm_any_check_apply_l2_rb_idx_temp_list(kal_uint8 sim_idx);
+
+kal_bool errc_mob_icrej_is_nr_cell_rejected_by_cause(
+ kal_uint32 narfcn,
+ kal_uint16 pci,
+ NR_SCS_TYPE_E ssb_scs,
+ cell_rej_cause_enum cause,
+ kal_uint8 sim_index);
+
+#endif /* ERRC_PUBLIC_API_H */