blob: 4e98ef0133efc36cd352fe84edc89d3d0ca021cf [file] [log] [blame]
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2012
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*******************************************************************************
* Filename:
* ---------
* sase_if.h
*
* Project:
* --------
* VMOLY
*
* Description:
* ------------
*
*
* Author:
* -------
* -------
*
* ==========================================================================
* $Log$
*
* 02 14 2022 shih-yu.chen
* [MOLY00663097] 【Clone from ALPS05378235】请协助评估实现SA功耗优化接口
*
* sa_silence merge to MD700.
*
* 03 23 2021 shih-yu.chen
* [MOLY00576678] 请协助评估实现SA功耗优化接口
*
* add sa_silence interface.
*
* 03 17 2021 shih-yu.chen
* [MOLY00613108] [TMOUS] disable 5GSA during VoWiFi feature enhancement
*
* add AT cmd for VoWiFiDisable5GSA.
*
* 11 13 2020 shih-yu.chen
* [MOLY00579031] [Colgin] SASE development
* [SASE] general vg_option control interface.
* patch back from T700
*
* 11 13 2020 shih-yu.chen
* [MOLY00589182] [Gen97][MP7][Memory reduction] Stage V - LTE POS preempt LTE/NR HARQ buffer
* [SASE] LTE POS interface.
*
* 09 18 2020 shih-yu.chen
* [MOLY00550233] [Cayman][ LGEFT][ TMO] Many unsolicited msg after NR SCG Fail continues
* (OA) [SASE] LGE patch back.
*
* 07 20 2020 can.lin
* [MOLY00540580] [Blocking][MT6885][Petrus][TMO-US][MP6][WWFT][Ericsson][New Jersey - n71][Philadelphia - n41][SA] - VoWifi to Cellular HO failed.
* [SASE] Add VG option control (SWRD)
* 1. [VzW] control by thermal/low power
* 2. [TMO] control by VoWii calling
*
* - Patch sync from CBr.W2030
*
* 07 17 2020 can.lin
* [MOLY00520469] [5G] Add MISC (0x0A) / LTE fallback Message (0x62).
* Enhance ENDC control for NR15.R3.MP (SWRD)
*
* 06 30 2020 can.lin
* [MOLY00532222] [Gen97][Operator Requirement][VzW][NSA FR1] Suspension of 5G NR During a VoLTE 911 Call
* [Call for sync to R3][VZW][Requirement] Suspension of 5G NR during a VoLTE 911 call (SWRD)
*
* 06 16 2020 can.lin
* [MOLY00532222] [Gen97][Operator Requirement][VzW][NSA FR1] Suspension of 5G NR During a VoLTE 911 Call
*
* [VZW][Requirement] Suspension of 5G NR during a VoLTE 911 call (SWRD)
*
* 05 29 2020 can.lin
* [MOLY00524979] [Gen97] modification for ENDC control API
* [NR15.R3.MP] Apply nvram function in SASE (SWRD)
*
*
****************************************************************************/
#ifndef _SASE_IF_H
#define _SASE_IF_H
#include "kal_public_defs.h"
#include "ps_public_enum.h"
#include "ps_public_struct.h"
#include "sase_nvram_def.h"
#include "ims_common_def.h"
// operation bit
#define SASE_BIT_OFF 0
#define SASE_BIT_ON 1
// SASE->NRRC SCG control bitamp
#define SASE_NRRC_SCG_SEND_FAKE_SCG 1 << 0
#define SASE_NRRC_SCG_ALLOW_SCG_ADD 1 << 1
// SASE->NRRC MEAS control bitamp
#define SASE_NRRC_MEAS_BLOCK_5G5 1 << 0
#define SASE_NRRC_MEAS_SEND_A2 1 << 1
// SASE->ERRC MEAS control bitamp
#define SASE_ERRC_MEAS_DISABLE_4G5 1 << 0
#define SASE_ERRC_MEAS_BLOCK_4G5_B1 1 << 1
// SASE Client
// New interface between SASE <-> NRRC
typedef struct {
LOCAL_PARA_HDR
kal_uint8 scg_valid_bitmap;
kal_uint8 scg_action_bitmap;
kal_uint8 meas_valid_bitmap;
kal_uint8 meas_action_bitmap;
kal_bool is_test_sim_allowed;
}sase_nrrc_endc_deactivate_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 meas_valid_bitmap;
kal_uint8 meas_action_bitmap;
kal_bool is_test_sim_allowed;
}sase_errc_endc_deactivate_req_struct;
typedef struct {
LOCAL_PARA_HDR
scg_event_enum scg_event;
kal_bool endc_deactivate;
kal_bool allow_scg_add;
}sase_nrrc_scg_event_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool sa_silence_on;
} sase_nrrc_sa_silence_ctrl_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_bool redirect_to_lte;
} sase_nrrc_connection_release_ind_struct;
typedef enum {
SASE_SASE_UE_SCG_SET = 0,
SASE_NRRC_NW_SCG_ADD, // NW_SCG_ADD
SASE_NRRC_NW_SCG_REL, // NW_SCG_REL and ERRC_NRRC_REL
}sase_nrrc_scg_status_enum;
typedef struct {
LOCAL_PARA_HDR
sase_nrrc_scg_status_enum scg_status;
}sase_nrrc_scg_info_ind_struct;
typedef enum {
SASE_ERROR_NONE = 0,
SASE_ERROR_DENY_BY_TIMER = 1,
SASE_ERROR_DENY_BY_VOLTE_E911_CALL = 2,
SASE_ERROR_DENY_BY_A2_IN_PROGRESS = 3,
SASE_ERROR_DENY_BY_LOW_PWR = 4,
SASE_ERROR_DENY_BY_HIGH_HEAT = 5,
SASE_ERROR_DENY_BY_IMS_CALLING = 6,
SASE_ERROR_DENY_BY_LTE_POS = 7,
SASE_ERROR_MAX,
SASE_ERROR_ENUM_MAX = 0x7FFFFFFF,
}SASE_ERROR_CODE;
typedef enum {
SASE_STATE_MACHINE_NONE,
SASE_STATE_MACHINE_NEXT_STATE,
SASE_STATE_MACHINE_CHANEGE_STATE,
SASE_STATE_MACHINE_STOP,
}SASE_STATE_MACHINE_ACTION;
typedef struct {
sase_cfg_t config;
}SASE_CONFIG_INFO_STRUCT;
typedef enum {
SASE_TMC_UE_STATUS_NONE = 0,
SASE_TMC_UE_STATUS_THERMAL_START,
SASE_TMC_UE_STATUS_THERMAL_END,
SASE_TMC_UE_STATUS_LOW_BATTERY,
SASE_TMC_UE_STATUS_RECHARGE,
SASE_TMC_UE_STATUS_SCG_ON,
SASE_TMC_UE_STATUS_SCG_OFF,
SASE_TMC_UE_STATUS_MAX = 0x7FFFFFFF,
}sase_tmc_ue_status_enum;
typedef struct {
LOCAL_PARA_HDR
sase_tmc_ue_status_enum ue_status;
}sase_tmc_ue_status_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
vg_option_enum vg_option_bitmap;
kal_bool is_need_local_release; // default is zero, whether to alter 5G option immediately, or wait until next mobility update
} sase_l4c_vg_option_update_req_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool result;
kal_uint8 cause;
} sase_l4c_vg_option_update_cnf_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id;
vg_option_enum vg_option_bitmap;
kal_bool is_need_local_release;
} sase_l4c_vg_option_check_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_uint8 src_id;
vg_option_enum valid_vg_option; // validated by SASE and will be stored
kal_bool is_need_local_release;
} sase_l4c_vg_option_check_rsp_struct;
typedef struct
{
LOCAL_PARA_HDR
ims_reg_state_enum reg_state;
ims_reg_type_enum reg_type;
ims_access_rat_enum rat;
} sase_l4c_ims_reg_status_update_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
ims_cap_rat_enum ims_rat_cap;
} sase_l4c_ims_config_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
kal_bool DisableSA;
} sase_iwlan_sa_mode_ntf_struct;
typedef enum
{
SASE_VG_OPTION_CONTROL_RECOVERY = 0,
SASE_VG_OPTION_CONTROL_LTE,
SASE_VG_OPTION_CONTROL_SA,
SASE_VG_OPTION_CONTROL_NSA,
SASE_VG_OPTION_CONTROL_MAX = 0x7FFFFFFF,
} sase_vg_option_control_enum;
typedef struct
{
LOCAL_PARA_HDR
sase_vg_option_control_enum rat_info;
} sase_vg_option_req_struct;
typedef enum
{
SASE_VG_OPTION_RESULT_SUCCESS = 0,
SASE_VG_OPTION_RESULT_MAX = 0x7FFFFFFF,
} sase_vg_option_result_enum;
typedef struct
{
LOCAL_PARA_HDR
sase_vg_option_result_enum result;
} sase_vg_option_cnf_struct;
// Mapping L4C struct to SASE client
typedef l4c_general_modem_configure_struct sase_client_general_modem_configure_struct;
typedef l4c_general_modem_configure_query_req_struct sase_general_modem_configure_query_req;
typedef l4c_general_modem_configure_query_cnf_struct sase_general_modem_configure_query_cnf;
typedef l4c_general_modem_configure_set_req_struct sase_general_modem_configure_set_req_struct;
typedef l4c_general_modem_configure_set_cnf_struct sase_general_modem_configure_set_cnf_struct;
// Mapping interface between NRRC and SASE client
typedef sase_nrrc_endc_deactivate_req_struct sase_nrrc_endc_deactivate_req_struct; // MSG_ID_SASE_NRRC_ENDC_DEACTIVATE_REQ
typedef sase_nrrc_scg_event_ind_struct sase_nrrc_scg_event_ind_struct; // MSG_ID_SASE_NRRC_SCG_EVENT_IND
// Mapping interface between TMC and SASE client
typedef sase_tmc_ue_status_ind_struct sase_tmc_ue_status_ind_struct; // MSG_ID_SASE_TMC_UE_STATUS_IND
typedef sase_nrrc_sa_silence_ctrl_req_struct sase_errc_sa_silence_ctrl_req_struct;
typedef sase_general_modem_configure_query_req sase_general_modem_configure_query_req_struct; // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_REQ
typedef sase_general_modem_configure_query_cnf sase_general_modem_configure_query_cnf_struct; // MSG_ID_SASE_GENERAL_MODEM_CONFIGURE_QUERY_CNF
#endif