通訊協定
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
連線。
連線
- 要求
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 或多個雷達事件,
|
無預設 |
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 |
對 |