通訊協定
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上一次呼叫所傳回的 IDEnqueueBursts()。
回應
| 名稱 | 類型 |
|---|---|
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.
回應
| 名稱 | 類型 |
|---|---|
payload |
RadarBurstReaderOnBurstRequest
|
RegisterVmos
註冊 VMO 供日後使用,並將 VMO 與 vmo_ids 建立關聯。
可與 UnregisterVmos() 和 OnBurst() 搭配使用。VMos 會是
由驅動程式庫使用 ZX_VM_PERM_WRITE 對應。只要客戶
讀取透過 OnBurst() 傳送的已註冊 VMO。向量大小是
假設至少為爆發大小,以及 vmo_ids 和
vmos 必須相同。
- 要求
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 連線。
連線
- 要求
serverRadarBurstReader伺服器端,讓驅動程式庫給
- 錯誤下列其中一項
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 或多個雷達事件,
|
無預設 |
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]
|
無預設 |
ENUMS
狀態碼嚴格
類型: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 |
已有其他 VMO 使用這個 ID。 |
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 |
此呼叫的雷達驅動程式庫或 Proxy 未處於正確的狀態。 |
聯合國
RadarBurstInjector_EnQueueBursts_Result 嚴格
定義於 fuchsia.hardware.radar/radar.fidl
| Ordinal | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RadarBurstInjector_EnqueueBursts_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StartBurstInjection_Result 嚴格
定義於 fuchsia.hardware.radar/radar.fidl
| Ordinal | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RadarBurstInjector_StartBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StopBurstInjection_Result 嚴格
定義於 fuchsia.hardware.radar/radar.fidl
| Ordinal | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RadarBurstInjector_StopBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReaderOnBurstRequest 彈性
定義於 fuchsia.hardware.radar/radar.fidl
| Ordinal | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
burst |
Burst
|
|
2 |
error |
StatusCode
|
RadarBurstReaderProvider_Connect_Result 嚴格
定義於 fuchsia.hardware.radar/radar.fidl
| Ordinal | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RadarBurstReaderProvider_Connect_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_RegisterVmos_Result 嚴格
定義於 fuchsia.hardware.radar/radar.fidl
| Ordinal | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RadarBurstReader_RegisterVmos_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_UnregisterVmos_Result 嚴格 資源
定義於 fuchsia.hardware.radar/radar.fidl
| Ordinal | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RadarBurstReader_UnregisterVmos_Response
|
|
2 |
err |
StatusCode
|
觀測站
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| VMO_VECTOR_MAX_COUNT |
300
|
uint32 |
對 |