blob: 84fae4e3e22da1080dcd2818005e802298528222 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.driver.registrar;
using fuchsia.url;
using zx;
/// Protocol for registering ephemeral driver packages.
@discoverable
open protocol DriverRegistrar {
/// Informs the driver framework of an ephemeral driver. The metadata will
/// be cached by the driver index to be used in future matching operations.
/// * error a zx_status value indicating failure. One of the following:
/// * `ZX_ERR_PROTOCOL_NOT_SUPPORTED` if the ephermeral driver config
/// `enable_ephemeral_drivers` is not enabled.
/// * `ZX_ERR_ACCESS_DENIED` if the device does not have permissions
/// to fetch the package.
/// * `ZX_ERR_ALREADY_EXISTS` if the driver component being registered
/// already exists in the boot or base drivers list.
/// * `ZX_ERR_NOT_FOUND` if the package does not exist or it is missing
/// a manifest or /pkg directory.
/// * `ZX_ERR_IO` if there is some other unspecified error during I/O.
/// * `ZX_ERR_ADDRESS_UNREACHABLE` if the package resolver does not
/// know about the repo or the url cannot be parsed.
/// * `ZX_ERR_INVALID_ARGS` if the component decl cannot be parsed.
/// * `ZX_ERR_NO_SPACE` if the device is out of space.
/// * `ZX_ERR_UNAVAILABLE` if the package resolver could not be reached.
/// * `ZX_ERR_INTERNAL` if an unspecified error was encountered.
flexible Register(struct {
driver_url fuchsia.url.Url;
}) -> () error zx.Status;
};