summaryrefslogtreecommitdiff
path: root/cnss2/ip_multimedia_subsystem_private_service_v01.h
blob: f372333bb6e648ef5a549d2474d60e06228704ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2020, The Linux Foundation. All rights reserved. */

#ifndef IP_MULTIMEDIA_SUBSYSTEM_PRIVATE_SERVICE_V01_H
#define IP_MULTIMEDIA_SUBSYSTEM_PRIVATE_SERVICE_V01_H

#ifdef CONFIG_CNSS_OUT_OF_TREE
#include "qmi/qmi.h"
#else
#include <linux/soc/qcom/qmi.h>
#endif

#define IMSPRIVATE_SERVICE_ID_V01 0x4D
#define IMSPRIVATE_SERVICE_VERS_V01 0x01

#define QMI_IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_RSP_V01 0x003E
#define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_STATUS_IND_V01 0x0040
#define QMI_IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_REQ_V01 0x003E
#define QMI_IMS_PRIVATE_SERVICE_MT_INVITE_IND_V01 0x003F
#define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_RSP_V01 0x0041
#define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_REQ_V01 0x0041

#define IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01 15
#define IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 1024
#define IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 21

enum ims_common_resp_enum_v01 {
	IMS_COMMON_RESP_ENUM_MIN_VAL_V01 = INT_MIN,
	IMS_COMMON_MSG_NO_ERR_V01 = 0,
	IMS_COMMON_MSG_IMS_NOT_READY_V01 = 1,
	IMS_COMMON_MSG_FILE_NOT_AVAILABLE_V01 = 2,
	IMS_COMMON_MSG_READ_FAILED_V01 = 3,
	IMS_COMMON_MSG_WRITE_FAILED_V01 = 4,
	IMS_COMMON_MSG_OTHER_INTERNAL_ERR_V01 = 5,
	IMS_COMMON_RESP_ENUM_MAX_VAL_V01 = INT_MAX,
};

enum ims_subscription_type_enum_v01 {
	IMS_SUBSCRIPTION_TYPE_ENUM_MIN_VAL_V01 = INT_MIN,
	IMS_SUBSCRIPTION_TYPE_NONE_V01 = -1,
	IMS_SUBSCRIPTION_TYPE_PRIMARY_V01 = 0,
	IMS_SUBSCRIPTION_TYPE_SECONDARY_V01 = 1,
	IMS_SUBSCRIPTION_TYPE_TERTIARY_V01 = 2,
	IMS_SUBSCRIPTION_TYPE_ENUM_MAX_VAL_V01 = INT_MAX,
};

enum wfc_media_quality_v01 {
	WFC_MEDIA_QUALITY_MIN_VAL_V01 = INT_MIN,
	WFC_MEDIA_QUAL_NOT_AVAILABLE_V01 = 0,
	WFC_MEDIA_QUAL_BAD_V01 = 1,
	WFC_MEDIA_QUAL_GOOD_V01 = 2,
	WFC_MEDIA_QUAL_EXCELLENT_V01 = 3,
	WFC_MEDIA_QUALITY_MAX_VAL_V01 = INT_MAX,
};

struct ims_private_service_header_value_v01 {
	char header[IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1];
	char value[IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1];
};

struct ims_private_service_subscribe_for_indications_req_msg_v01 {
	u8 mt_invite_valid;
	u8 mt_invite;
	u8 wfc_call_status_valid;
	u8 wfc_call_status;
};

#define IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_REQ_MSG_V01_MAX_MSG_LEN 8
extern struct qmi_elem_info
ims_private_service_subscribe_for_indications_req_msg_v01_ei[];

struct ims_private_service_subscribe_for_indications_rsp_msg_v01 {
	struct qmi_response_type_v01 resp;
};

#define IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_RSP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info
ims_private_service_subscribe_for_indications_rsp_msg_v01_ei[];

struct ims_private_service_mt_invite_ind_msg_v01 {
	enum ims_subscription_type_enum_v01 subscription_type;
	u8 iccid_valid;
	char iccid[IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 + 1];
	u8 header_value_list_valid;
	u32 header_value_list_len;
	struct ims_private_service_header_value_v01
	header_value_list[IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01];
};

#define IMS_PRIVATE_SERVICE_MT_INVITE_IND_MSG_V01_MAX_MSG_LEN 30815
extern struct qmi_elem_info ims_private_service_mt_invite_ind_msg_v01_ei[];

struct ims_private_service_wfc_call_status_ind_msg_v01 {
	u8 wfc_call_active;
	u8 all_wfc_calls_held_valid;
	u8 all_wfc_calls_held;
	u8 is_wfc_emergency_valid;
	u8 is_wfc_emergency;
	u8 twt_ims_start_valid;
	u64 twt_ims_start;
	u8 twt_ims_int_valid;
	u16 twt_ims_int;
	u8 media_quality_valid;
	enum wfc_media_quality_v01 media_quality;
};

#define IMS_PRIVATE_SERVICE_WFC_CALL_STATUS_IND_MSG_V01_MAX_MSG_LEN 35
extern struct qmi_elem_info
ims_private_service_wfc_call_status_ind_msg_v01_ei[];

struct ims_private_service_wfc_call_twt_config_req_msg_v01 {
	u8 twt_sta_start_valid;
	u64 twt_sta_start;
	u8 twt_sta_int_valid;
	u16 twt_sta_int;
	u8 twt_sta_upo_valid;
	u16 twt_sta_upo;
	u8 twt_sta_sp_valid;
	u16 twt_sta_sp;
	u8 twt_sta_dl_valid;
	u16 twt_sta_dl;
	u8 twt_sta_config_changed_valid;
	u8 twt_sta_config_changed;
};

#define IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_REQ_MSG_V01_MAX_MSG_LEN 35
extern struct qmi_elem_info
ims_private_service_wfc_call_twt_config_req_msg_v01_ei[];

struct ims_private_service_wfc_call_twt_config_rsp_msg_v01 {
	struct qmi_response_type_v01 resp;
};

#define IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_RSP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info
ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei[];

#endif