AOSP ultra geniş bant (UWB) yığını, HAL yüzeyi olarak FiRa tarafından tanımlanan UCI arayüzünü kullanır. HAL arayüzü, UWB komut arayüzü (UCI) komutlarını, yanıtlarını ve bildirimlerini göndermek ve almak için opak bir kanal (IUwbChip::sendUciMessage()
ve IUwbClientCallback::onUciMessage()
) kullanır.
Tüm Android UWB tedarikçileri, FiRa spesifikasyonunda tanımlanan tüm mesajları desteklemelidir. Ultra geniş bant çerçevesi geriye dönük olarak uyumludur ve cihazda ultra geniş bant satıcısı tarafından uygulanan tüm UCI sürümleriyle çalışır. AOSP UWB çerçevesi bir modül olduğundan, büyük FiRa standart sürümleri için hedeflenen taslak UCI spesifikasyonlarından onaylanmış değişiklik istekleri (CR) için de seçici olarak destek ekleyebilir. Uygulanan bu tür taslak hazır yanıtlar değişebilir.
Arayüz tanımı
UWB HAL arayüzü, kararlı AIDL kullanılarak tanımlanır.
Ana arayüzde android.hardware.uwb
paketi kullanılır.
android.hardware.uwb
paketindeki iki ana arayüz şunlardır:
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);
}
UWB çerçevesinden HAL çağrı akışı
Aşağıdaki resimlerde, UWB yığını başlatma, UWB yığını başlatmayı kaldırma ve UWB oturumu başlatma ve durdurma işlemleri için UWB çerçevesinden gelen çağrı akışı gösterilmektedir.
1. şekil. UWB yığını başlatma çağrı akışı (UWB açma/kapatma)
Şekil 2. UWB yığını başlatmayı kaldırma çağrısı akışı (UWB kapatıldığında)
3.Şekil UWB oturumunu başlatma/durdurma akışı
UWB ülke kodu yapılandırması
1. Şekil'de gösterildiği gibi, UWB çerçevesi, UWB yığınını başlatma sırasında tedarikçi alanındaki UCI komutunu ANDROID_SET_COUNTRY_CODE
(GID=0xC
, OID=0x1
) kullanarak UWB ülke kodunu yapılandırır. UWB çerçevesi, UWB ülke kodunu aşağıdaki kaynakları kullanarak belirlemeye çalışır (öncelik sırasına göre listelenmiştir). UWB çerçevesi, ülke kodunun belirlendiği ilk kaynakta durur.
- Ülke kodunu geçersiz kılma: Bir adb shell komutuyla zorlanan ülke kodu (yerel veya otomatik test).
- Telefon ülke kodu: Hücresel bağlantı üzerinden alınan ülke kodu. Farklı kodlar döndüren birden fazla SIM varsa seçilen ülke kodu belirlenemez.
- Kablosuz ülke kodu: Kablosuz (80211.ad) üzerinden alınan ülke kodu.
- Bilinen son telefon ülke kodu: Hücresel bağlantı üzerinden alınan bilinen son ülke kodu. Farklı kodlar döndüren birden fazla SIM varsa seçilen ülke kodu belirlenemez.
- Konum ülke kodu:
LocationManager
Birleştirilmiş konum sağlayıcıdan alınan ülke kodu. - OEM varsayılan ülke kodu: Cihaz üreticisi tarafından ayarlanan ülke kodu.
UWB çerçevesi bir UWB ülke kodunu belirleyemezse ANDROID_SET_COUNTRY_CODE
değeriyle UCI komutunu çağırır ve UWB uygulamalarını UWB yığını durumunun DISABLED
olduğu konusunda bilgilendirir.DEFAULT_COUNTRY_CODE ("00")
Daha sonra, UWB çerçevesi geçerli bir ülke kodu belirleyebildiğinde ANDROID_SET_COUNTRY_CODE
komutunu kullanarak yeni ülke kodunu yapılandırır ve UWB uygulamalarına UWB yığınının READY
olduğunu bildirir.
Bir ülkedeki yerel düzenlemeler nedeniyle UWB kullanılamıyorsa UWB denetleyicisi STATUS_CODE_ANDROID_REGULATION_UWB_OFF
durum kodunu döndürür. Ultra geniş bant çerçevesi daha sonra ultra geniş bant uygulamalarına ultra geniş bant yığını durumunun DISABLED
olduğunu bildirir.
Bir kullanıcı farklı bir ülkeye seyahat ettiğinde UWB çerçevesi, ANDROID_SET_COUNTRY_CODE
UCI komutunu kullanarak yeni bir ülke kodu yapılandırır. UWB denetleyicisi tarafından döndürülen durum koduna (yeni ülkedeki UWB düzenlemelerine göre) bağlı olarak, bu durum UWB yığını durumunda değişikliğe yol açabilir.
FIRA UCI spesifikasyonuyla tanımlanan komut biçimi
UCI kontrol paketlerinin biçimi için UCI spesifikasyonunun 4.4.2 bölümüne bakın.
Arayüz sürümü oluşturma
UCI spesifikasyonu, UWB satıcılarının UCI_GET_DEVICE_INFO_RSP
ve UCI_GET_CAPS_INFO_RSP
komutlarını kullanarak cihaz tarafından uygulanan UCI yığını sürümünü göstermesine olanak tanır. Çerçeve, cihazın UCI sürümünü getirmek ve davranışını buna göre değiştirmek için bu komutları kullanır.
UWB modülü tarafından desteklenen taslak CR'lerin listesi
FiRa 2.0 için aşağıdaki taslak CR'ler, UWB modülü sürüm #330810000 tarafından desteklenir:
Android UCI arayüzü (FiRa satıcı bölümü)
UCI spesifikasyonu, spesifikasyon tarafından tanımlanan tüm mesajlar için bir grup tanımlayıcı (GID) ve işlem kodu tanımlayıcı (OID) grubu tanımlar. Spesifikasyon, yalnızca satıcı kullanımı için ayrılmış bir dizi GID'yi de ayırır. AOSP UWB yığını, spesifikasyonda tanımlanmayan Android'e özgü komutlar için bu satıcı GID'lerinden ve OID'lerinden bazılarını kullanır. Ayrıntılar için UCI spesifikasyonunun 8.4 bölümüne bakın.
Android tarafından kullanılan bu satıcı mesajları, android.hardware.uwb.fira_android
HAL paketinde tanımlanır.
Tedarikçi arayüzü sürümü oluşturma
UWB tedarikçileri, cihazda desteklenen android.hardware.uwb.fira_android
HAL paketinin sürümünü IUwbChip.getSupportedAndroidUciVersion()
aracılığıyla kullanıma sunmalıdır. Çerçeve, geriye dönük uyumluluğu sağlamak için bu sürüm oluşturma bilgilerini kullanır.
Android GID'lerinin ve OID'lerinin listesi
Aşağıdaki tabloda Android için GID'ler ve OID'ler listelenmiştir. GID'ler 0xE
ve 0xF
, Android OEM'leri tarafından kullanılmak üzere ayrılmıştır.
GID | OID | Tanım |
---|---|---|
ANDROID = 0xC |
ANDROID_GET_POWER_STATS = 0x0 |
Ultra Geniş Bant gücüyle ilgili istatistikleri almak için komut ve yanıt tarafından kullanılır.
Yalnızca UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY
1 olarak ayarlanmışsa desteklenir. |
ANDROID_SET_COUNTRY_CODE = 0x1 |
Geçerli düzenleyici ülke kodunu ayarlamak için kullanılır (SIM veya kablosuz ağ kullanılarak belirlenir ya da OEM tarafından sabit kodlanmıştır). Ülke kodu, ISO-3166 ülke koduna karşılık gelen 2 baytlık bir değer olarak gönderilir. Ülke kodunun bilinmediğini belirtmek için |
|
ANDROID_RANGE_DIAGNOSTICS = 0x2 |
UWB aralığı teşhis istatistiklerini almak için bildirim tarafından kullanılır.
Yalnızca UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS , 1 olarak ayarlanmışsa desteklenir.
|
|
OEM = 0xE,0xF |
0x00 - 0x3F |
OEM kullanımı için ayrılmıştır. |
UCI spesifikasyonunda tanımlanan mesajlara tedarikçi uzantıları
Bu bölümde, UCI spesifikasyonunda tanımlanan iletilere yönelik satıcı uzantılarının ayrıntıları açıklanmaktadır.
SESSION_SET_APP_CONFIG_[CMD|RSP] ve SESSION_GET_APP_CONFIG_[CMD|RSP]
Aşağıda, APP_CONFIG
içindeki TLV'lerin satıcıya ayrılmış bölümünde AOSP yığını tarafından tanımlanan tür uzunluğu değerleri (TLV'ler) verilmiştir:
- GID: 0001b (UWB oturum yapılandırma grubu)
- OID: 000011b (
SESSION_SET_APP_CONFIG_CMD
) - OID: 000100b (
SESSION_GET_APP_CONFIG_CMD
)
Aşağıdaki tabloda, UWB oturumu yapılandırma iletilerinin parametreleri listelenmiştir.
Parametre adı | Uzunluk (oktet) |
Etiket (kimlikler) |
Tedarikçi arayüzü sürümü | Açıklama |
---|---|---|---|---|
NB_OF_RANGE_MEASUREMENTS |
1 | 0xE3 |
1 | AOA_RESULT_REQ , 0xF0 olarak ayarlanmışsa araya yerleştirme oranı. Yalnızca UwbVendorCapabilityTlvTypes.SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING
1 olarak ayarlanmışsa desteklenir. |
NB_OF_AZIMUTH_MEASUREMENTS |
1 | 0xE4 |
1 | |
NB_OF_ELEVATION_MEASUREMENTS |
1 | 0xE5 |
1 | |
ENABLE_DIAGNOSTICS |
1 | 0xE8 |
2 | Teşhis raporlamasını etkinleştirmek veya devre dışı bırakmak için kullanılan 1 baytlık değer.
Bu parametreyi yalnızca Değerler:
|
DIAGRAMS_FRAME_REPORTS_FIELDS |
1 veya 4 | 0xE9 |
2 | Teşhis raporlamasını yapılandırmak için 1 veya 4 baytlık bit maskesi. Bu bit maskesi, Android 14 veya sonraki sürümlerde 1 bayt, Android 13 veya önceki sürümlerde ise 4 bayttır. Bu parametreyi yalnızca Bit tanımları:
|
CORE_GET_CAPS_INFO_RSP
Aşağıda, CAPS_INFO
içindeki TLV'lerin tedarikçiye ayrılmış bölümünde AOSP yığını tarafından tanımlanan TLV'ler verilmiştir:
- GID: 0000b (UWB çekirdek grubu)
- OID: 000011b (
CORE_GET_CAPS_INFO_RSP
)
Aşağıdaki tabloda, UWB özelliği mesajlarının parametreleri listelenmiştir.
Parametre adı | Uzunluk (oktet) |
Etiket (kimlikler) |
Tedarikçi arayüzü sürümü | Açıklama |
---|---|---|---|---|
SUPPORTED_POWER_STATS_QUERY |
1 | 0xC0 |
1 | Güç istatistikleri sorgusu desteğini gösteren 1 baytlık değer. Değerler:
|
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING |
1 | 0xE3 |
1 | Anten aralama özelliğinin desteklendiğini gösteren 1 baytlık değer. Değerler:
|
SUPPORTED_MIN_RANGING_INTERVAL_MS |
4 | 0xE4 |
2 | Milisaniye cinsinden desteklenen minimum aralık ölçme aralığını gösteren 4 baytlık değer. |
SUPPORTED_RANGE_DATA_NTF_CONFIG |
4 | 0xE5 |
2 | Desteklenen RANGE_DATA_NTF_CONFIG değerlerini gösteren 4 baytlık bit maskesi.
Her bitin, RANGE_DATA_NTF_CONFIG içinde SET_APP_CFG_CMD kullanılan değerlere karşılık geldiği bit maskesi. |
SUPPORTED_RSSI_REPORTING |
1 | 0xE6 |
2 | RSSI raporlamasının desteklenip desteklenmediğini gösteren 1 baytlık değer. Değerler:
|
SUPPORTED_DIAGNOSTICS |
1 | 0xE7 |
2 | Tanılama raporlamasının desteklenip desteklenmediğini gösteren 1 baytlık değer. Değerler:
|
SUPPORTED_MIN_SLOT_DURATION_RSTU |
4 | 0xE8 |
2 | RSTU'da desteklenen minimum yuva süresini belirten 4 baytlık değer. |
SUPPORTED_MAX_RANGING_SESSION_NUMBER |
4 | 0xE9 |
2 | Desteklenen maksimum FiRa mesafe ölçme oturumu sayısını gösteren 4 baytlık değer. |
SUPPORTED_CHANNELS_AOA |
2 | 0xEA |
2 | AoA'yı destekleyen kanalları belirtmek için kullanılan 2 baytlık bit maskesi. Bit maskesindeki her Değerler:
|
Durum kodları
Tedarikçi alanındaki durum kodları aşağıda verilmiştir. Bunlar, UWB alt sistemi (UWBS) tarafından UCI yanıtlarında (ör. SESSION_START_RSP
) döndürülür.
Durum kodu | Değer | Açıklama |
---|---|---|
STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x52 |
Mevcut mesafe ölçme oturumu, diğer CCC veya FiRa mesafe ölçme oturumlarıyla çakışma nedeniyle başlatılamadığında döndürülen durum kodu. |
STATUS_REGULATION_UWB_OFF |
0x53 |
Mevcut mesafe ölçme oturumu, UWB ile ilgili yasal nedenlerden dolayı başlatılamadığında döndürülen durum kodu. |
SESSION_STATUS_NTF içindeki durum değişikliği nedeni kodu
Aşağıda, SESSION_STATUS_NTF
içinde bir UWBS tarafından döndürülen durum alanı için tedarikçi alanında tanımlanan durum değişikliği nedeni kodları verilmiştir. Bu bildirim, bir mesafe ölçme oturumunun durumu değiştiğinde (örneğin, ACTIVE
'dan IDLE
'ya) UWBS tarafından gönderilir.
Durum değişikliği neden kodu | Değer | Açıklama |
---|---|---|
REASON_ERROR_INVALID_CHANNEL_WITH_AOA |
0x80 |
Yapılandırılan kanal AoA aralığını desteklemediğinden oturum durumu değişti. |
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x81 |
Diğer CCC veya FiRa mesafe ölçme oturumlarıyla çakışma nedeniyle oturum durumu değişti. |
REASON_REGULATION_UWB_OFF |
0x82 |
Yasal bir nedenle UWB devre dışı bırakılması gerektiği için oturum durumu değişti. |