blob: 329ec6811104715422a2968d101c3574c6ed6fd0 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001#ifndef _IMC_IWLAN_STRUCT_H
2#define _IMC_IWLAN_STRUCT_H
3
4#include "ps_public_enum.h"
5#include "ims_common_def.h"
6#include "ims_interface_md.h"
7#include "atp_imc_struct.h"
8#include "codec_def.h"
9#include "custom_iwlan_config.h"
10
11typedef enum {
12 IMC_IWLAN_MEDIA_UNSPEC = 0,
13 IMC_IWLAN_MEDIA_NEW,
14 IMC_IWLAN_MEDIA_UPDATE,
15 IMC_IWLAN_MEDIA_DEL
16} imc_iwlan_media_state_enum;
17
18typedef enum {
19 IMC_IWLAN_IMS_CALL_STATUS_UNSPEC = 0,
20 IMC_IWLAN_IMS_CALL_STATUS_REQ,
21 IMC_IWLAN_IMS_CALL_STATUS_BEGIN,
22 IMC_IWLAN_IMS_CALL_STATUS_CONNECTED,
23 IMC_IWLAN_IMS_CALL_STATUS_END,
24} imc_iwlan_ims_call_status_enum;
25
26typedef enum
27{
28 IMS_STATE_IDLE = 0,
29 IMS_STATE_ONCELL,
30 IMS_STATE_ONWIFI,
31 IMS_STATE_CNT,
32 IMS_STATE_ONALL = 0xCC,
33}ims_state_enum;
34
35typedef enum {
36 IMS_ACTIVE_NOT_ALLOW = 0,
37 IMS_ACTIVE_ALLOW = 1,
38 IMS_ACTIVE_MAINTAIN = 2,
39} ims_active_status_enum;
40
41typedef enum {
42 IMS_NOT_ALLOW_UNSPEC = 0,
43 IMS_RF_OFF = BITMASK(1),
44 IMS_23G_RAU = BITMASK(2),
45 IMS_AFR_DEREG = BITMASK(3),
46 IMS_SIM_INVALID = BITMASK(4),
47 IMS_NOT_ALLOW_CELL = BITMASK(5),
48 IMS_WIFI_ONLY_OR_NA = BITMASK(6),
49 IMS_RAT_NOT_SUPPORT = BITMASK(7),
50 IMS_ROAM_BAR = BITMASK(8),
51 IMS_VOPS_BAR = BITMASK(9),
52 IMS_VOPS_BAR_WITH_CALL = BITMASK(10),
53 IMS_C2K_DEREG = BITMASK(11),
54 IMS_NOT_ALLOW_WIFI = BITMASK(12),
55 IMS_CS_PREFER = BITMASK(13),
56 IMS_POOR_WIFI = BITMASK(14),
57 IMS_DEAD_ZONE = BITMASK(15),
58 IMS_SIP403 = BITMASK(16),
59 IMS_CELL_ONLY_OR_NA = BITMASK(17),
60} ims_not_allow_cause_enum;
61
62typedef enum {
63 IMS_ROAMING_DISABLE = 0,
64 IMS_ROAMING_ENABLE = 1,
65} ims_roaming_status_enum;
66
67typedef struct {
68 LOCAL_PARA_HDR
69 ims_roaming_status_enum allow_3gpp_roaming;
70} imc_iwlan_ims_roaming_status_ind_struct;
71
72/*
73 * @brief IMS diable by IWLAN
74 * @note MSG_ID_IMC_IWLAN_IMS_DEREG_IND/RSP
75 * AT+EIMSDEREG=4
76 */
77typedef struct {
78 LOCAL_PARA_HDR
79 kal_uint32 dereg_cause;
80} imc_iwlan_ims_dereg_ind_struct,
81 imc_iwlan_ims_dereg_rsp_struct;
82
83typedef struct {
84 LOCAL_PARA_HDR
85 imc_acct_type_enum acct_type; //defined in ims_interface_md.h
86 kal_uint32 call_id;
87 ims_call_mode_enum call_mode; //defined in ims_interface_md.h
88 imc_iwlan_ims_call_status_enum call_status;
89} imc_iwlan_ims_call_status_req_struct;
90
91typedef struct {
92 LOCAL_PARA_HDR
93 hvolte_call_domain_enum call_domain;
94 kal_bool is_for_silent_redial;
95 hvolte_mode_change_cause_enum cause;
96} imc_iwlan_ims_cc_set_hvolte_call_domain_req_struct;
97
98typedef struct {
99 kal_uint8 domain; // 3gpp domain
100 ims_rat_type_enum gsm_rat; // detail 3gpp rat
101 c2k_rat_type_enum c2k_rat; // detail c2k rat
102
103 /* 3GPP cell info */
104 nas_ps_reg_status_enum nas_ps_reg_status;
105 kal_bool is_roaming;
106 kal_uint8 plmn[MAX_PLMN_LEN + 1]; /* in string format, from +EOPS */
107 kal_uint64 cell_id;
108 kal_uint32 area_code; /* lac or tac */
109 cell_service_enum service_state; /* +EIMSINFO */
110 // TBD: kal_bool is_emc_supported;
111
112 /* C2K cell info */
113 kal_uint16 sid;
114 kal_uint16 nid;
115 kal_uint8 pzid;
116 kal_uint16 base_id;
117 kal_uint32 sector_id[4];
118 kal_uint8 subnet_length;
119 kal_uint8 carrier_id[7];
120 domain_id_enum c2k_domain; //c2k domain
121 c2k_cell_service_enum c2k_service_state; /* +EC2KREG */
122 /*ecall over IMS*/
123#ifdef __NG_ECALL_SUPPORT__
124 imcf_bool support_ecl; /*network support ecall over ims or not*/
125#endif
126} ims_cell_info_t;
127
128typedef struct {
129 kal_bool sms;
130 kal_bool voice;
131 kal_bool video;
132} ims_ft_tag_onwifi_t;
133
134typedef struct {
135 kal_bool sms;
136 ims_cap_rat_enum voice;
137 ims_cap_rat_enum video;
138} ims_ft_tag_oncell_t;
139
140typedef struct {
141 ims_ft_tag_oncell_t oncell;
142 ims_ft_tag_onwifi_t onwifi;
143} ims_ft_tags_t;
144
145typedef struct {
146 LOCAL_PARA_HDR
147 kal_bool ims_enable;
148 ims_active_status_enum allow_active;
149 kal_uint32 not_allow_cause; //bitmap, indicate the ims not allow cause
150 ims_ft_tags_t ft_tags;
151 ims_cell_info_t ims_cell_info;
152} imc_iwlan_ims_cap_info_ind_struct;
153
154typedef struct {
155 LOCAL_PARA_HDR
156 kal_uint8 call_id;
157 voip_codec_enum audio_codec;
158 imc_iwlan_media_state_enum media_state;
159} imc_iwlan_call_media_info_req_struct;
160
161typedef struct {
162 LOCAL_PARA_HDR
163 kal_uint8 hplmn_voice_capability;// 0:disable,1:enable,0xFF:not seted by NW
164 kal_uint8 hplmn_video_capability;// 0:disable,1:enable,0xFF:not seted by NW
165 kal_uint8 vplmn_voice_capability;// 0:disable,1:enable,0xFF:not seted by NW
166 kal_uint8 vplmn_video_capability;// 0:disable,1:enable,0xFF:not seted by NW
167} imc_iwlan_mo_config_ind_struct;
168
169typedef struct
170{
171 LOCAL_PARA_HDR
172} imc_iwlan_wifi_service_fail_req_struct;
173
174typedef struct {
175 LOCAL_PARA_HDR
176 srvcc_status_enum srvcc_status;
177} imc_iwlan_srvcc_status_update_req_struct;
178
179typedef enum {
180 REG_CAUSE_NONE = 0,
181 REG_SIP_NO_RSP,
182 REG_SIP403_ROAMING,
183 REG_SIP403_3,
184 REG_PCSCF_ERR,
185 PRIO_CAUSE_CNT,
186} imc_iwlan_prio_cause_e;
187
188typedef enum {
189 IMC_IWLAN_RAN_PRIO_NONE = 0,
190 IMC_IWLAN_RAN_PRIO_LOW,
191 IMC_IWLAN_RAN_PRIO_BLOCK,
192 IMC_IWLAN_RAN_PRIO_OP_CNT,
193} imc_iwlan_ran_prio_e;
194
195typedef enum {
196 IMC_IWLAN_WIFI_RE_ASOC = (1),
197 IMC_IWLAN_VOWIFI_ON_OFF = (1<<1),
198 IMC_IWLAN_LOCAEN_ON_OFF = (1<<2),
199 IMC_IWLAN_CELL_REGHOME = (1<<3),
200} imc_iwlan_reset_event_e;
201
202typedef struct {
203 LOCAL_PARA_HDR
204 ims_state_enum ran;
205 imc_iwlan_prio_cause_e cause;
206 imc_iwlan_ran_prio_e prio;
207 kal_uint32 reset_event;
208} imc_iwlan_reg_ran_prio_update_req_struct;
209
210typedef enum
211{
212 IMC_IWLAN_HO_UNSPEC = 0,
213 IMC_IWLAN_HO_W2L,
214 IMC_IWLAN_HO_L2W,
215 IMC_IWLAN_HO_CNT,
216}imc_iwlan_ho_action_enum;
217
218typedef struct {
219 LOCAL_PARA_HDR
220 imc_iwlan_ho_action_enum ho_action;
221} imc_iwlan_ims_ecc_ho_req_struct;
222
223typedef enum
224{
225 IMC_IWLAN_HO_NONE = 0,
226 IMC_IWLAN_HO_TRIG,
227 IMC_IWLAN_HO_NO_DEST,
228 IMC_IWLAN_HO_END,
229}imc_iwlan_ho_result_enum;
230
231typedef struct {
232 LOCAL_PARA_HDR
233 imc_iwlan_ho_result_enum result;
234} imc_iwlan_ims_ecc_ho_rsp_struct;
235
236#endif /* _IMC_IWLAN_STRUCT_H */