1 /*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
17 package android.hardware.radio@1.3;
19 import @1.0::ApnAuthType;
20 import @1.0::ApnTypes;
21 import @1.0::DataProfileId;
22 import @1.0::DataProfileInfoType;
23 import @1.0::RadioAccessFamily;
24 import @1.0::RegState;
25 import @1.2::AccessNetwork;
26 import @1.2::CellIdentity;
27 import @1.2::DataRegStateResult;
29 enum AccessNetwork : @1.2::AccessNetwork {
30 /**
31 * Unknown access network
32 */
33 UNKNOWN = 0,
34 };
36 /**
37 * Emergency number contains information of number, one or more service category(s), mobile country
38 * code (mcc), and source(s) that indicate where it comes from.
39 *
40 * If the source of the emergency number is associated with country, field ‘mcc’ must be
41 * provided; otherwise the field ‘mcc’ must be an empty string.
42 *
43 * A unique EmergencyNumber has a unique combination of ‘number’, ‘mcc’ and 'categories' fields.
44 * Multiple @1.3::EmergencyNumberSource should be merged into the bitfield for the same
45 * EmergencyNumber.
46 *
47 * Reference: 3GPP TS 22.101 version 9.1.0 Release 9
48 */
49 struct EmergencyNumber{
50 /**
51 * The emergency number. The character in the number string should only be the dial pad
52 * character('0'-'9', '*', or '#'). For example: 911.
53 */
54 string number;
55 /**
56 * 3-digit Mobile Country Code, 0..999. Empty string if not applicable.
57 */
58 string mcc;
59 /**
60 * The bitfield of @1.3::EmergencyServiceCategory(s). See @1.3::EmergencyServiceCategory for
61 * the value of each bit.
62 */
63 bitfield<EmergencyServiceCategory> categories;
64 /**
65 * The bitfield of @1.3::EmergencyNumberSource(s). See @1.3::EmergencyNumberSource for the
66 * value of each bit.
67 */
68 bitfield<EmergencyNumberSource> sources;
69 };
71 /**
72 * Defining Emergency Service Category as follows:
73 * - General emergency call, all categories;
74 * - Police;
75 * - Ambulance;
76 * - Fire Brigade;
77 * - Marine Guard;
78 * - Mountain Rescue;
79 * - Manually Initiated eCall (MIeC);
80 * - Automatically Initiated eCall (AIeC);
81 *
82 * Category UNSPECIFIED (General emergency call, all categories) indicates that no specific
83 * services are associated with this emergency number.
84 *
85 * Reference: 3gpp 22.101, Section 10 - Emergency Calls
86 */
87 enum EmergencyServiceCategory : int32_t {
88 /**
89 * General emergency call, all categories
90 */
91 UNSPECIFIED = 0,
92 POLICE = 1 << 0,
93 AMBULANCE = 1 << 1,
94 FIRE_BRIGADE = 1 << 2,
95 MARINE_GUARD = 1 << 3,
96 MOUNTAIN_RESCUE = 1 << 4,
97 /**
98 * Manually Initiated eCall (MIeC)
99 */
100 MIEC = 1 << 5,
101 /**
102 * Automatically Initiated eCall (AIeC)
103 */
104 AIEC = 1 << 6,
105 };
107 /**
108 * The source to tell where the corresponding @1.3::EmergencyNumber comes from.
109 *
110 * Reference: 3gpp 22.101, Section 10 - Emergency Calls
111 */
112 enum EmergencyNumberSource : int32_t {
113 /**
114 * Indicates the number is from the network signal.
115 */
116 NETWORK_SIGNALING = 1 << 0,
117 /**
118 * Indicates the number is from the sim card.
119 */
120 SIM = 1 << 1,
121 /**
122 * Indicates the number is from the modem config.
123 */
124 MODEM_CONFIG = 1 << 2,
125 /**
126 * Indicates the number is available as default. Per the reference, 112, 911 must always be
127 * available; additionally, 000, 08, 110, 999, 118 and 119 must be available when sim is not
128 * present.
129 */
130 DEFAULT = 1 << 3,
131 };
133 /**
134 * Type to define the LTE specific network capabilities for voice over PS including
135 * emergency and normal voice calls.
136 */
137 struct LteVopsInfo {
138 /**
139 * This indicates if camped network support VoLTE services. This information is received
140 * from LTE network during LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU
141 * ACCEPT. Refer 3GPP 24.301 EPS network feature support -> IMS VoPS
142 */
143 bool isVopsSupported;
144 /**
145 * This indicates if camped network support VoLTE emergency bearers. This information
146 * is received from LTE network through two sources:
147 * a. During LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU ACCEPT. Refer
148 * 3GPP 24.301 EPS network feature support -> EMC BS
149 * b. In case device is not registered on network. Refer 3GPP 25.331 LTE RRC
150 * SIB1 : ims-EmergencySupport-r9
151 * If device is registered on LTE, then this field indicates (a).
152 * In case of limited service on LTE this field indicates (b).
153 */
154 bool isEmcBearerSupported;
155 };
157 struct DataRegStateResult {
158 @1.2::DataRegStateResult base;
159 /**
160 * Network capabilities for voice over PS services. This info is valid only
161 * on LTE network and must be present when device is camped on LTE. vopsInfo
162 * will be empty when device is camped only on 2G/3G .
163 */
164 safe_union VopsInfo {
165 LteVopsInfo lteVopsInfo; // LTE network capability
166 } vopsInfo;
167 };
169 /**
170 * Overwritten from @1.0::DataProfileInfo in order to deprecate 'mvnoType', 'mvnoMatchData',
171 * 'maxConnsTime', and 'maxConns'. In the future, this must be extended instead of overwritten.
172 * Added 'preferred' and 'persistent' in this version.
173 */
174 struct DataProfileInfo {
175 /** id of the data profile */
176 DataProfileId profileId;
178 /** The APN name */
179 string apn;
181 /**
182 * One of the PDP_type values in TS 27.007 section 10.1.1. For example, "IP", "IPV6", "IPV4V6",
183 * or "PPP".
184 */
185 string protocol;
187 /**
188 * one of the PDP_type values in TS 27.007 section 10.1.1 used on roaming network. For example,
189 * "IP", "IPV6", "IPV4V6", or "PPP".
190 */
191 string roamingProtocol;
193 /** APN authentication type */
194 ApnAuthType authType;
196 /** The username for APN, or empty string */
197 string user;
199 /** The password for APN, or empty string */
200 string password;
202 /** Data profile technology type */
203 DataProfileInfoType type;
205 /**
206 * The required wait time in seconds after a successful UE initiated disconnect of a given PDN
207 * connection before the device can send a new PDN connection request for that given PDN.
208 */
209 int32_t waitTime;
211 /** True to enable the profile, false to disable */
212 bool enabled;
214 /** Supported APN types bitmap. See ApnTypes for the value of each bit. */
215 bitfield<ApnTypes> supportedApnTypesBitmap;
217 /** The bearer bitmap. See RadioAccessFamily for the value of each bit. */
218 bitfield<RadioAccessFamily> bearerBitmap;
220 /** Maximum transmission unit (MTU) size in bytes */
221 int32_t mtu;
223 /**
224 * True if this data profile was used to bring up the last default (i.e internet) data
225 * connection successfully.
226 */
227 bool preferred;
229 /**
230 * If true, modem must persist this data profile and profileId must not be
231 * set to DataProfileId.INVALID. If the same data profile exists, this data profile must
232 * overwrite it.
233 */
234 bool persistent;
235 };