blob: cdec60acbc6184ab18a0f00f28f4f7a8f9864d21 [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"
124
125// operation bit
126#define SASE_BIT_OFF 0
127#define SASE_BIT_ON 1
128// SASE->NRRC SCG control bitamp
129#define SASE_NRRC_SCG_SEND_FAKE_SCG 1 << 0
130#define SASE_NRRC_SCG_ALLOW_SCG_ADD 1 << 1
131// SASE->NRRC MEAS control bitamp
132#define SASE_NRRC_MEAS_BLOCK_5G5 1 << 0
133#define SASE_NRRC_MEAS_SEND_A2 1 << 1
134// SASE->ERRC MEAS control bitamp
135#define SASE_ERRC_MEAS_DISABLE_4G5 1 << 0
136#define SASE_ERRC_MEAS_BLOCK_4G5_B1 1 << 1
137
138// SASE Client
139// New interface between SASE <-> NRRC
140typedef struct {
141 LOCAL_PARA_HDR
142 kal_uint8 scg_valid_bitmap;
143 kal_uint8 scg_action_bitmap;
144 kal_uint8 meas_valid_bitmap;
145 kal_uint8 meas_action_bitmap;
146 kal_bool is_test_sim_allowed;
147}sase_nrrc_endc_deactivate_req_struct;
148
149typedef struct {
150 LOCAL_PARA_HDR
151 kal_uint8 meas_valid_bitmap;
152 kal_uint8 meas_action_bitmap;
153 kal_bool is_test_sim_allowed;
154}sase_errc_endc_deactivate_req_struct;
155
156typedef struct {
157 LOCAL_PARA_HDR
158 scg_event_enum scg_event;
159 kal_bool endc_deactivate;
160 kal_bool allow_scg_add;
161}sase_nrrc_scg_event_ind_struct;
162
163typedef struct {
rjw8e44aab2022-11-30 16:42:16 +0800164 LOCAL_PARA_HDR
165 kal_bool is_sa_silence_on;
166 kal_bool is_ho_to_lte_on;
167 kal_bool is_direct_local_release_on;
rjw6c1fd8f2022-11-30 14:33:01 +0800168} sase_nrrc_sa_silence_ctrl_req_struct;
169
170typedef struct {
rjw8e44aab2022-11-30 16:42:16 +0800171 LOCAL_PARA_HDR
172 kal_bool sa_silence_on;
173} sase_errc_sa_silence_ctrl_req_struct;
174
175typedef struct {
176 LOCAL_PARA_HDR
177 kal_bool is_redirect_to_lte;
rjw6c1fd8f2022-11-30 14:33:01 +0800178} sase_nrrc_connection_release_ind_struct;
179
180typedef enum {
181 SASE_SASE_UE_SCG_SET = 0,
182 SASE_NRRC_NW_SCG_ADD, // NW_SCG_ADD
183 SASE_NRRC_NW_SCG_REL, // NW_SCG_REL and ERRC_NRRC_REL
184}sase_nrrc_scg_status_enum;
185
186typedef struct {
187 LOCAL_PARA_HDR
188 sase_nrrc_scg_status_enum scg_status;
rjw04b9c952023-03-28 14:35:43 +0800189} sase_nrrc_scg_info_ind_struct;
190
191typedef struct {
192 LOCAL_PARA_HDR
193 ims_access_rat_enum source_rat;
194 ims_access_rat_enum target_rat;
195 ims_reg_type_enum reg_type;
196} sase_atp_ims_handover_start_ind_struct;
197
198typedef struct {
199 LOCAL_PARA_HDR
200 ims_access_rat_enum source_rat;
201 ims_access_rat_enum target_rat;
202 kal_bool result;
203 ims_reg_type_enum reg_type;
204} sase_atp_ims_handover_end_ind_struct;
rjw6c1fd8f2022-11-30 14:33:01 +0800205
206typedef enum {
207 SASE_ERROR_NONE = 0,
208 SASE_ERROR_DENY_BY_TIMER = 1,
209 SASE_ERROR_DENY_BY_VOLTE_E911_CALL = 2,
210 SASE_ERROR_DENY_BY_A2_IN_PROGRESS = 3,
211 SASE_ERROR_DENY_BY_LOW_PWR = 4,
212 SASE_ERROR_DENY_BY_HIGH_HEAT = 5,
213 SASE_ERROR_DENY_BY_IMS_CALLING = 6,
214 SASE_ERROR_DENY_BY_LTE_POS = 7,
215 SASE_ERROR_MAX,
216 SASE_ERROR_ENUM_MAX = 0x7FFFFFFF,
217}SASE_ERROR_CODE;
218
219typedef enum {
220 SASE_STATE_MACHINE_NONE,
221 SASE_STATE_MACHINE_NEXT_STATE,
222 SASE_STATE_MACHINE_CHANEGE_STATE,
223 SASE_STATE_MACHINE_STOP,
224}SASE_STATE_MACHINE_ACTION;
225
226typedef struct {
227 sase_cfg_t config;
228}SASE_CONFIG_INFO_STRUCT;
229
230typedef enum {
231 SASE_TMC_UE_STATUS_NONE = 0,
232 SASE_TMC_UE_STATUS_THERMAL_START,
233 SASE_TMC_UE_STATUS_THERMAL_END,
234 SASE_TMC_UE_STATUS_LOW_BATTERY,
235 SASE_TMC_UE_STATUS_RECHARGE,
236 SASE_TMC_UE_STATUS_SCG_ON,
237 SASE_TMC_UE_STATUS_SCG_OFF,
238 SASE_TMC_UE_STATUS_MAX = 0x7FFFFFFF,
239}sase_tmc_ue_status_enum;
240
241typedef struct {
242 LOCAL_PARA_HDR
243 sase_tmc_ue_status_enum ue_status;
244}sase_tmc_ue_status_ind_struct;
245
246typedef struct
247{
248 LOCAL_PARA_HDR
249 vg_option_enum vg_option_bitmap;
250 kal_bool is_need_local_release; // default is zero, whether to alter 5G option immediately, or wait until next mobility update
251} sase_l4c_vg_option_update_req_struct;
252
253typedef struct
254{
255 LOCAL_PARA_HDR
256 kal_bool result;
257 kal_uint8 cause;
258} sase_l4c_vg_option_update_cnf_struct;
259
260typedef struct
261{
262 LOCAL_PARA_HDR
263 kal_uint8 src_id;
264 vg_option_enum vg_option_bitmap;
265 kal_bool is_need_local_release;
266} sase_l4c_vg_option_check_ind_struct;
267
268typedef struct
269{
270 LOCAL_PARA_HDR
271 kal_uint8 src_id;
272 vg_option_enum valid_vg_option; // validated by SASE and will be stored
273 kal_bool is_need_local_release;
274} sase_l4c_vg_option_check_rsp_struct;
275
276typedef struct
277{
278 LOCAL_PARA_HDR
279 ims_reg_state_enum reg_state;
280 ims_reg_type_enum reg_type;
281 ims_access_rat_enum rat;
282} sase_l4c_ims_reg_status_update_ind_struct;
283
284typedef struct
285{
286 LOCAL_PARA_HDR
287 ims_cap_rat_enum ims_rat_cap;
288} sase_l4c_ims_config_ind_struct;
289
290typedef struct
291{
292 LOCAL_PARA_HDR
293 kal_bool DisableSA;
294} sase_iwlan_sa_mode_ntf_struct;
295
296typedef enum
297{
298 SASE_VG_OPTION_CONTROL_RECOVERY = 0,
299 SASE_VG_OPTION_CONTROL_LTE,
300 SASE_VG_OPTION_CONTROL_SA,
301 SASE_VG_OPTION_CONTROL_NSA,
302 SASE_VG_OPTION_CONTROL_MAX = 0x7FFFFFFF,
303} sase_vg_option_control_enum;
304
305typedef struct
306{
307 LOCAL_PARA_HDR
308 sase_vg_option_control_enum rat_info;
309} sase_vg_option_req_struct;
310
311typedef enum
312{
313 SASE_VG_OPTION_RESULT_SUCCESS = 0,
314 SASE_VG_OPTION_RESULT_MAX = 0x7FFFFFFF,
315} sase_vg_option_result_enum;
316
317typedef struct
318{
319 LOCAL_PARA_HDR
320 sase_vg_option_result_enum result;
321} sase_vg_option_cnf_struct;
322
323
324// Mapping L4C struct to SASE client
325typedef l4c_general_modem_configure_struct sase_client_general_modem_configure_struct;
326typedef l4c_general_modem_configure_query_req_struct sase_general_modem_configure_query_req;
327typedef l4c_general_modem_configure_query_cnf_struct sase_general_modem_configure_query_cnf;
328typedef l4c_general_modem_configure_set_req_struct sase_general_modem_configure_set_req_struct;
329typedef l4c_general_modem_configure_set_cnf_struct sase_general_modem_configure_set_cnf_struct;
330// Mapping interface between NRRC and SASE client
331typedef sase_nrrc_endc_deactivate_req_struct sase_nrrc_endc_deactivate_req_struct; // MSG_ID_SASE_NRRC_ENDC_DEACTIVATE_REQ
332typedef sase_nrrc_scg_event_ind_struct sase_nrrc_scg_event_ind_struct; // MSG_ID_SASE_NRRC_SCG_EVENT_IND
333// Mapping interface between TMC and SASE client
334typedef 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 +0800335typedef sase_general_modem_configure_query_req sase_general_modem_configure_query_req_struct; // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_REQ
336typedef sase_general_modem_configure_query_cnf sase_general_modem_configure_query_cnf_struct; // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_CNF
337#endif