通訊協定
版本
定義於 fuchsia.hardware.mailbox/mailbox.fidl
Channel 代表單一信箱管道,可用於將訊息傳送至目的地核心。
RegisterListener
為這個管道上收到的訊息註冊監聽器。請勿一次註冊多個事件監聽器。如果事件監聽器已註冊,這項呼叫會失敗,並傳回 ZX_ERR_ALREADY_BOUND。
如要取消註冊事件監聽器,伺服器會關閉其管道端。取消註冊先前的事件監聽器後,可以註冊另一個事件監聽器。
要求
| 名稱 | 類型 |
|---|---|
listener |
client_end:Listener
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Channel_RegisterListener_Result
|
SendMessage
將訊息寫入信箱、中斷目的地核心,以及 (如適用) 等待目的地核心確認訊息。
如果 message 大於硬體可支援的大小,則傳回 ZX_ERR_OUT_OF_RANGE。
要求
| 名稱 | 類型 |
|---|---|
message |
vector<uint8>
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Channel_SendMessage_Result
|
SendRequest
將要求寫入信箱、中斷目的地核心,並等待目的地核心傳送回應。
如果 request 大於硬體可支援的大小,則傳回 ZX_ERR_OUT_OF_RANGE。如果目的地核心不支援將要求與回應建立關聯,則傳回 ZX_ERR_NOT_SUPPORTED。
要求
| 名稱 | 類型 |
|---|---|
request |
vector<uint8>
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Channel_SendRequest_Result
|
Listener
定義於 fuchsia.hardware.mailbox/mailbox.fidl
Listener 用於接收來自郵件匣管道的訊息。
伺服器端由信箱用戶端管理。
OnMessage
在信箱管道收到訊息時呼叫。
信箱驅動程式庫不會同時呼叫 OnMessage。它會等待前一個呼叫完成,再傳送另一則訊息。
如果用戶端未及時回應 OnMessage,信箱驅動程式庫可能會記憶體不足,並捨棄後續訊息。
lease 是選用的喚醒租約接力棒,由信箱驅動程式庫在訊息導致或在喚醒事件期間到達時傳遞,讓系統保持喚醒狀態,直到監聽器處理訊息 (或取得自己的喚醒租約) 為止。
要求
| 名稱 | 類型 |
|---|---|
message |
vector<uint8>
|
lease |
handle<eventpair>?
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Listener_OnMessage_Result
|
OnRequest
在信箱管道收到要求時呼叫。
用戶端應處理要求,並根據要求內容傳回回應酬載。回應會由信箱驅動程式庫傳回遠端核心。
如果事件監聽器傳回錯誤,信箱驅動程式庫會記錄錯誤,且不會向遠端核心傳回任何回應。
並適用與 OnMessage 相同的並行規則。
lease 是選用的喚醒租約接力棒,語意與 OnMessage 相同。
要求
| 名稱 | 類型 |
|---|---|
message |
vector<uint8>
|
lease |
handle<eventpair>?
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Listener_OnRequest_Result
|
STRUCTS
Channel_RegisterListener_Response
定義於 fuchsia.hardware.mailbox/mailbox.fidl
<EMPTY>
Channel_SendMessage_Response
定義於 fuchsia.hardware.mailbox/mailbox.fidl
<EMPTY>
Channel_SendRequest_Response
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
response |
vector<uint8>
|
無預設值 |
Listener_OnMessage_Response
定義於 fuchsia.hardware.mailbox/mailbox.fidl
<EMPTY>
Listener_OnRequest_Response
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
response |
vector<uint8>
|
無預設值 |
TABLES
ChannelInfo
定義於 fuchsia.hardware.mailbox/metadata.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
channel |
uint32
|
頻道編號,這個控制器專屬。必填。 |
2 |
client |
uint32
|
用戶端服務 ID,這個管道專屬。(選用) |
3 |
id |
uint32
|
所有信箱管道的全域專屬 ID。(選用) |
ControllerInfo
定義於 fuchsia.hardware.mailbox/metadata.fidl
ControllerInfo 會透過中繼資料傳遞至信箱控制器驅動程式。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
uint32
|
主機板專屬控制器 ID。(選用) |
2 |
channels |
vector<ChannelInfo>
|
信箱管道。(選用) |
UNIONS
Channel_RegisterListener_Result strict
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Channel_RegisterListener_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Channel_SendMessage_Result strict
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Channel_SendMessage_Response
|
|
2 |
err |
zx/Status
|
Channel_SendRequest_Result strict
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Channel_SendRequest_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Listener_OnMessage_Result strict
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Listener_OnMessage_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Listener_OnRequest_Result strict
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Listener_OnRequest_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
服務
服務
定義於 fuchsia.hardware.mailbox/mailbox.fidl
| 名稱 | 類型 | 傳輸 |
|---|---|---|
| channel |
fuchsia.hardware.mailbox/Channel
|
版本 |