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] |