usb.proto revision 371a3b879ba82bbe5a4d914328a20659131d0220
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 */
16
17syntax = "proto2";
18package android.service.usb;
19
20option java_multiple_files = true;
21option java_outer_classname = "UsbServiceProto";
22
23import "frameworks/base/core/proto/android/content/component_name.proto";
24import "frameworks/base/core/proto/android/service/enums.proto";
25import "frameworks/base/libs/incident/proto/android/privacy.proto";
26
27message UsbServiceDumpProto {
28    option (android.msg_privacy).dest = DEST_AUTOMATIC;
29
30    optional UsbDeviceManagerProto device_manager = 1;
31    optional UsbHostManagerProto host_manager = 2;
32    optional UsbPortManagerProto port_manager = 3;
33    optional UsbAlsaManagerProto alsa_manager = 4;
34    optional UsbSettingsManagerProto settings_manager = 5;
35}
36
37message UsbDeviceManagerProto {
38    option (android.msg_privacy).dest = DEST_AUTOMATIC;
39
40    optional UsbHandlerProto handler = 1;
41    optional UsbDebuggingManagerProto debugging_manager = 2;
42}
43
44message UsbHandlerProto {
45    option (android.msg_privacy).dest = DEST_AUTOMATIC;
46
47    /* Same as android.hardware.usb.gadget.V1_0.GadgetFunction.* */
48    enum Function {
49        FUNCTION_ADB = 1;
50        FUNCTION_ACCESSORY = 2;
51        FUNCTION_MTP = 4;
52        FUNCTION_MIDI = 8;
53        FUNCTION_PTP = 16;
54        FUNCTION_RNDIS = 32;
55        FUNCTION_AUDIO_SOURCE = 64;
56    }
57
58    repeated Function current_functions = 1;
59    optional bool current_functions_applied = 2;
60    repeated Function screen_unlocked_functions = 3;
61    optional bool screen_locked = 4;
62    optional bool connected = 5;
63    optional bool configured = 6;
64    optional UsbAccessoryProto current_accessory = 7;
65    optional bool host_connected = 8;
66    optional bool source_power = 9;
67    optional bool sink_power = 10;
68    optional bool usb_charging = 11;
69    optional bool hide_usb_notification = 12;
70    optional bool audio_accessory_connected = 13;
71    optional bool adb_enabled = 14;
72    optional string kernel_state = 15;
73    optional string kernel_function_list = 16;
74}
75
76message UsbAccessoryProto {
77    option (android.msg_privacy).dest = DEST_AUTOMATIC;
78
79    optional string manufacturer = 1;
80    optional string model = 2;
81    optional string description = 3;
82    optional string version = 4;
83    optional string uri = 5;
84    optional string serial = 6 [ (android.privacy).dest = DEST_EXPLICIT ];
85}
86
87message UsbDebuggingManagerProto {
88    option (android.msg_privacy).dest = DEST_AUTOMATIC;
89
90    optional bool connected_to_adb = 1;
91    optional string last_key_recevied = 2 [ (android.privacy).dest = DEST_EXPLICIT ];
92    optional string user_keys = 3 [ (android.privacy).dest = DEST_LOCAL ];
93    optional string system_keys = 4 [ (android.privacy).dest = DEST_LOCAL ];
94}
95
96message UsbHostManagerProto {
97    option (android.msg_privacy).dest = DEST_AUTOMATIC;
98
99    optional android.content.ComponentNameProto default_usb_host_connection_handler = 1;
100    repeated UsbDeviceProto devices = 2;
101    optional int32 num_connects = 3;
102    repeated UsbConnectionRecordProto connections = 4;
103}
104
105message UsbDeviceProto {
106    option (android.msg_privacy).dest = DEST_AUTOMATIC;
107
108    optional string name = 1;
109    optional int32 vendor_id = 2;
110    optional int32 product_id = 3;
111    optional int32 class = 4;
112    optional int32 subclass = 5;
113    optional int32 protocol = 6;
114    optional string manufacturer_name = 7;
115    optional string product_name = 8;
116    optional string version = 9;
117    optional string serial_number = 10 [ (android.privacy).dest = DEST_EXPLICIT ];
118    repeated UsbConfigurationProto configurations = 11;
119}
120
121message UsbConfigurationProto {
122    option (android.msg_privacy).dest = DEST_AUTOMATIC;
123
124    optional int32 id = 1;
125    optional string name = 2;
126    optional uint32 attributes = 3;
127    optional int32 max_power = 4;
128    repeated UsbInterfaceProto interfaces = 5;
129}
130
131message UsbInterfaceProto {
132    option (android.msg_privacy).dest = DEST_AUTOMATIC;
133
134    optional int32 id = 1;
135    optional int32 alternate_settings = 2;
136    optional string name = 3;
137    optional int32 class = 4;
138    optional int32 subclass = 5;
139    optional int32 protocol = 6;
140    repeated UsbEndPointProto endpoints = 7;
141}
142
143message UsbEndPointProto {
144    option (android.msg_privacy).dest = DEST_AUTOMATIC;
145
146    optional int32 endpoint_number = 1;
147    optional android.service.UsbEndPointDirection direction = 2;
148    optional int32 address = 3;
149    optional android.service.UsbEndPointType type = 4;
150    optional uint32 attributes = 5;
151    optional int32 max_packet_size = 6;
152    optional int32 interval = 7;
153}
154
155message UsbConnectionRecordProto {
156    option (android.msg_privacy).dest = DEST_AUTOMATIC;
157
158    optional string device_address = 1;
159    optional android.service.UsbConnectionRecordMode mode = 2;
160    optional int64 timestamp = 3;
161    optional int32 manufacturer = 4;
162    optional int32 product = 5;
163    optional UsbIsHeadsetProto is_headset = 6;
164}
165
166message UsbIsHeadsetProto {
167    option (android.msg_privacy).dest = DEST_AUTOMATIC;
168
169    optional bool in = 1;
170    optional bool out = 2;
171}
172
173message UsbPortManagerProto {
174    option (android.msg_privacy).dest = DEST_AUTOMATIC;
175
176    optional bool is_simulation_active = 1;
177    repeated UsbPortInfoProto usb_ports = 2;
178}
179
180message UsbPortInfoProto {
181    option (android.msg_privacy).dest = DEST_AUTOMATIC;
182
183    optional UsbPortProto port = 1;
184    optional UsbPortStatusProto status = 2;
185    optional bool can_change_mode = 3;
186    optional bool can_change_power_role = 4;
187    optional bool can_change_data_role = 5;
188}
189
190message UsbPortProto {
191    option (android.msg_privacy).dest = DEST_AUTOMATIC;
192
193    /* Same as android.hardware.usb.V1_1.Constants.PortMode_1_1 */
194    enum Mode {
195        MODE_NONE = 0;
196        MODE_UFP = 1;
197        MODE_DFP = 2;
198        MODE_DRP = 3;
199        MODE_AUDIO_ACCESSORY = 4;
200        MODE_DEBUG_ACCESSORY = 8;
201    }
202
203    optional string id = 1;
204    repeated Mode supported_modes = 2;
205}
206
207message UsbPortStatusProto {
208    option (android.msg_privacy).dest = DEST_AUTOMATIC;
209
210    /* Same as android.hardware.usb.V1_0.Constants.PortPowerRole */
211    enum PowerRole {
212        POWER_ROLE_NONE = 0;
213        POWER_ROLE_SOURCE = 1;
214        POWER_ROLE_SINK = 2;
215    }
216
217    /* Same as android.hardware.usb.V1_0.Constants.PortDataRole */
218    enum DataRole {
219        DATA_ROLE_NONE = 0;
220        DATA_ROLE_HOST = 1;
221        DATA_ROLE_DEVICE = 2;
222    }
223
224    optional bool connected = 1;
225    optional UsbPortProto.Mode current_mode = 2;
226    optional PowerRole power_role = 3;
227    optional DataRole data_role = 4;
228    repeated UsbPortStatusRoleCombinationProto role_combinations = 5;
229}
230
231message UsbPortStatusRoleCombinationProto {
232    option (android.msg_privacy).dest = DEST_AUTOMATIC;
233
234    optional UsbPortStatusProto.PowerRole power_role = 1;
235    optional UsbPortStatusProto.DataRole data_role = 2;
236}
237
238message UsbAlsaManagerProto {
239    option (android.msg_privacy).dest = DEST_AUTOMATIC;
240
241    optional int32 cards_parser = 1;
242    repeated UsbAlsaDeviceProto alsa_devices = 2;
243    repeated UsbMidiDeviceProto midi_devices = 3;
244}
245
246message UsbAlsaDeviceProto {
247    option (android.msg_privacy).dest = DEST_AUTOMATIC;
248
249    optional int32 card = 1;
250    optional int32 device = 2;
251    optional string name = 3;
252    optional bool has_playback = 4;
253    optional bool has_capture = 5;
254    optional string address = 6;
255}
256
257message UsbMidiDeviceProto {
258    option (android.msg_privacy).dest = DEST_AUTOMATIC;
259
260    optional int32 card = 1;
261    optional int32 device = 2;
262    optional string device_address = 3;
263}
264
265message UsbSettingsManagerProto {
266    option (android.msg_privacy).dest = DEST_AUTOMATIC;
267
268    repeated UsbUserSettingsManagerProto user_settings = 1;
269    repeated UsbProfileGroupSettingsManagerProto profile_group_settings = 2;
270}
271
272message UsbUserSettingsManagerProto {
273    option (android.msg_privacy).dest = DEST_AUTOMATIC;
274
275    optional int32 user_id = 1;
276    repeated UsbSettingsDevicePermissionProto device_permissions = 2;
277    repeated UsbSettingsAccessoryPermissionProto accessory_permissions = 3;
278}
279
280message UsbSettingsDevicePermissionProto {
281    option (android.msg_privacy).dest = DEST_AUTOMATIC;
282
283    optional string device_name = 1;
284    repeated int32 uids = 2;
285}
286
287message UsbSettingsAccessoryPermissionProto {
288    option (android.msg_privacy).dest = DEST_AUTOMATIC;
289
290    optional string accessory_description = 1;
291    repeated int32 uids = 2;
292}
293
294message UsbProfileGroupSettingsManagerProto {
295    option (android.msg_privacy).dest = DEST_AUTOMATIC;
296
297    optional int32 parent_user_id = 1;
298    repeated UsbSettingsDevicePreferenceProto device_preferences = 2;
299    repeated UsbSettingsAccessoryPreferenceProto accessory_preferences = 3;
300}
301
302message UsbSettingsDevicePreferenceProto {
303    option (android.msg_privacy).dest = DEST_AUTOMATIC;
304
305    optional UsbDeviceFilterProto filter = 1;
306    optional UserPackageProto user_package = 2;
307}
308
309message UsbDeviceFilterProto {
310    option (android.msg_privacy).dest = DEST_AUTOMATIC;
311
312    optional int32 vendor_id = 1;
313    optional int32 product_id = 2;
314    optional int32 class = 3;
315    optional int32 subclass = 4;
316    optional int32 protocol = 5;
317    optional string manufacturer_name = 6;
318    optional string product_name = 7;
319    optional string serial_number = 8 [ (android.privacy).dest = DEST_EXPLICIT ];
320}
321
322message UserPackageProto {
323    option (android.msg_privacy).dest = DEST_AUTOMATIC;
324
325    optional int32 user_id = 1;
326    optional string package_name =2;
327}
328
329message UsbSettingsAccessoryPreferenceProto {
330    option (android.msg_privacy).dest = DEST_AUTOMATIC;
331
332    optional UsbAccessoryFilterProto filter = 1;
333    optional UserPackageProto user_package = 2;
334}
335
336message UsbAccessoryFilterProto {
337    option (android.msg_privacy).dest = DEST_AUTOMATIC;
338
339    optional string manufacturer = 1;
340    optional string model = 2;
341    optional string version = 3;
342}