协议
渠道
在 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 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Channel_RegisterListener_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Channel_SendMessage_Result strict
在 fuchsia.hardware.mailbox/mailbox.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Channel_SendMessage_Response
|
|
2 |
err |
zx/Status
|
Channel_SendRequest_Result strict
在 fuchsia.hardware.mailbox/mailbox.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Channel_SendRequest_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Listener_OnMessage_Result strict
在 fuchsia.hardware.mailbox/mailbox.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Listener_OnMessage_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Listener_OnRequest_Result strict
在 fuchsia.hardware.mailbox/mailbox.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Listener_OnRequest_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
服务
服务
在 fuchsia.hardware.mailbox/mailbox.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| channel |
fuchsia.hardware.mailbox/Channel
|
渠道 |