blob: 329ec6811104715422a2968d101c3574c6ed6fd0 [file] [log] [blame]
#ifndef _IMC_IWLAN_STRUCT_H
#define _IMC_IWLAN_STRUCT_H
#include "ps_public_enum.h"
#include "ims_common_def.h"
#include "ims_interface_md.h"
#include "atp_imc_struct.h"
#include "codec_def.h"
#include "custom_iwlan_config.h"
typedef enum {
IMC_IWLAN_MEDIA_UNSPEC = 0,
IMC_IWLAN_MEDIA_NEW,
IMC_IWLAN_MEDIA_UPDATE,
IMC_IWLAN_MEDIA_DEL
} imc_iwlan_media_state_enum;
typedef enum {
IMC_IWLAN_IMS_CALL_STATUS_UNSPEC = 0,
IMC_IWLAN_IMS_CALL_STATUS_REQ,
IMC_IWLAN_IMS_CALL_STATUS_BEGIN,
IMC_IWLAN_IMS_CALL_STATUS_CONNECTED,
IMC_IWLAN_IMS_CALL_STATUS_END,
} imc_iwlan_ims_call_status_enum;
typedef enum
{
IMS_STATE_IDLE = 0,
IMS_STATE_ONCELL,
IMS_STATE_ONWIFI,
IMS_STATE_CNT,
IMS_STATE_ONALL = 0xCC,
}ims_state_enum;
typedef enum {
IMS_ACTIVE_NOT_ALLOW = 0,
IMS_ACTIVE_ALLOW = 1,
IMS_ACTIVE_MAINTAIN = 2,
} ims_active_status_enum;
typedef enum {
IMS_NOT_ALLOW_UNSPEC = 0,
IMS_RF_OFF = BITMASK(1),
IMS_23G_RAU = BITMASK(2),
IMS_AFR_DEREG = BITMASK(3),
IMS_SIM_INVALID = BITMASK(4),
IMS_NOT_ALLOW_CELL = BITMASK(5),
IMS_WIFI_ONLY_OR_NA = BITMASK(6),
IMS_RAT_NOT_SUPPORT = BITMASK(7),
IMS_ROAM_BAR = BITMASK(8),
IMS_VOPS_BAR = BITMASK(9),
IMS_VOPS_BAR_WITH_CALL = BITMASK(10),
IMS_C2K_DEREG = BITMASK(11),
IMS_NOT_ALLOW_WIFI = BITMASK(12),
IMS_CS_PREFER = BITMASK(13),
IMS_POOR_WIFI = BITMASK(14),
IMS_DEAD_ZONE = BITMASK(15),
IMS_SIP403 = BITMASK(16),
IMS_CELL_ONLY_OR_NA = BITMASK(17),
} ims_not_allow_cause_enum;
typedef enum {
IMS_ROAMING_DISABLE = 0,
IMS_ROAMING_ENABLE = 1,
} ims_roaming_status_enum;
typedef struct {
LOCAL_PARA_HDR
ims_roaming_status_enum allow_3gpp_roaming;
} imc_iwlan_ims_roaming_status_ind_struct;
/*
* @brief IMS diable by IWLAN
* @note MSG_ID_IMC_IWLAN_IMS_DEREG_IND/RSP
* AT+EIMSDEREG=4
*/
typedef struct {
LOCAL_PARA_HDR
kal_uint32 dereg_cause;
} imc_iwlan_ims_dereg_ind_struct,
imc_iwlan_ims_dereg_rsp_struct;
typedef struct {
LOCAL_PARA_HDR
imc_acct_type_enum acct_type; //defined in ims_interface_md.h
kal_uint32 call_id;
ims_call_mode_enum call_mode; //defined in ims_interface_md.h
imc_iwlan_ims_call_status_enum call_status;
} imc_iwlan_ims_call_status_req_struct;
typedef struct {
LOCAL_PARA_HDR
hvolte_call_domain_enum call_domain;
kal_bool is_for_silent_redial;
hvolte_mode_change_cause_enum cause;
} imc_iwlan_ims_cc_set_hvolte_call_domain_req_struct;
typedef struct {
kal_uint8 domain; // 3gpp domain
ims_rat_type_enum gsm_rat; // detail 3gpp rat
c2k_rat_type_enum c2k_rat; // detail c2k rat
/* 3GPP cell info */
nas_ps_reg_status_enum nas_ps_reg_status;
kal_bool is_roaming;
kal_uint8 plmn[MAX_PLMN_LEN + 1]; /* in string format, from +EOPS */
kal_uint64 cell_id;
kal_uint32 area_code; /* lac or tac */
cell_service_enum service_state; /* +EIMSINFO */
// TBD: kal_bool is_emc_supported;
/* C2K cell info */
kal_uint16 sid;
kal_uint16 nid;
kal_uint8 pzid;
kal_uint16 base_id;
kal_uint32 sector_id[4];
kal_uint8 subnet_length;
kal_uint8 carrier_id[7];
domain_id_enum c2k_domain; //c2k domain
c2k_cell_service_enum c2k_service_state; /* +EC2KREG */
/*ecall over IMS*/
#ifdef __NG_ECALL_SUPPORT__
imcf_bool support_ecl; /*network support ecall over ims or not*/
#endif
} ims_cell_info_t;
typedef struct {
kal_bool sms;
kal_bool voice;
kal_bool video;
} ims_ft_tag_onwifi_t;
typedef struct {
kal_bool sms;
ims_cap_rat_enum voice;
ims_cap_rat_enum video;
} ims_ft_tag_oncell_t;
typedef struct {
ims_ft_tag_oncell_t oncell;
ims_ft_tag_onwifi_t onwifi;
} ims_ft_tags_t;
typedef struct {
LOCAL_PARA_HDR
kal_bool ims_enable;
ims_active_status_enum allow_active;
kal_uint32 not_allow_cause; //bitmap, indicate the ims not allow cause
ims_ft_tags_t ft_tags;
ims_cell_info_t ims_cell_info;
} imc_iwlan_ims_cap_info_ind_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 call_id;
voip_codec_enum audio_codec;
imc_iwlan_media_state_enum media_state;
} imc_iwlan_call_media_info_req_struct;
typedef struct {
LOCAL_PARA_HDR
kal_uint8 hplmn_voice_capability;// 0:disable,1:enable,0xFF:not seted by NW
kal_uint8 hplmn_video_capability;// 0:disable,1:enable,0xFF:not seted by NW
kal_uint8 vplmn_voice_capability;// 0:disable,1:enable,0xFF:not seted by NW
kal_uint8 vplmn_video_capability;// 0:disable,1:enable,0xFF:not seted by NW
} imc_iwlan_mo_config_ind_struct;
typedef struct
{
LOCAL_PARA_HDR
} imc_iwlan_wifi_service_fail_req_struct;
typedef struct {
LOCAL_PARA_HDR
srvcc_status_enum srvcc_status;
} imc_iwlan_srvcc_status_update_req_struct;
typedef enum {
REG_CAUSE_NONE = 0,
REG_SIP_NO_RSP,
REG_SIP403_ROAMING,
REG_SIP403_3,
REG_PCSCF_ERR,
PRIO_CAUSE_CNT,
} imc_iwlan_prio_cause_e;
typedef enum {
IMC_IWLAN_RAN_PRIO_NONE = 0,
IMC_IWLAN_RAN_PRIO_LOW,
IMC_IWLAN_RAN_PRIO_BLOCK,
IMC_IWLAN_RAN_PRIO_OP_CNT,
} imc_iwlan_ran_prio_e;
typedef enum {
IMC_IWLAN_WIFI_RE_ASOC = (1),
IMC_IWLAN_VOWIFI_ON_OFF = (1<<1),
IMC_IWLAN_LOCAEN_ON_OFF = (1<<2),
IMC_IWLAN_CELL_REGHOME = (1<<3),
} imc_iwlan_reset_event_e;
typedef struct {
LOCAL_PARA_HDR
ims_state_enum ran;
imc_iwlan_prio_cause_e cause;
imc_iwlan_ran_prio_e prio;
kal_uint32 reset_event;
} imc_iwlan_reg_ran_prio_update_req_struct;
typedef enum
{
IMC_IWLAN_HO_UNSPEC = 0,
IMC_IWLAN_HO_W2L,
IMC_IWLAN_HO_L2W,
IMC_IWLAN_HO_CNT,
}imc_iwlan_ho_action_enum;
typedef struct {
LOCAL_PARA_HDR
imc_iwlan_ho_action_enum ho_action;
} imc_iwlan_ims_ecc_ho_req_struct;
typedef enum
{
IMC_IWLAN_HO_NONE = 0,
IMC_IWLAN_HO_TRIG,
IMC_IWLAN_HO_NO_DEST,
IMC_IWLAN_HO_END,
}imc_iwlan_ho_result_enum;
typedef struct {
LOCAL_PARA_HDR
imc_iwlan_ho_result_enum result;
} imc_iwlan_ims_ecc_ho_rsp_struct;
#endif /* _IMC_IWLAN_STRUCT_H */