[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/custom/modem/common/custom_ecc.h b/mcu/custom/modem/common/custom_ecc.h
new file mode 100644
index 0000000..ac36546
--- /dev/null
+++ b/mcu/custom/modem/common/custom_ecc.h
@@ -0,0 +1,183 @@
+/*****************************************************************************
+* 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) 2009
+*
+* 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:
+ * ---------
+ * custom_ecc.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ * This file defines ECC function prototype.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _APP_ECC_H
+#define _APP_ECC_H
+
+#include "kal_general_types.h"
+
+#define ECC_CUSTOM_MAX_BCD_LENGTH 3
+
+#define ECC_CUSTOM_MAX_SIM_RECORD 16
+
+#define ECC_CUSTOM_MAX_NW_RECORD 16
+#define ECC_CUSTOM_MAX_NVRAM_RECORD 16
+
+#define ECC_CUSTOM_DEFAULT_ECC_LENGTH 4 /* including 0x00 */
+
+typedef enum
+{
+ ECC_SIM1_CALL, /* verifying SIM1 ECC for call */
+ ECC_SIM2_CALL, /* verifying SIM2 ECC for call */
+// Gemini+
+ ECC_SIM3_CALL, /* verifying SIM3 ECC for call */
+ ECC_SIM4_CALL, /* verifying SIM4 ECC for call */
+ ECC_ALL_CALL, /* verifying all ECC for call */
+ ECC_SAT_CALL
+} ecc_call_type_enum;
+
+typedef enum
+{
+ ECC_SRC_SIM1, /* update ECC number of SIM1 */
+ ECC_SRC_SIM2, /* update ECC number of SIM2 */
+// Gemini+
+ ECC_SRC_SIM3, /* update ECC number of SIM3 */
+ ECC_SRC_SIM4, /* update ECC number of SIM4 */
+ ECC_SRC_NW1, /* update ECC number of NW1 */
+ ECC_SRC_NW2, /* update ECC number of NW2 */
+// Gemini+
+ ECC_SRC_NW3, /* update ECC number of NW3 */
+ ECC_SRC_NW4, /* update ECC number of NW4 */
+ ECC_SRC_NVRAM, /* update ECC number of NVRAM1 */
+ ECC_SRC_PREDEFINED /* pre-defined ECC */
+} ecc_src_type_enum;
+
+typedef enum
+{
+ ECC_ENCODING_ANSII, /* ex: 112 => 0x31, 0x31, 0x32 */
+ ECC_ENCODING_UCS2, /* ex: 112 => 0x0031, 0x0031, 0x0032 */
+ ECC_ENCODING_BCD /* ex: 112 => 0x11, 0xF2 */
+} ecc_num_encoding_enum;
+
+typedef enum
+{
+ ECC_NOT_MATCH,
+ ECC_PARTIALLY_MATCH,
+ ECC_FULLY_MATCH
+} ecc_verify_detail_enum;
+
+typedef enum
+{
+ ECC_RESULT_OK,
+ ECC_RESULT_INVALID_ENTRY = -1,
+ ECC_RESULT_CAPACITY_EXCEEDED = -2
+} ecc_update_result_enum;
+
+typedef struct
+{
+ kal_uint8 ecc_number[(ECC_CUSTOM_MAX_BCD_LENGTH * 2 + 1) * 2 /*ENCODING_LENGTH*/]; /* in UCS2, max bytes: 14 */
+ /*
+ * Emergency Service Category Value
+ * Bit 1 Police
+ * Bit 2 Ambulance
+ * Bit 3 Fire Brigade
+ * Bit 4 Marine Guard
+ * Bit 5 Mountain Rescue
+ * Bits 6,7,8 are spare and set to "0"
+ */
+ kal_uint8 ecc_category; /* supported in protocol but no icon in MMI */
+ kal_bool ecc_always; /* 1: ECC always, 0: ECC only when no SIM */
+} ecc_record_struct;
+
+extern kal_bool ecc_custom_verify_emergency_number(
+ kal_uint8 *number, /* number (with null terminator) to verify */
+ kal_uint8 num_length, /* number length */
+ ecc_num_encoding_enum num_encoding, /* ANSII, UCS2, or BCD */
+ ecc_call_type_enum call_type, /* SIM1, SIM2, or ALL */
+ kal_uint8 *ecc_category, /* Returned ECC category */
+ kal_uint8 **ecc_display, /* Returned ECC display name (in UCS2) */
+ kal_uint8 *verify_detail); /* Returned ECC verify detail (only for idle) */
+
+extern void ecc_custom_update_emergency_number(
+ kal_uint8 *number, /* number (with null terminator) to configure */
+ ecc_num_encoding_enum num_encoding, /* ANSII, UCS2, or BCD */
+ ecc_src_type_enum ecc_src, /* SIM1, SIM2, NW1, NW2, or NVRAM */
+ kal_uint8 ecc_category, /* ECC category */
+ kal_uint8 *ecc_display, /* ECC display name (in UCS2) */
+ kal_uint8 index, /* index, if total = 5, index = 1 ~ 5 */
+ kal_uint8 total); /* total */
+
+extern ecc_update_result_enum ecc_custom_update_emergency_number_ex(
+ kal_uint8 *number, /* number (with null terminator) to configure */
+ ecc_num_encoding_enum num_encoding, /* ANSII, UCS2, or BCD */
+ kal_uint8 ecc_category, /* ECC category */
+ kal_bool ecc_always); /* 1: ECC always, 0: ECC only when no SIM */
+
+extern void ecc_custom_get_first_2_default_num(
+ kal_uint8 **ecc_num1,
+ kal_uint8 **ecc_num2);
+
+extern kal_bool ecc_custom_support_enhance_retry(void);
+extern void ecc_custom_decode_bcd_2_ansii(kal_uint8 *ecc_asnii, kal_uint8 *ecc_bcd);
+extern void ecc_custom_reset_sim_context(ecc_src_type_enum ecc_src);
+extern void ecc_custom_reset_nw_context(ecc_src_type_enum ecc_src);
+extern void ecc_custom_swap_nw_context(void);
+
+/* __KOR_CUSTOMIZATION__ */
+extern kal_bool is_ecc_custom_kor_operator_barred_num(kal_uint8 * number, ecc_num_encoding_enum num_encoding );
+/* __KOR_CUSTOMIZATION__ */
+
+typedef struct
+{
+ kal_uint8 length;
+ kal_uint8 bcd1;
+ kal_uint8 bcd2;
+ kal_uint8 bcd3;
+ kal_uint8 mccmnc_str[7];
+} fdn_ecc_struct;
+
+void* phb_get_fdn_ecc_as_normal_tbl(void);
+
+#endif /* _APP_ECC_H */
+