[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/general/smu_common_enums.h b/mcu/interface/protocol/general/smu_common_enums.h
new file mode 100644
index 0000000..a96d31f
--- /dev/null
+++ b/mcu/interface/protocol/general/smu_common_enums.h
@@ -0,0 +1,579 @@
+/*****************************************************************************
+* 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) 2005
+*
+* 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:
+ * ---------
+ * sim_trc.h
+ *
+ * Project:
+ * --------
+ * MT6208
+ *
+ * Description:
+ * ------------
+ * This file is trace map definition.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+
+/********************************************************************************
+* Copyright Statement:
+* --------------------
+*
+* This product has been developed using a protocol stack
+* developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+/*Kinki*/
+#ifndef _SIM_COMMON_ENUMS_H
+
+#define _SIM_COMMON_ENUMS_H
+#include "sim_common_enums.h"
+//#include "custom_mmi_default_value.h"
+//#include "common_nvram_editor_data_item.h"
+#include "nvram_editor_data_item.h"
+#include "l4_nvram_def.h"
+#include "l4_nvram_editor.h"
+//#include "kal_non_specific_general_types.h"
+//#include "ps2sim_struct.h"
+#include "kal_general_types.h"
+#include "ps_public_struct.h"
+#include "ps_public_enum.h"
+#endif /* _SIM_COMMON_ENUMS_H */
+
+
+#ifndef _SMU_COMMON_ENUMS_H
+#define _SMU_COMMON_ENUMS_H
+
+#include "custom_nvram_sec.h"
+
+#define NUM_OF_BYTE_LP 2
+#define MAX_LP_NUM 5
+#define NUM_OF_BYTE_ECC 3
+#define MAX_ECC_NUM 5
+#define NUM_OF_BYTE_NP NVRAM_EDITOR_NUM_OF_BYTE_NP
+#define NUM_NP NVRAM_EDITOR_NUM_NP
+#define NUM_OF_BYTE_NSP NVRAM_EDITOR_NUM_OF_BYTE_NSP
+#define NUM_NSP NVRAM_EDITOR_NUM_NSP
+#define NUM_OF_BYTE_KEY NVRAM_EDITOR_NUM_OF_BYTE_KEY
+//#define NUM_GID NVRAM_EDITOR_NUM_GID
+#define NUM_OF_BYTE_IMSI NVRAM_EDITOR_NUM_OF_BYTE_IMSI
+#define NUM_OF_BYTE_PLMN 3
+#define NUM_OF_PUCT_DIGIT 18
+#define NUM_OF_BYTE_ICCID NVRAM_EDITOR_NUM_OF_BYTE_ICCID
+
+#ifdef __SMS_DEPERSONALIZATION__
+#define LEN_OF_BYTE_SMS_DEPER 88 //Kinki: [MAUI_01255000]
+#endif
+
+// UICC unlock
+#define SML_ENC_NONCE_LEN 256+1 // 256 byte + 1 byte('/0')
+#define SML_MAX_RAW_NONCE_LEN 256
+#define SML_RAND_STRING_LEN 80
+#define SML_RAW_NONCE_LEN SML_RAND_STRING_LEN+15 // IMEI: 15 digit, MEID : 14 digit + 'Z'
+
+/* msg ID */
+
+typedef enum
+{
+ SMU_PHONELOCK_REQUIRED,
+ SMU_CHV1_NOT_REQUIRED,
+ SMU_CHV1_REQUIRED,
+ SMU_UBCHV1_REQUIRED,
+ SMU_SIM_BLOCKED,
+ SMU_SMT_TP_HALT,
+}smu_chv1_phonelock_status_enum;
+
+typedef enum
+{
+ SMU_CHV1,
+ SMU_CHV2
+}smu_chv_type_enum;
+
+typedef enum
+{
+ CHV_RETRY_ALLOW,
+ CHV_VERIFIED,
+ CHV_DISABLED,
+ CHV_BLOCKED,
+ CHV_DEAD,
+ CHV_INVALID_TYPE,
+ CHV_NOTINITED
+}smu_chv_status_enum;
+
+
+typedef enum
+{
+ SEARCH_RECORD=162,
+ READ_BINARY=176,
+ READ_RECORD=178,
+ GET_RESPONSE=192,
+ UPDATE_BINARY=214,
+ UPDATE_RECORD=220,
+ STATUS_CMD=242
+}smu_sim_access_cmd_enum;
+
+
+typedef enum
+{
+ SMU_UPDATE_ACMMAX,
+ SMU_UPDATE_ACM,
+ SMU_UPDATE_PUCT,
+ SMU_SWITCH_BDN
+}smu_access_item_enum;
+
+typedef enum
+{
+ SMU_ACCESS_NOT_ALLOW,
+ SMU_VERIFY_CHV1,
+ SMU_VERIFY_CHV2
+}smu_access_condition_enum;
+
+typedef enum
+{
+ ID_READY,
+ ID_SIM_PIN1,
+ ID_SIM_PUK1,
+ ID_PH_SIM_PIN,
+ ID_PH_FSIM_PIN,
+ ID_PH_FSIM_PUK,
+ ID_SIM_PIN2,
+ ID_SIM_PUK2,
+ ID_PH_NET_PIN,
+ ID_PH_NET_PUK,
+ ID_PH_NETSUB_PIN,
+ ID_PH_NETSUB_PUK,
+ ID_PH_SP_PIN,
+ ID_PH_SP_PUK,
+ ID_PH_CORP_PIN,
+ ID_PH_CORP_PUK,
+ ID_PH_LINK_NS_SP_PIN,
+ ID_PH_LINK_NS_SP_PUK,
+ ID_PH_LINK_SIM_C_PIN,
+ ID_PH_LINK_SIM_C_PUK,
+ ID_PHONELOCK,
+ ID_SIM_BLOCKED,
+ ID_SIM_BUSY, /* This add for WM CPIN? with SML check */
+ ID_SIM_PIN_DEFER,
+ ID_CARD_REBOOT,
+ ID_CARD_RESTRICTED,
+ ID_EMPTY_EUICC,
+ ID_UNKNOWN //link_SML
+}smu_pending_password_id_enum;
+
+typedef enum
+{
+ SMU_WRITE_PUCT_RMI,
+ SMU_WRITE_PUCT_LMI,
+ SMU_SIM_ACCESS_CMD,
+ SMU_WRITE_PLMN_SEL_ADD_RMI,
+ SMU_WRITE_PLMN_SEL_REMOVE_RMI,
+ SMU_WRITE_PLMN_SEL_REPLACE_RMI,
+ SMU_WRITE_PLMN_SEL_ADD_LMI,
+ SMU_WRITE_PLMN_SEL_REMOVE_LMI,
+ SMU_WRITE_PLMN_SEL_REPLACE_LMI,
+ SMU_READ_PUCT_RMI,
+ SMU_READ_PLMN_SEL_RMI,
+ SMU_READ_PUCT_LMI,
+ SMU_READ_PLMN_SEL_LMI,
+ SMU_READ_CSP_RMI,
+ SMU_READ_CSP_LMI,
+ SMU_READ_CHANGED_PLMNSEL,
+ SMU_READ_CHANGED_PUCT,
+ SMU_WRITE_DCK
+}smu_write_access_id_enum;
+
+typedef enum {
+ SMU_CI_DISABLE,
+ SMU_CI_ENABLE,
+ SMU_CI_NONE
+} smu_cipher_ind_enum;
+
+/*Kinki : revised ECC*/
+typedef enum
+{
+ SMU_SIM_UNKNOWN, //default value
+ SMU_SIM_NOT_INSERTED,
+ SMU_SIM_INSERTED
+}smu_sim_inserted_enum;
+
+#ifdef __SMS_DEPERSONALIZATION__ //Kinki: [MAUI_01255000]
+
+typedef enum
+{
+ SMU_SML_LENGTH_TOO_SHORT,
+ RFU
+}smu_sms_depersonalization_enum;
+
+#endif
+
+typedef struct {
+ kal_uint8 mcc2;
+ kal_uint8 mcc1;
+ kal_uint8 mnc3;
+ kal_uint8 mcc3;
+ kal_uint8 mnc2;
+ kal_uint8 mnc1;
+ kal_uint8 access_tech[2];
+} smu_plmn_id_struct;
+
+typedef enum
+{
+ SML_LOCK_RULE_NONE = 0,
+ SML_LOCK_RULE_SIM1_SLOT_LOCKED_ONLY = 1,
+ SML_LOCK_RULE_SIM2_SLOT_LOCKED_ONLY = 2,
+ SML_LOCK_RULE_ALL_SIM_SLOT_LOCKED = 3,
+ SML_LOCK_RULE_LINK_LOCK_BY_SIM1_SLOT = 4,
+ SML_LOCK_RULE_LINK_LOCK_BY_SIM2_SLOT = 5,
+ SML_LOCK_RULE_LINK_LOCK_BY_ALL_SIM_SLOT = 6,
+ SML_LOCK_RULE_LINK_LOCK_RJIO_LOCK = 7, // Lock on protocol 1
+ SML_LOCK_RULE_LINK_LOCK_BY_ALL_SIM_SLOT_REVERSE = 8,
+ SML_LOCK_RULE_LINK_LOCK_BY_ALL_SIM_SLOT_SRVLCK = 9,
+ SML_LOCK_RULE_VZW_NETWORK_LOCK = 10,
+ SML_LOCK_RULE_LOCK_BY_OP129 = 11, // KDDI RSU
+ SML_LOCK_RULE_TMO_NETWORK_LOCK = 12,
+ SML_LOCK_RULE_ATT_NETWORK_LOCK = 13,
+ SML_LOCK_RULE_SPR_NETWORK_LOCK = 14,
+
+ SML_LOCK_RULE_MAX,
+ SML_LOCK_RULE_LEGACY_MODE = 255,
+ SML_LOCK_RULE_UNKNOWN = 256,
+} sml_lock_rule_enum;
+
+typedef enum
+{
+ SML_LOCK_SUB_RULE_SLOT_COMMON_RULE,
+ SML_LOCK_SUB_RULE_SLOT_INDEPENDENT_RULE,
+ SML_LOCK_SUB_RULE_LS_FULL_SERVICE,
+ SML_LOCK_SUB_RULE_LS_CS_ONLY_SERVICE,
+ SML_LOCK_SUB_RULE_LS_VOICE_ONLY_SERVICE,
+ SML_LOCK_SUB_RULE_UNKNOWN
+} sml_lock_sub_rule_enum;
+
+typedef enum
+{
+ SML_LOCK_SPR_SUB_RULE_DEFAULT,
+ SML_LOCK_SPR_SUB_RULE_BMVNO
+} sml_lock_spr_sub_rule_enum;
+
+typedef enum
+{
+ SML_LOCK_TMO_SUB_RULE_MOVIAL,
+ SML_LOCK_TMO_SUB_RULE_TRUSTONIC
+} sml_lock_tmo_sub_rule_enum;
+
+#ifdef __CUST_SML_RULE__
+
+typedef enum
+{
+ SML_LOCK_CUST_CODE_NONE = 0,
+
+ SML_LOCK_CUST_CODE_CUST_X,
+ SML_LOCK_CUST_CODE_SIZE
+} sml_lock_cust_code_enum;
+
+typedef enum
+{
+ /* SML_LOCK_CUST_CODE_CUST_X */
+ SML_LOCK_CUST_RULE_CUST_X_RULE_XXX = 0,
+ SML_LOCK_CUST_RULE_CUST_X_RULE_SIZE,
+
+ SML_LOCK_CUST_RULE_NONE = 0xFF
+} sml_lock_cust_rule_enum;
+
+/* Order and Existence should be aligned with sml_lock_cust_code_enum */
+#define SML_GBLOB_MAX_CUST_RULE_LIST_END 0
+#define SML_GBLOB_MAX_CUST_RULE_LIST { \
+ 0, /* SML_LOCK_CUST_CODE_NONE */ \
+ \
+ SML_LOCK_CUST_RULE_CUST_X_RULE_SIZE, /* SML_LOCK_CUST_CODE_CUST_X */ \
+ SML_GBLOB_MAX_CUST_RULE_LIST_END \
+ }
+
+extern const kal_uint8 sml_gblob_max_cust_rule[SML_LOCK_CUST_CODE_SIZE + 1];
+
+#endif /* __CUST_SML_RULE__ */
+
+typedef enum
+{
+ SML_RULE_UNKNOWN,
+ SML_RULE_FULL_SERVICE,
+ SML_RULE_CS_ONLY_SERVICE,
+ SML_RULE_PS_ONLY_SERVICE,
+ SML_RULE_ECC_ONLY_SERVICE,
+ SML_RULE_NO_SERVICE,
+ SML_RULE_VOICE_ONLY_SERVICE, // Modem still have full service, AP will block data service (except VoLTE call)
+} sml_lock_rule_policy_enum;
+
+typedef enum
+{
+ SML_STATUS_SIM_UNKNOWN,
+ SML_STATUS_SIM_VALID,
+ SML_STATUS_SIM_INVALID,
+ SML_STATUS_SIM_ABSENT
+} sml_state_is_valid_sim_enum;
+
+typedef enum
+{
+ LINK_SML_BUSY_SIM,
+ LINK_SML_VALID_SIM,
+ LINK_SML_INVALID_SIM,
+ LINK_SML_INVALID_TO_VALID_SIM,
+ LINK_SML_VALID_TO_INVLAID_SIM,
+ LINK_SML_UNKNOWN_SIM
+} link_sml_valid_sim_enum;
+
+
+typedef enum
+{
+ LINK_SML_IN_SERVICE,
+ LINK_SML_NO_SERVICE,
+ LINK_SML_UNKNOWN_SERVICE
+} link_sml_srv_state_enum;
+
+typedef enum
+{
+ LINK_SML_CHECK_ALL_SIM_LOCKED,
+ LINK_SML_CHECK_WAITING,
+ LINK_SML_CHECK_VALID_SIM_EXIST,
+ LINK_SML_CHECK_NO_VALID_SIM_EXIST,
+ LINK_SML_CHECK_UNKNOWN
+} link_sml_check_enum;
+
+typedef enum
+{
+ DSML_SIMLOCK_ENCRYPTED_DATA_RECEIVED_SUCCESS = 0,
+ DSML_SIMLOCK_ENCRYPTED_DATA_RECEIVED_ERROR = 1,
+ DSML_SIMLOCK_ENCRYPTED_DATA_DELETED_SUCCESS = 2,
+ DSML_SIMLOCK_ENCRYPTED_DATA_DELETED_ERROR = 3,
+ DSML_SIMLOCK_ENCRYPTED_DATA_READ_SUCCESS = 4,
+ DSML_SIMLOCK_ENCRYPTED_DATA_READ_ERROR = 5,
+ DSML_SIMLOCK_INVALID_IMEI = 6,
+ DSML_SIMLOCK_CONFIGURE_SUCCESS = 7,
+ DSML_SIMLOCK_DUPLICATE_SETTING_ERROR = 8,
+ DSML_SIMLOCK_MAX_RETRIES_REACHED = 9,
+ DSML_SIMLOCK_INVALID_LOCK_DATA = 10,
+ DSML_SIMLOCK_PARAMETER_UNSUPPORTED = 11,
+ DSML_SIMLOCK_CK_ERROR = 12,
+ DSML_SIMLOCK_MEMORY_ERROR = 13,
+ DSML_SIMLOCK_SIGN_ERROR = 14,
+ DSML_SIMLOCK_DECRYPT_ERROR = 15,
+ DSML_SIMLOCK_UNKNOWN_ERROR = 16,
+} dsml_result_enum;
+
+typedef enum
+{
+ DSML_OP_ADD_LOCK_WITHOUT_CK = 0,
+ DSML_OP_UNLOCK_WITHOUT_CK = 1,
+ DSML_OP_PERMANENTLY_UNLOCK_WITHOUT_CK = 2,
+ DSML_OP_ADD_LOCK = 3,
+ DSML_OP_UNLOCK_WITH_CK = 4,
+ DSML_OP_REPLACED_CARD = 5,
+ DSML_OP_UPDATE_SIMLOCK = 6,
+ DSML_OP_UNKNOWN = 7,
+} dsml_op_enum;
+
+typedef struct
+{
+ kal_uint8 cat_type;
+ kal_uint8 autolock;
+ kal_uint8 blacklist_op;
+ kal_uint8 blacklist_len;
+ kal_uint8 blacklist[DSML_MAX_BL_LEN];
+} dsml_category_data_struct;
+
+typedef struct
+{
+ dsml_op_enum operation;
+ kal_uint8 slot;
+ kal_uint8 imei[15];
+ kal_uint8 slot_policy;
+ kal_uint8 sub_policy[2]; //sub_policy[0] : 1st byte, sub_policy[1] : 2nd byte
+ kal_uint8 ck_length;
+ kal_uint8 ck[32];
+ kal_uint8 hck_length;
+ kal_uint8 hck[64];
+ kal_uint8 salt_length;
+ kal_uint8 salt[32];
+ kal_uint8 iteration[4];
+ kal_uint32 max_retry_cnt;
+ kal_uint8 num_of_cat;
+ dsml_category_data_struct cat_data[7];
+} dsml_simlock_data_struct;
+
+/* UICC Unlock Validation Mode */
+typedef enum
+{
+ SMU_UULK_VALID_CHECK_AND_UPDATE,
+ SMU_UULK_VALID_CHECK_ONLY,
+ SMU_UULK_VALID_UNKNOWN
+} smu_uulk_valid_mode_enum;
+
+typedef enum
+{
+ SMU_TRC_SIM_STATUS_ENUM,
+ SMU_TRC_PENDING_PASSWD_ENUM,
+ SMU_TRC_ENUM_UNKNOWN
+} smu_trc_enum_type_enum;
+
+
+typedef enum{
+ SML_OP129_NULL,
+ SML_OP129_LOCK,
+ SML_OP129_UNLOCK,
+ SML_OP129_NO_CHECK,
+}smu_op129_lock_enum;
+
+extern kal_bool l4csmu_read_plmn_sel(sim_file_index_enum file_idx, kal_uint8 start_index, kal_uint16 * num, smu_plmn_id_struct * plmn_ptr);
+//extern smu_chv_status_enum l4csmu_get_chv_status(smu_chv_type_enum type);
+extern kal_bool l4csmu_get_puct_value(kal_uint8 *currency,kal_uint8 *ppu);
+
+//SMU only
+/*Kinki remove(useless function)*/
+//extern void l4csmu_get_preferred_language(kal_uint8 *num,sim_lp_file_type_enum *file_type, kal_uint8 *lp_data);
+//extern void l4csmu_get_ecc(kal_uint8 *num_ecc, sim_ecc_entry_struct *ecc_entry);
+//extern void l4csmu_get_ecc(kal_uint8 *num, kal_uint8 *ecc_data);
+extern void l4csmu_get_imsi(kal_uint8 *imsi_data);
+extern void l4csmu_get_imsi_by_idx(kal_uint8 *imsi_data, kal_uint8 simInterface);
+
+//SMU only
+/*Kinki remove(useless function)*/
+//extern smu_access_condition_enum l4csmu_get_sim_access_info(smu_access_item_enum access_item);
+extern smu_pending_password_id_enum l4csmu_get_pending_password_id(void);
+//link_SML
+extern smu_pending_password_id_enum l4csmu_get_pending_password_id_ext(sim_interface_enum sim_id);
+extern smu_pending_password_id_enum l4csmu_app_get_pending_password_id(kal_uint8);
+extern kal_bool l4csmu_get_pending_lock(smu_pending_password_id_enum password, smu_security_type_enum *type);
+extern void l4csmu_get_chv_status_ext(sim_chv_status_struct *chv_status,sim_interface_enum sim_id);
+extern kal_bool l4csmu_is_normal_registration_allowed(sim_interface_enum ps_id);
+
+
+/*Kinki remove(useless function)*/
+//extern kal_uint16 l4csmu_test_preferred_plmn (void); //Benson 20040407 modified for mtk00714's request
+extern sim_dn_enum l4csmu_get_dial_mode(void);
+extern sim_dn_enum l4csmu_get_dial_mode_by_ps_id(protocol_id_enum ps_id);
+//Kinki remove for MAUI_00632199
+#if 0
+#ifdef __GEMINI__
+/* under construction !*/
+#else
+/* under construction !*/
+#endif
+#endif
+
+extern kal_bool check_is_usim(void);
+
+#if defined(__GEMINI__)
+extern smu_sim_inserted_enum is_sim_inserted(kal_uint8 simInterface);
+#else
+extern smu_sim_inserted_enum is_sim_inserted(void);
+#endif
+
+extern kal_bool smu_update_is_simcard_replaced(kal_uint8 *iccid, kal_uint8 simInterface);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern smu_sim_status_enum smu_update_is_sim_replaced(kal_uint8 *imsi, kal_uint8 simInterface);
+#ifdef __cplusplus
+}
+#endif
+
+extern smu_cipher_ind_enum l4csmu_get_cipher_ind_status(void);
+
+extern kal_bool l4csmu_sat_ready_req(kal_bool trigger_by_user);
+
+extern kal_bool l4csmu_plmn_read_of_File_index(sim_file_index_enum file_idx, kal_uint8 simInterface, kal_uint16 * fileSize, kal_uint8 * file_data);
+
+#ifdef __TRACFONE_SML__
+extern kal_bool is_any_sml_locked(kal_uint8 simInterface);
+#endif
+extern kal_bool smu_is_lte_only_customization_supported();
+
+#define SML_MCC_LEN 3
+#define SML_MCC_MNC_LEN 6
+extern kal_uint8 sml_sprint_mcc_mnc_list[][SML_MCC_MNC_LEN+1];
+extern kal_uint8 sml_us_mcc_list[][SML_MCC_LEN+1];
+extern kal_uint8 sml_bmvno_mcc_mnc_list[][SML_MCC_MNC_LEN+1];
+extern kal_uint8 sml_uicc_lock_get_list_num(kal_uint8 lock_code, kal_uint8 ps_id);
+extern kal_bool sml_is_bmvno_plmn_gid(kal_uint8* mccmnc, kal_uint8 is_valid_gid1, kal_uint8* gid1);
+extern kal_bool custom_sml_is_uicc_unlock_enabled(void);
+extern kal_bool sml_uicc_lock_checking(kal_uint8 code, kal_uint8* imsi);
+extern kal_uint8 l4csmu_get_unlock_code();
+extern void l4csmu_gen_nonce(kal_uint8* device_id, kal_uint32 device_id_len, kal_uint8* nonce, kal_uint32* nonce_len);
+extern kal_bool l4csmu_validate_signature(smu_uulk_valid_mode_enum mode, kal_uint8 unlock_code, kal_uint8* signature, kal_uint32 signature_len);
+
+extern void sml_lock_rule_and_status_update_ind(kal_uint8 simInterface);
+extern sml_lock_rule_policy_enum sml_query_legal_service(kal_uint8 simInterface);
+extern void sml_update_legal_service(sml_lock_rule_policy_enum new_policy,
+ sml_state_is_valid_sim_enum is_sim_valid,
+ kal_uint8 simInterface);
+extern sml_lock_rule_enum sml_query_sml_lock_rule();
+#ifdef __CUST_SML_RULE__
+extern kal_uint8 sml_query_sml_cust_code(void);
+extern kal_uint8 sml_query_sml_cust_rule(void);
+#endif
+extern kal_uint16 sml_query_sml_lock_sub_rule();
+extern sml_lock_sub_rule_enum sml_query_slot_lock_context_rule();
+extern sml_lock_sub_rule_enum sml_query_linksml_invalid_sim_rule();
+extern kal_bool sml_is_gblob_enabled(void);
+extern kal_bool sml_is_linksml_enabled(void);
+extern kal_bool sml_is_internal_gblob_lock_rule(sml_lock_rule_enum lock_rule);
+extern void sml_force_unlock_gblob_dev_lock();
+
+extern kal_bool l4csmu_sl_get_dual_sim_lock_control_slot1_only_feature_supported(void);
+extern kal_bool smu_is_sml_in_sl_locked(void);
+
+extern void sml_upgrade_service_req(void);
+extern void sml_update_service_state(link_sml_srv_state_enum state, kal_uint8 simInterface);
+extern dsml_result_enum dynamic_simmelock_hdlr(dsml_simlock_data_struct* simlock_data);
+extern kal_uint8 l4csmu_get_sml_cat_algo_type_with_source(sml_cat_enum cat, kal_uint8 source);
+extern kal_uint8 l4csmu_get_sml_cat_algo_type(sml_cat_enum cat);
+extern sml_state_is_valid_sim_enum sml_query_sml_sim_state(kal_uint8 simInterface);
+extern kal_bool sml_check_ctrlslot_if_all_cat_unlock_state(kal_uint8 sml_lock_rule);
+
+extern kal_bool smu_check_is_iccid_valid(kal_uint8 ps_id);
+
+extern kal_bool sml_vzw_rsu_is_need_relock(kal_uint8 ps_id);
+
+extern void l4csmu_get_nonce_sign_status_req(kal_uint8* nonce_status, kal_uint8* sign_status);
+#endif
+