协议
RadarBurstInjector
在 fuchsia.hardware.radar/radar.fidl 中定义
测试客户端可以使用此协议通过虚拟雷达驱动程序将连拍数据注入雷达客户端。一次只能连接一个此协议的客户端。雷达代理将向尝试连接的所有其他客户端发送 epitaph 状态代码 ZX_ERR_ALREADY_BOUND
,并关闭通道。
EnqueueBursts
将带有要注入的爆发数据的指定 VMO 加入队列。注入来自此 VMO 的所有脉冲串后,雷达代理将移至队列中的下一个 VMO。在 OnBurstsDelivered()
返回 VMO 之前,调用方不得写入 VMO。如果注入器客户端意外断开连接,VMO 将关闭并取消映射。
爆发由雷达代理以底层驱动程序的 GetBurstProperties()
方法报告的速率注入。如果在将传送脉冲串时队列中没有任何 VMO,雷达代理将停止发送脉冲串,直到调用 EnqueueBursts()
或 StopBurstInjection()
。
- 向
bursts
请求包含要注入的爆发的BurstData
结构体。
- 响应
bursts_id
是在从此缓冲区注入最后一个脉冲串后通过OnBurstsDelivered()
传回的 ID。
- 下列
StatusCode
值之一出错: VMO_BAD_HANDLE
:VMO 句柄无效。VMO_ACCESS_DENIED
:VMO 没有足够的权限。VMO_TOO_SMALL
:VMO 太小,无法容纳指定的数量-
of bursts.
INVALID_ARGS
:连拍次数为零。BAD_STATE
:之前对StopBurstInjection()
的调用仍在进行中-
pending.
请求
名称 | 类型 |
---|---|
bursts |
BurstData
|
响应
名称 | 类型 |
---|---|
payload |
RadarBurstInjector_EnqueueBursts_Result
|
GetBurstProperties
返回传感器报告的连拍图的大小和周期。
- 响应
size
表示每个雷达脉冲串的大小(以字节为单位)。 period
表示脉冲串之间的间隔时间(以纳秒为单位)。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
size |
uint32
|
period |
zx/Duration
|
OnBurstsDelivered
返回与先前传递给 EnqueueBursts()
的 BurstData
结构体对应的 ID。收到此事件后,客户端可自由写入 VMO,如果需要,将其传递回雷达代理进行注入。
- 请求
bursts_id
之前调用EnqueueBursts()
返回的 ID。
响应
名称 | 类型 |
---|---|
bursts_id |
uint32
|
StartBurstInjection
指示雷达代理从已加入队列的 VMO,而不是从真正的雷达驱动程序中读取未来的脉冲串。雷达代理将尝试在雷达驱动程序完成时发送第一个注入的脉冲串。如果队列为空,则发送脉冲串将停止,直到队列中有更多脉冲串可用。请参阅上文的 EnqueueBursts()
。
radar-proxy 会在开始传输已加入队列的脉冲串之前对实际雷达驱动程序调用 StopBursts()
。
- 下列
StatusCode
值之一出错: BAD_STATE
:注入已经开始,或之前已调用-
to `StopBurstInjection()` is still pending.
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
payload |
RadarBurstInjector_StartBurstInjection_Result
|
StopBurstInjection
指示雷达代理完成注入当前在队列中的 VMO 的脉冲串,然后切换回来自真实雷达驱动程序的脉冲串。在为注入最终的 VMO 调用 OnBurstsDelivered()
之前,不会发送对此调用的回复,并且在此期间进行的任何其他调用都将返回错误。
在此调用过程中,radar-proxy 将在真实雷达驱动程序上调用 StartBursts()
。RadarBurstReader 客户端可能要延迟一段时间才能再次开始接收来自驱动程序的脉冲串。
- 下列
StatusCode
值之一出错: BAD_STATE
:注入已停止,或对此的调用-
method is still pending.
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
payload |
RadarBurstInjector_StopBurstInjection_Result
|
RadarBurstReader
在 fuchsia.hardware.radar/radar.fidl 中定义
GetBurstProperties
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
size |
uint32
|
period |
zx/Duration
|
OnBurst
返回包含单个爆发(即收到爆发的时间)的 VMO 的 ID。必须通过调用 UnlockVmo()
将 VMO 的所有权返回给驱动程序,并且在此之前,驱动程序不会写入该虚拟机。请参阅相关文档,了解连拍格式规范。
如果没有已解锁的 VMO,驱动程序将丢弃流量爆发。这也为正在发生的事件数提供了流控制。当收到爆发且没有 VMO 未解锁时,系统将调用 OnBurst()
并将 OUT_OF_VMOS
设置为错误。在至少一个 VMO 解锁之前,系统不会再次调用 OnBurst
。
- 请求
burst
- 包含该爆发的 VMO 的 ID 以及收到该脉冲串的时间。
- 下列
StatusCode
值之一出错: -
`OUT_OF_VMOS`: No unlocked VMOs were available to hold the burst.
-
The driver will wait for at least one VMO to become available
-
before sending more events to this client.
-
`SENSOR_TIMEOUT`: The driver could not drain the sensor FIFO
-
quickly enough.
-
`SENSOR_ERROR`: An unspecified driver or sensor error occurred
-
when trying to read the burst.
响应
名称 | 类型 |
---|---|
payload |
RadarBurstReaderOnBurstRequest
|
OnBurst2
响应
名称 | 类型 |
---|---|
payload |
RadarBurstReaderOnBurst2Request
|
RegisterVmos
注册 VMO 以供将来使用,并将其与 vmo_id 相关联,vmo_id 可与 UnregisterVmos()
和 OnBurst()
一起使用。驱动程序将使用 ZX_VM_PERM_WRITE
映射 vmos。客户端应仅读取通过 OnBurst()
发送的已注册 VMO。假设 vmo 的大小至少是脉冲串大小,并且 vmo_ids
和 vmos
的大小必须相同。
- 请求
vmo_ids
获取与每个 VMO 关联的 ID 号。 - 请求
vmos
。
- 下列
StatusCode
值之一出错: -
`INVALID_ARGS`: `vmo_ids` and `vmos` were of different sizes.
-
`VMO_BAD_HANDLE`: A handle in `vmos` was invalid.
-
`VMO_ALREADY_REGISTERED`: An ID in `vmo_ids` was already
-
registered.
-
`VMO_ACCESS_DENIED`: A VMO in `vmos` could not be mapped due to
-
insufficient permissions.
-
`VMO_TOO_SMALL`: A VMO in `vmos` was smaller than the burst size.
请求
名称 | 类型 |
---|---|
vmo_ids |
vector<uint32>[300]
|
vmos |
vector<vmo>[300]
|
响应
名称 | 类型 |
---|---|
payload |
RadarBurstReader_RegisterVmos_Result
|
StartBursts
指示驱动程序通过 OnBurst()
开始发送连拍。
请求
<EMPTY>
StopBursts
指示驱动程序通过 OnBurst()
停止发送连拍。如果所有客户端都调用 StopBursts()
,则驱动程序可以选择停止其工作器线程。驱动程序可能会等待单次爆发读取完成,但不会访问客户端的任何 VMO,也不会在回复后调用其观察者。
请注意,客户端可能仍会接收已开始的 OnBurst()
爆发。
请求
<EMPTY>
响应
<EMPTY>
UnlockVmo
向驱动程序发送信号,表明客户端不再读取 VMO。调用此方法后,客户端不得访问 VMO。
- 向
vmo_id
请求要返回到驱动程序的 VMO 的 ID。
请求
名称 | 类型 |
---|---|
vmo_id |
uint32
|
UnregisterVmos
移除与给定 VMO ID 的关联,并将 VMO 返回给客户端。驱动程序在回复后将不再发送任何带有这些 VMO ID 的 OnBurst()
事件,但是,如果在此调用期间传输了这些 ID,客户端仍可能会收到包含这些 ID 的爆发。驱动程序必须返回所有所请求的 VMO,或者返回错误。如果出现错误,驱动程序可能已取消注册部分或全部请求的 VMO。
- 请求
vmo_ids
提供要取消注册并返回的 VMO 的 ID。
- VMO 处理的与
vmo_ids
对应的响应vmos
。
- 下列
StatusCode
值之一出错: -
`INVALID_ARGS`: `vmo_ids` was too big.
-
`VMO_NOT_FOUND`: An ID in `vmo_ids` was not registered.
请求
名称 | 类型 |
---|---|
vmo_ids |
vector<uint32>[300]
|
响应
名称 | 类型 |
---|---|
payload |
RadarBurstReader_UnregisterVmos_Result
|
RadarBurstReaderProvider
在 fuchsia.hardware.radar/radar.fidl 中定义
由雷达驱动程序实现的主要协议。客户端使用此协议与驱动程序建立 RadarBurstReader
连接。
连接
- 请求
server
-RadarBurstReader
服务器端,以便驱动程序绑定到。
- 以下
StatusCode
值之一的错误:BIND_ERROR
:尝试绑定到提供的服务器通道时发生错误。ALREADY_BOUND
:另一个客户端已与驱动程序建立RadarBurstReader
连接。
请求
名称 | 类型 |
---|---|
server |
server_end<RadarBurstReader>
|
响应
名称 | 类型 |
---|---|
payload |
RadarBurstReaderProvider_Connect_Result
|
RadarSensorInfo
在 fuchsia.hardware.radar/radar.fidl 中定义
GetBurstProperties
返回传感器报告的连拍图的大小和周期。
- 响应
size
表示每个雷达脉冲串的大小(以字节为单位)。 period
表示脉冲串之间的间隔时间(以纳秒为单位)。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
size |
uint32
|
period |
zx/Duration
|
结构
火花
在 fuchsia.hardware.radar/radar.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
vmo_id |
uint32
|
无默认取景方式 | |
timestamp |
zx/Time
|
无默认取景方式 |
BurstData 资源
在 fuchsia.hardware.radar/radar.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
vmo |
handle<vmo>
|
一个 VMO,其中存储了零个或多个雷达脉冲串,大小由 |
无默认取景方式 |
burst_count |
uint32
|
存储在 |
无默认取景方式 |
RadarBurstInjector_EnqueueBursts_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
bursts_id |
uint32
|
无默认取景方式 |
RadarBurstInjector_StartBurstInjection_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
<EMPTY>
RadarBurstInjector_StopBurstInjection_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
<EMPTY>
RadarBurstReaderProvider_Connect_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
<EMPTY>
RadarBurstReader_RegisterVmos_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
<EMPTY>
RadarBurstReader_UnregisterVmos_Response 资源
在 fuchsia.hardware.radar/radar.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
vmos |
vector<vmo>[300]
|
无默认取景方式 |
枚举
状态代码严格
类型:uint32
在 fuchsia.hardware.radar/radar.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
未指定 |
0 |
发生了不明错误(通常不应使用)。 |
成功 |
1 |
请求已成功完成。 |
ALREADY_BOUND |
2 |
已调用 |
BIND_ERROR |
3 |
尝试绑定到提供的服务器通道时, |
INVALID_ARGS |
4 |
传递到 |
VMO_BAD_HANDLE |
5 |
VMO 句柄无效。 |
VMO_ALREADY_REGISTERED |
6 |
已使用此 ID 注册了 VMO。 |
VMO_NOT_FOUND |
7 |
未找到与指定 ID 对应的已注册 VMO。 |
VMO_ACCESS_DENIED |
8 |
由于权限不足,无法向客户端 VMO 写入或映射。 |
VMO_TOO_SMALL |
9 |
客户端 VMO 小于爆发大小(请参阅 |
OUT_OF_VMOS |
10 |
已收到爆发,但没有可用的已解锁 VMO。 |
SENSOR_TIMEOUT |
11 |
在预期时段内未收到连拍。 |
SENSOR_ERROR |
12 |
遇到未指定的驱动程序或传感器错误。 |
BAD_STATE |
13 |
对于此次通话,雷达驱动程序或代理的状态有误。 |
联合
RadarBurstInjector_EnqueueBursts_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_EnqueueBursts_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StartBurstInjection_Result strict
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_StartBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StopBurstInjection_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_StopBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReaderOnBurst2Request 灵活
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
burst |
Burst
|
|
2 |
error |
StatusCode
|
RadarBurstReaderOnBurstRequest 灵活
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
burst |
Burst
|
|
2 |
error |
StatusCode
|
RadarBurstReaderProvider_Connect_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstReaderProvider_Connect_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_RegisterVmos_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstReader_RegisterVmos_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_UnregisterVmos_Result 严格 资源
在 fuchsia.hardware.radar/radar.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstReader_UnregisterVmos_Response
|
|
2 |
err |
StatusCode
|
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
VMO_VECTOR_MAX_COUNT |
300
|
uint32 |
对 |