Ultra Geniş Bant HAL arayüzü

.

AOSP ultra geniş bant (UWB) yığını , FiRa tanımlı UCI arayüzü olarak belirleyin. HAL arayüzünde opak bir boru kullanılır. Gönderilecek (IUwbChip::sendUciMessage() ve IUwbClientCallback::onUciMessage()) UWB komut arayüzü (UCI) komutlarını, yanıtlarını ve bildirimlerini alabilir. Tüm Android ultra geniş bant tedarikçileri, tanımlanan tüm FiRa spesifikasyonunu desteklemelidir mesaj. Ultra Geniş Bant çerçevesi geriye dönük uyumludur ve tüm UCI’larla çalışır. cihazda ultra geniş bant tedarikçisi tarafından uygulanan sürüm. AOSP ultra geniş bant çerçeve bir modül, onaylanmış değişiklik istekleri (CR'ler) için seçmeli olarak başlıca FiRa standartları sürümlerine yönelik taslak UCI spesifikasyonları. Bu tür herhangi bir Uygulanan taslak hazır yanıtlar değiştirilebilir.

Arayüz tanımı

Ultra Geniş Bant HAL arayüzü kararlı AIDL. Ana arayüz android.hardware.uwb paketini kullanır.

Aşağıda, android.hardware.uwb uygulamasındaki iki ana arayüz verilmiştir: paketinden yararlanın.

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);

}

ultra geniş bant çerçevesinden HAL çağrı akışı

Aşağıdaki resimlerde, ultra geniş bant çerçevesinden gelen Ultra geniş bant yığını başlatma, ultra geniş bant yığını başlatma ve ultra geniş bant oturumu başlatma ve çok önemli bir parçasıdır.

Ultra Geniş Bant yığını başlatma

Şekil 1. Ultra geniş bant yığını başlatma çağrı akışı (UWB açma/kapatma düğmesi açık)

Ultra Geniş Bant yığınını devre dışı bırakma

Şekil 2. Ultra Geniş Bant yığınını devre dışı bırakma çağrı akışı (UWB açma/kapatma düğmesi kapalı)

Ultra geniş bant oturumu başlatma ve durdurma

Şekil 3. Ultra geniş bant oturumu başlatma/durdurma akışı

Ultra Geniş Bant ülke kodu yapılandırması

Şekil 1'de gösterildiği gibi ultra geniş bant çerçevesi, ultra geniş bant ülke kodunu yapılandırır tedarikçi-alan UCI komutunu kullanarak ultra geniş bant yığını başlatma sırasında ANDROID_SET_COUNTRY_CODE (GID=0xC, OID=0x1). Ultra geniş bant çerçevesi aşağıdaki kaynakları kullanarak ultra geniş bant ülke kodunu belirleyin (öncelikli olarak listelenir) sipariş). Ultra Geniş Bant çerçevesi, ülke kodunun geçerli olduğu ilk kaynakta durur. belirler.

  1. Ülke kodunu geçersiz kıl: Ülke kodu, adb kabuk komutu aracılığıyla zorunlu kılındı (yerel veya otomatik test).
  2. Telefon ülke kodu: Hücresel ağ üzerinden alınan ülke kodu. Eğer farklı kodlar, ülke kodu döndüren birden fazla SIM var belirsizdir.
  3. Kablosuz ağ ülke kodu: Kablosuz ağ (80211.ad) üzerinden alınan ülke kodu.
  4. Telefonda bilinen son ülke kodu: Alınan bilinen son ülke kodu cep telefonu üzerinden. Farklı döndüren birden fazla SIM varsa kodlardan yararlandıysanız, seçilen ülke kodu deterministik değildir.
  5. Konum ülke kodu: LocationManager adresinden alınan ülke kodu çok yönlü bir konum sağlayıcıdır.
  6. OEM varsayılan ülke kodu: Cihaz üreticisi tarafından belirlenen ülke kodu.

Ultra Geniş Bant çerçevesi bir ultra geniş bant ülke kodu belirleyemezse Değeri şu olan ANDROID_SET_COUNTRY_CODE UCI komutu: DEFAULT_COUNTRY_CODE ("00") ve ultra geniş bant uygulamalarına şu bilgileri gönderir: ultra geniş bant yığınının durumu DISABLED olur. Daha sonra ultra geniş bant çerçevesi bir geçerli ülke kodunu kullanarak yeni ülke kodunu yapılandırır. ANDROID_SET_COUNTRY_CODE komutu çalıştırarak ultra geniş bant uygulamalarına UWB yığınının READY.

Ultra Geniş Bant kullanılamıyorsa Bir ülkedeki yerel düzenlemeler nedeniyle, ultra geniş bant kumanda, STATUS_CODE_ANDROID_REGULATION_UWB_OFF durum kodu. Ultra Geniş Bant çerçevesi ise ultra geniş bant uygulamalara, ultra geniş bant yığın durumunun DISABLED olduğunu bildirir.

Bir kullanıcı farklı bir ülkeye seyahat ettiğinde, ultra geniş bant çerçevesi yeni bir ülke kodu için ANDROID_SET_COUNTRY_CODE UCI komutunu kullanın. Seçtiğiniz düzenleme moduna ultra geniş bant denetleyicisi tarafından döndürülen durum kodu ( yeni bir ülke) bu durum, ultra geniş bant yığınının durumunda değişikliğe neden olabilir.

FIRA UCI spesifikasyonu tanımlı komut biçimi

UCI denetim paketlerinin biçimi için bkz. UCI'nın 4.4.2 numaralı bölümü spesifikasyonlarına göz atın.

Arayüz sürümü oluşturma

UCI spesifikasyonu, ultra geniş bant tedarikçilerinin UCI yığınının sürümünü açığa çıkarmasını sağlar cihaz tarafından UCI_GET_DEVICE_INFO_RSP ve UCI_GET_CAPS_INFO_RSP komutları. Çerçeve, aynı tablodaki etiketleri indirmek için ve davranışını buna göre değiştirin.

Ultra Geniş Bant modülü tarafından desteklenen taslak CR'lerin listesi

FiRa 2.0 için aşağıdaki taslak hazır yanıtlar, UWB modülü sürümü #330810000:

Android UCI arayüzü (FiRa satıcı kısmı)

UCI spesifikasyonu bir dizi grup tanımlayıcısını (GID) ve işlem kodunu tanımlar. tanımlayıcılar (OID'ler) kullanır. Spesifikasyon ayrıca, yalnızca satıcı kullanımı için ayrılmış bir grup GID'yi de ayırır. AOSP ultra geniş bant yığın, Android'e özgü komutlar için bu tedarikçi firma GID'lerinden ve OID'lerinden bazılarını özelliklerde tanımlanmamıştır. Ayrıntılar için bkz. UCI'nın 8.4 numaralı bölümü spesifikasyonlarına göz atın.

Android tarafından kullanılan tedarikçi firma mesajları android.hardware.uwb.fira_android HAL paketi.

Tedarikçi firma arayüzü sürümü oluşturma

Ultra geniş bant tedarikçileri android.hardware.uwb.fira_android sürümünü göstermelidir. HAL paketi, cihazda desteklenen IUwbChip.getSupportedAndroidUciVersion(). Çerçeve, bu çerçeveyi sürüm oluşturma bilgilerini kullanabilirsiniz.

Android GID'lerin ve OID'lerin listesi

Aşağıdaki tabloda, Android için GID'ler ve OID'ler listelenmiştir. 0xE ve 0xF GID'leri Android OEM'lerin kullanması için 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 şu durumlarda desteklenir: UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY. 1 olarak ayarlandı.
ANDROID_SET_COUNTRY_CODE = 0x1

Geçerli düzenleyici ülke kodunu ayarlamak için kullanılır ( SIM veya kablosuz ağ ya da OEM tarafından sabit kodlu) Ülke kodu gönderildi olarak 2 baytlık bir değer olarak ekleyebilirsiniz. CEVAP 00 değeri, ülke kodunun belirtmek için kullanılır bilinmiyor.

ANDROID_RANGE_DIAGNOSTICS = 0x2 Ultra Geniş Bant aralığı teşhis istatistiklerini almak için bildirim tarafından kullanılır. Yalnızca şu durumlarda desteklenir: UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS ayarlandı Hedef: 1.
OEM = 0xE,0xF 0x00 - 0x3F OEM kullanımı için ayrılmıştır.

UCI spesifikasyonu tarafından tanımlanan mesajlar için tedarikçi firma uzantıları

Bu bölümde UCI'ya yapılan tedarikçi firma uzantılarının ayrıntıları açıklanmaktadır. tanımlanmış iletilerdir.

SESSION_SET_APP_CONFIG_[CMD|RSP] ve SESSION_GET_APP_CONFIG_[CMD|RSP]

Aşağıda, tedarikçinin APP_CONFIG bölgesindeki TLV'lerin ayırdığı kısmı:

  • GID: 0001b (UWB oturumu yapılandırma grubu)
  • OID: 000011b (SESSION_SET_APP_CONFIG_CMD)
  • OID: 000100b (SESSION_GET_APP_CONFIG_CMD)

Aşağıdaki tabloda, ultra geniş bant oturum yapılandırma mesajlarının parametreleri listelenmektedir.

Parametre adı Uzunluk
(sekizli)
Etiket
(kimlikler)
Tedarikçi firma arayüzü sürümü Açıklama
NB_OF_RANGE_MEASUREMENTS 1 0xE3 1 AOA_RESULT_REQ ayarlanmışsa boşluk oranı Hedef: 0xF0. Yalnızca UwbVendorCapabilityTlvTypes.SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING. 1 olarak ayarlandı.
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 1 baytlık değer. Bu parametreyi yalnızca CORE_GET_CAPS_INFO_RSP olduğunda yapılandır şu değerle SUPPORTED_DIAGNOSTICS değerini döndürür: 1 teşhis raporlama özelliğinin desteklenir.

Değerler:

  • 1: Özellik etkinleştirildi
  • 0: Özellik devre dışı bırakıldı

DIAGRAMS_FRAME_REPORTS_FIELDS 1 veya 4 0xE9 2

Teşhis raporlamasını yapılandırmak için 1 baytlık veya 4 baytlık bit maskesi. Bu bit maskesi, Android 14 veya sonraki sürümlerde 1 bayttır. Android 13 veya önceki sürümlerde 4 bayt.

Bu parametreyi yalnızca CORE_GET_CAPS_INFO_RSP karşılığında iade 1 değerine sahip SUPPORTED_DIAGNOSTICS Bu, teşhis raporlama özelliğinin desteklendiğini gösterir.

Bit tanımları:

  • b0 (0x01): RSSI alanlarını etkinleştir
  • b1 (0x02): AoA alanlarını etkinleştirme
  • b2 (0x04): CIR alanlarını etkinleştir

CORE_GET_CAPS_INFO_RSP

Aşağıda, ayrılmış tedarikçi firmadaki AOSP yığını tarafından tanımlanan TLV'ler verilmiştir. CAPS_INFO bölgesindeki TLV'lerin oranı:

  • GID: 0000b (UWB çekirdek grubu)
  • OID: 000011b (CORE_GET_CAPS_INFO_RSP)

Aşağıdaki tabloda, ultra geniş bant özellikli mesajlarla ilgili parametreler listelenmiştir.

Parametre adı Uzunluk
(sekizli)
Etiket
(kimlikler)
Tedarikçi firma arayüzü sürümü Açıklama
SUPPORTED_POWER_STATS_QUERY 1 0xC0 1

Güç istatistikleri sorgusu desteğini gösteren 1 bayt değeri.

Değerler:

  • 1: Özellik destekleniyor
  • 0: Özellik desteklenmiyor
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING 1 0xE3 1

Antenin boşluk ekleme desteğini gösteren 1 baytlık değer özelliğini kullanabilirsiniz.

Değerler:

  • 1: Özellik destekleniyor
  • 0: Özellik desteklenmiyor
SUPPORTED_MIN_RANGING_INTERVAL_MS 4 0xE4 2 Desteklenen minimum aralık aralığını gösteren 4 baytlık değer: milisaniye cinsinden ayarlanır.
SUPPORTED_RANGE_DATA_NTF_CONFIG 4 0xE5 2 Desteklenen RANGE_DATA_NTF_CONFIG değerleri. Her bitin, SET_APP_CFG_CMD içinde RANGE_DATA_NTF_CONFIG.
SUPPORTED_RSSI_REPORTING 1 0xE6 2

RSSI raporlamasının desteğini gösteren 1 baytlık değer.

Değerler:

  • 1: Özellik destekleniyor
  • 0: Özellik desteklenmiyor
SUPPORTED_DIAGNOSTICS 1 0xE7 2

Teşhis raporlaması desteğini gösteren 1 bayt değeri.

Değerler:

  • 1: Özellik destekleniyor
  • 0: Özellik desteklenmiyor
SUPPORTED_MIN_SLOT_DURATION_RSTU 4 0xE8 2 RSTU'da desteklenen minimum slot süresini gösteren 4 baytlık değer.
SUPPORTED_MAX_RANGING_SESSION_NUMBER 4 0xE9 2 Desteklenen maksimum FiRa aralığı sayısını gösteren 4 baytlık değer anlamına gelir.
SUPPORTED_CHANNELS_AOA 2 0xEA 2

AoA'yı destekleyen kanalları belirtmek için 2 baytlık bit maskesi. Her biri Bit maskesindeki 1, belirli bir ultra geniş bant kanalına karşılık gelir.

Değerler:

  • 0x01: Kanal 5 destekleniyor
  • 0x02: Kanal 6 destekleniyor
  • 0x04: Kanal 8 destekleniyor
  • 0x08: Kanal 9 destekleniyor
  • 0x10: Kanal 10 destekleniyor
  • 0x20: Kanal 12 destekleniyor
  • 0x40: Kanal 13 destekleniyor
  • 0x80: Kanal 14 destekleniyor

Durum kodları

Tedarikçi firma alanındaki durum kodları aşağıda verilmiştir. Bu öğelerin döndürüleceği zaman Ultra Geniş Bant alt sistemi (UWBS) tarafından verilen UCI yanıtları (SESSION_START_RSP gibi).

Durum kodu Değer Açıklama
STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT 0x52

Mevcut aralık oturumu şu anda gerçekleştirilemediğinde durum kodu döndürülür diğer CCC veya FiRa aralığı oturumlarıyla çakışma nedeniyle başlatılmış olmalıdır.

STATUS_REGULATION_UWB_OFF 0x53

Mevcut aralık oturumu şu anda gerçekleştirilemediğinde durum kodu döndürülür mevzuat kaynaklı nedenlerden dolayı kullanılmaya başlanmıştır.

SESSION_STATUS_NTF içindeki durum değişikliği nedeni kodu

Aşağıda, tedarikçi firma alanında tanımlanan durum değişikliği nedeni kodları SESSION_STATUS_NTF bölgesindeki bir ultra geniş bant tarafından döndürülen durum alanı. Bu bildirim bir aralık oturumun durumu değiştiğinde UWBS tarafından gönderilir (örneğin, ACTIVE ile IDLE arasında).

Durum değişikliği nedeni kodu Değer Açıklama
REASON_ERROR_INVALID_CHANNEL_WITH_AOA 0x80

Yapılandırılmış kanal şunları yapmadığı için oturum durumu değişti: AoA aralığını destekler.

REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT 0x81

Diğer CCC veya FiRa ile çakışma nedeniyle oturum durumu değişti ele alacağız.

REASON_REGULATION_UWB_OFF 0x82

Ultra Geniş Bant'ın yasal gerekçelerle