PROTOCOLS
CompositeNodeManager
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
板驱动程序用来创建复合节点规范的协议。
复合节点规范是在运行时创建的,用于动态桥接 具有动态绑定属性的复合驱动程序的静态绑定规则 使驱动程序绑定规则更通用、可重复使用。
AddSpec
将指定的复合节点规范添加到驱动程序框架中。
请求
名称 | 类型 |
---|---|
payload |
CompositeNodeSpec
|
响应
名称 | 类型 |
---|---|
payload |
CompositeNodeManager_AddSpec_Result
|
驱动程序
在 fuchsia.driver.framework/driver.fidl 中定义
驱动程序框架的驱动程序主机使用此协议来传达各种信息和
连接到驱动程序的生命周期钩子此协议的连接通过
|DriverRegistration|在 driver_symbols
库中定义。
驱动程序关闭服务器端后,驱动程序框架将启动关停操作 属于该驱动程序的所有调度程序的总和。
开始
使用指定的 |start_args| 启动驱动程序。
驱动程序应先完成其初始设置和枚举,然后再从 |Start| 返回。
具体而言,它们应使用
fuchsia.driver.framework/Node.AddChild
,正在等待所有调用完成。
在此调用返回之前,框架不会将驱动程序视为已启动 成功。因此,驱动程序不会执行 |Stop|直到它触发 回复了 |开始|成功。
如果驱动程序返回错误,则不会出现 |Stop|在 驱动程序框架会启动关闭驱动程序调度程序的操作。因此它应该包含 在返回错误之前执行了所有必要的清理。
请求
名称 | 类型 |
---|---|
start_args |
DriverStartArgs
|
响应
名称 | 类型 |
---|---|
payload |
Driver_Start_Result
|
停止
停止驾驶员。如需停止运行,驱动程序应在执行相应操作后或执行后续拆除 |开始|。这是一种单向 FIDL 方法。司机完成停车后,应该 关闭其服务器端。异步操作应在关闭 。
请求
<空>
节点
在 fuchsia.driver.framework/topology.fidl 中定义
驱动程序通过该协议管理其所绑定的节点。
驱动程序应保持其客户端与节点的连接。正在丢弃
在驱动程序运行时使用客户端连接会导致
驱动程序框架从拓扑中移除驱动程序和节点。
如果驾驶员已将 host_restart_on_crash
设置为“true”在其
组件清单中,连接断开会启动
驱动程序主机和驱动程序。
AddChild
向此节点添加一个子节点。
如果存在 node
,此驱动程序将负责绑定到
新创建的子项目。否则,驱动程序框架会找到
适当的驱动程序,将子节点绑定到。
请求
名称 | 类型 |
---|---|
args |
NodeAddArgs
|
controller |
server_end<NodeController>
|
node |
server_end<Node>?
|
响应
名称 | 类型 |
---|---|
payload |
Node_AddChild_Result
|
NodeController
在 fuchsia.driver.framework/topology.fidl 中定义
父节点用来控制其某个子节点的协议。
OnBind
在关联的 Node
绑定到驱动程序时触发的事件。
响应
<空>
移除
移除节点及其所有子节点。
请求
<空>
RequestBind
框架尝试将驱动程序绑定到此节点的请求。 这是绑定的额外请求,因为框架会尝试绑定一个节点一次 创建节点时
- 如果该节点已绑定且
force_rebind
为 false,则会发生ZX_ERR_ALREADY_BOUND
错误。 - 如果节点有未完成的 |RequestBind|,则会发生
ZX_ERR_ALREADY_EXISTS
错误调用包含 尚未完成。
请求
名称 | 类型 |
---|---|
payload |
NodeControllerRequestBindRequest
|
响应
名称 | 类型 |
---|---|
payload |
NodeController_RequestBind_Result
|
结构体
BindRule
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
表示父规范中的绑定规则。
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
key |
NodePropertyKey
|
属性键。 |
无默认设置 |
condition |
Condition
|
用于评估 中的属性值的条件 匹配过程。值必须为“ACCEPT” 或拒绝。 |
无默认设置 |
values |
vector<NodePropertyValue>[64]
|
属性值列表。不得为空。属性 值必须属于同一类型。 |
无默认设置 |
CompositeNodeManager_AddSpec_Response
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
<空>
Driver_Start_Response
在 fuchsia.driver.framework/driver.fidl 中定义
<空>
NodeController_RequestBind_Response
在 fuchsia.driver.framework/topology.fidl 中定义
<空>
NodeProperty
在 fuchsia.driver.framework/topology.fidl 中定义
节点属性的定义。属性通常用于将 节点添加到驱动程序以进行驱动程序绑定。
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
key |
NodePropertyKey
|
属性的键。 |
无默认设置 |
value |
NodePropertyValue
|
属性的值。 |
无默认设置 |
NodePropertyEntry
在 fuchsia.driver.framework/driver_start_args.fidl 中定义
包含属于某个节点的节点属性。
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
name |
NodeName
|
具有 |node_properties| 的节点的名称。 |
无默认设置 |
properties |
NodePropertyVector
|
属于名称为 |node_name| 的节点的节点属性。如果 该节点是一个复合,那么 |properties|为空,不包含 其父母的属性。 |
无默认设置 |
Node_AddChild_Response
在 fuchsia.driver.framework/topology.fidl 中定义
<空>
ParentSpec
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
作为父级从 创建的复合节点的节点的规范 复合节点规范
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
bind_rules |
vector<BindRule>[64]
|
父级的绑定规则。属性键必须是唯一的。不得为空。 |
无默认设置 |
properties |
vector<NodeProperty>[64]
|
用于与复合驱动程序的绑定规则匹配的属性。 键必须是唯一的。 |
无默认设置 |
精英
CompositeNodeSpecError 柔性
类型:uint32
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
CompositeNodeManager 协议的错误代码。
名称 | 值 | 说明 |
---|---|---|
MISSING_ARGS |
1 |
未提供复合节点规范的参数。 |
EMPTY_NODES |
2 |
给定复合节点规范的 |
ALREADY_EXISTS |
3 |
给定的复合节点规范中的 |
DRIVER_INDEX_FAILURE |
4 |
未能将该规范添加到驱动程序索引中。 添加时间:20
|
条件:严格
类型:uint32
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
表示绑定规则条件。
名称 | 值 | 说明 |
---|---|---|
未知 |
0 |
|
接受 |
1 |
|
REJECT |
2 |
DriverPackageType 柔性
类型:uint8
在 fuchsia.driver.framework/driver_info.fidl 中定义
驱动程序组件所在的 Fuchsia 软件包的类型。 如需详细了解各种软件包类别,请访问: https://fuchsia.dev/fuchsia-src/concepts/packages/package#types_of_packages
名称 | 值 | 说明 |
---|---|---|
引脚 |
0 |
BOOT 软件包位于 Zircon 启动映像中。 |
BASE |
1 |
BASE 软件包作为静态本地软件包包含在 Fuchsia build 中。 |
已缓存 |
2 |
缓存的软件包是基础软件包,如果完整软件包在解析期间可以更新 。 |
UNIVERSE |
3 |
仅当完整的软件包解析器解析 UNIVERSE 软件包后,它才会进入设备上。 |
NodeError 柔性
类型:uint32
在 fuchsia.driver.framework/topology.fidl 中定义
节点协议的错误代码。
名称 | 值 | 说明 |
---|---|---|
内部 |
1 |
|
NODE_REMOVED |
2 |
|
NAME_MISSING |
3 |
|
NAME_INVALID |
4 |
节点的名称无效。具体来说,名称中不能包含句点。 。 |
NAME_ALREADY_EXISTS |
5 |
存在同名的同级节点。 |
OFFER_SOURCE_NAME_MISSING |
6 |
此节点的优惠缺少来源名称。 |
OFFER_REF_EXISTS |
7 |
此节点的优惠不应具有来源或目标。 |
SYMBOL_NAME_MISSING |
8 |
此节点的符号缺少名称。 |
SYMBOL_ADDRESS_MISSING |
9 |
此节点的符号缺少地址。 |
SYMBOL_ALREADY_EXISTS |
10 |
此节点有另一个同名的符号。 |
UNBIND_CHILDREN_IN_PROGRESS |
11 |
该节点正在解除绑定其所有子级。 添加时间:20
|
表
CompositeDriverInfo
在 fuchsia.driver.framework/driver_info.fidl 中定义
复合驱动程序的信息。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
composite_name |
string
|
驱动程序的复合绑定规则中指定的复合名称。 |
2 |
driver_info |
DriverInfo
|
驱动程序的一般信息。 |
CompositeDriverMatch
在 fuchsia.driver.framework/driver_info.fidl 中定义
与复合对象匹配的复合驱动程序的信息。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
composite_driver |
CompositeDriverInfo
|
匹配的复合驱动程序的信息。 |
2 |
parent_names |
vector<string>
|
所有父名称的列表,按索引排序。 这些名称来自驱动程序的复合绑定规则中的节点定义。 |
3 |
primary_parent_index |
uint32
|
主节点索引。由驱动程序的 复合绑定规则 |
CompositeInfo
在 fuchsia.driver.framework/driver_info.fidl 中定义
由复合节点规范定义的复合对象的信息。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
spec |
CompositeNodeSpec
|
创建此复合节点规范时所用的规范信息。 |
2 |
matched_driver |
CompositeDriverMatch
|
仅在驱动程序安装后可用的节点规范信息 与此规范父级中的属性相匹配。 |
CompositeNodeSpec
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
表示复合节点规范的结构。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
name |
string
|
复合节点规范的名称。 |
2 |
parents |
vector<ParentSpec>
|
复合节点规范中的节点。不得为空。第一个节点 主节点 |
CompositeParent
在 fuchsia.driver.framework/driver_info.fidl 中定义
由复合节点规范定义的复合资源的父级。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
composite |
CompositeInfo
|
作为其父级的复合对象的相关信息。 |
2 |
index |
uint32
|
该父级在规范的父级中的索引。 |
DevfsAddArgs 资源
在 fuchsia.driver.framework/topology.fidl 中定义
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
connector |
fuchsia.device.fs/Connector
|
这是要在 devfs 中安装的连接器。
当客户端连接到文件系统中的此节点时,系统会调用 |
2 |
class_name |
string[255]
|
这是在 devfs 中安装此节点的类名称。
该节点将放置在 /dev/class/{class_name} 中。
如果 /dev/class/ 下不存在 |
3 |
inspect |
handle<vmo>
|
这是将安装在 devfs 中的检查数据的 vmo。 可选:如果未提供此属性,则 devfs 的检查数据将为空。 |
4 |
connector_supports |
fuchsia.device.fs/ConnectionType
|
|连接器|支持的连接类型。 驱动程序框架应处理 连接器。 如果未提供,则仅假定连接器支持的设备类型。 添加时间:16
|
5 |
controller_connector |
fuchsia.device.fs/Connector
|
这是要在 devfs 中安装的控制器连接器。
当客户端连接到 device_controller 连接时,系统会调用 添加时间:HEAD
|
DeviceCategory
在 fuchsia.driver.framework/driver_info.fidl 中定义
驱动程序的组件清单中提供的设备类别。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
category |
string
|
|
2 |
subcategory |
string
|
DriverInfo
在 fuchsia.driver.framework/driver_info.fidl 中定义
驱动程序的常规信息,与复合驱动程序和普通驱动程序一起使用。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
url |
string[4096]
|
驱动程序组件的网址。 |
2 |
name |
string
|
驱动程序的名称,取自 |
3 |
colocate |
bool
|
如果为 true,则驱动程序应共置于其父级的 DriverHost。 |
4 |
package_type |
DriverPackageType
|
此驱动程序所在软件包的类型。 |
5 |
is_fallback |
bool
|
如果为 true,则该驱动程序是后备驱动程序。后备驱动程序有 因此,只有在 没有匹配的非后备驱动程序。 |
6 |
device_categories |
vector<DeviceCategory>
|
设备类别 |
7 |
bind_rules_bytecode |
vector<uint8>
|
绑定规则,用于声明一组要评估的约束条件,以便 确定驱动程序索引器是否应将此驱动程序绑定到某个 设备。 |
8 |
driver_framework_version |
uint8
|
此驱动程序正在使用的驱动程序框架版本。 支持的值包括 1 (DFv1) 和 2 (DFv2)。 如果未提供,则将假定版本为 1。 |
9 |
is_disabled |
bool
|
驱动程序是否已停用。如果为 true,则不会选择此驱动程序绑定到节点。 添加时间:17
|
DriverStartArgs 资源
在 fuchsia.driver.framework/driver_start_args.fidl 中定义
用于启动驱动程序的参数。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
node |
Node
|
驱动程序绑定到的节点。 |
2 |
symbols |
vector<NodeSymbol>[64]
|
提供给驱动程序的符号,用于 |node|。这些信息来自 添加了 |node|,并且过滤为绑定中请求的符号 计划。 |
3 |
url |
fuchsia.url/Url
|
包含驱动程序的软件包的网址。这些信息仅供参考 仅用于提供检查所需的数据。 |
4 |
program |
fuchsia.data/Dictionary
|
要启动的驾驶员的相关信息。目前,我们支持 以下条目:
|
5 |
incoming |
vector<fuchsia.component.runner/ComponentNamespaceEntry>[32]
|
提供给驱动程序的传入命名空间。 |
6 |
outgoing_dir |
server_end<fuchsia.io/Directory>
|
驱动程序提供的传出目录。 |
7 |
config |
handle<vmo>
|
传递给驱动程序的配置。 |
8 |
node_name |
string
|
驱动程序绑定到的节点的名称。 |
9 |
node_properties |
NodePropertyDictionary
|
驱动程序绑定到的节点的节点属性。 如果节点是非复合节点,则使用“default”条目将包含 节点自己的属性。 如果该节点是一个复合节点,则其每个父节点都有一个条目 而“default”条目将引用主要复合父级 节点的属性。复合父节点的属性是 而非原始配置中的节点规范 父级属性。 添加时间:19
|
NodeAddArgs 资源
在 fuchsia.driver.framework/topology.fidl 中定义
用于添加节点的参数。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
name |
NodeName
|
节点的名称。 |
2 |
offers |
vector<fuchsia.component.decl/Offer>[128]
|
为绑定到此节点的驱动程序提供的功能。 驱动程序必须确保这些功能已添加到其传出目录中 然后再添加子节点 移除了:19 已弃用:18
|
3 |
symbols |
vector<NodeSymbol>[64]
|
要提供给绑定到此节点的驱动程序的函数。 |
4 |
properties |
NodePropertyVector
|
节点的属性。 |
5 |
devfs_args |
DevfsAddArgs
|
有关如何将此节点添加到 devfs 的参数。 |
6 |
offers2 |
vector<Offer>[128]
|
为绑定到此节点的驱动程序提供的功能。 驱动程序必须确保这些功能已添加到其传出目录中 然后再添加子节点 添加时间:18
|
NodeControllerRequestBindRequest
在 fuchsia.driver.framework/topology.fidl 中定义
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
force_rebind |
bool
|
如果为 true,则节点在尝试 通过常规绑定过程进行绑定 |
2 |
driver_url_suffix |
string
|
如果设置此值,则只有与此网址后缀匹配的驱动程序才会被纳入 绑定。 例如:“gpt.cm”、“meta/gpt.cm”、“fuchsia-boot:///#meta/gpt.cm”。 |
NodeSymbol
在 fuchsia.driver.framework/topology.fidl 中定义
驱动程序为节点提供的符号的定义。本地符号 驱动程序主机。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
name |
string[128]
|
符号的名称。 |
2 |
address |
uint64
|
驱动程序主机进程中符号的虚拟地址。 |
联合体
CompositeNodeManager_AddSpec_Result strict
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
CompositeNodeManager_AddSpec_Response
|
|
2 |
err |
CompositeNodeSpecError
|
|
3 |
framework_err |
internal
|
Driver_Start_Result strict
在 fuchsia.driver.framework/driver.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Driver_Start_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodeController_RequestBind_Result 严格
在 fuchsia.driver.framework/topology.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
NodeController_RequestBind_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodePropertyKey 严格
在 fuchsia.driver.framework/topology.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
int_value |
NodePropertyKeyUint
|
|
2 |
string_value |
NodePropertyKeyString
|
NodePropertyValue 柔性
在 fuchsia.driver.framework/topology.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
int_value |
NodePropertyValueUint
|
|
2 |
string_value |
NodePropertyValueString
|
|
3 |
bool_value |
NodePropertyValueBool
|
|
4 |
enum_value |
NodePropertyValueEnum
|
Node_AddChild_Result 严格
在 fuchsia.driver.framework/topology.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Node_AddChild_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
优惠灵活
在 fuchsia.driver.framework/topology.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
zircon_transport |
fuchsia.component.decl/Offer
|
|
2 |
driver_transport |
fuchsia.component.decl/Offer
|
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
MAX_NAMESPACE_COUNT |
fuchsia.component.runner/MAX_NAMESPACE_COUNT
|
uint32 |
|
MAX_NODE_NAME_LENGTH |
128
|
uint8 |
|
MAX_OFFER_COUNT |
fuchsia.component/MAX_DYNAMIC_OFFER_COUNT
|
uint32 |
|
MAX_PROPERTY_COUNT |
64
|
uint8 |
|
MAX_RESOURCE_NAME_LENGTH |
128
|
uint8 |
添加时间:18
|
MAX_SYMBOL_COUNT |
64
|
uint8 |
|
MAX_SYMBOL_NAME_LENGTH |
128
|
uint8 |
别名
名称 | 值 | 说明 |
---|---|---|
NodeName |
string [MAX_NODE_NAME_LENGTH ] |
|
NodePropertyDictionary |
vector [fidl/MAX ] |
添加时间:19
|
NodePropertyKeyString |
string [256 ] |
|
NodePropertyKeyUint |
uint32 |
|
NodePropertyValueBool |
bool |
|
NodePropertyValueEnum |
string [256 ] |
|
NodePropertyValueString |
string [256 ] |
|
NodePropertyValueUint |
uint32 |
|
NodePropertyVector |
vector [MAX_PROPERTY_COUNT ] |