// 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.mojom; import "device/usb/public/interfaces/device.mojom"; import "mojo/common/string16.mojom"; struct UsbDeviceFilter { 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; mojo.common.mojom.String16? serial_number; }; struct UsbEnumerationOptions { array filters; }; interface UsbDeviceManager { // Retrieves information about all devices available to the DeviceManager // implementation. GetDevices(UsbEnumerationOptions? options) => (array results); // Requests a device by guid. GetDevice(string guid, UsbDevice& device_request); // Sets the client for this DeviceManager service. The service will notify its // client of device events such as connection and disconnection. SetClient(UsbDeviceManagerClient client); }; interface UsbDeviceManagerClient { // Called when a device is connected to the host. OnDeviceAdded(UsbDeviceInfo device_info); // Called when a device is disconnected from the host. OnDeviceRemoved(UsbDeviceInfo device_info); };