AOSP अल्ट्रा-वाइडबैंड (UWB) स्टैक HAL सतह के रूप में FiRa-परिभाषित UCI इंटरफ़ेस का उपयोग करता है। यूडब्ल्यूबी कमांड इंटरफ़ेस (यूसीआई) कमांड, प्रतिक्रियाएं और सूचनाएं भेजने और प्राप्त करने के लिए एचएएल इंटरफ़ेस एक अपारदर्शी पाइप ( IUwbChip::sendUciMessage()
और IUwbClientCallback::onUciMessage()
) का उपयोग करता है। सभी Android UWB विक्रेताओं को सभी FiRa विनिर्देश परिभाषित संदेशों का समर्थन करना चाहिए। यूडब्ल्यूबी फ्रेमवर्क बैकवर्ड संगत है और डिवाइस पर यूडब्ल्यूबी विक्रेता द्वारा कार्यान्वित किसी भी यूसीआई संस्करण के साथ काम करता है। क्योंकि AOSP UWB फ्रेमवर्क एक मॉड्यूल है, यह प्रमुख FiRa मानकों के रिलीज़ के लिए लक्षित UCI विनिर्देशों के मसौदे से अनुमोदित परिवर्तन अनुरोधों (CRs) के लिए चुनिंदा समर्थन भी जोड़ सकता है। लागू किया गया ऐसा कोई भी मसौदा सीआर परिवर्तन के अधीन है।
इंटरफ़ेस परिभाषा
UWB HAL इंटरफ़ेस को स्थिर AIDL का उपयोग करके परिभाषित किया गया है। मुख्य इंटरफ़ेस android.hardware.uwb
पैकेज का उपयोग करता है।
android.hardware.uwb
पैकेज में दो मुख्य इंटरफ़ेस निम्नलिखित हैं।
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);
}
यूडब्ल्यूबी ढांचे से एचएएल कॉल प्रवाह
यह निम्नलिखित छवियां यूडब्ल्यूबी स्टैक इनिशियलाइज़ेशन, यूडब्ल्यूबी स्टैक डीइनिशियलाइज़ेशन और यूडब्ल्यूबी सत्र प्रारंभ और स्टॉप प्रक्रियाओं के लिए यूडब्ल्यूबी फ्रेमवर्क से कॉल प्रवाह को दर्शाती हैं।
चित्र 1. यूडब्ल्यूबी स्टैक इनिशियलाइज़ेशन कॉल फ़्लो (यूडब्ल्यूबी टॉगल ऑन)
चित्र 2. यूडब्ल्यूबी स्टैक डिइनिशियलाइज़ेशन कॉल फ़्लो (यूडब्ल्यूबी टॉगल ऑफ)
चित्र 3. यूडब्ल्यूबी सत्र प्रारंभ/रोकें प्रवाह
UWB देश कोड कॉन्फ़िगरेशन
जैसा कि चित्र 1 में दिखाया गया है, UWB फ्रेमवर्क विक्रेता-स्पेस UCI कमांड ANDROID_SET_COUNTRY_CODE
(GID = 0xC
, OID = 0x1
) का उपयोग करके UWB स्टैक आरंभीकरण के दौरान UWB देश कोड को कॉन्फ़िगर करता है। यूडब्ल्यूबी ढांचा निम्नलिखित स्रोतों (प्राथमिकता क्रम में सूचीबद्ध) का उपयोग करके यूडब्ल्यूबी देश कोड निर्धारित करने का प्रयास करता है। यूडब्ल्यूबी ढांचा पहले स्रोत पर रुकता है जहां देश कोड निर्धारित किया जाता है।
- ओवरराइड देश कोड: देश कोड को एडीबी शेल कमांड (स्थानीय या स्वचालित परीक्षण) के माध्यम से मजबूर किया जाता है।
- टेलीफोनी देश कोड: देश कोड सेलुलर के माध्यम से प्राप्त किया गया। यदि कई सिम हैं जो अलग-अलग कोड लौटाते हैं, तो चुना गया देश कोड गैर-नियतात्मक है।
- वाई-फ़ाई देश कोड: देश कोड वाई-फ़ाई (80211.ad) के माध्यम से पुनर्प्राप्त किया गया।
- अंतिम ज्ञात टेलीफोनी देश कोड: अंतिम ज्ञात देश कोड सेलुलर के माध्यम से प्राप्त किया गया। यदि कई सिम हैं जो अलग-अलग कोड लौटाते हैं, तो चुना गया देश कोड गैर-नियतात्मक है।
- स्थान देश कोड: देश कोड
LocationManager
फ़्यूज़्ड स्थान प्रदाता से प्राप्त किया गया। - OEM डिफ़ॉल्ट देश कोड: डिवाइस निर्माता द्वारा निर्धारित देश कोड।
यदि UWB फ्रेमवर्क UWB देश कोड निर्धारित करने में असमर्थ है, तो यह DEFAULT_COUNTRY_CODE ("00")
के मान के साथ ANDROID_SET_COUNTRY_CODE
UCI कमांड को कॉल करता है और UWB ऐप्स को सूचित करता है कि UWB स्टैक स्थिति DISABLED
है। बाद में, जब UWB फ्रेमवर्क एक वैध देश कोड निर्धारित करने में सक्षम होता है, तो यह ANDROID_SET_COUNTRY_CODE
कमांड का उपयोग करके नए देश कोड को कॉन्फ़िगर करता है और UWB ऐप्स को सूचित करता है कि UWB स्टैक READY
है।
यदि किसी देश में स्थानीय नियमों के कारण UWB का उपयोग नहीं किया जा सकता है, तो UWB नियंत्रक STATUS_CODE_ANDROID_REGULATION_UWB_OFF
स्थिति कोड लौटाता है। UWB फ्रेमवर्क तब UWB ऐप्स को सूचित करता है कि UWB स्टैक स्थिति DISABLED
है।
जब कोई उपयोगकर्ता किसी दूसरे देश की यात्रा करता है, तो UWB फ्रेमवर्क ANDROID_SET_COUNTRY_CODE
UCI कमांड का उपयोग करके एक नया देश कोड कॉन्फ़िगर करता है। यूडब्ल्यूबी नियंत्रक द्वारा लौटाए गए स्थिति कोड (नए देश में यूडब्ल्यूबी नियमों के आधार पर) के आधार पर, इससे यूडब्ल्यूबी स्टैक स्थिति में बदलाव हो सकता है।
FIRA UCI विशिष्टता-परिभाषित कमांड प्रारूप
यूसीआई नियंत्रण पैकेट के प्रारूप के लिए, यूसीआई विनिर्देश का खंड 4.4.2 देखें।
इंटरफ़ेस संस्करणीकरण
UCI विनिर्देश UWB विक्रेताओं को UCI_GET_DEVICE_INFO_RSP
और UCI_GET_CAPS_INFO_RSP
कमांड का उपयोग करके डिवाइस द्वारा कार्यान्वित UCI स्टैक के संस्करण को उजागर करने देता है। डिवाइस के यूसीआई संस्करण को लाने और उसके अनुसार उसके व्यवहार को बदलने के लिए फ्रेमवर्क इन कमांड का उपयोग करता है।
यूडब्ल्यूबी मॉड्यूल द्वारा समर्थित ड्राफ्ट सीआर की सूची
FiRa 2.0 के लिए निम्नलिखित ड्राफ्ट सीआर UWB मॉड्यूल संस्करण #330810000 द्वारा समर्थित हैं:
एंड्रॉइड यूसीआई इंटरफ़ेस (FiRa विक्रेता भाग)
यूसीआई विनिर्देश सभी विनिर्देश-परिभाषित संदेशों के लिए समूह पहचानकर्ताओं (जीआईडी) और ऑपकोड पहचानकर्ताओं (ओआईडी) के एक सेट को परिभाषित करता है। विनिर्देश विशेष रूप से विक्रेता के उपयोग के लिए आरक्षित जीआईडी का एक सेट भी आरक्षित रखता है। एओएसपी यूडब्ल्यूबी स्टैक एंड्रॉइड-विशिष्ट कमांड के लिए इनमें से कुछ विक्रेता जीआईडी और ओआईडी का उपयोग करता है जो विनिर्देश में परिभाषित नहीं हैं। विवरण के लिए, यूसीआई विनिर्देश की धारा 8.4 देखें।
Android द्वारा उपयोग किए गए ये विक्रेता संदेश android.hardware.uwb.fira_android
HAL पैकेज में परिभाषित हैं।
विक्रेता इंटरफ़ेस संस्करण
UWB विक्रेताओं को IUwbChip.getSupportedAndroidUciVersion()
के माध्यम से डिवाइस पर समर्थित android.hardware.uwb.fira_android
HAL पैकेज के संस्करण को उजागर करना होगा। बैकवर्ड संगतता को संभालने के लिए फ्रेमवर्क इस संस्करण जानकारी का उपयोग करता है।
एंड्रॉइड जीआईडी और ओआईडी की सूची
निम्न तालिका Android के लिए GID और OID को सूचीबद्ध करती है। GID 0xE
और 0xF
Android OEM के उपयोग के लिए आरक्षित हैं।
जी.आई.डी | ओआईडी | परिभाषा |
---|---|---|
ANDROID = 0xC | ANDROID_GET_POWER_STATS = 0x0 | UWB पावर से संबंधित आँकड़े प्राप्त करने के लिए कमांड और प्रतिक्रिया द्वारा उपयोग किया जाता है। केवल तभी समर्थित है जब UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY 1 पर सेट है। |
ANDROID_SET_COUNTRY_CODE = 0x1 | वर्तमान नियामक देश कोड सेट करने के लिए उपयोग किया जाता है (सिम या वाई-फाई का उपयोग करके निर्धारित किया जाता है, या OEM द्वारा हार्डकोड किया जाता है)। देश कोड ISO-3166 देश कोड के अनुरूप 2 बाइट मान के रूप में भेजा जाता है। | |
ANDROID_RANGE_DIAGNOSTICS = 0x2 | यूडब्ल्यूबी रेंजिंग डायग्नोस्टिक्स आँकड़े प्राप्त करने के लिए अधिसूचना द्वारा उपयोग किया जाता है। केवल तभी समर्थित है जब UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS को 1 पर सेट किया गया हो। | |
OEM = 0xE,0xF | 0x00 - 0x3F | OEM उपयोग के लिए आरक्षित। |
यूसीआई विनिर्देश परिभाषित संदेशों के लिए विक्रेता एक्सटेंशन
यह अनुभाग यूसीआई विनिर्देश-परिभाषित संदेशों के लिए विक्रेता एक्सटेंशन के विवरण का वर्णन करता है।
SESSION_SET_APP_CONFIG_[CMD|RSP] और SESSION_GET_APP_CONFIG_[CMD|RSP]
APP_CONFIG
में TLV के विक्रेता आरक्षित भाग में AOSP स्टैक द्वारा परिभाषित प्रकार लंबाई मान (TLV) निम्नलिखित हैं:
- GID: 0001b (UWB सत्र कॉन्फ़िगरेशन समूह)
- OID: 000011b (
SESSION_SET_APP_CONFIG_CMD
) - OID: 000100b (
SESSION_GET_APP_CONFIG_CMD
)
निम्न तालिका UWB सत्र कॉन्फ़िगरेशन संदेशों के लिए पैरामीटर सूचीबद्ध करती है।
मापदण्ड नाम | लंबाई (ऑक्टेट्स) | टैग (आईडी) | विक्रेता इंटरफ़ेस संस्करण | विवरण |
---|---|---|---|---|
NB_OF_RANGE_MEASUREMENTS | 1 | 0xE3 | 1 | यदि AOA_RESULT_REQ को 0xF0 पर सेट किया गया है तो इंटरलीविंग अनुपात। केवल तभी समर्थित है जब UwbVendorCapabilityTlvTypes.SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING 1 पर सेट हो। |
NB_OF_AZIMUTH_MEASUREMENTS | 1 | 0xE4 | 1 | |
NB_OF_ELEVATION_MEASUREMENTS | 1 | 0xE5 | 1 | |
ENABLE_DIAGNOSTICS | 1 | 0xE8 | 2 | डायग्नोस्टिक्स रिपोर्टिंग को सक्षम या अक्षम करने के लिए 1-बाइट मान। इस पैरामीटर को केवल तभी कॉन्फ़िगर करें जब मान:
|
DIAGRAMS_FRAME_REPORTS_FIELDS | 1 या 4 | 0xE9 | 2 | डायग्नोस्टिक्स रिपोर्टिंग को कॉन्फ़िगर करने के लिए 1-बाइट या 4-बाइट बिटमास्क। यह बिटमास्क Android 14 या उच्चतर में 1 बाइट और Android 13 या उससे उच्चतर में 4 बाइट्स है। इस पैरामीटर को केवल तभी कॉन्फ़िगर करें जब बिट परिभाषाएँ:
|
CORE_GET_CAPS_INFO_RSP
CAPS_INFO
में TLV के विक्रेता आरक्षित भाग में AOSP स्टैक द्वारा परिभाषित TLV निम्नलिखित हैं:
- जीआईडी: 0000बी (यूडब्ल्यूबी कोर ग्रुप)
- ओआईडी: 000011बी (
CORE_GET_CAPS_INFO_RSP
)
निम्न तालिका UWB क्षमता संदेशों के लिए पैरामीटर सूचीबद्ध करती है।
मापदण्ड नाम | लंबाई (ऑक्टेट्स) | टैग (आईडी) | विक्रेता इंटरफ़ेस संस्करण | विवरण |
---|---|---|---|---|
SUPPORTED_POWER_STATS_QUERY | 1 | 0xC0 | 1 | 1 बाइट मान पावर आँकड़े क्वेरी के लिए समर्थन दर्शाता है। मान:
|
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING | 1 | 0xE3 | 1 | 1 बाइट मान एंटीना इंटरलीविंग सुविधा के लिए समर्थन दर्शाता है। मान:
|
SUPPORTED_MIN_RANGING_INTERVAL_MS | 4 | 0xE4 | 2 | 4 बाइट मान जो मिलीसेकंड में समर्थित न्यूनतम रेंजिंग अंतराल को दर्शाता है। |
SUPPORTED_RANGE_DATA_NTF_CONFIG | 4 | 0xE5 | 2 | 4 बाइट बिटमास्क समर्थित RANGE_DATA_NTF_CONFIG मानों को दर्शाता है। बिटमास्क जहां प्रत्येक बिट SET_APP_CFG_CMD में RANGE_DATA_NTF_CONFIG में प्रयुक्त मानों से मेल खाता है। |
SUPPORTED_RSSI_REPORTING | 1 | 0xE6 | 2 | 1 बाइट मान RSSI रिपोर्टिंग के समर्थन को दर्शाता है। मान:
|
SUPPORTED_DIAGNOSTICS | 1 | 0xE7 | 2 | डायग्नोस्टिक्स रिपोर्टिंग के समर्थन को दर्शाने वाला 1 बाइट मान। मान:
|
SUPPORTED_MIN_SLOT_DURATION_RSTU | 4 | 0xE8 | 2 | 4 बाइट मान आरएसटीयू में समर्थित न्यूनतम स्लॉट अवधि को दर्शाता है। |
SUPPORTED_MAX_RANGING_SESSION_NUMBER | 4 | 0xE9 | 2 | 4 बाइट मान FiRa रेंजिंग सत्रों की समर्थित अधिकतम संख्या दर्शाता है। |
SUPPORTED_CHANNELS_AOA | 2 | 0xEA | 2 | एओए का समर्थन करने वाले चैनलों को इंगित करने के लिए 2 बाइट बिटमास्क। बिटमास्क में प्रत्येक मान:
|
स्थिति कोड
विक्रेता स्थान में स्थिति कोड निम्नलिखित हैं। इन्हें UWB सबसिस्टम (UWBS) द्वारा UCI प्रतिक्रियाओं (जैसे SESSION_START_RSP
) में लौटाया जाता है।
स्थिति का कोड | कीमत | विवरण |
---|---|---|
STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT | 0x52 | स्थिति कोड तब लौटाया जाता है जब अन्य CCC या FiRa रेंजिंग सत्रों के साथ विरोध के कारण वर्तमान रेंजिंग सत्र शुरू नहीं किया जा सकता है। |
STATUS_REGULATION_UWB_OFF | 0x53 | जब यूडब्ल्यूबी नियामक कारणों से वर्तमान सत्र शुरू नहीं किया जा सकता तो स्थिति कोड लौटाया जाता है। |
SESSION_STATUS_NTF में परिवर्तन का कारण कोड बताएं
SESSION_STATUS_NTF
में UWBS द्वारा लौटाए गए स्थिति फ़ील्ड के लिए विक्रेता स्थान में परिभाषित राज्य परिवर्तन कारण कोड निम्नलिखित हैं। यह अधिसूचना UWBS द्वारा तब भेजी जाती है जब किसी सत्र की स्थिति बदलती है (उदाहरण के लिए, ACTIVE
से IDLE
तक)।
राज्य परिवर्तन कारण कोड | कीमत | विवरण |
---|---|---|
REASON_ERROR_INVALID_CHANNEL_WITH_AOA | 0x80 | सत्र स्थिति बदल गई क्योंकि कॉन्फ़िगर किया गया चैनल AoA रेंजिंग का समर्थन नहीं करता है। |
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT | 0x81 | अन्य CCC या FiRa वाले सत्रों के साथ विरोध के कारण सत्र की स्थिति बदल गई। |
REASON_REGULATION_UWB_OFF | 0x82 | सत्र स्थिति बदल गई क्योंकि नियामक कारण से यूडब्ल्यूबी को अक्षम किया जाना चाहिए। |