Audio: Do not sanitize android.hardware.audio@2.0-service
[android/platform-hardware-interfaces.git] / radio / 1.3 / types.hal
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 };