fuchsia.hardware.radar

新增:7

通訊協定

RadarBurstInjector

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

測試用戶端可以使用這個通訊協定,將爆發資料插入至雷達用戶端 透過虛擬雷達驅動程式庫這個通訊協定只能有一個用戶端 彼此連結雷達 Proxy 會傳送 Epitaph 狀態碼 ZX_ERR_ALREADY_BOUND與任何其他用戶端之間的頻道已關閉或關閉 都會嘗試連線

EnqueueBursts

將要插入的爆發資料的指定 VMO 排入佇列。在所有連拍後 已插入這個 VMO,雷達 Proxy 將繼續 佇列中的 VMO。呼叫端不得寫入 VMO 由 OnBurstsDelivered() 傳回。VMO 將會關閉,並且不會對應 。

雷達 Proxy 是以雷達 Proxy 插入,按照 基礎驅動程式庫 GetBurstProperties() 方法。如果沒有任何 VMO 在要傳送爆發時佇列,雷達 Proxy 就會停止 傳送爆發,直到 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,如有需要,將其回傳給 雷達 Proxy 進行注入。

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

回應

名稱類型
bursts_id uint32

StartBurstInjection

指示 radar-proxy 讀取已加入佇列 VMO 的未來突發狀況,而非讀取已排入佇列的 VMO 擷取自實際的雷達驅動程式庫雷達 Proxy 會嘗試 於雷達驅動程式庫應執行時,首次插入的突發 例如如果佇列為空白或變成空白,則系統會停止傳送爆發項目 直到佇列可使用更多爆發項目為止詳情請參閱 EnqueueBursts()

雷達 Proxy 會在實際的雷達驅動程式庫上呼叫 StopBursts(), 就會開始發出排入佇列

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

要求

<空白>

回應

名稱類型
payload RadarBurstInjector_StartBurstInjection_Result

StopBurstInjection

指示 radar-proxy 結束目前位於 佇列,再切回真實雷達驅動程式庫傳送爆發。 只有在OnBurstsDelivered() 要求插入最終 VMO,以及對其他任何呼叫 否則就會傳回錯誤

雷達 Proxy 會在實際的雷達驅動程式庫上呼叫 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 與 vmo_ids 建立關聯。 可與 UnregisterVmos()OnBurst() 搭配使用。VMos 會是 由驅動程式庫使用 ZX_VM_PERM_WRITE 對應。只要客戶 讀取透過 OnBurst() 傳送的已註冊 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() 傳送連拍。

要求

<空白>

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。
  • 回應 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 以奈秒為單位爆發之間的時間。

要求

<空白>

回應

名稱類型
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 手持 0 或多個雷達事件, 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] 無預設

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

OrdinalVariant類型說明
response RadarBurstInjector_EnqueueBursts_Response
err StatusCode

RadarBurstInjector_StartBurstInjection_Result 嚴格

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

OrdinalVariant類型說明
response RadarBurstInjector_StartBurstInjection_Response
err StatusCode

RadarBurstInjector_StopBurstInjection_Result 嚴格

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

OrdinalVariant類型說明
response RadarBurstInjector_StopBurstInjection_Response
err StatusCode

RadarBurstReaderOnBurstRequest 彈性

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

OrdinalVariant類型說明
burst Burst
error StatusCode

RadarBurstReaderProvider_Connect_Result 嚴格

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

OrdinalVariant類型說明
response RadarBurstReaderProvider_Connect_Response
err StatusCode

RadarBurstReader_RegisterVmos_Result 嚴格

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

OrdinalVariant類型說明
response RadarBurstReader_RegisterVmos_Response
err StatusCode

RadarBurstReader_UnregisterVmos_Result 嚴格 資源

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

OrdinalVariant類型說明
response RadarBurstReader_UnregisterVmos_Response
err StatusCode

觀測站

名稱類型說明
VMO_VECTOR_MAX_COUNT 300 uint32

RegisterVmos() 的單次呼叫中的 VMO 數量任意限制。 UnregisterVmos();就能收集到 10 秒的雷達資料 驅動程式庫。