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
|
用來評估屬性值的條件 比對程序值須為 接受 而遭到拒絕。 |
無預設 |
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| 節點的節點屬性。如果 節點是複合的 |屬性|為空白,且不含 母親資源。 |
無預設 |
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]
|
用於比對複合驅動程式庫繫結規則的屬性。 鍵不得重複。 |
無預設 |
ENUMS
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 |
|
拒絕 |
2 |
DriverPackageType 彈性
類型:uint8
在 fuchsia.driver.framework/driver_info.fidl 中定義
驅動程式庫元件所在的 Fuchsia 套件類型。 如要進一步瞭解各種套件方案,請前往: https://fuchsia.dev/fuchsia-src/concepts/packages/package#types_of_packages
名稱 | 值 | 說明 |
---|---|---|
BoOT |
0 |
BOOT 套件位於 Zircon 開機映像檔中。 |
BASE |
1 |
Fuchsia 版本以靜態本機套件形式納入 BASE 套件。 |
已接收 |
2 |
CACHED 套件是 BASE 套件,如果完整套件,可在解析期間更新 可以使用解析器 |
取消 |
3 |
只有當完整套件解析器解決問題後,UNIVERSE 套件才會傳送到裝置上。 |
NodeError 彈性
類型:uint32
定義於 fuchsia.driver.framework/topology.fidl
Node 通訊協定的錯誤代碼。
名稱 | 值 | 說明 |
---|---|---|
僅限內部 |
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>
|
這是將在 devf 安裝的檢查資料 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|。這些資訊來自驅動程式庫 並套用到繫結中要求的符號 計畫。 |
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 嚴格
在 fuchsia.driver.framework/composite_node_spec.fidl 中定義
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
CompositeNodeManager_AddSpec_Response
|
|
2 |
err |
CompositeNodeSpecError
|
|
3 |
framework_err |
internal
|
Driver_Start_Result 嚴格
定義於 fuchsia.driver.framework/driver.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Driver_Start_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodeController_RequestBind_Result 嚴格
定義於 fuchsia.driver.framework/topology.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
NodeController_RequestBind_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodePropertyKey 嚴格
定義於 fuchsia.driver.framework/topology.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
int_value |
NodePropertyKeyUint
|
|
2 |
string_value |
NodePropertyKeyString
|
NodePropertyValue 彈性
定義於 fuchsia.driver.framework/topology.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
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 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Node_AddChild_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
提供彈性
定義於 fuchsia.driver.framework/topology.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
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 ] |