协议
RadarBurstInjector
在 fuchsia.hardware.radar/radar.fidl 中定义
测试客户端可以使用此协议将脉冲串数据注入雷达客户端
虚拟雷达驱动此协议只能有一个客户端
同时保持连接状态雷达代理会发送 epitaph 状态代码
ZX_ERR_ALREADY_BOUND
与任何其他客户端的渠道关闭和关闭
进行连接。
EnqueueBursts
将包含要注入的突发数据的给定 VMO 加入队列。全部连拍后
雷达代理将进入下一个 VMO,
队列中的 VMO。在对 VMO 执行写入操作之前,调用方不得执行写入操作
由 OnBurstsDelivered()
返回。VMO 将关闭且未映射
如果注入器客户端意外断开连接,则会发生此错误
雷达代理以
底层驱动程序的 GetBurstProperties()
方法。如果
等待发送一个连拍队列,雷达代理就会停止
在 EnqueueBursts()
或 StopBurstInjection()
之前发送大量数据
调用该方法。
- 向
bursts
请求包含要注入的脉冲的BurstData
结构体。
- 响应
bursts_id
要传回的 ID 此缓冲区的最终脉冲串发出后OnBurstsDelivered()
任意时间。
- 出现以下某个
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
表示爆发之间间隔的时间(以纳秒为单位)。
请求
<空>
响应
名称 | 类型 |
---|---|
size |
uint32
|
period |
zx/Duration
|
OnBurstsDelivered
返回与之前传递到的 BurstData
结构体对应的 ID
EnqueueBursts()
。收到此事件后,客户端可以自由写入
发送到 VMO,如果需要,可将其传回雷达代理以进行注入。
- 请求
bursts_id
,即上一次调用返回的 IDEnqueueBursts()
。
响应
名称 | 类型 |
---|---|
bursts_id |
uint32
|
StartBurstInjection
指示雷达代理从已加入队列的 VMO 读取未来的爆发数据,而不是读取
来自真实雷达驱动程序。雷达代理会尝试将
第一次注入脉冲串的时间达到雷达驱动程序应该达到的时间
如果队列为空或变为空,则爆发的发送将停止
直到队列中有更多突发请求为止。请参阅EnqueueBursts()
。
雷达代理会在此之前对真实雷达驱动程序调用 StopBursts()
它开始传送加入队列的突发请求
- 出现以下某个
StatusCode
值时出错: BAD_STATE
:已开始注射或之前通话-
to `StopBurstInjection()` is still pending.
请求
<空>
响应
名称 | 类型 |
---|---|
payload |
RadarBurstInjector_StartBurstInjection_Result
|
StopBurstInjection
指示雷达代理完成从当前设备上的 VMO 的脉冲串注入
队列,然后切换回传递真实雷达驱动程序的脉冲串。
在 OnBurstsDelivered()
之前,系统不会发送对此通话的回复
以注入最终的 VMO,以及进行任何其他调用,
会返回错误。
雷达代理将对真实雷达驱动程序调用 StartBursts()
。RadarBurstReader 客户端可能要延迟一些时间才能启动
以便再次接收来自驾驶员的突发请求。
- 出现以下某个
StatusCode
值时出错: BAD_STATE
:注入已停止或对此进行的调用-
method is still pending.
请求
<空>
响应
名称 | 类型 |
---|---|
payload |
RadarBurstInjector_StopBurstInjection_Result
|
RadarBurstReader
在 fuchsia.hardware.radar/radar.fidl 中定义
GetBurstProperties
请求
<空>
响应
名称 | 类型 |
---|---|
size |
uint32
|
period |
zx/Duration
|
OnBurst
返回包含单个爆发的 VMO 的 ID,即爆发的时间
。必须在以下日期之前将 VMO 的所有权归还给驱动程序:
调用 UnlockVmo()
;在此之前,驱动程序不会写入数据。
如需了解连拍格式规范,请参阅相关文档。
如果没有解锁的 VMO,驱动程序将丢弃爆发。这也
为进行中的事件数量提供流控制。当一个连拍
且未解锁 VMO,将使用如下方法调用 OnBurst()
:
已将 OUT_OF_VMOS
设为错误。在下列日期之前,系统不会再次调用 OnBurst
:
至少已解锁一个 VMO。
- 向
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
|
RegisterVmos
注册 VMO 以备将来使用,并将其与 vmo_ids 相关联。
可与 UnregisterVmos()
和 OnBurst()
搭配使用。vmos 将
由驱动程序使用 ZX_VM_PERM_WRITE
映射。客户只应
读取通过 OnBurst()
发送的已注册 VMO。行动号召视频广告系列的规模
vmo_ids
和
vmos
必须相同。
- 请求
vmo_ids
与每个 VMO 关联的 ID 号。 - 请求
vmos
,与每个 ID 对应的 VMO 处理请求。
- 出现以下某个
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()
开始发送连拍。
请求
<空>
StopBursts
通过 OnBurst()
告知驾驶员停止发送连拍。如果所有客户
调用 StopBursts()
,那么驱动程序可以选择停止其工作器线程。
驱动程序可以等待单次突发读取完成,但不会
访问客户端的任何 VMO,或在回复后调用其观察者。
请注意,已进行中的OnBurst()
连拍
客户端。
请求
<空>
响应
<空>
UnlockVmo
向驱动程序发出信号,表明客户端不再读取 VMO。通过 调用此方法后,客户端不得访问 VMO。
- 请求
vmo_id
返回给驱动程序的 VMO 的 ID。
请求
名称 | 类型 |
---|---|
vmo_id |
uint32
|
UnregisterVmos
移除与给定 VMO ID 的关联,并将 VMO 返回给
客户端。驱动程序不会再发送任何包含以下内容的 OnBurst()
事件:
这些 VMO ID,但客户端可能仍会收到
如果这些 ID 在此次调用期间处于传输状态,则会随这些 ID 一起发送。通过
驱动程序必须返回所有请求的 VMO,或返回一个错误。在
错误情况下,驱动程序可能取消注册了部分或全部
请求的 VMO。
- 向
vmo_ids
请求要取消注册并返回的 VMO 的 ID。
- 与
vmo_ids
对应的 VMO 处理的响应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
连接。
连接
- 向
RadarBurstReader
服务器端请求server
以供驱动程序 绑定至。
- 出现以下某个
StatusCode
值时出错:BIND_ERROR
:尝试绑定到 提供的服务器渠道ALREADY_BOUND
:其他客户已 与驱动程序建立RadarBurstReader
连接。
请求
名称 | 类型 |
---|---|
server |
server_end<RadarBurstReader>
|
响应
名称 | 类型 |
---|---|
payload |
RadarBurstReaderProvider_Connect_Result
|
RadarSensorInfo
在 fuchsia.hardware.radar/radar.fidl 中定义
GetBurstProperties
返回传感器报告的连拍大小和周期。
- 响应
size
表示每个雷达脉冲串的大小(以字节为单位)。 - 响应
period
表示爆发之间间隔的时间(以纳秒为单位)。
请求
<空>
响应
名称 | 类型 |
---|---|
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 中定义
<空>
RadarBurstInjector_StopBurstInjection_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
<空>
RadarBurstReaderProvider_Connect_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
<空>
RadarBurstReader_RegisterVmos_Response
在 fuchsia.hardware.radar/radar.fidl 中定义
<空>
RadarBurstReader_UnregisterVmos_Response 资源
在 fuchsia.hardware.radar/radar.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
vmos |
vector<vmo>[300]
|
无默认设置 |
精英
状态代码 strict
类型: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 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_EnqueueBursts_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StartBurstInjection_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_StartBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StopBurstInjection_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_StopBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReaderOnBurstRequest 灵活
在 fuchsia.hardware.radar/radar.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
burst |
Burst
|
|
2 |
error |
StatusCode
|
RadarBurstReaderProvider_Connect_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstReaderProvider_Connect_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_RegisterVmos_Result 严格
在 fuchsia.hardware.radar/radar.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstReader_RegisterVmos_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_UnregisterVmos_Result 严格 资源
在 fuchsia.hardware.radar/radar.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RadarBurstReader_UnregisterVmos_Response
|
|
2 |
err |
StatusCode
|
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
VMO_VECTOR_MAX_COUNT |
300
|
uint32 |
对 |