blob: 107282a277e8809af870bc03529dc1c2a7d18551 [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/*****************************************************************************
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) 2016
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 * Filename:
37 * ---------
38 * valumlapi.h
39 *
40 * Project:
41 * --------
42 *
43 *
44 * Description:
45 * ------------
46 *
47 *
48 * Author:
49 * -------
50 *
51 *
52 *==============================================================================*/
53
54#ifndef _VALUMLAPI_H
55#define _VALUMLAPI_H
56
57#ifdef __CARRIER_RESTRICTION__
58/*carrier match type*/
59typedef enum {
60 VAL_UML_CAT_NET, /* restrict by mcc/mnc */
61 VAL_UML_CAT_SPN, /* mcc/mnc and SPN */
62 VAL_UML_CAT_IMSI_PREFIX, /* mcc/mnc and 67 digits of IMSI */
63 VAL_UML_CAT_GID1, /* mcc/mnc and GID1 */
64 VAL_UML_CAT_GID2, /* mcc/mnc and GID2 */
65 VAL_UML_CAT_SIZE
66} ValUmlCatT;
67
68typedef enum{
69 VAL_UML_NONE, /* Default state:not received pin, or no need to check uml */
70 VAL_UML_PASSED, /* checked and passed */
71 VAL_UML_BUSY, /* request UIM/UML data and checking */
72 VAL_UML_RESTRICTED, /* restricted in black or not in white */
73 VAL_UML_REBOOT /* locked->unlocked or unlocked->locked need AP to reset card */
74} ValUmlStatusT;
75
76typedef enum{
77 VAL_UML_MD1_STATUS_NOT_RECEIVED, /* not received */
78 VAL_UML_MD1_STATUS_READY, /* checked and passed */
79 VAL_UML_MD1_STATUS_RESTRICTED, /* restricted in black or not in white */
80 VAL_UML_MD1_STATUS_REBOOT /* locked->unlocked or unlocked->locked need AP to reset card */
81} ValUmlMd1StatusT;
82
83typedef enum{
84 VAL_UML_STATUS_SYNC_READY, /* card ready */
85 VAL_UML_STATUS_SYNC_CARD_RESTRICTED, /* card locked */
86 VAL_UML_STATUS_SYNC_CARD_REBOOT /* status changed */
87} ValUmlStatusSyncT;
88
89/* the basic unit of categories */
90#define VAL_UML_SIZE_OF_CAT_NET 3 /* MCC/MNC 5 digits */
91#define VAL_UML_SIZE_OF_CAT_SPN 23 /* MCC/MNC + SPN(20bytes) from MD1 different from MD3 32 bytes */
92#define VAL_UML_SIZE_OF_CAT_IMSI_PREFIX 4 /* MCC/MNC + IMSI digits 6 and 7 */
93#define VAL_UML_SIZE_OF_CAT_GID1 4 /* MCC/MNC + GID1 */
94#define VAL_UML_SIZE_OF_CAT_GID2 4 /* MCC/MNC + GID2 */
95
96/* Define the maximum suppot elements of each category */
97#define VAL_UML_MAX_SUPPORT_CAT_NUM 5
98
99/* Define the size of each category */
100#define VAL_UML_CFG_CAT_NET_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_NET)
101#define VAL_UML_CFG_CAT_SPN_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_SPN)
102#define VAL_UML_CFG_CAT_INSI_PREFIX_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_IMSI_PREFIX)
103#define VAL_UML_CFG_CAT_GID1_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_GID1)
104#define VAL_UML_CFG_CAT_GID2_SIZE (VAL_UML_MAX_SUPPORT_CAT_NUM * VAL_UML_SIZE_OF_CAT_GID2)
105
106/* Define the support category size */
107#define VAL_UML_SUPPORT_CAT_SIZE VAL_UML_CAT_SIZE
108
109#define UIM_SPN_OFFSET 3 /* get spn from EFspn */
110
111#define VAL_UML_PRIORITY_CHECK_WHITE_LIST 1 /* allowed_carriers_prioritized, 0 - Allow All except Black, 1 - Allow White except Black */
112#define VAL_UML_MUTIL_SIM_POLICY 1 /* allowed_carriers_prioritized, 0 - Allow All except Black, 1 - Allow White except Black */
113
114#if 0
115/* under construction !*/
116/* under construction !*/
117/* under construction !*/
118/* under construction !*/
119/* under construction !*/
120/* under construction !*/
121/* under construction !*/
122/* under construction !*/
123/* under construction !*/
124/* under construction !*/
125/* under construction !*/
126/* under construction !*/
127/* under construction !*/
128/* under construction !*/
129/* under construction !*/
130#endif
131
132
133typedef smu_cval_carrier_match_category_meta_struct ValUmlCategoryMetaT;
134
135typedef smu_cval_carrier_restriction_list_struct ValUmlCategoryListT;
136
137
138typedef struct
139{
140 kal_bool is_stored; /* has received from MD1 */
141 smu_cval_carrier_restriction_list_struct black_list;
142 smu_cval_carrier_restriction_list_struct white_list;
143 kal_uint8 allow_all; /* 0 - Not allow all, 1 - Allow all sim*/
144 kal_uint8 carrier_rest_state; /* 0 - Enabled 1 - Disabled */
145 kal_uint8 multi_sim_policy;
146 kal_uint8 allowed_carriers_prioritized; /* 0 - Allow All except Black, 1 - Allow White except Black */
147}ValUmlContextT; /* 393 bytes */
148
149/* data of UML in UIM */
150typedef PACKED struct
151{
152 kal_bool IMSI_M_Valid; /* IMSI_M */
153 IMSIType IMSI_Mp;
154 kal_bool IMSI_T_Valid; /* IMSI_T */
155 IMSIType IMSI_Tp;
156 kal_bool spn_valid;
157 kal_uint8 spn[UIM_EF_SPN_LENGTH];
158 kal_uint8 len_of_gid1;
159 kal_uint8 gid1[MAX_NUM_OF_GID];
160 kal_uint8 len_of_gid2;
161 kal_uint8 gid2[MAX_NUM_OF_GID];
162}UimUmlDataT;
163
164typedef struct
165{
166 kal_bool notifyMsgReceived; /* has read from uim */
167 kal_bool isCdmaOnlyCard;
168 kal_uint8 slotId;
169 UimUmlDataT UimUmlData; /* uim data record for uml */
170}ValUimUmlDataT; /* 393 bytes */
171
172typedef struct
173{
174 kal_bool checkByMd3; /* UIM card need check by MD3 */
175 kal_bool sentCrrstStatusToMD1; /* has sent the status to MD1 */
176 ValUmlStatusT ValUmlCurStatus; /* current status */
177 ValUmlStatusT ValUmlMd3Status; /* the resule checked by MD3 */
178 ValUmlMd1StatusT ValRecUmlMd1Status[2]; /* status received from MD1, [0] : slot1 [1] : slot2 */
179}ValUmlResultsT;
180
181void ValUmlInit(void);
182kal_bool ValUmlCheck(void);
183void ValUmlGetUimData(UimNotifyMsgT *DataMsgP);
184void ValUmlDeliverMsg( kal_uint32 MsgId,
185 void* MsgP);
186kal_bool ValUmlNeedCheckCarrier(kal_uint8 slot_id);
187void ValUmlSendCarrierStatus(kal_uint8 slot_id);
188void ValUmlSaveNotifyMsg(UimNotifyMsgT *DataMsgP);
189ValUmlStatusT ValUmlCalFinStatus(kal_uint8 slotId);
190void ValUmlGetFinStatus(CardStatusT *CardStatus);
191kal_bool ValUmlCheckNull(void);
192void ValUmlStatusResetBySlot(kal_uint8 slot_id);
193#endif
194#endif
195