blob: 7b41ad87c45cadda404215f229ca65055cc76a16 [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) 2012
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 * sase_if.h
40 *
41 * Project:
42 * --------
43 * VMOLY
44 *
45 * Description:
46 * ------------
47 *
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 * ==========================================================================
54 * $Log$
55 *
rjw8e44aab2022-11-30 16:42:16 +080056 * 08 12 2022 tzuan.lin
57 * [MOLY00767952] The Requirement for SA silence mode in VoNR
58 *
59 * sa silence in handover
60 *
rjw6c1fd8f2022-11-30 14:33:01 +080061 * 02 14 2022 shih-yu.chen
rjw04b9c952023-03-28 14:35:43 +080062 * [MOLY00663097] ?�Clone from ALPS05378235?�请??�助评估实现SA??��?��?��?�接?��
rjw6c1fd8f2022-11-30 14:33:01 +080063 *
64 * sa_silence merge to MD700.
65 *
66 * 03 23 2021 shih-yu.chen
rjw04b9c952023-03-28 14:35:43 +080067 * [MOLY00576678] 请�?�助评估实现SA??��?��?��?�接?��
rjw6c1fd8f2022-11-30 14:33:01 +080068 *
69 * add sa_silence interface.
70 *
71 * 03 17 2021 shih-yu.chen
72 * [MOLY00613108] [TMOUS] disable 5GSA during VoWiFi feature enhancement
73 *
74 * add AT cmd for VoWiFiDisable5GSA.
75 *
76 * 11 13 2020 shih-yu.chen
77 * [MOLY00579031] [Colgin] SASE development
78 * [SASE] general vg_option control interface.
79 * patch back from T700
80 *
81 * 11 13 2020 shih-yu.chen
82 * [MOLY00589182] [Gen97][MP7][Memory reduction] Stage V - LTE POS preempt LTE/NR HARQ buffer
83 * [SASE] LTE POS interface.
84 *
85 * 09 18 2020 shih-yu.chen
86 * [MOLY00550233] [Cayman][ LGEFT][ TMO] Many unsolicited msg after NR SCG Fail continues
87 * (OA) [SASE] LGE patch back.
88 *
89 * 07 20 2020 can.lin
90 * [MOLY00540580] [Blocking][MT6885][Petrus][TMO-US][MP6][WWFT][Ericsson][New Jersey - n71][Philadelphia - n41][SA] - VoWifi to Cellular HO failed.
91 * [SASE] Add VG option control (SWRD)
92 * 1. [VzW] control by thermal/low power
93 * 2. [TMO] control by VoWii calling
94 *
95 * - Patch sync from CBr.W2030
96 *
97 * 07 17 2020 can.lin
98 * [MOLY00520469] [5G] Add MISC (0x0A) / LTE fallback Message (0x62).
99 * Enhance ENDC control for NR15.R3.MP (SWRD)
100 *
101 * 06 30 2020 can.lin
102 * [MOLY00532222] [Gen97][Operator Requirement][VzW][NSA FR1] Suspension of 5G NR During a VoLTE 911 Call
103 * [Call for sync to R3][VZW][Requirement] Suspension of 5G NR during a VoLTE 911 call (SWRD)
104 *
105 * 06 16 2020 can.lin
106 * [MOLY00532222] [Gen97][Operator Requirement][VzW][NSA FR1] Suspension of 5G NR During a VoLTE 911 Call
107 *
108 * [VZW][Requirement] Suspension of 5G NR during a VoLTE 911 call (SWRD)
109 *
110 * 05 29 2020 can.lin
111 * [MOLY00524979] [Gen97] modification for ENDC control API
112 * [NR15.R3.MP] Apply nvram function in SASE (SWRD)
113 *
114 *
115****************************************************************************/
116#ifndef _SASE_IF_H
117#define _SASE_IF_H
118
119#include "kal_public_defs.h"
120#include "ps_public_enum.h"
121#include "ps_public_struct.h"
122#include "sase_nvram_def.h"
123#include "ims_common_def.h"
yu.donge372c322023-08-30 20:25:04 -0700124#include "l3_inc_local.h"
rjw6c1fd8f2022-11-30 14:33:01 +0800125
126// operation bit
127#define SASE_BIT_OFF 0
128#define SASE_BIT_ON 1
129// SASE->NRRC SCG control bitamp
130#define SASE_NRRC_SCG_SEND_FAKE_SCG 1 << 0
131#define SASE_NRRC_SCG_ALLOW_SCG_ADD 1 << 1
132// SASE->NRRC MEAS control bitamp
133#define SASE_NRRC_MEAS_BLOCK_5G5 1 << 0
134#define SASE_NRRC_MEAS_SEND_A2 1 << 1
135// SASE->ERRC MEAS control bitamp
136#define SASE_ERRC_MEAS_DISABLE_4G5 1 << 0
137#define SASE_ERRC_MEAS_BLOCK_4G5_B1 1 << 1
138
139// SASE Client
140// New interface between SASE <-> NRRC
141typedef struct {
yu.donge372c322023-08-30 20:25:04 -0700142 LOCAL_PARA_HDR
143 kal_uint8 scg_valid_bitmap;
144 kal_uint8 scg_action_bitmap;
145 kal_uint8 meas_valid_bitmap;
146 kal_uint8 meas_action_bitmap;
147 kal_bool is_test_sim_allowed;
148 kal_bool is_scg_release_signature;
rjw6c1fd8f2022-11-30 14:33:01 +0800149}sase_nrrc_endc_deactivate_req_struct;
150
151typedef struct {
yu.donge372c322023-08-30 20:25:04 -0700152 LOCAL_PARA_HDR
153 kal_uint8 meas_valid_bitmap;
154 kal_uint8 meas_action_bitmap;
155 kal_bool is_test_sim_allowed;
156 kal_bool is_scg_release_signature;
rjw6c1fd8f2022-11-30 14:33:01 +0800157}sase_errc_endc_deactivate_req_struct;
158
159typedef struct {
160 LOCAL_PARA_HDR
161 scg_event_enum scg_event;
162 kal_bool endc_deactivate;
163 kal_bool allow_scg_add;
164}sase_nrrc_scg_event_ind_struct;
165
166typedef struct {
rjw8e44aab2022-11-30 16:42:16 +0800167 LOCAL_PARA_HDR
168 kal_bool is_sa_silence_on;
169 kal_bool is_ho_to_lte_on;
170 kal_bool is_direct_local_release_on;
rjw6c1fd8f2022-11-30 14:33:01 +0800171} sase_nrrc_sa_silence_ctrl_req_struct;
172
173typedef struct {
rjw8e44aab2022-11-30 16:42:16 +0800174 LOCAL_PARA_HDR
175 kal_bool sa_silence_on;
176} sase_errc_sa_silence_ctrl_req_struct;
177
178typedef struct {
179 LOCAL_PARA_HDR
180 kal_bool is_redirect_to_lte;
rjw6c1fd8f2022-11-30 14:33:01 +0800181} sase_nrrc_connection_release_ind_struct;
182
183typedef enum {
yu.donge372c322023-08-30 20:25:04 -0700184 SASE_SASE_UE_SCG_SET = 0,
185 SASE_NRRC_NW_SCG_ADD, // NW_SCG_ADD
186 SASE_NRRC_NW_SCG_REL, // NW_SCG_REL and ERRC_NRRC_REL
187} sase_nrrc_scg_status_enum;
rjw6c1fd8f2022-11-30 14:33:01 +0800188
189typedef struct {
190 LOCAL_PARA_HDR
191 sase_nrrc_scg_status_enum scg_status;
rjw04b9c952023-03-28 14:35:43 +0800192} sase_nrrc_scg_info_ind_struct;
193
194typedef struct {
195 LOCAL_PARA_HDR
196 ims_access_rat_enum source_rat;
197 ims_access_rat_enum target_rat;
198 ims_reg_type_enum reg_type;
199} sase_atp_ims_handover_start_ind_struct;
200
201typedef struct {
202 LOCAL_PARA_HDR
203 ims_access_rat_enum source_rat;
204 ims_access_rat_enum target_rat;
205 kal_bool result;
206 ims_reg_type_enum reg_type;
207} sase_atp_ims_handover_end_ind_struct;
rjw6c1fd8f2022-11-30 14:33:01 +0800208
209typedef enum {
yu.donge372c322023-08-30 20:25:04 -0700210 SASE_ERROR_NONE = 0,
211 SASE_ERROR_DENY_BY_TIMER = 1,
212 SASE_ERROR_DENY_BY_VOLTE_E911_CALL = 2,
213 SASE_ERROR_DENY_BY_A2_IN_PROGRESS = 3,
214 SASE_ERROR_DENY_BY_LOW_PWR = 4,
215 SASE_ERROR_DENY_BY_HIGH_HEAT = 5,
216 SASE_ERROR_DENY_BY_IMS_CALLING = 6,
217 SASE_ERROR_DENY_BY_LTE_POS = 7,
218 SASE_ERROR_DENY_BY_LTE_DISABLED = 8,
219 SASE_ERROR_MAX,
220 SASE_ERROR_ENUM_MAX = 0x7FFFFFFF,
rjw6c1fd8f2022-11-30 14:33:01 +0800221}SASE_ERROR_CODE;
222
223typedef enum {
yu.donge372c322023-08-30 20:25:04 -0700224 SASE_STATE_MACHINE_NONE,
225 SASE_STATE_MACHINE_NEXT_STATE,
226 SASE_STATE_MACHINE_CHANEGE_STATE,
227 SASE_STATE_MACHINE_STOP,
rjw6c1fd8f2022-11-30 14:33:01 +0800228}SASE_STATE_MACHINE_ACTION;
229
230typedef struct {
yu.donge372c322023-08-30 20:25:04 -0700231 sase_cfg_t config;
rjw6c1fd8f2022-11-30 14:33:01 +0800232}SASE_CONFIG_INFO_STRUCT;
233
234typedef enum {
yu.donge372c322023-08-30 20:25:04 -0700235 SASE_TMC_UE_STATUS_NONE = 0,
236 SASE_TMC_UE_STATUS_THERMAL_START,
237 SASE_TMC_UE_STATUS_THERMAL_END,
238 SASE_TMC_UE_STATUS_LOW_BATTERY,
239 SASE_TMC_UE_STATUS_RECHARGE,
240 SASE_TMC_UE_STATUS_SCG_ON,
241 SASE_TMC_UE_STATUS_SCG_OFF,
242 SASE_TMC_UE_STATUS_MAX = 0x7FFFFFFF,
rjw6c1fd8f2022-11-30 14:33:01 +0800243}sase_tmc_ue_status_enum;
244
245typedef struct {
yu.donge372c322023-08-30 20:25:04 -0700246 LOCAL_PARA_HDR
247 sase_tmc_ue_status_enum ue_status;
rjw6c1fd8f2022-11-30 14:33:01 +0800248}sase_tmc_ue_status_ind_struct;
249
250typedef struct
251{
252 LOCAL_PARA_HDR
253 vg_option_enum vg_option_bitmap;
254 kal_bool is_need_local_release; // default is zero, whether to alter 5G option immediately, or wait until next mobility update
255} sase_l4c_vg_option_update_req_struct;
256
257typedef struct
258{
259 LOCAL_PARA_HDR
260 kal_bool result;
261 kal_uint8 cause;
262} sase_l4c_vg_option_update_cnf_struct;
263
264typedef struct
265{
266 LOCAL_PARA_HDR
267 kal_uint8 src_id;
268 vg_option_enum vg_option_bitmap;
269 kal_bool is_need_local_release;
270} sase_l4c_vg_option_check_ind_struct;
271
272typedef struct
273{
274 LOCAL_PARA_HDR
275 kal_uint8 src_id;
276 vg_option_enum valid_vg_option; // validated by SASE and will be stored
277 kal_bool is_need_local_release;
278} sase_l4c_vg_option_check_rsp_struct;
279
280typedef struct
281{
282 LOCAL_PARA_HDR
283 ims_reg_state_enum reg_state;
284 ims_reg_type_enum reg_type;
285 ims_access_rat_enum rat;
286} sase_l4c_ims_reg_status_update_ind_struct;
287
288typedef struct
289{
290 LOCAL_PARA_HDR
291 ims_cap_rat_enum ims_rat_cap;
292} sase_l4c_ims_config_ind_struct;
293
294typedef struct
295{
296 LOCAL_PARA_HDR
297 kal_bool DisableSA;
298} sase_iwlan_sa_mode_ntf_struct;
299
yu.donge372c322023-08-30 20:25:04 -0700300typedef enum {
301 SASE_SA_SILENCE_NOT_BLOCKED = 0,
302 SASE_SA_SILENCE_BLOCKED_BY_REDIRECT_FAILED,
303 SASE_SA_SILENCE_BLOCKED_BY_LTE_DISABLED,
304 SASE_SA_SILENCE_BLOCK_STATUS_MAX
305} sase_sa_silence_block_enum;
306
307typedef struct {
308 LOCAL_PARA_HDR
309 irat_type_enum irat_type;
310 irat_result_enum irat_result;
311 rat_type_enum source_rat;
312 rat_type_enum target_rat;
313 ho_from_lte_type_enum ir_ho_type;
314} l4c_sase_rat_change_finish_ind_struct;
315
316typedef struct {
317 LOCAL_PARA_HDR
318 kal_bool is_mrs_endc_supported;
319 ue_capability_struct capability;
320} l4c_sase_cap_update_ind_struct;
321
rjw6c1fd8f2022-11-30 14:33:01 +0800322typedef enum
323{
324 SASE_VG_OPTION_CONTROL_RECOVERY = 0,
325 SASE_VG_OPTION_CONTROL_LTE,
326 SASE_VG_OPTION_CONTROL_SA,
327 SASE_VG_OPTION_CONTROL_NSA,
328 SASE_VG_OPTION_CONTROL_MAX = 0x7FFFFFFF,
329} sase_vg_option_control_enum;
330
331typedef struct
332{
333 LOCAL_PARA_HDR
334 sase_vg_option_control_enum rat_info;
335} sase_vg_option_req_struct;
336
337typedef enum
338{
339 SASE_VG_OPTION_RESULT_SUCCESS = 0,
340 SASE_VG_OPTION_RESULT_MAX = 0x7FFFFFFF,
341} sase_vg_option_result_enum;
342
343typedef struct
344{
345 LOCAL_PARA_HDR
346 sase_vg_option_result_enum result;
347} sase_vg_option_cnf_struct;
348
349
350// Mapping L4C struct to SASE client
351typedef l4c_general_modem_configure_struct sase_client_general_modem_configure_struct;
352typedef l4c_general_modem_configure_query_req_struct sase_general_modem_configure_query_req;
353typedef l4c_general_modem_configure_query_cnf_struct sase_general_modem_configure_query_cnf;
354typedef l4c_general_modem_configure_set_req_struct sase_general_modem_configure_set_req_struct;
355typedef l4c_general_modem_configure_set_cnf_struct sase_general_modem_configure_set_cnf_struct;
356// Mapping interface between NRRC and SASE client
357typedef sase_nrrc_endc_deactivate_req_struct sase_nrrc_endc_deactivate_req_struct; // MSG_ID_SASE_NRRC_ENDC_DEACTIVATE_REQ
358typedef sase_nrrc_scg_event_ind_struct sase_nrrc_scg_event_ind_struct; // MSG_ID_SASE_NRRC_SCG_EVENT_IND
359// Mapping interface between TMC and SASE client
360typedef sase_tmc_ue_status_ind_struct sase_tmc_ue_status_ind_struct; // MSG_ID_SASE_TMC_UE_STATUS_IND
rjw6c1fd8f2022-11-30 14:33:01 +0800361typedef sase_general_modem_configure_query_req sase_general_modem_configure_query_req_struct; // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_REQ
362typedef sase_general_modem_configure_query_cnf sase_general_modem_configure_query_cnf_struct; // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_CNF
363#endif