blob: ac36546050c1efd880207a8386f8ad79bb52c71c [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2009
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 * Filename:
38 * ---------
39 * custom_ecc.h
40 *
41 * Project:
42 * --------
43 * MAUI
44 *
45 * Description:
46 * ------------
47 * This file defines ECC function prototype.
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 *==============================================================================
54 *******************************************************************************/
55#ifndef _APP_ECC_H
56#define _APP_ECC_H
57
58#include "kal_general_types.h"
59
60#define ECC_CUSTOM_MAX_BCD_LENGTH 3
61
62#define ECC_CUSTOM_MAX_SIM_RECORD 16
63
64#define ECC_CUSTOM_MAX_NW_RECORD 16
65#define ECC_CUSTOM_MAX_NVRAM_RECORD 16
66
67#define ECC_CUSTOM_DEFAULT_ECC_LENGTH 4 /* including 0x00 */
68
69typedef enum
70{
71 ECC_SIM1_CALL, /* verifying SIM1 ECC for call */
72 ECC_SIM2_CALL, /* verifying SIM2 ECC for call */
73// Gemini+
74 ECC_SIM3_CALL, /* verifying SIM3 ECC for call */
75 ECC_SIM4_CALL, /* verifying SIM4 ECC for call */
76 ECC_ALL_CALL, /* verifying all ECC for call */
77 ECC_SAT_CALL
78} ecc_call_type_enum;
79
80typedef enum
81{
82 ECC_SRC_SIM1, /* update ECC number of SIM1 */
83 ECC_SRC_SIM2, /* update ECC number of SIM2 */
84// Gemini+
85 ECC_SRC_SIM3, /* update ECC number of SIM3 */
86 ECC_SRC_SIM4, /* update ECC number of SIM4 */
87 ECC_SRC_NW1, /* update ECC number of NW1 */
88 ECC_SRC_NW2, /* update ECC number of NW2 */
89// Gemini+
90 ECC_SRC_NW3, /* update ECC number of NW3 */
91 ECC_SRC_NW4, /* update ECC number of NW4 */
92 ECC_SRC_NVRAM, /* update ECC number of NVRAM1 */
93 ECC_SRC_PREDEFINED /* pre-defined ECC */
94} ecc_src_type_enum;
95
96typedef enum
97{
98 ECC_ENCODING_ANSII, /* ex: 112 => 0x31, 0x31, 0x32 */
99 ECC_ENCODING_UCS2, /* ex: 112 => 0x0031, 0x0031, 0x0032 */
100 ECC_ENCODING_BCD /* ex: 112 => 0x11, 0xF2 */
101} ecc_num_encoding_enum;
102
103typedef enum
104{
105 ECC_NOT_MATCH,
106 ECC_PARTIALLY_MATCH,
107 ECC_FULLY_MATCH
108} ecc_verify_detail_enum;
109
110typedef enum
111{
112 ECC_RESULT_OK,
113 ECC_RESULT_INVALID_ENTRY = -1,
114 ECC_RESULT_CAPACITY_EXCEEDED = -2
115} ecc_update_result_enum;
116
117typedef struct
118{
119 kal_uint8 ecc_number[(ECC_CUSTOM_MAX_BCD_LENGTH * 2 + 1) * 2 /*ENCODING_LENGTH*/]; /* in UCS2, max bytes: 14 */
120 /*
121 * Emergency Service Category Value
122 * Bit 1 Police
123 * Bit 2 Ambulance
124 * Bit 3 Fire Brigade
125 * Bit 4 Marine Guard
126 * Bit 5 Mountain Rescue
127 * Bits 6,7,8 are spare and set to "0"
128 */
129 kal_uint8 ecc_category; /* supported in protocol but no icon in MMI */
130 kal_bool ecc_always; /* 1: ECC always, 0: ECC only when no SIM */
131} ecc_record_struct;
132
133extern kal_bool ecc_custom_verify_emergency_number(
134 kal_uint8 *number, /* number (with null terminator) to verify */
135 kal_uint8 num_length, /* number length */
136 ecc_num_encoding_enum num_encoding, /* ANSII, UCS2, or BCD */
137 ecc_call_type_enum call_type, /* SIM1, SIM2, or ALL */
138 kal_uint8 *ecc_category, /* Returned ECC category */
139 kal_uint8 **ecc_display, /* Returned ECC display name (in UCS2) */
140 kal_uint8 *verify_detail); /* Returned ECC verify detail (only for idle) */
141
142extern void ecc_custom_update_emergency_number(
143 kal_uint8 *number, /* number (with null terminator) to configure */
144 ecc_num_encoding_enum num_encoding, /* ANSII, UCS2, or BCD */
145 ecc_src_type_enum ecc_src, /* SIM1, SIM2, NW1, NW2, or NVRAM */
146 kal_uint8 ecc_category, /* ECC category */
147 kal_uint8 *ecc_display, /* ECC display name (in UCS2) */
148 kal_uint8 index, /* index, if total = 5, index = 1 ~ 5 */
149 kal_uint8 total); /* total */
150
151extern ecc_update_result_enum ecc_custom_update_emergency_number_ex(
152 kal_uint8 *number, /* number (with null terminator) to configure */
153 ecc_num_encoding_enum num_encoding, /* ANSII, UCS2, or BCD */
154 kal_uint8 ecc_category, /* ECC category */
155 kal_bool ecc_always); /* 1: ECC always, 0: ECC only when no SIM */
156
157extern void ecc_custom_get_first_2_default_num(
158 kal_uint8 **ecc_num1,
159 kal_uint8 **ecc_num2);
160
161extern kal_bool ecc_custom_support_enhance_retry(void);
162extern void ecc_custom_decode_bcd_2_ansii(kal_uint8 *ecc_asnii, kal_uint8 *ecc_bcd);
163extern void ecc_custom_reset_sim_context(ecc_src_type_enum ecc_src);
164extern void ecc_custom_reset_nw_context(ecc_src_type_enum ecc_src);
165extern void ecc_custom_swap_nw_context(void);
166
167/* __KOR_CUSTOMIZATION__ */
168extern kal_bool is_ecc_custom_kor_operator_barred_num(kal_uint8 * number, ecc_num_encoding_enum num_encoding );
169/* __KOR_CUSTOMIZATION__ */
170
171typedef struct
172{
173 kal_uint8 length;
174 kal_uint8 bcd1;
175 kal_uint8 bcd2;
176 kal_uint8 bcd3;
177 kal_uint8 mccmnc_str[7];
178} fdn_ecc_struct;
179
180void* phb_get_fdn_ecc_as_normal_tbl(void);
181
182#endif /* _APP_ECC_H */
183