fuchsia.hardware.radar

新增日期:7

通訊協定

RadarBurstInjector

定義於 fuchsia.hardware.radar/radar.fidl

測試用戶端可能會使用這個通訊協定,透過虛擬雷達驅動程式,將爆發資料插入雷達用戶端。一次只能連線此通訊協定的一個用戶端。radar-proxy 會傳送 epitaph 狀態碼 ZX_ERR_ALREADY_BOUND,以便與嘗試連線的其他用戶端交換頻道。

EnqueueBursts

將指定 VMO 加入要插入的爆發資料佇列。在插入這個 VMO 的所有爆發作業後,radar-Proxy 會移至佇列中的下一個 VMO。在 OnBurstsDelivered() 傳回呼叫端之前,呼叫端不得寫入 VMO。如果插入器用戶端意外中斷連線,VMO 將會關閉,並取消對應。

Bursts 是由雷達 Proxy 注入,其按照基礎驅動程式庫的 GetBurstProperties() 方法回報的速率。傳送爆發時,如果沒有任何 VMO 在佇列中,Radar Proxy 就會停止爆發,直到呼叫 EnqueueBursts()StopBurstInjection() 為止。

  • 要求 burstsBurstData 結構內含要插入的爆發。
  • 回應 bursts_idOnBurstsDelivered()
  • 錯誤下列其中一個 StatusCode 值:
  • VMO_BAD_HANDLE:VMO 控制代碼無效。
  • VMO_ACCESS_DENIED:VMO 的權限不足。
  • VMO_TOO_SMALL:VMO 太小,無法容納指定的數值
  • of bursts.
    
  • INVALID_ARGS:爆發次數為 0。
  • BAD_STATE:先前對 StopBurstInjection() 的通話仍在進行
  • pending.
    

要求

名稱類型
bursts BurstData

回應

名稱類型
payload RadarBurstInjector_EnqueueBursts_Result

GetBurstProperties

傳回感應器回報的突發事件大小和期間。

  • 回應 size 每個雷達爆發的大小,以位元組為單位。
  • 回應 period 的間隔時間 (以奈秒為單位)。

要求

<EMPTY>

回應

名稱類型
size uint32
period zx/Duration

OnBurstsDelivered

傳回與先前傳遞至 EnqueueBursts()BurstData 結構相對應的 ID。收到這個事件後,用戶端可以自由寫入 VMO,如有需要,請將其傳回雷達 Proxy 進行插入。

  • 要求 bursts_id 上次呼叫 EnqueueBursts() 傳回的 ID。

回應

名稱類型
bursts_id uint32

StartBurstInjection

指示雷達 Proxy 從已排入佇列的 VMO 讀取未來爆發,而非從真正的雷達驅動程式庫讀取。雷達 Proxy 將嘗試交付雷達驅動程式庫在完成的那時傳送第一個插入的爆發。如果佇列為空白或變成空,則系統會停止傳送爆發,直到佇列中有更多爆發項目為止。請參閱上方的 EnqueueBursts()

雷達 Proxy 會在開始傳送已排入佇列的爆發前,在實際的雷達驅動程式上呼叫 StopBursts()

  • 錯誤下列其中一個 StatusCode 值:
  • BAD_STATE:已在開始或先前的通話中插入
  • to `StopBurstInjection()` is still pending.
    

要求

<EMPTY>

回應

名稱類型
payload RadarBurstInjector_StartBurstInjection_Result

StopBurstInjection

指示雷達 Proxy 完成來自佇列中 VMO 的爆發作業,然後切換回真實雷達驅動程式庫傳送爆發的作業。在系統呼叫 OnBurstsDelivered() 以插入最終的 VMO 之前,不會傳送此呼叫的回覆,而在該時間發出的任何其他呼叫都會傳回錯誤。

在本次呼叫中,雷達 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

  • 將含有爆發作業的 VMO ID 以及收到爆發時間的 VMO 指定為 burst
  • 錯誤下列其中一個 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_ids 建立關聯,此金鑰可與 UnregisterVmos()OnBurst() 搭配使用。驅動程式庫會使用 ZX_VM_PERM_WRITE 對應 vmos。用戶端應僅讀取透過 OnBurst() 傳送的已註冊 VMO。假設 vmo 大小至少為爆發大小,且 vmo_idsvmos 的大小必須相同。

  • 要求 vmo_ids 要與各個 VMO 建立關聯的 ID 編號。
  • 要求 vmos,VMO 會處理每個 ID 的對應。
  • 錯誤下列其中一個 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 傳送任何包含這些 VMO ID 的 OnBurst() 事件,但如果用戶端在這次呼叫期間處於執行中狀態,用戶端可能仍會收到具有這些 ID 的爆發現象。驅動程式必須傳回所有要求的所有 VMO,或傳回錯誤。如果發生錯誤,驅動程式庫可能已取消註冊部分或所有要求的 VMO。

  • 請將 VMO 的 ID 從 vmo_ids 取消註冊並傳回。
  • 回應 vmos,VMO 會處理與 vmo_ids 的對應事宜。
  • 錯誤下列其中一個 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] 無預設

ENUMS

狀態碼嚴格

類型:uint32

定義於 fuchsia.hardware.radar/radar.fidl

名稱說明
0

發生不明錯誤 (通常不應使用)。

1

要求已順利完成。

2

已呼叫 Connect(),但驅動程式庫忙於處理其他用戶端。另一個用戶端必須關閉其管道,才能再次提供驅動程式庫服務。

3

Connect() 嘗試繫結至提供的伺服器管道時發生錯誤。

4

傳遞至 RegisterVmos() 的向量大小不一致。

5

VMO 控制代碼無效。

6

已有 VMO 使用這個 ID 註冊。

7

找不到與指定 ID 相符的已註冊 VMO。

8

權限不足,無法寫入或對應用戶端 VMO。

9

用戶端 VMO 小於爆發的大小 (請參閱 GetBurstSize())。

10

已收到爆發,但沒有可用的 VMO。

11

未在預期時間內收到爆發。

12

發生不明驅動程式庫或感應器錯誤。

13

本次通話的雷達驅動程式庫或 Proxy 狀態不正確。

聯合國

RadarBurstInjector_EnqueueBursts_Result 嚴格

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
response RadarBurstInjector_EnqueueBursts_Response
err StatusCode

RadarBurstInjector_StartBurstInjection_Result 嚴格

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
response RadarBurstInjector_StartBurstInjection_Response
err StatusCode

RadarBurstInjector_StopBurstInjection_Result (嚴格)

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
response RadarBurstInjector_StopBurstInjection_Response
err StatusCode

RadarBurstReaderOnBurst2Request 彈性

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
burst Burst
error StatusCode

RadarBurstReaderOnBurstRequest 彈性

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
burst Burst
error StatusCode

RadarBurstReaderProvider_Connect_Result (嚴格)

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
response RadarBurstReaderProvider_Connect_Response
err StatusCode

RadarBurstReader_RegisterVmos_Result 嚴格

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
response RadarBurstReader_RegisterVmos_Response
err StatusCode

RadarBurstReader_UnregisterVmos_Result 嚴格 資源

定義於 fuchsia.hardware.radar/radar.fidl

序數Variant類型說明
response RadarBurstReader_UnregisterVmos_Response
err StatusCode

業者

名稱類型說明
VMO_VECTOR_MAX_COUNT 300 uint32

每次呼叫 RegisterVmos()UnregisterVmos() 的 VMO 數量任意限制,足以供現有驅動程式庫持續十秒的雷達資料。