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