blob: 5ad32ae99dee53eb0d2e6f4c29e94fa1541f795e [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) 2018
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#ifndef MSPM_PUBLIC_STRUCT_H
37#define MSPM_PUBLIC_STRUCT_H
38
39#include "kal_public_defs.h"
40
41/********************************************
42 * MACROS *
43 ********************************************/
44#if !defined(__MTK_TARGET__) && !defined(__UE_SIMULATOR__)
45#ifndef MSPM_UT
46#define MSPM_UT
47#endif
48#endif
49
50#define MSPM_MAX_PRIORITY_LEVEL 32
51
52/********************************************
53 * TYPE DEFINITIONS & ENUMS *
54 ********************************************/
55typedef enum
56{
57 MSPM_PROC_ATTR_AS_CONNECTION,
58 MSPM_PROC_ATTR_C2K_AS_CONNECTION,
59 MSPM_PROC_ATTR_PRIORITY_CAN_CHANGE,
60 MSPM_PROC_ATTR_PREEMPTED_BY_PEER_NOT_ALLOWED,
61 MSPM_PROC_ATTR_OCCUPY_RF_IMMEDIATELY,
62 MSPM_PROC_ATTR_SUSPEND_PEER_SIM,
63 MSPM_PROC_ATTR_23G_NAS_PS_SIG,
64 MSPM_PROC_ATTR_MAX_NUM
65} mspm_procedure_attribute_enum;
66
67typedef enum
68{
69 MSPM_CELLULAR_EMERGENCY_CALL_SESSION,
70 MSPM_CELLULAR_CALL_SESSION,
71 MSPM_CELLULAR_CONNECTED_CALL_SESSION,
72 MSPM_CELLULAR_SRVCC_CALL_SESSION,
73 MSPM_VODATA_CALL_SESSION,
74 MSPM_VODATA_EMERGENCY_CALL_SESSION,
75 MSPM_IMS_CALL_ALT1,
76 MSPM_IMS_CALL_ALT2,
77 MSPM_BIP,
78 MSPM_CS_CALL,
79 MSPM_SMS,
80 MSPM_MMS,
81 MSPM_DDM_RETRY_FOR_SUSPEND,
82 MSPM_CISS,
83 MSPM_XCAP_SS,
84 MSPM_DATA_SIM,
85 MSPM_RSIM,
86 MSPM_PROTECT_NON_PS_REGISTRATION,
87 MSPM_AFR_SIM_PROTECT,
88 MSPM_1X_CS_CALL,
89 MSPM_IMS_SMS,
90 MSPM_IMS_C2K_SMS,
91 MSPM_IMS_STK_SMS,
92 MSPM_IMS_CMSS_SMS,
93 MSPM_IMS_UTK_SMS,
94 MSPM_IMS_RE_REG,
95 MSPM_IMS_REG_INITIAL,
96 MSPM_IMS_REG_INITIAL_LOW,
97 MSPM_IMS_SUBSCRIBE,
98 MSPM_IMS_USSD,
99 MSPM_IMS_CONF_SUBSCRIBE,
100 MSPM_IMS_MWI_SUBSCRIBE,
101 MSPM_IMS_CALLPULL_SUBSCRIBE,
102 MSPM_SM_ACT_PDP,
103 MSPM_SM_ACT_PDP_TOP,
104 MSPM_SM_ACT_PDP_RETRY,
105 MSPM_SM_MOD_PDP,
106 MSPM_SM_DEACT_PDP,
107 MSPM_SM_DEACT_PDP_RETRY,
108 MSPM_C2K_ACT_PDP,
109 MSPM_C2K_DEACT_PDP,
110 MSPM_C2K_HIGH_DATA,
111 MSPM_C2K_SMS,
112 MSPM_MM_LU,
113 MSPM_MM_IMSI_DETACH,
114 MSPM_MM_CSFB,
115 MSPM_MM_3G_CS_PAGING,
116 MSPM_MM_CS_SIG,
117 MSPM_MM_PS_SIG,
118 MSPM_GMM_ATTACH,
119 MSPM_GMM_ATTACH_POWER_ON,
120 MSPM_GMM_ATTACH_RETRANSMIT,
121 MSPM_GMM_ATTACH_NON_DATA_SIM,
122 MSPM_GMM_ATTACH_NON_DATA_SIM_LOW,
123 MSPM_AFR_CONN_PROTECT,
124 MSPM_GMM_DETACH,
125 MSPM_GMM_DETACH_POWER_OFF,
126 MSPM_GMM_RAU,
127 MSPM_GMM_RAU_DDS,
128 MSPM_GMM_RAU_RETRANSMIT,
129 MSPM_GMM_RAU_SYNC,
130 MSPM_GMM_RAU_NON_DATA_SIM,
131 MSPM_GMM_SERVICE,
132 MSPM_GMM_COMBINED_ATTACH,
133 MSPM_GMM_COMBINED_ATTACH_POWER_ON,
134 MSPM_GMM_COMBINED_DETACH,
135 MSPM_GMM_COMBINED_DETACH_POWER_OFF,
136 MSPM_GMM_COMBINED_RAU,
137 MSPM_ESM_ACT_PDN,
138 MSPM_ESM_ACT_PDN_IMS,
139 MSPM_ESM_ACT_PDN_EMC,
140 MSPM_ESM_ACT_BEARER,
141 MSPM_ESM_MOD_BEARER,
142 MSPM_ESM_DEACT_PDN,
143 MSPM_ESM_IMS_DED,
144 MSPM_EMM_ATTACH,
145 MSPM_EMM_DETACH,
146 MSPM_EMM_DETACH_POWER_OFF,
147 MSPM_EMM_DETACH_RSIM,
148 MSPM_EMM_TAU,
149 MSPM_EMM_TAU_IRAT,
150 MSPM_EMM_TAU_DRB,
151 MSPM_EMM_TAU_RSIM,
152 MSPM_EMM_TAU_RETRY,
153 MSPM_EMM_TAU_CSFB,
154 MSPM_EMM_TAU_AFR_NR,
155 MSPM_EMM_SERVICE,
156 MSPM_EMM_SERVICE_RSIM,
157 MSPM_EMM_EXT_SERVICE,
158 MSPM_EMM_PS_PAGING,
159 MSPM_EMM_SMC,
160 MSPM_5G_AS_CONNECTION,
161 MSPM_5G_AS_INACTIVE,
162 MSPM_5G_AS_RNA_UPDATE,
163 MSPM_4G_AS_CONNECTION,
164 MSPM_4G_AS_CONNECTION_ABORT,
165 MSPM_4G_AS_RECONFIG_DURING,
166 MSPM_3G_AS_CONNECTION,
167 MSPM_3G_AS_PCH,
168 MSPM_2G_AS_CONNECTION_CS,
169 MSPM_2G_AS_CONNECTION_PS,
170 MSPM_C1X_AS_CONNECTION_CS,
171 MSPM_C1X_AS_CONNECTION_SRLTE_ENHAN,
172 MSPM_C1X_AS_CONNECTION_PS,
173 MSPM_CDO_AS_CONNECTION_PS,
174 MSPM_CDO_AS_CONNECTION_HPS,
175 MSPM_VGSM_EST_EMERGENCY_PDU_SESSION,
176 MSPM_VGSM_EST_IMS_PDU_SESSION,
177 MSPM_VGSM_EST_PDUS,
178 MSPM_VGSM_MOD_PDUS,
179 MSPM_VGSM_REL_PDUS,
180 MSPM_VGSM_CONN_REQ,
181 MSPM_VGMM_REG,
182 MSPM_VGMM_DEREG,
183 MSPM_VGMM_DEREG_POWER_OFF,
184 MSPM_VGMM_REG_UPDATE,
185 MSPM_VGMM_REG_UPDATE_IRAT,
186 MSPM_VGMM_REG_UPDATE_UP,
187 MSPM_VGMM_SERVICE,
188 MSPM_VGMM_PS_PAGING,
189 MSPM_VGMM_PS_PAGING_NON_PREEMPTED,
190 MSPM_VGMM_PAGING_DRB,
191 MSPM_VGMM_IRAT_PROTECT,
192 MSPM_ERRC_TEST_RFDB_CHECK,
193 MSPM_ERRC_CONFIG_RFDB_CHECK,
194 MSPM_NRRC_TEST_RFDB_CHECK,
195 MSPM_NRRC_CONFIG_RFDB_CHECK,
196 MSPM_EL1_RFDB_CONFIG,
197 MSPM_NL1_RFDB_CONFIG,
198 MSPM_MT_SGS_SMS,
199 MSPM_MT_IMS_SMS,
200 MSPM_GEMINI_ABORT_4G_PROTECT,
201 MSPM_NRRC_ODSI_RA_HIGH,
202 MSPM_NRRC_ODSI_RA_LOW,
203 MSPM_PRE_GEMINI_ABORT,
204 MSPM_IMSM_ACT,
205 MSPM_ERRC_NR_GAPLESS_SFTD,
206 MSPM_NFR_PROTECT,
207 MSPM_OTTAPP_VV_TOP,
208 MSPM_LPP_POS_MEAS_MEM_SHARE,
209 MSPM_N3GPP_ACT_PDN,
210 MSPM_N3GPP_ACT_PDN_IMS,
211 MSPM_N3GPP_ACT_PDN_EMC,
212 MSPM_N3GPP_IKEV2_EXCHANGE,
213 MSPM_PROCEDURE_ENUM_NUM
214} mspm_procedure_enum;
215
216typedef enum
217{
218 MSPM_SIM1 = 0,
219 MSPM_SIM2 = 1,
220 MSPM_SIM3 = 2,
221 MSPM_SIM4 = 3,
222 MSPM_SIM_NONE = 0xFF
223} mspm_sim_index_enum;
224
225typedef enum
226{
227 MSPM_VC_CAUSE_NONE,
228 MSPM_VC_CAUSE_SRLTE,
229 MSPM_VC_CAUSE_RSIM,
230 MSPM_VC_CAUSE_SIGNALING
231} mspm_vc_cause_enum;
232
233// MSG_ID_MSPM_SESSION_START_REQ
234typedef struct
235{
236 LOCAL_PARA_HDR
237 mspm_sim_index_enum sim_index; // sim_index in current module
238 mspm_procedure_enum procedure; // procedure to be started
239 kal_bool is_block_waiting; // TRUE : Source module will wait CNF message with result success for "wait_time" seconds
240 // False : MSPM will reply the request immediately no matter success or fail CNF
241 kal_uint32 wait_time; // "wait_time" seconds for "wait_time">0. In case "wait_time" = 0, it means infinitely wait
242} mspm_session_start_req_struct;
243
244// MSG_ID_MSPM_SESSION_START_CNF
245typedef struct
246{
247 LOCAL_PARA_HDR
248 mspm_procedure_enum procedure;
249 kal_bool result; // TRUE : success; FALSE : fail
250} mspm_session_start_cnf_struct;
251
252// MSG_ID_MSPM_SESSION_START_NTF
253typedef struct
254{
255 LOCAL_PARA_HDR
256 mspm_sim_index_enum sim_index;
257 mspm_procedure_enum procedure;
258} mspm_session_start_ntf_struct;
259
260// MSG_ID_MSPM_SESSION_END_NTF
261typedef struct
262{
263 LOCAL_PARA_HDR
264 mspm_sim_index_enum sim_index;
265 mspm_procedure_enum procedure;
266 kal_bool is_extend_timer_disable;
267} mspm_session_end_ntf_struct;
268
269// MSG_ID_MSPM_AS_SESSION_START_REQ
270typedef struct
271{
272 LOCAL_PARA_HDR
273 mspm_sim_index_enum sim_index;
274 mspm_procedure_enum procedure;
275 kal_uint32 mspm_ack_id; // 0: from primitive, none 0: from callback function
276} mspm_as_session_start_req_struct;
277
278// MSG_ID_MSPM_AS_SESSION_START_CNF
279typedef struct
280{
281 LOCAL_PARA_HDR
282 mspm_procedure_enum procedure;
283 kal_bool result;
284} mspm_as_session_start_cnf_struct;
285
286// MSG_ID_MSPM_AS_SESSION_END_NTF
287typedef struct
288{
289 LOCAL_PARA_HDR
290 mspm_sim_index_enum sim_index;
291 mspm_procedure_enum procedure;
292 kal_uint32 mspm_ack_id; // 0: from primitive, none 0: from callback function
293} mspm_as_session_end_ntf_struct;
294
295// MSG_ID_MSPM_RF_OWNER_CHANGE_NTF
296typedef struct
297{
298 LOCAL_PARA_HDR
299 mspm_sim_index_enum rf_owner;
300} mspm_rf_owner_change_ntf_struct;
301
302// MSG_ID_MSPM_RF_OWNER_PRIORITY_CHANGE_NTF
303typedef struct
304{
305 LOCAL_PARA_HDR
306 mspm_sim_index_enum rf_owner;
307 kal_uint8 priority;
308} mspm_rf_owner_priority_change_ntf_struct;
309
310// MSG_ID_MSPM_AS_LEAVE_VC_SUSPEND_REQ
311typedef struct
312{
313 LOCAL_PARA_HDR
314 mspm_sim_index_enum sim_index;
315} mspm_as_leave_vc_suspend_req_struct;
316
317// MSG_ID_MSPM_XL1_DR_STATUS_IND
318typedef struct
319{
320 LOCAL_PARA_HDR
321 kal_bool is_dr_enable;
322} mspm_xl1_dr_status_ind_struct;
323/********************************************
324 * VARIABLES *
325 ********************************************/
326
327/********************************************
328 * FUNCTION DECLARATIONS *
329 ********************************************/
330extern kal_bool mspm_as_session_start_request(mspm_sim_index_enum sim_index, module_type mod_src, mspm_procedure_enum procedure);
331extern void mspm_as_session_end_ntf(mspm_sim_index_enum sim_index, module_type mod_src, mspm_procedure_enum procedure);
332
333extern mspm_sim_index_enum mspm_query_rf_owner(void);
334extern kal_bool mspm_is_this_sim_rf_owner(mspm_sim_index_enum sim_index);
335extern kal_uint8 mspm_query_sim_priority(mspm_sim_index_enum sim_index);
336extern kal_bool mspm_is_proc_ongoing(mspm_sim_index_enum sim_index, mspm_procedure_enum procedure);
337extern kal_uint8 mspm_query_proc_priority(mspm_procedure_enum procedure);
338extern kal_uint8 mspm_query_num_of_ongoing_proc(mspm_sim_index_enum sim_index);
339extern mspm_sim_index_enum mspm_query_sim_index_with_highest_ongoing_proc(mspm_sim_index_enum current_sim_index);
340extern kal_uint8 mspm_query_ongoing_proc_num_with_attr(mspm_sim_index_enum sim_index, mspm_procedure_attribute_enum proc_attr);
341extern kal_uint8 mspm_query_ongoing_as_session_num(mspm_sim_index_enum sim_index);
342extern kal_bool mspm_query_proc_attr(mspm_procedure_enum procedure, mspm_procedure_attribute_enum proc_attr);
343extern kal_bool mspm_is_any_peer_sim_proc_ongoing(mspm_sim_index_enum current_sim_index, mspm_procedure_enum procedure);
344extern kal_bool mspm_is_current_sim_occupy_rf_possible(mspm_sim_index_enum current_sim_index);
345extern kal_bool mspm_is_peer_sim_in_connected(mspm_sim_index_enum current_sim_index);
346extern mspm_vc_cause_enum mspm_query_vc_cause(mspm_sim_index_enum current_sim_index);
347extern kal_bool mspm_is_this_sim_in_vc(mspm_sim_index_enum sim_index);
348extern kal_bool mspm_is_peer_sim_in_nr_connected(mspm_sim_index_enum current_sim_index);
349
350#ifdef MSPM_UT
351void mspm_ut_set_rf_owner(mspm_sim_index_enum sim_index);
352void mspm_ut_set_sim_priority(mspm_sim_index_enum sim_index, kal_uint32 priority);
353void mspm_ut_reset(void);
354void mspm_ut_set_non_as_session_status(mspm_sim_index_enum sim_index, mspm_procedure_enum procedure, kal_bool is_ongoing);
355#endif
356
357#endif /* MSPM_PUBLIC_STRUCT_H */
358