fuchsia.hardware.radar

添加时间:7

协议

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,即上一次调用返回的 ID EnqueueBursts()

响应

名称类型
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.
    
添加时间:14

响应

名称类型
payload RadarBurstReaderOnBurstRequest

RegisterVmos

注册 VMO 以备将来使用,并将其与 vmo_ids 相关联。 可与 UnregisterVmos()OnBurst() 搭配使用。vmos 将 由驱动程序使用 ZX_VM_PERM_WRITE 映射。客户只应 读取通过 OnBurst() 发送的已注册 VMO。行动号召视频广告系列的规模 vmo_idsvmos 必须相同。

  • 请求 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,其中包含零个或多个由 GetBurstProperties()。连拍会连续存储,没有填充 。

无默认设置
burst_count uint32

存储在 vmo 中的连拍数量。

无默认设置

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

请求已成功完成。

2

已调用 Connect(),但驱动程序正忙于处理另一个客户端。 另一个客户端必须关闭其通道,驱动程序才会变为 。

3

Connect()在尝试绑定到提供的服务器时遇到了错误 。

4

传递给 RegisterVmos() 的矢量大小不一样。

5

VMO 句柄无效。

6

已使用此 ID 注册 VMO。

7

未找到与指定 ID 对应的已注册 VMO。

8

由于客户端 VMO 的数据不足,无法写入或映射 权限。

9

客户端 VMO 小于爆发大小(请参阅 GetBurstSize())。

10

收到了突发请求,但没有解锁的 VMO。

11

未在预期的窗口期收到连拍。

12

遇到未指定的驱动程序或传感器错误。

13

此通话中雷达驱动程序或代理的状态不正确。

联合体

RadarBurstInjector_EnqueueBursts_Result 严格

fuchsia.hardware.radar/radar.fidl 中定义

Ordinal变体类型说明
response RadarBurstInjector_EnqueueBursts_Response
err StatusCode

RadarBurstInjector_StartBurstInjection_Result 严格

fuchsia.hardware.radar/radar.fidl 中定义

Ordinal变体类型说明
response RadarBurstInjector_StartBurstInjection_Response
err StatusCode

RadarBurstInjector_StopBurstInjection_Result 严格

fuchsia.hardware.radar/radar.fidl 中定义

Ordinal变体类型说明
response RadarBurstInjector_StopBurstInjection_Response
err StatusCode

RadarBurstReaderOnBurstRequest 灵活

fuchsia.hardware.radar/radar.fidl 中定义

Ordinal变体类型说明
burst Burst
error StatusCode

RadarBurstReaderProvider_Connect_Result 严格

fuchsia.hardware.radar/radar.fidl 中定义

Ordinal变体类型说明
response RadarBurstReaderProvider_Connect_Response
err StatusCode

RadarBurstReader_RegisterVmos_Result 严格

fuchsia.hardware.radar/radar.fidl 中定义

Ordinal变体类型说明
response RadarBurstReader_RegisterVmos_Response
err StatusCode

RadarBurstReader_UnregisterVmos_Result 严格 资源

fuchsia.hardware.radar/radar.fidl 中定义

Ordinal变体类型说明
response RadarBurstReader_UnregisterVmos_Response
err StatusCode

常量

名称类型说明
VMO_VECTOR_MAX_COUNT 300 uint32

RegisterVmos() 的一次调用中的 VMO 数量的任意限制,或 UnregisterVmos();足以存储现有 10 秒的雷达数据