| // 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.framework; |
| |
| using fuchsia.component; |
| using fuchsia.component.runner; |
| using fuchsia.data; |
| using fuchsia.io; |
| |
| /// Arguments for starting a driver. |
| resource table DriverStartArgs { |
| /// Node that the driver is bound to. |
| 1: Node node; |
| |
| /// Offers provided to the driver, for |node|. These are names of FIDL |
| /// protocols that can be accessed through |exposed_dir|. |
| 2: vector<fuchsia.component.name>:MAX_OFFER_COUNT offers; |
| |
| /// Symbols provided to the driver, for |node|. These come from the driver |
| /// that added |node|, and are filtered to the symbols requested in the bind |
| /// program. |
| 3: vector<NodeSymbol>:MAX_SYMBOL_COUNT symbols; |
| |
| /// Information about the driver to start. Currently, we support the |
| /// following entries: |
| /// 1. "binary": a string containing the package-relative path to the |
| /// driver binary. |
| /// 2. "colocate" (optional): a string containing "true" or "false" |
| /// specifying whether the driver should be colocated in the same |
| /// driver host as the driver that added |node|. If not specified, the |
| /// driver will be launched in a new driver host. |
| 4: fuchsia.data.Dictionary program; |
| |
| /// Incoming namespace provided to the driver. |
| 5: vector<fuchsia.component.runner.ComponentNamespaceEntry>:fuchsia.component.runner.MAX_NAMESPACE_COUNT ns; |
| |
| /// Outgoing directory served by the driver. |
| 6: request<fuchsia.io.Directory> outgoing_dir; |
| |
| /// Exposed directory provided to the driver, for |node|. |
| 7: fuchsia.io.Directory exposed_dir; |
| }; |
| |
| /// Protocol through which a driver's lifecycle can be managed. |
| /// |
| /// Closing the protocol's channel is used to signal: |
| /// 1. To the driver manager that the driver has stopped. |
| /// 2. To the driver that it should stop. |
| protocol Driver { |
| }; |
| |
| /// Protocol through which a driver host can be managed. |
| [Discoverable] |
| protocol DriverHost { |
| /// Start a driver within a driver host. |
| Start(DriverStartArgs start_args, request<Driver> driver); |
| }; |