यूडब्ल्यूबी एचएएल इंटरफेस

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

}

यूडब्ल्यूबी ढांचे से एचएएल कॉल प्रवाह

यह निम्नलिखित छवियां यूडब्ल्यूबी स्टैक इनिशियलाइज़ेशन, यूडब्ल्यूबी स्टैक डीइनिशियलाइज़ेशन और यूडब्ल्यूबी सत्र प्रारंभ और स्टॉप प्रक्रियाओं के लिए यूडब्ल्यूबी फ्रेमवर्क से कॉल प्रवाह को दर्शाती हैं।

UWB स्टैक आरंभीकरण

चित्र 1. यूडब्ल्यूबी स्टैक इनिशियलाइज़ेशन कॉल फ़्लो (यूडब्ल्यूबी टॉगल ऑन)

UWB स्टैक डिइनिशियलाइज़ेशन

चित्र 2. यूडब्ल्यूबी स्टैक डिइनिशियलाइज़ेशन कॉल फ़्लो (यूडब्ल्यूबी टॉगल ऑफ)

यूडब्ल्यूबी सत्र शुरू और बंद

चित्र 3. यूडब्ल्यूबी सत्र प्रारंभ/रोकें प्रवाह

UWB देश कोड कॉन्फ़िगरेशन

जैसा कि चित्र 1 में दिखाया गया है, UWB फ्रेमवर्क विक्रेता-स्पेस UCI कमांड ANDROID_SET_COUNTRY_CODE (GID = 0xC , OID = 0x1 ) का उपयोग करके UWB स्टैक आरंभीकरण के दौरान UWB देश कोड को कॉन्फ़िगर करता है। यूडब्ल्यूबी ढांचा निम्नलिखित स्रोतों (प्राथमिकता क्रम में सूचीबद्ध) का उपयोग करके यूडब्ल्यूबी देश कोड निर्धारित करने का प्रयास करता है। यूडब्ल्यूबी ढांचा पहले स्रोत पर रुकता है जहां देश कोड निर्धारित किया जाता है।

  1. ओवरराइड देश कोड: देश कोड को एडीबी शेल कमांड (स्थानीय या स्वचालित परीक्षण) के माध्यम से मजबूर किया जाता है।
  2. टेलीफोनी देश कोड: देश कोड सेलुलर के माध्यम से प्राप्त किया गया। यदि कई सिम हैं जो अलग-अलग कोड लौटाते हैं, तो चुना गया देश कोड गैर-नियतात्मक है।
  3. वाई-फ़ाई देश कोड: देश कोड वाई-फ़ाई (80211.ad) के माध्यम से पुनर्प्राप्त किया गया।
  4. अंतिम ज्ञात टेलीफोनी देश कोड: अंतिम ज्ञात देश कोड सेलुलर के माध्यम से प्राप्त किया गया। यदि कई सिम हैं जो अलग-अलग कोड लौटाते हैं, तो चुना गया देश कोड गैर-नियतात्मक है।
  5. स्थान देश कोड: देश कोड LocationManager फ़्यूज़्ड स्थान प्रदाता से प्राप्त किया गया।
  6. 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 बाइट मान के रूप में भेजा जाता है। 00 का मान यह इंगित करने के लिए उपयोग किया जाता है कि देश कोड अज्ञात है।

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-बाइट मान। इस पैरामीटर को केवल तभी कॉन्फ़िगर करें जब CORE_GET_CAPS_INFO_RSP 1 के मान के साथ SUPPORTED_DIAGNOSTICS लौटाता है जो दर्शाता है कि डायग्नोस्टिक्स रिपोर्टिंग सुविधा समर्थित है।

मान:

  • 1 : सुविधा सक्षम
  • 0 : सुविधा अक्षम

DIAGRAMS_FRAME_REPORTS_FIELDS 1 या 4 0xE9 2

डायग्नोस्टिक्स रिपोर्टिंग को कॉन्फ़िगर करने के लिए 1-बाइट या 4-बाइट बिटमास्क। यह बिटमास्क Android 14 या उच्चतर में 1 बाइट और Android 13 या उससे उच्चतर में 4 बाइट्स है।

इस पैरामीटर को केवल तभी कॉन्फ़िगर करें जब CORE_GET_CAPS_INFO_RSP 1 के मान के साथ SUPPORTED_DIAGNOSTICS लौटाता है जो दर्शाता है कि डायग्नोस्टिक्स रिपोर्टिंग सुविधा समर्थित है।

बिट परिभाषाएँ:

  • b0 (0x01) : RSSI फ़ील्ड सक्रिय करें
  • b1 (0x02) : AoA फ़ील्ड सक्रिय करें
  • b2 (0x04) : सीआईआर फ़ील्ड सक्रिय करें

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 बाइट मान पावर आँकड़े क्वेरी के लिए समर्थन दर्शाता है।

मान:

  • 1 : सुविधा समर्थित
  • 0 : सुविधा समर्थित नहीं है
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING 1 0xE3 1

1 बाइट मान एंटीना इंटरलीविंग सुविधा के लिए समर्थन दर्शाता है।

मान:

  • 1 : सुविधा समर्थित
  • 0 : सुविधा समर्थित नहीं है
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 रिपोर्टिंग के समर्थन को दर्शाता है।

मान:

  • 1 : सुविधा समर्थित
  • 0 : सुविधा समर्थित नहीं है
SUPPORTED_DIAGNOSTICS 1 0xE7 2

डायग्नोस्टिक्स रिपोर्टिंग के समर्थन को दर्शाने वाला 1 बाइट मान।

मान:

  • 1 : सुविधा समर्थित
  • 0 : सुविधा समर्थित नहीं है
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 बाइट बिटमास्क। बिटमास्क में प्रत्येक 1 एक विशिष्ट UWB चैनल से मेल खाता है।

मान:

  • 0x01 : चैनल 5 समर्थित
  • 0x02 : चैनल 6 समर्थित
  • 0x04 : चैनल 8 समर्थित
  • 0x08 : चैनल 9 समर्थित
  • 0x10 : चैनल 10 समर्थित
  • 0x20 : चैनल 12 समर्थित
  • 0x40 : चैनल 13 समर्थित
  • 0x80 : चैनल 14 समर्थित

स्थिति कोड

विक्रेता स्थान में स्थिति कोड निम्नलिखित हैं। इन्हें 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

सत्र स्थिति बदल गई क्योंकि नियामक कारण से यूडब्ल्यूबी को अक्षम किया जाना चाहिए।