Project: /_project.yaml Book: /_book.yaml

fuchsia.device.manager

PROTOCOLS

Administrator {:#Administrator}

Defined in fuchsia.device.manager/administrator.fidl

Provides administration services for the device manager service and the device tree it controls.

Suspend {:#Suspend}

Ask all devices to enter the suspend state indicated by flags. Flags should be some combination of DEVICE_SUSPEND_FLAG_* from the DDK.

Request

Response

DeviceController {:#DeviceController}

Defined in fuchsia.device.manager/coordinator.fidl

Protocol for controlling devices in a devhost process from the devcoordinator

BindDriver {:#BindDriver}

Bind the requested driver to this device. driver_path is informational, but all calls to BindDriver/CreateDevice should use the same driver_path each time they use a driver VMO with the same contents. Returns a status and optionally a channel to the driver's test output. test_output will be not present unless the driver is configured to run its run_unit_tests hook, in which case the other end of the channel will have been passed to the driver.

Request

Response

ConnectProxy {:#ConnectProxy}

Give this device a channel to its shadow in another process.

Request

Unbind {:#Unbind}

Ask devhost to unbind this device. On success, the remote end of this interface channel will close instead of returning a result.

Request

CompleteRemoval {:#CompleteRemoval}

Ask the devhost to complete the removal of this device, which previously had invoked |ScheduleRemove|. This is a special case that can be removed once |device_remove| invokes |unbind|.

Request

RemoveDevice {:#RemoveDevice}

Ask the devhost to remove this device. On success, the remote end of this interface channel will close instead of returning a result.

Request

Suspend {:#Suspend}

Ask devhost to suspend this device, using the target state indicated by flags.

Request

Response

CompleteCompatibilityTests {:#CompleteCompatibilityTests}

Inform devhost about the compatibility test status when compatibility tests fail or complete successfully.

Request

DevhostController {:#DevhostController}

Defined in fuchsia.device.manager/coordinator.fidl

Protocol for controlling a devhost process from the devcoordinator

CreateDeviceStub {:#CreateDeviceStub}

Create a device in the devhost that only implements the device protocol and claims to support the given protocol_id. This device will communicate with the devcoordinator via rpc.

Request

CreateDevice {:#CreateDevice}

Create a device in the devhost representing the shadowed half of device in another devhost. This new device will communicate with the devcoordinator via rpc, and with its other half via parent_proxy.

The new device will have the given driver responsible for running its half of the driver‘s cross-process protocol. It’s create() method will be invoked, giving it access to parent_proxy and proxy_args.

parent_proxy, if present, will usually be a channel to the upper half of a shadowed device. The one exception is when this method is used to create the Platform Bus, in which case it will be a channel to a fuchsia.boot.Items protocol.

local_device_id will be a unique value within the device's devhost

Request

CreateCompositeDevice {:#CreateCompositeDevice}

Introduce a composite device that has the given name and properties. components will be a list of all of the composite's components, described using devhost local device ids. The order of the components will match the original composite creation request. The new device will communicate with devcoordinator via rpc.

local_device_id will be a unique value within the device's devhost, identifying the resulting composite device.

Request

Response

Coordinator {:#Coordinator}

Defined in fuchsia.device.manager/coordinator.fidl

Interface for the devices in devhosts to coordinate with the devcoordinator.

AddDevice {:#AddDevice}

Record the addition of a new device that can be communicated with via rpc. For binding purposes, it is has properties props. name and driver_path are informational and used for debugging. The device will have protocol_id as its primary protocol id. args should only be used for shadowed devices, and will be forwarded to the shadow device. client_remote, if present, will be passed to the device as an open connection for the client. On success, the returned local_device_id is the identifier assigned by devmgr.

Request

Response

AddDeviceInvisible {:#AddDeviceInvisible}

Behaves as AddDevice, but marks the device as initially invisible. This means that it will not be visible to other devices or the devfs until it is later marked visible (via MakeVisible).

Request

Response

ScheduleRemove {:#ScheduleRemove}

Requests the devcoordinator schedule the removal of this device, and the unbinding of its children. If |unbind_self| is true, the unbind hook for this device will also be called.

Request

ScheduleUnbindChildren {:#ScheduleUnbindChildren}

Requests the devcoordinator schedule the unbinding of this device's children.

Request

UnbindDone {:#UnbindDone}

Sent as the response to |Unbind|.

Request

RemoveDone {:#RemoveDone}

Sent as the response to |CompleteRemoval|.

Request

RemoveDevice {:#RemoveDevice}

Record the removal of this device.

Request

Response

MakeVisible {:#MakeVisible}

Mark this device as visible.

Request

Response

BindDevice {:#BindDevice}

Attempt to bind a driver against this device. If driver_path is null, this will initiate the driver matching algorithm. TODO(teisenbe): Specify the behavior of invoking this multiple times. I believe the current behavior is a bug.

Request

Response

GetTopologicalPath {:#GetTopologicalPath}

Returns the topological path of this device.

Request

Response

LoadFirmware {:#LoadFirmware}

Requests that the firmware at the given path be loaded and returned.

Request

Response

GetMetadata {:#GetMetadata}

Retrieve the metadata blob associated with this device and the given key.

Request

Response

GetMetadataSize {:#GetMetadataSize}

Retrieve the metadata size associated with this device and the given key.

Request

Response

AddMetadata {:#AddMetadata}

Add metadata blob associated with this device and the given key. TODO(teisenbe): Document the behavior of calling this twice with the same key. I believe the current behavior results in inaccessible data that is kept around for the lifetime of the device.

Request

Response

PublishMetadata {:#PublishMetadata}

Behaves like AddMetadata, but instead of associating it with the requesting device, associates it with the device at device_path. If the device at device_path is not a child of the requesting device AND the requesting device is not running in the sys devhost, then this will fail.

Request

Response

AddCompositeDevice {:#AddCompositeDevice}

Adds the given composite device. This causes the devcoordinator to try to match the components against the existing device tree, and to monitor all new device additions in order to find the components as they are created.

Request

Response

DirectoryWatch {:#DirectoryWatch}

Watches a directory, receiving events of added messages on the watcher request channel. See fuchsia.io.Directory for more information.

Request

Response

RunCompatibilityTests {:#RunCompatibilityTests}

Run Compatibility tests for the driver that binds to this device. The hook_wait_time is the time that the driver expects to take for each device hook in nanoseconds. Returns whether the compatibility tests started, and does not convey anything about the status of the test.

Request

Response

DebugDumper {:#DebugDumper}

Defined in fuchsia.device.manager/debug.fidl

Dumps text debug information.

All methods dump ascii text into a VMO, this allows the caller the flexibility to decide how much data they want. Use the returned written value to read the data, no string termination is guaranteed.

DumpTree {:#DumpTree}

Print device tree into output, returns bytes written and bytes available to write.

Request

Response

DumpDrivers {:#DumpDrivers}

Print information about all drivers into output, returns bytes written and bytes available to write.

Request

Response

DumpBindingProperties {:#DumpBindingProperties}

Print all devices and their binding properties into output, returns bytes written and bytes available to write.

Request

Response

STRUCTS

Coordinator_AddDevice_Response {:#Coordinator_AddDevice_Response}

Defined in fuchsia.device.manager/generated

Coordinator_AddDeviceInvisible_Response {:#Coordinator_AddDeviceInvisible_Response}

Defined in fuchsia.device.manager/generated

Coordinator_RemoveDevice_Response {:#Coordinator_RemoveDevice_Response}

Defined in fuchsia.device.manager/generated

Coordinator_MakeVisible_Response {:#Coordinator_MakeVisible_Response}

Defined in fuchsia.device.manager/generated

Coordinator_BindDevice_Response {:#Coordinator_BindDevice_Response}

Defined in fuchsia.device.manager/generated

Coordinator_GetTopologicalPath_Response {:#Coordinator_GetTopologicalPath_Response}

Defined in fuchsia.device.manager/generated

Coordinator_LoadFirmware_Response {:#Coordinator_LoadFirmware_Response}

Defined in fuchsia.device.manager/generated

Coordinator_GetMetadata_Response {:#Coordinator_GetMetadata_Response}

Defined in fuchsia.device.manager/generated

Coordinator_GetMetadataSize_Response {:#Coordinator_GetMetadataSize_Response}

Defined in fuchsia.device.manager/generated

Coordinator_AddMetadata_Response {:#Coordinator_AddMetadata_Response}

Defined in fuchsia.device.manager/generated

Coordinator_PublishMetadata_Response {:#Coordinator_PublishMetadata_Response}

Defined in fuchsia.device.manager/generated

Coordinator_AddCompositeDevice_Response {:#Coordinator_AddCompositeDevice_Response}

Defined in fuchsia.device.manager/generated

Coordinator_DirectoryWatch_Response {:#Coordinator_DirectoryWatch_Response}

Defined in fuchsia.device.manager/generated

Coordinator_RunCompatibilityTests_Response {:#Coordinator_RunCompatibilityTests_Response}

Defined in fuchsia.device.manager/generated

BindInstruction {:#BindInstruction}

Defined in fuchsia.device.manager/coordinator.fidl

DeviceComponentPart {:#DeviceComponentPart}

Defined in fuchsia.device.manager/coordinator.fidl

A part of a description of a DeviceComponent

DeviceComponent {:#DeviceComponent}

Defined in fuchsia.device.manager/coordinator.fidl

A piece of a composite device

ENUMS

CompatibilityTestStatus {:#CompatibilityTestStatus}

Type: uint32

Defined in fuchsia.device.manager/coordinator.fidl

A enum of CompatibilityTestStatus

UNIONS

Coordinator_AddDevice_Result {:#Coordinator_AddDevice_Result}

Defined in fuchsia.device.manager/generated

Coordinator_AddDeviceInvisible_Result {:#Coordinator_AddDeviceInvisible_Result}

Defined in fuchsia.device.manager/generated

Coordinator_RemoveDevice_Result {:#Coordinator_RemoveDevice_Result}

Defined in fuchsia.device.manager/generated

Coordinator_MakeVisible_Result {:#Coordinator_MakeVisible_Result}

Defined in fuchsia.device.manager/generated

Coordinator_BindDevice_Result {:#Coordinator_BindDevice_Result}

Defined in fuchsia.device.manager/generated

Coordinator_GetTopologicalPath_Result {:#Coordinator_GetTopologicalPath_Result}

Defined in fuchsia.device.manager/generated

Coordinator_LoadFirmware_Result {:#Coordinator_LoadFirmware_Result}

Defined in fuchsia.device.manager/generated

Coordinator_GetMetadata_Result {:#Coordinator_GetMetadata_Result}

Defined in fuchsia.device.manager/generated

Coordinator_GetMetadataSize_Result {:#Coordinator_GetMetadataSize_Result}

Defined in fuchsia.device.manager/generated

Coordinator_AddMetadata_Result {:#Coordinator_AddMetadata_Result}

Defined in fuchsia.device.manager/generated

Coordinator_PublishMetadata_Result {:#Coordinator_PublishMetadata_Result}

Defined in fuchsia.device.manager/generated

Coordinator_AddCompositeDevice_Result {:#Coordinator_AddCompositeDevice_Result}

Defined in fuchsia.device.manager/generated

Coordinator_DirectoryWatch_Result {:#Coordinator_DirectoryWatch_Result}

Defined in fuchsia.device.manager/generated

Coordinator_RunCompatibilityTests_Result {:#Coordinator_RunCompatibilityTests_Result}

Defined in fuchsia.device.manager/generated

BITS

AddDeviceConfig {:#AddDeviceConfig}

Type: uint32

CONSTANTS