AOSP
stos ultraszerokopasmowy (UWB)
korzysta z funkcji
Interfejs UCI zdefiniowany w FiRa
jak powierzchnia HAL. Interfejs HAL używa nieprzezroczystej kreski.
(IUwbChip::sendUciMessage()
i IUwbClientCallback::onUciMessage()
) do wysłania
oraz odbiór poleceń, odpowiedzi i powiadomień interfejsu UWB (UCI).
Wszyscy dostawcy Androida UWB muszą obsługiwać wszystkie zdefiniowane specyfikacje FiRa
wiadomości. Platforma UWB jest zgodna wstecznie i działa z każdym interfejsem UCI
wersji zaimplementowanej na urządzeniu przez dostawcę UWB. Ponieważ AOSP UWB
to moduł,
ale może też dodawać do niej
obsługę zatwierdzonych próśb o zmianę (CR)
w wersji roboczej specyfikacji UCI kierowanych na główne wersje standardów FiRa. Dowolne takie
wdrożone wersje robocze szablonów odpowiedzi mogą ulec zmianie.
Definicja interfejsu
Interfejs UWB HAL jest zdefiniowany za pomocą
stabilnej wersji AIDL.
Główny interfejs używa pakietu android.hardware.uwb
.
Oto 2 główne interfejsy w android.hardware.uwb
pakietu SDK.
IUwbChip.aidl,
package android.hardware.uwb;
interface IUwbChip {
String getName();
void open(in android.hardware.uwb.IUwbClientCallback clientCallback);
void close();
void coreInit();
void sessionInit(int sessionId);
int getSupportedAndroidUciVersion();
int sendUciMessage(in byte[] data);
}
IUwbClientCallback.aidl
package android.hardware.uwb;
interface IUwbClientCallback {
oneway void onUciMessage(in byte[] data);
oneway void onHalEvent(in android.hardware.uwb.UwbEvent event, in android.hardware.uwb.UwbStatus status);
}
Przepływ wywołania HAL z platformy UWB
Poniższe obrazy ilustrują przepływ wywołania z platformy UWB dla inicjowanie stosu UWB, deinicjowanie stosu UWB oraz rozpoczęcie sesji UWB i Zatrzymać procesy.
Rysunek 1. Przepływ wywołania inicjowania stosu UWB (włączony przełącznik UWB)
Rysunek 2. Przepływ wywołania deinicjowania stosu UWB (wyłączony przełącznik UWB)
Rysunek 3. Proces uruchamiania/zatrzymywania sesji UWB
Konfiguracja kodu kraju UWB
Jak widać na ilustracji 1, platforma UWB konfiguruje kod kraju UWB.
podczas inicjowania stosu UWB za pomocą polecenia UCI dostawcy
ANDROID_SET_COUNTRY_CODE
(GID=0xC
, OID=0x1
). Platforma UWB stara się
Określ kod kraju UWB, korzystając z następujących źródeł (wymienionych w priorytecie)
zamówienie). Struktura UWB kończy się na pierwszym źródle, w którym znajduje się kod kraju.
określonych.
- Zastąp kod kraju: kod kraju wymuszony za pomocą polecenia powłoki adb (testy lokalne lub automatyczne).
- Kod kraju na potrzeby połączeń telefonicznych: kod kraju pobrany przez sieć komórkową. Jeśli Jest wiele kart SIM, które zwracają różne kody. Kod kraju jest wybrane niedeterministyczne.
- Kod kraju Wi-Fi: kod kraju pobrany przez Wi-Fi (80211.ad).
- Ostatni znany kod kraju usług telefonicznych: pobrano ostatni znany kod kraju przez sieć komórkową. Jeśli jest kilka kart SIM, które zwracają różne kod kraju jest niedeterministyczny.
- Kod kraju lokalizacji: kod kraju pobrany z
LocationManager
dostawca uśrednionej lokalizacji - Domyślny kod kraju OEM: kod kraju ustawiony przez producenta urządzenia.
Jeśli platforma UWB nie może określić kodu kraju UWB, wywołuje metodę
ANDROID_SET_COUNTRY_CODE
polecenie UCI o wartości
DEFAULT_COUNTRY_CODE ("00")
i powiadamia aplikacje UWB, które
stan stosu UWB to DISABLED
. Później, gdy platforma UWB będzie w stanie
określ
prawidłowy kod kraju, konfiguruje on nowy kod kraju za pomocą funkcji
ANDROID_SET_COUNTRY_CODE
i powiadamia aplikacje UWB o stosie UWB
jest READY
.
Jeśli nie można użyć UWB
ze względu na lokalne przepisy obowiązujące w danym kraju kontroler UWB zwraca
STATUS_CODE_ANDROID_REGULATION_UWB_OFF
kod stanu. Odpowiednia platforma UWB
powiadamia aplikacje UWB, że stan stosu UWB to DISABLED
.
Gdy użytkownik podróżuje do innego kraju, platforma UWB konfiguruje nowy
kodu kraju za pomocą polecenia UCI ANDROID_SET_COUNTRY_CODE
. W zależności od
zwracany przez kontroler UWB (zgodnie z przepisami UWB
w nowym kraju), może to spowodować zmianę stanu stosu UWB.
Zdefiniowany w specyfikacji FIRA UCI format polecenia
Format pakietów kontrolnych UCI: art. 4.4.2 ustawy UCI specyfikacji.
Obsługa wersji interfejsu
Specyfikacja UCI pozwala dostawcom UWB udostępniać wersję stosu UCI
zaimplementowane przez urządzenie za pomocą interfejsów UCI_GET_DEVICE_INFO_RSP
i
Polecenia UCI_GET_CAPS_INFO_RSP
. Platforma używa tych poleceń do pobierania
wersję UCI urządzenia i odpowiednio zmień jej działanie.
Lista roboczych szablonów odpowiedzi obsługiwanych przez moduł UWB
Poniższe wersje robocze szablonów odpowiedzi dotyczących FiRa 2.0 są obsługiwane przez Moduł UWB w wersji 330810000:
- CR 287
- Obsługa interfejsu SUS API i specyfikacji UCI w przypadku interfejsu klucza cyfrowego CCC Wymagania
Interfejs Androida UCI (część dostawcy FiRa)
Specyfikacja UCI definiuje zestaw identyfikatorów grup (GID) i kodu operacji (identyfikatory OID) wszystkich komunikatów zdefiniowanych w specyfikacji. Specyfikacja rezerwuje też zestaw identyfikatorów GID zarezerwowanych wyłącznie do użytku przez dostawcę. AOSP UWB korzysta z niektórych z tych identyfikatorów GID i OID dostawcy na potrzeby poleceń specyficznych dla Androida, nie są zdefiniowane w specyfikacji. Więcej informacji: art. 8.4 ustawy UCI specyfikacji.
Te komunikaty dostawców używane przez Androida są zdefiniowane w
android.hardware.uwb.fira_android
pakiet HAL.
Obsługa wersji interfejsu dostawcy
Dostawcy UWB muszą udostępniać wersję interfejsu android.hardware.uwb.fira_android
pakiet HAL obsługiwany przez urządzenie przez
IUwbChip.getSupportedAndroidUciVersion()
Platforma używa tego
informacje o obsłudze wersji, by zapewnić zgodność wsteczną.
Lista identyfikatorów GID i OID Androida
W tabeli poniżej znajdziesz identyfikatory GID i OID do Androida. Identyfikatory GID 0xE
i 0xF
są zarezerwowane dla OEM.
GID | identyfikator OID | Definicja |
---|---|---|
ANDROID = 0xC |
ANDROID_GET_POWER_STATS = 0x0 |
Używany przez polecenie i odpowiedź do uzyskiwania statystyk dotyczących zasilania UWB.
Obsługiwane tylko wtedy, gdy
UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY
ma wartość 1 . |
ANDROID_SET_COUNTRY_CODE = 0x1 |
Służy do ustawiania aktualnego kodu kraju określonego w przepisach (określanego przy użyciu
przez kartę SIM lub Wi-Fi albo zakodowaną na stałe przez producenta OEM). Zostanie wysłany kod kraju
jako 2-bajtową wartość odpowiadającą kodowi kraju ISO-3166. O
|
|
ANDROID_RANGE_DIAGNOSTICS = 0x2 |
Używane przez powiadomienie do pobierania statystyk diagnostycznych zakresu UWB.
Obsługiwane tylko wtedy, gdy
Wartość UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS jest ustawiona
do: 1 .
|
|
OEM = 0xE,0xF |
0x00 - 0x3F |
Zastrzeżone do użytku OEM. |
Komunikaty dotyczące rozszerzeń dostawców do specyfikacji UCI
Ta sekcja zawiera szczegółowe informacje o rozszerzeniach dostawców w UCI komunikatów zdefiniowanych przez specyfikację.
SESSION_SET_APP_CONFIG_[CMD|RSP] i SESSION_GET_APP_CONFIG_[CMD|RSP]
Poniżej podano wartości typu długości (TLV) zdefiniowane przez stos AOSP w
zarezerwowana przez dostawcę część TLV w regionie APP_CONFIG
:
- Identyfikator GID: 0001b (grupa konfiguracji sesji UWB)
- OID: 000011b (
SESSION_SET_APP_CONFIG_CMD
) - OID: 000100b (
SESSION_GET_APP_CONFIG_CMD
)
W tabeli poniżej znajdziesz parametry komunikatów konfiguracji sesji UWB.
Nazwa parametru | Długość (oktety) |
Tag (identyfikatory) |
Wersja interfejsu dostawcy | Opis |
---|---|---|---|---|
NB_OF_RANGE_MEASUREMENTS |
1 | 0xE3 |
1 | Współczynnik przeplatania, jeśli ustawiono AOA_RESULT_REQ
do: 0xF0 . Obsługiwane tylko wtedy, gdy parametr
UwbVendorCapabilityTlvTypes.SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING
ustawiono na 1 . |
NB_OF_AZIMUTH_MEASUREMENTS |
1 | 0xE4 |
1 | |
NB_OF_ELEVATION_MEASUREMENTS |
1 | 0xE5 |
1 | |
ENABLE_DIAGNOSTICS |
1 | 0xE8 |
2 | Wartość 1-bajtowa umożliwiająca włączenie lub wyłączenie raportowania diagnostycznego.
Konfiguruj ten parametr tylko wtedy, gdy Wartości:
|
DIAGRAMS_FRAME_REPORTS_FIELDS |
1 lub 4 | 0xE9 |
2 | 1- lub 4-bajtowa maska bitowa do konfigurowania raportów diagnostycznych. Ten w Androidzie 14 lub nowszym maska bitowa ma 1 bajt. 4 bajty w Androidzie 13 lub starszym. Skonfiguruj ten parametr tylko wtedy, gdy
Definicje bitowe:
|
CORE_GET_CAPS_INFO_RSP
Oto TLV zdefiniowane przez stos AOSP u dostawcy zarezerwowanego
część TLV w CAPS_INFO
:
- GID: 0000b (grupa podstawowa UWB)
- OID: 000011b (
CORE_GET_CAPS_INFO_RSP
)
W tabeli poniżej znajdziesz parametry komunikatów o możliwościach UWB.
Nazwa parametru | Długość (oktety) |
Tag (identyfikatory) |
Wersja interfejsu dostawcy | Opis |
---|---|---|---|---|
SUPPORTED_POWER_STATS_QUERY |
1 | 0xC0 |
1 | Wartość 1 bajtowa wskazująca obsługę zapytań o statystyki zasilania. Wartości:
|
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING |
1 | 0xE3 |
1 | Wartość 1 bajtowa wskazująca obsługę przeplatania anten funkcji. Wartości:
|
SUPPORTED_MIN_RANGING_INTERVAL_MS |
4 | 0xE4 |
2 | Wartość 4-bajtowa wskazująca obsługiwany minimalny odstęp zakresu w milisekund. |
SUPPORTED_RANGE_DATA_NTF_CONFIG |
4 | 0xE5 |
2 | 4-bajtowa maska bitowa wskazująca
RANGE_DATA_NTF_CONFIG wartości.
Maska bitowa, w której każdy bit odpowiada wartościom używanym w
RANGE_DATA_NTF_CONFIG w SET_APP_CFG_CMD . |
SUPPORTED_RSSI_REPORTING |
1 | 0xE6 |
2 | 1 bajtowa wartość wskazująca na obsługę raportowania RSSI. Wartości:
|
SUPPORTED_DIAGNOSTICS |
1 | 0xE7 |
2 | Wartość 1-bajtowa wskazująca obsługę raportowania diagnostycznego. Wartości:
|
SUPPORTED_MIN_SLOT_DURATION_RSTU |
4 | 0xE8 |
2 | Wartość 4-bajtowa wskazująca obsługiwany minimalny czas trwania przedziału w RSTU. |
SUPPORTED_MAX_RANGING_SESSION_NUMBER |
4 | 0xE9 |
2 | Wartość 4-bajtowa wskazująca maksymalną obsługiwaną maksymalną liczbę zakresów FiRa sesji. |
SUPPORTED_CHANNELS_AOA |
2 | 0xEA |
2 | 2-bajtowa maska bitowa do wskazania kanałów, które obsługują AoA. Każdy
Wartości:
|
Kody stanu
Poniżej podano kody stanu w przestrzeni dostawców. Są one zwracane w
Odpowiedzi UCI (np. SESSION_START_RSP
) przez podsystem UWB (UWBS).
Kod stanu | Wartość | Opis |
---|---|---|
STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x52 |
Kod stanu zwrócony, gdy nie można usunąć bieżącej sesji z zakresem rozpoczęto z powodu konfliktu z innymi sesjami CCC lub FiRa. |
STATUS_REGULATION_UWB_OFF |
0x53 |
Kod stanu zwrócony, gdy nie można usunąć bieżącej sesji z zakresem z powodu przepisów UWB. |
Kod przyczyny zmiany stanu w: SESSION_STATUS_NTF
Poniżej podano kody przyczyn zmiany stanu zdefiniowane w obszarze dostawców dla
w polu stanu zwróconym przez UWBS w SESSION_STATUS_NTF
. To powiadomienie
jest wysyłana przez UWBS, gdy zmieni się stan sesji z określeniem zakresu (na przykład
od ACTIVE
do IDLE
).
Kod przyczyny zmiany stanu | Wartość | Opis |
---|---|---|
REASON_ERROR_INVALID_CHANNEL_WITH_AOA |
0x80 |
Stan sesji zmienił się, ponieważ skonfigurowany kanał nie obsługują zakres AoA. |
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x81 |
Stan sesji zmienił się z powodu konfliktu z innymi komponentami CCC lub FiRa przez długi czas. |
REASON_REGULATION_UWB_OFF |
0x82 |
Stan sesji został zmieniony, ponieważ należy wyłączyć UWB z powodu z przyczyn prawnych. |