通訊協定
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()
為止。
- 要求
bursts
,BurstData
結構內含要插入的爆發。
- 回應
bursts_id
OnBurstsDelivered()
- 錯誤下列其中一個
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.
回應
名稱 | 類型 |
---|---|
payload |
RadarBurstReaderOnBurstRequest
|
OnBurst2
回應
名稱 | 類型 |
---|---|
payload |
RadarBurstReaderOnBurst2Request
|
RegisterVmos
註冊 VMO 供日後使用,並將其與 vmo_ids 建立關聯,此金鑰可與 UnregisterVmos()
和 OnBurst()
搭配使用。驅動程式庫會使用 ZX_VM_PERM_WRITE
對應 vmos。用戶端應僅讀取透過 OnBurst()
傳送的已註冊 VMO。假設 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()
傳送連拍。
要求
<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 含有由 |
無預設 |
burst_count |
uint32
|
儲存在 |
無預設 |
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 |
要求已順利完成。 |
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
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_EnqueueBursts_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StartBurstInjection_Result 嚴格
定義於 fuchsia.hardware.radar/radar.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_StartBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstInjector_StopBurstInjection_Result (嚴格)
定義於 fuchsia.hardware.radar/radar.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RadarBurstInjector_StopBurstInjection_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReaderOnBurst2Request 彈性
定義於 fuchsia.hardware.radar/radar.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
burst |
Burst
|
|
2 |
error |
StatusCode
|
RadarBurstReaderOnBurstRequest 彈性
定義於 fuchsia.hardware.radar/radar.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
burst |
Burst
|
|
2 |
error |
StatusCode
|
RadarBurstReaderProvider_Connect_Result (嚴格)
定義於 fuchsia.hardware.radar/radar.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RadarBurstReaderProvider_Connect_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_RegisterVmos_Result 嚴格
定義於 fuchsia.hardware.radar/radar.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RadarBurstReader_RegisterVmos_Response
|
|
2 |
err |
StatusCode
|
RadarBurstReader_UnregisterVmos_Result 嚴格 資源
定義於 fuchsia.hardware.radar/radar.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RadarBurstReader_UnregisterVmos_Response
|
|
2 |
err |
StatusCode
|
業者
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
VMO_VECTOR_MAX_COUNT |
300
|
uint32 |
每次呼叫 |