协议
控制器
在 fuchsia.hardware.spi/spi.fidl 中定义
OpenSession
在设备上打开新会话。
一次最多允许一个会话;如果会话已存在,服务器端将关闭并显示 ZX_ERR_ALREADY_BOUND。
请求
| 名称 | 类型 |
|---|---|
session |
server_end:Device
|
设备
在 fuchsia.hardware.spi/spi.fidl 中定义
AssertCs
为此设备断言 CS。 如果总线上有多个设备,则返回 ZX_ERR_NOT_SUPPORTED。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
status |
zx/Result
|
CanAssertCs
如果设备可以调用 |AssertCs()| 和 |DeassertCs()|,则返回 true。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
can |
bool
|
DeassertCs
为此设备取消断言 CS。 如果 CS 已取消断言,则返回 ZX_ERR_BAD_STATE。 如果总线上有多个设备,则返回 ZX_ERR_NOT_SUPPORTED。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
status |
zx/Result
|
Exchange
同时传输和接收数据。tx_buffer 和 rx_buffer 的大小字段必须相同。
请求
| 名称 | 类型 |
|---|---|
tx_buffer |
fuchsia.hardware.sharedmemory/SharedVmoBuffer
|
rx_buffer |
fuchsia.hardware.sharedmemory/SharedVmoBuffer
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.hardware.sharedmemory/SharedVmoIo_Exchange_Result
|
ExchangeVector
全双工 SPI 事务。接收到的数据长度将与传输缓冲区长度完全相同。
请求
| 名称 | 类型 |
|---|---|
txdata |
vector<uint8>:8196
|
响应
| 名称 | 类型 |
|---|---|
status |
zx/Result
|
rxdata |
vector<uint8>:8196
|
接收
将设备中的数据接收到缓冲区。
请求
| 名称 | 类型 |
|---|---|
buffer |
fuchsia.hardware.sharedmemory/SharedVmoBuffer
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.hardware.sharedmemory/SharedVmoIo_Receive_Result
|
ReceiveVector
半双工从 SPI 设备接收数据;始终读取请求的完整大小。
请求
| 名称 | 类型 |
|---|---|
size |
uint32
|
响应
| 名称 | 类型 |
|---|---|
status |
zx/Result
|
data |
vector<uint8>:8196
|
RegisterVmo
注册 VMO 并将所有权转移给驱动程序。 vmo_id:客户端选择的 ID,将在对此 VMO 执行的操作中使用。 vmo:此 VMO 的句柄、偏移量和大小。此 VMO 上的 IO 操作将相对于此处指定的偏移量和大小。 rights:SharedVmoRight 值的位字段,指示如何使用此 VMO。调用方应假定驱动程序将使用这些权限映射和/或固定 VMO。
请求
| 名称 | 类型 |
|---|---|
vmo_id |
uint32
|
vmo |
fuchsia.mem/Range
|
rights |
fuchsia.hardware.sharedmemory/SharedVmoRight
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.hardware.sharedmemory/SharedVmoRegister_RegisterVmo_Result
|
传输
将缓冲区中的数据发送到设备。
请求
| 名称 | 类型 |
|---|---|
buffer |
fuchsia.hardware.sharedmemory/SharedVmoBuffer
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.hardware.sharedmemory/SharedVmoIo_Transmit_Result
|
TransmitVector
向 SPI 设备半双工传输数据;成功时始终传输整个缓冲区。
请求
| 名称 | 类型 |
|---|---|
data |
vector<uint8>:8196
|
响应
| 名称 | 类型 |
|---|---|
status |
zx/Result
|
UnregisterVmo
取消映射和/或取消固定 VMO,并将句柄返回给调用方。
请求
| 名称 | 类型 |
|---|---|
vmo_id |
uint32
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.hardware.sharedmemory/SharedVmoRegister_UnregisterVmo_Result
|
测试
在 fuchsia.hardware.spi/spi.fidl 中定义
ConnectSpiLoopback
在环回模式下打开与 SPI 设备的连接,以用于测试。
如果此 build 中未启用调试,则返回 ZX_ERR_NOT_SUPPORTED。
如果 SPI 实现驱动程序本身不支持环回模式,此调用将成功,但对设备的调用将失败,并显示 ZX_ERR_NOT_SUPPORTED。
请求
| 名称 | 类型 |
|---|---|
server |
server_end:Device
|
响应
| 名称 | 类型 |
|---|---|
payload |
Test_ConnectSpiLoopback_Result
|
获取
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.driver.token/NodeToken_Get_Result
|
STRUCTS
Test_ConnectSpiLoopback_Response
在 fuchsia.hardware.spi/spi.fidl 中定义
<EMPTY>
UNIONS
Test_ConnectSpiLoopback_Result strict
在 fuchsia.hardware.spi/spi.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Test_ConnectSpiLoopback_Response
|
|
2 |
err |
zx/Status
|
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| MAX_TRANSFER_SIZE |
8196
|
uint32 |
服务
ControllerService
在 fuchsia.hardware.spi/spi.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| 设备 |
fuchsia.hardware.spi/Controller
|
渠道 |
服务
在 fuchsia.hardware.spi/spi.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| 设备 |
fuchsia.hardware.spi/Device
|
渠道 |
TestService
在 fuchsia.hardware.spi/spi.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| test |
fuchsia.hardware.spi/Test
|
渠道 |