blob: a2d20ae011622b5d545072328a99c6564c629621 [file] [log] [blame]
// 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";
enum OpenDeviceError {
// Opening the device succeeded.
OK,
// The device could not be opened because the request GUID is unknown.
NOT_FOUND,
// The operating system denied access to the device.
ACCESS_DENIED,
};
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;
};
struct EnumerationOptions {
array<DeviceFilter>? filters;
};
struct DeviceChangeNotification {
array<DeviceInfo> devices_added;
array<string> devices_removed;
};
interface DeviceManager {
// Retrieves information about all devices available to the DeviceManager
// implementation.
GetDevices(EnumerationOptions? options) => (array<DeviceInfo> results);
// Retrieves information about changes to the set of devices available to the
// DeviceManager since the last call to this method. A device that is added
// and removed between calls will not be included.
GetDeviceChanges() => (DeviceChangeNotification changes);
// Attempts to open a device given its GUID.
OpenDevice(string guid, Device& device_request) => (OpenDeviceError error);
};