fuchsia.hardware.radar

添加次数:7

协议

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.
    
添加数量:14

响应

名称类型
payload RadarBurstReaderOnBurstRequest

OnBurst2

已移除:17

响应

名称类型
payload RadarBurstReaderOnBurst2Request

RegisterVmos

注册 VMO 以供将来使用,并将其与 vmo_id 相关联,vmo_id 可与 UnregisterVmos()OnBurst() 一起使用。驱动程序将使用 ZX_VM_PERM_WRITE 映射 vmos。客户端应仅读取通过 OnBurst() 发送的已注册 VMO。假设 vmo 的大小至少是脉冲串大小,并且 vmo_idsvmos 的大小必须相同。

  • 请求 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,其中存储了零个或多个雷达脉冲串,大小由 GetBurstProperties() 报告。这些脉冲串连续存储,它们之间没有内边距。

无默认取景方式
burst_count uint32

存储在 vmo 中的连拍数量。

无默认取景方式

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

请求已成功完成。

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 中定义

序数变体类型说明
response RadarBurstInjector_EnqueueBursts_Response
err StatusCode

RadarBurstInjector_StartBurstInjection_Result strict

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

序数变体类型说明
response RadarBurstInjector_StartBurstInjection_Response
err StatusCode

RadarBurstInjector_StopBurstInjection_Result 严格

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

序数变体类型说明
response RadarBurstInjector_StopBurstInjection_Response
err StatusCode

RadarBurstReaderOnBurst2Request 灵活

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

序数变体类型说明
burst Burst
error StatusCode

RadarBurstReaderOnBurstRequest 灵活

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

序数变体类型说明
burst Burst
error StatusCode

RadarBurstReaderProvider_Connect_Result 严格

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

序数变体类型说明
response RadarBurstReaderProvider_Connect_Response
err StatusCode

RadarBurstReader_RegisterVmos_Result 严格

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

序数变体类型说明
response RadarBurstReader_RegisterVmos_Response
err StatusCode

RadarBurstReader_UnregisterVmos_Result 严格 资源

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

序数变体类型说明
response RadarBurstReader_UnregisterVmos_Response
err StatusCode

常量

名称类型说明
VMO_VECTOR_MAX_COUNT 300 uint32

RegisterVmos()UnregisterVmos() 的一次调用中的 VMO 数量的任意限制;足以满足现有驱动程序十秒的雷达数据。