| // 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; |
| }; |