| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module device.usb; |
| |
| import "device.mojom"; |
| |
| struct DeviceFilter { |
| bool has_vendor_id; |
| uint16 vendor_id; |
| |
| bool has_product_id; |
| uint16 product_id; |
| |
| bool has_class_code; |
| uint8 class_code; |
| |
| bool has_subclass_code; |
| uint8 subclass_code; |
| |
| bool has_protocol_code; |
| uint8 protocol_code; |
| |
| string? serial_number; |
| }; |
| |
| struct EnumerationOptions { |
| array<DeviceFilter>? filters; |
| }; |
| |
| interface DeviceManager { |
| // Retrieves information about all devices available to the DeviceManager |
| // implementation. |
| GetDevices(EnumerationOptions? options) => (array<DeviceInfo> results); |
| |
| // Requests a device by guid. |
| GetDevice(string guid, Device& device_request); |
| |
| // Sets the client for this DeviceManager service. The service will notify its |
| // client of device events such as connection and disconnection. |
| SetClient(DeviceManagerClient client); |
| }; |
| |
| interface DeviceManagerClient { |
| // Called when a device is connected to the host. |
| OnDeviceAdded(DeviceInfo device_info); |
| |
| // Called when a device is disconnected from the host. |
| OnDeviceRemoved(DeviceInfo device_info); |
| }; |