xref: /wlan-driver/platform/cnss_utils/ip_multimedia_subsystem_private_service_v01.c (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
3  * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
4  */
5 
6 #include "ip_multimedia_subsystem_private_service_v01.h"
7 
8 static struct qmi_elem_info ims_private_service_header_value_v01_ei[] = {
9 	{
10 		.data_type      = QMI_STRING,
11 		.elem_len       = IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1,
12 		.elem_size      = sizeof(char),
13 		.array_type       = NO_ARRAY,
14 		.tlv_type       = 0,
15 		.offset         =
16 		offsetof(struct ims_private_service_header_value_v01, header),
17 	},
18 	{
19 		.data_type      = QMI_STRING,
20 		.elem_len       = IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1,
21 		.elem_size      = sizeof(char),
22 		.array_type       = NO_ARRAY,
23 		.tlv_type       = 0,
24 		.offset         =
25 		offsetof(struct ims_private_service_header_value_v01, value),
26 	},
27 	{
28 		.data_type      = QMI_EOTI,
29 		.array_type       = NO_ARRAY,
30 		.tlv_type       = QMI_COMMON_TLV_TYPE,
31 	},
32 };
33 
34 struct qmi_elem_info
35 ims_private_service_subscribe_ind_req_msg_v01_ei[] = {
36 	{
37 		.data_type      = QMI_OPT_FLAG,
38 		.elem_len       = 1,
39 		.elem_size      = sizeof(u8),
40 		.array_type       = NO_ARRAY,
41 		.tlv_type       = 0x10,
42 		.offset         = offsetof(struct
43 		ims_private_service_subscribe_for_indications_req_msg_v01,
44 				mt_invite_valid),
45 	},
46 	{
47 		.data_type      = QMI_UNSIGNED_1_BYTE,
48 		.elem_len       = 1,
49 		.elem_size      = sizeof(u8),
50 		.array_type       = NO_ARRAY,
51 		.tlv_type       = 0x10,
52 		.offset         = offsetof(struct
53 		ims_private_service_subscribe_for_indications_req_msg_v01,
54 				mt_invite),
55 	},
56 	{
57 		.data_type      = QMI_OPT_FLAG,
58 		.elem_len       = 1,
59 		.elem_size      = sizeof(u8),
60 		.array_type       = NO_ARRAY,
61 		.tlv_type       = 0x11,
62 		.offset         = offsetof(struct
63 		ims_private_service_subscribe_for_indications_req_msg_v01,
64 				wfc_call_status_valid),
65 	},
66 	{
67 		.data_type      = QMI_UNSIGNED_1_BYTE,
68 		.elem_len       = 1,
69 		.elem_size      = sizeof(u8),
70 		.array_type       = NO_ARRAY,
71 		.tlv_type       = 0x11,
72 		.offset         = offsetof(struct
73 		ims_private_service_subscribe_for_indications_req_msg_v01,
74 				wfc_call_status),
75 	},
76 	{
77 		.data_type      = QMI_EOTI,
78 		.array_type       = NO_ARRAY,
79 		.tlv_type       = QMI_COMMON_TLV_TYPE,
80 	},
81 };
82 EXPORT_SYMBOL(ims_private_service_subscribe_ind_req_msg_v01_ei);
83 
84 struct qmi_elem_info
85 ims_private_service_subscribe_ind_rsp_msg_v01_ei[] = {
86 	{
87 		.data_type      = QMI_STRUCT,
88 		.elem_len       = 1,
89 		.elem_size      = sizeof(struct qmi_response_type_v01),
90 		.array_type       = NO_ARRAY,
91 		.tlv_type       = 0x02,
92 		.offset         = offsetof(struct
93 		ims_private_service_subscribe_for_indications_rsp_msg_v01,
94 				resp),
95 		.ei_array      = qmi_response_type_v01_ei,
96 	},
97 	{
98 		.data_type      = QMI_EOTI,
99 		.array_type       = NO_ARRAY,
100 		.tlv_type       = QMI_COMMON_TLV_TYPE,
101 	},
102 };
103 EXPORT_SYMBOL(ims_private_service_subscribe_ind_rsp_msg_v01_ei);
104 
105 struct qmi_elem_info ims_private_service_mt_invite_ind_msg_v01_ei[] = {
106 	{
107 		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
108 		.elem_len       = 1,
109 		.elem_size      = sizeof(enum ims_subscription_type_enum_v01),
110 		.array_type       = NO_ARRAY,
111 		.tlv_type       = 0x01,
112 		.offset         =
113 		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
114 			 subscription_type),
115 	},
116 	{
117 		.data_type      = QMI_OPT_FLAG,
118 		.elem_len       = 1,
119 		.elem_size      = sizeof(u8),
120 		.array_type       = NO_ARRAY,
121 		.tlv_type       = 0x10,
122 		.offset         =
123 		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
124 			 iccid_valid),
125 	},
126 	{
127 		.data_type      = QMI_STRING,
128 		.elem_len       = IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 + 1,
129 		.elem_size      = sizeof(char),
130 		.array_type       = NO_ARRAY,
131 		.tlv_type       = 0x10,
132 		.offset         =
133 		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
134 			 iccid),
135 	},
136 	{
137 		.data_type      = QMI_OPT_FLAG,
138 		.elem_len       = 1,
139 		.elem_size      = sizeof(u8),
140 		.array_type       = NO_ARRAY,
141 		.tlv_type       = 0x11,
142 		.offset         =
143 		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
144 			 header_value_list_valid),
145 	},
146 	{
147 		.data_type      = QMI_DATA_LEN,
148 		.elem_len       = 1,
149 		.elem_size      = sizeof(u8),
150 		.array_type       = NO_ARRAY,
151 		.tlv_type       = 0x11,
152 		.offset         =
153 		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
154 			 header_value_list_len),
155 	},
156 	{
157 		.data_type      = QMI_STRUCT,
158 		.elem_len       = IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01,
159 		.elem_size      =
160 		sizeof(struct ims_private_service_header_value_v01),
161 		.array_type       = VAR_LEN_ARRAY,
162 		.tlv_type       = 0x11,
163 		.offset         =
164 		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
165 			 header_value_list),
166 		.ei_array      = ims_private_service_header_value_v01_ei,
167 	},
168 	{
169 		.data_type      = QMI_EOTI,
170 		.array_type       = NO_ARRAY,
171 		.tlv_type       = QMI_COMMON_TLV_TYPE,
172 	},
173 };
174 EXPORT_SYMBOL(ims_private_service_mt_invite_ind_msg_v01_ei);
175 
176 struct qmi_elem_info ims_private_service_wfc_call_status_ind_msg_v01_ei[] = {
177 	{
178 		.data_type      = QMI_UNSIGNED_1_BYTE,
179 		.elem_len       = 1,
180 		.elem_size      = sizeof(u8),
181 		.array_type       = NO_ARRAY,
182 		.tlv_type       = 0x01,
183 		.offset         =
184 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
185 			 wfc_call_active),
186 	},
187 	{
188 		.data_type      = QMI_OPT_FLAG,
189 		.elem_len       = 1,
190 		.elem_size      = sizeof(u8),
191 		.array_type       = NO_ARRAY,
192 		.tlv_type       = 0x10,
193 		.offset         =
194 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
195 			 all_wfc_calls_held_valid),
196 	},
197 	{
198 		.data_type      = QMI_UNSIGNED_1_BYTE,
199 		.elem_len       = 1,
200 		.elem_size      = sizeof(u8),
201 		.array_type       = NO_ARRAY,
202 		.tlv_type       = 0x10,
203 		.offset         =
204 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
205 			 all_wfc_calls_held),
206 	},
207 	{
208 		.data_type      = QMI_OPT_FLAG,
209 		.elem_len       = 1,
210 		.elem_size      = sizeof(u8),
211 		.array_type       = NO_ARRAY,
212 		.tlv_type       = 0x11,
213 		.offset         =
214 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
215 			 is_wfc_emergency_valid),
216 	},
217 	{
218 		.data_type      = QMI_UNSIGNED_1_BYTE,
219 		.elem_len       = 1,
220 		.elem_size      = sizeof(u8),
221 		.array_type       = NO_ARRAY,
222 		.tlv_type       = 0x11,
223 		.offset         =
224 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
225 			 is_wfc_emergency),
226 	},
227 	{
228 		.data_type      = QMI_OPT_FLAG,
229 		.elem_len       = 1,
230 		.elem_size      = sizeof(u8),
231 		.array_type       = NO_ARRAY,
232 		.tlv_type       = 0x12,
233 		.offset         =
234 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
235 			 twt_ims_start_valid),
236 	},
237 	{
238 		.data_type      = QMI_UNSIGNED_8_BYTE,
239 		.elem_len       = 1,
240 		.elem_size      = sizeof(u64),
241 		.array_type       = NO_ARRAY,
242 		.tlv_type       = 0x12,
243 		.offset         =
244 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
245 			 twt_ims_start),
246 	},
247 	{
248 		.data_type      = QMI_OPT_FLAG,
249 		.elem_len       = 1,
250 		.elem_size      = sizeof(u8),
251 		.array_type       = NO_ARRAY,
252 		.tlv_type       = 0x13,
253 		.offset         =
254 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
255 			 twt_ims_int_valid),
256 	},
257 	{
258 		.data_type      = QMI_UNSIGNED_2_BYTE,
259 		.elem_len       = 1,
260 		.elem_size      = sizeof(u16),
261 		.array_type       = NO_ARRAY,
262 		.tlv_type       = 0x13,
263 		.offset         =
264 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
265 			 twt_ims_int),
266 	},
267 	{
268 		.data_type      = QMI_OPT_FLAG,
269 		.elem_len       = 1,
270 		.elem_size      = sizeof(u8),
271 		.array_type       = NO_ARRAY,
272 		.tlv_type       = 0x14,
273 		.offset         =
274 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
275 			 media_quality_valid),
276 	},
277 	{
278 		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
279 		.elem_len       = 1,
280 		.elem_size      = sizeof(enum wfc_media_quality_v01),
281 		.array_type       = NO_ARRAY,
282 		.tlv_type       = 0x14,
283 		.offset         =
284 		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
285 			 media_quality),
286 	},
287 	{
288 		.data_type      = QMI_EOTI,
289 		.array_type       = NO_ARRAY,
290 		.tlv_type       = QMI_COMMON_TLV_TYPE,
291 	},
292 };
293 EXPORT_SYMBOL(ims_private_service_wfc_call_status_ind_msg_v01_ei);
294 
295 struct qmi_elem_info
296 ims_private_service_wfc_call_twt_config_req_msg_v01_ei[] = {
297 	{
298 		.data_type      = QMI_OPT_FLAG,
299 		.elem_len       = 1,
300 		.elem_size      = sizeof(u8),
301 		.array_type       = NO_ARRAY,
302 		.tlv_type       = 0x10,
303 		.offset         =
304 		offsetof(struct
305 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
306 			 twt_sta_start_valid),
307 	},
308 	{
309 		.data_type      = QMI_UNSIGNED_8_BYTE,
310 		.elem_len       = 1,
311 		.elem_size      = sizeof(u64),
312 		.array_type       = NO_ARRAY,
313 		.tlv_type       = 0x10,
314 		.offset         =
315 		offsetof(struct
316 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
317 			 twt_sta_start),
318 	},
319 	{
320 		.data_type      = QMI_OPT_FLAG,
321 		.elem_len       = 1,
322 		.elem_size      = sizeof(u8),
323 		.array_type       = NO_ARRAY,
324 		.tlv_type       = 0x11,
325 		.offset         =
326 		offsetof(struct
327 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
328 			 twt_sta_int_valid),
329 	},
330 	{
331 		.data_type      = QMI_UNSIGNED_2_BYTE,
332 		.elem_len       = 1,
333 		.elem_size      = sizeof(u16),
334 		.array_type       = NO_ARRAY,
335 		.tlv_type       = 0x11,
336 		.offset         =
337 		offsetof(struct
338 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
339 			 twt_sta_int),
340 	},
341 	{
342 		.data_type      = QMI_OPT_FLAG,
343 		.elem_len       = 1,
344 		.elem_size      = sizeof(u8),
345 		.array_type       = NO_ARRAY,
346 		.tlv_type       = 0x12,
347 		.offset         =
348 		offsetof(struct
349 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
350 			 twt_sta_upo_valid),
351 	},
352 	{
353 		.data_type      = QMI_UNSIGNED_2_BYTE,
354 		.elem_len       = 1,
355 		.elem_size      = sizeof(u16),
356 		.array_type       = NO_ARRAY,
357 		.tlv_type       = 0x12,
358 		.offset         =
359 		offsetof(struct
360 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
361 			 twt_sta_upo),
362 	},
363 	{
364 		.data_type      = QMI_OPT_FLAG,
365 		.elem_len       = 1,
366 		.elem_size      = sizeof(u8),
367 		.array_type       = NO_ARRAY,
368 		.tlv_type       = 0x13,
369 		.offset         =
370 		offsetof(struct
371 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
372 			 twt_sta_sp_valid),
373 	},
374 	{
375 		.data_type      = QMI_UNSIGNED_2_BYTE,
376 		.elem_len       = 1,
377 		.elem_size      = sizeof(u16),
378 		.array_type       = NO_ARRAY,
379 		.tlv_type       = 0x13,
380 		.offset         =
381 		offsetof(struct
382 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
383 			 twt_sta_sp),
384 	},
385 	{
386 		.data_type      = QMI_OPT_FLAG,
387 		.elem_len       = 1,
388 		.elem_size      = sizeof(u8),
389 		.array_type       = NO_ARRAY,
390 		.tlv_type       = 0x14,
391 		.offset         =
392 		offsetof(struct
393 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
394 			 twt_sta_dl_valid),
395 	},
396 	{
397 		.data_type      = QMI_UNSIGNED_2_BYTE,
398 		.elem_len       = 1,
399 		.elem_size      = sizeof(u16),
400 		.array_type       = NO_ARRAY,
401 		.tlv_type       = 0x14,
402 		.offset         =
403 		offsetof(struct
404 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
405 			 twt_sta_dl),
406 	},
407 	{
408 		.data_type      = QMI_OPT_FLAG,
409 		.elem_len       = 1,
410 		.elem_size      = sizeof(u8),
411 		.array_type       = NO_ARRAY,
412 		.tlv_type       = 0x15,
413 		.offset         =
414 		offsetof(struct
415 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
416 			 twt_sta_config_changed_valid),
417 	},
418 	{
419 		.data_type      = QMI_UNSIGNED_1_BYTE,
420 		.elem_len       = 1,
421 		.elem_size      = sizeof(u8),
422 		.array_type       = NO_ARRAY,
423 		.tlv_type       = 0x15,
424 		.offset         =
425 		offsetof(struct
426 			 ims_private_service_wfc_call_twt_config_req_msg_v01,
427 			 twt_sta_config_changed),
428 	},
429 	{
430 		.data_type      = QMI_EOTI,
431 		.array_type       = NO_ARRAY,
432 		.tlv_type       = QMI_COMMON_TLV_TYPE,
433 	},
434 };
435 EXPORT_SYMBOL(ims_private_service_wfc_call_twt_config_req_msg_v01_ei);
436 
437 struct qmi_elem_info
438 ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei[] = {
439 	{
440 		.data_type      = QMI_STRUCT,
441 		.elem_len       = 1,
442 		.elem_size      = sizeof(struct qmi_response_type_v01),
443 		.array_type       = NO_ARRAY,
444 		.tlv_type       = 0x02,
445 		.offset         =
446 		offsetof(struct
447 			 ims_private_service_wfc_call_twt_config_rsp_msg_v01,
448 			 resp),
449 		.ei_array      = qmi_response_type_v01_ei,
450 	},
451 	{
452 		.data_type      = QMI_EOTI,
453 		.array_type       = NO_ARRAY,
454 		.tlv_type       = QMI_COMMON_TLV_TYPE,
455 	},
456 };
457 EXPORT_SYMBOL(ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei);
458