Android 16 में, Ranging module को पेश किया गया है. इस स्पेसिफ़िकेशन में, आउट-ऑफ़-बैंड (OOB) कम्यूनिकेशन के मैसेज सीक्वेंस और पेलोड के बारे में बताया गया है. इस कम्यूनिकेशन से, रेंजिंग कॉन्फ़िगरेशन का आदान-प्रदान होता है. साथ ही, रेंजिंग में शामिल होने वाले डिवाइसों के बीच रेंजिंग शुरू और बंद होती है.
इस पेज का मुख्य मकसद, Android के अलावा अन्य डिवाइस बनाने वाली कंपनियों को इस स्पेसिफ़िकेशन को लागू करने की अनुमति देना है. इससे, उनके डिवाइस Android डिवाइसों के साथ रेंजिंग के लिए काम कर पाएंगे.
Google की पैकेट डिस्क्रिप्शन लैंग्वेज (पीडीएल) में इस स्पेसिफ़िकेशन को लागू करने का तरीका GitHub पर उपलब्ध है. इस तरीके से लागू करने पर, PDL कंपाइलर, इस स्पेसिफ़िकेशन में तय किए गए मैसेज के लिए, सीरियलाइज़ेशन और डीसीरियलाइज़ेशन कोड जनरेट कर सकता है. यह C++, Rust, और Java जैसी कई टारगेट भाषाओं के साथ काम करता है.
मैसेज और मैसेज का क्रम
इस सेक्शन में, मैसेज और मैसेज एक्सचेंज के क्रम के बारे में बताया गया है.
नीचे दी गई टेबल में, OOB एक्सचेंज में मौजूद सभी मैसेज दिखाए गए हैं:
| मैसेज | मैसेज की आईडी |
|---|---|
Ranging Capability Request |
0x0 |
Ranging Capability Response |
0x1 |
Ranging Configuration |
0x2 |
Ranging Configuration Response (ज़रूरी नहीं) |
0x3 |
Stop Ranging |
0x6 |
Stop Ranging Response (ज़रूरी नहीं) |
0x7 |
जैसा कि पहले और दूसरे डायग्राम में दिखाया गया है, मैसेज एक्सचेंज कैसे ट्रिगर होता है, यह कम्यूनिकेशन चैनल पर निर्भर करता है.
कनेक्शन पर आधारित कम्यूनिकेशन चैनल, जैसे कि ब्लूटूथ स्मार्ट (बीएलई)
जेनेरिक एट्रिब्यूट प्रोफ़ाइल (गैट) के लिए, मैसेज का आदान-प्रदान तब शुरू होता है, जब शुरू करने वाला डिवाइस, जवाब देने वाले डिवाइस को Ranging Capability Request भेजता है. इसके बाद, जवाब देने वाला डिवाइस Ranging Capability Response भेजकर जवाब देता है. जैसा कि पहले डायग्राम में दिखाया गया है:
पहली इमेज. कनेक्शन पर आधारित कम्यूनिकेशन चैनल का इस्तेमाल करके, ओओबी मैसेज एक्सचेंज करना.
विज्ञापन दिखाने वाले कम्यूनिकेशन चैनल के लिए, जवाब देने वाला डिवाइस Ranging Capability का विज्ञापन दिखाना शुरू करता है. इस मामले में, शुरू करने वाला डिवाइस Ranging Capability Request नहीं भेजता है. इसके बजाय, विज्ञापन का पता लगाने के बाद, शुरू करने वाला (शुरुआती स्कैनर) डिवाइस, Ranging Configuration को पहले मैसेज के तौर पर भेजता है. जैसा कि इमेज 2 में दिखाया गया है:
दूसरी इमेज. विज्ञापन के आधार पर कम्यूनिकेशन का इस्तेमाल करके, OOB मैसेज एक्सचेंज करना.
मैसेज के बाकी लेन-देन दोनों मामलों में एक जैसे होते हैं. Ranging Configuration मैसेज मिलने के तुरंत बाद, जवाब देने वाले डिवाइस पर रेंजिंग शुरू हो जाती है. Stop Ranging मैसेज मिलने या उसका पता चलने पर, यह डिवाइस की रेंज में नहीं रहता.
कनेक्शन पर आधारित फ़्लो में, जवाब देने वाला डिवाइस सिर्फ़ उन रेंजिंग टेक्नोलॉजी के लिए सुविधाएं दिखाता है जिनके लिए Ranging Capability Request मैसेज में अनुरोध किया गया है. विज्ञापन दिखाने के फ़्लो में, जवाब देने वाले डिवाइस को अपनी सभी क्षमताओं की सूची देनी होगी, क्योंकि इससे पहले क्षमता के अनुरोध का कोई मैसेज नहीं होता है.
अनुरोध शुरू करने वाला डिवाइस यह मानकर चलता है कि उसे भेजे गए किसी भी अनुरोध मैसेज का सिर्फ़ एक जवाब मिलेगा. जवाब देने वाले डिवाइस को इस तरह का कोई अनुमान नहीं लगाना चाहिए, ताकि वह किसी भी क्रम में किसी भी अनुरोध का जवाब दे सके. इससे यह पुष्टि करने में मदद मिलती है कि जवाब देने वाला डिवाइस, शुरू करने वाले डिवाइस से मिले लगातार कई Ranging Capability
Request मैसेज या क्रम से बाहर के किसी अन्य मैसेज का जवाब दे सकता है.
रेंजिंग टेक्नोलॉजी के आईडी
इस सेक्शन में, रेंजिंग टेक्नोलॉजी के आईडी दिए गए हैं: अल्ट्रा वाइडबैंड (यूडब्ल्यूबी), ब्लूटूथ स्मार्ट (बीएलई) चैनल साउंडिंग (सीएस), वाई-फ़ाई नेबर अवेयरनेस नेटवर्किंग (एनएएन) राउंड-ट्रिप टाइम (आरटीटी), और रिसीव्ड सिग्नल स्ट्रेंथ इंडिकेटर (आरएसएसआई).
इन आईडी का इस्तेमाल यहां दी गई टेबल में किया जाता है. इनमें रेंजिंग टेक्नोलॉजी आईडी की ज़रूरत होती है. रेंजिंग टेक्नोलॉजी bitfield वाले फ़ील्ड के लिए, टेक्नोलॉजी के आईडी के इंडेक्स से मेल खाने वाला बिट सेट किया जाता है. ऐसा तब होता है, जब उस टेक्नोलॉजी को बिटफ़ील्ड में शामिल किया जाता है.
उदाहरण के लिए, आरएसएसआई की आईडी वैल्यू 3 है. अगर आरएसएसआई को रेंजिंग टेक्नोलॉजी बिटफ़ील्ड में शामिल किया जाता है, तो आईडी (3) की पोज़िशन वाले बिट को चालू करना होगा (पहला बिट पोज़िशन 0 पर होता है). इससे बिटफ़ील्ड की वैल्यू 0x8 हो जाती है. अगर यूडब्ल्यूबी और आरएसएसआई, दोनों को शामिल किया जाता है, तो बिटफ़ील्ड की वैल्यू 0x0A होती है (दोनों बिट 0 और 3 चालू हैं).
रेंजिंग टेक्नोलॉजी के आईडी यहां दी गई टेबल में दिए गए हैं:
| रेंजिंग टेक्नोलॉजी | ID |
|---|---|
| यूडब्ल्यूबी | 0x0 |
| CS | 0x1 |
| Wi-Fi NAN RTT | 0x2 |
| RSSI | 0x3 |
| RFU | 0x4 - 0xFF |
मैसेज फ़ॉर्मैट
हर मैसेज में एक हेडर और एक पेलोड होता है.
तीसरी इमेज. मैसेज का फ़ॉर्मैट.
हेडर
साइज़: 2 बाइट
ब्यौरा: हेडर, सभी मैसेज में एक जैसा होता है. यह मैसेज का पहला हिस्सा होता है. हेडर में, मैसेज टाइप का वर्शन और आईडी होता है. वर्शन फ़ील्ड से, इस स्पेसिफ़िकेशन के उस वर्शन के बारे में पता चलता है जिसके मुताबिक मैसेज का कॉन्टेंट है. इस स्पेसिफ़िकेशन का मौजूदा वर्शन 1 है. अलग-अलग वर्शन वाले डिवाइसों के बीच वर्शनिंग का इस्तेमाल कैसे किया जाता है, इस बारे में ज़्यादा जानने के लिए वर्शनिंग लेख पढ़ें. हेडर, अलग-अलग वर्शन के साथ काम करता है. इसका मतलब है कि इस्तेमाल का उदाहरण हमेशा इसका विश्लेषण करके, मैसेज का वर्शन और आईडी तय कर सकता है.
हेडर के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | वर्शन | 0x1 - मौजूदा वर्शन |
| 1 | unit8 | मैसेज की आईडी |
|
पेलोड
साइज़: अलग-अलग होता है (मैसेज के टाइप पर निर्भर करता है)
जानकारी: पेलोड, मैसेज का आखिरी हिस्सा होता है. यह हेडर के बाद आता है. पेलोड, मैसेज के टाइप पर निर्भर करता है. हर मैसेज टाइप के पेलोड का फ़ॉर्मैट, यहां दिए गए सेक्शन में बताया गया है.
दूरी का पता लगाने की सुविधा के लिए अनुरोध करने वाले मैसेज का पेलोड
साइज़ (इसमें हेडर का साइज़ शामिल नहीं है): 2 बाइट
ब्यौरा: मैसेज एक्सचेंज शुरू करने के लिए, इसे शुरू करने वाले डिवाइस से भेजा जाता है.
अगर बातचीत का चैनल विज्ञापन पर आधारित है, तो यह मैसेज दिखाना ज़रूरी नहीं है. ऐसे में, जवाब देने वाले डिवाइस को पहले चरण के तौर पर, Ranging
Capability मैसेज का विज्ञापन दिखाना होगा. शुरुआत करने वाला डिवाइस (शुरुआती स्कैनर), विज्ञापन को पढ़ता है और सीधे तौर पर Ranging Capability मैसेज भेजता है. इससे इस मैसेज की ज़रूरत नहीं पड़ती.
Ranging Capability Request मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8*2 | रेंजिंग टेक्नोलॉजी के लिए अनुरोध किया गया बिटफ़ील्ड |
|
रेंजिंग की सुविधा के बारे में जानकारी देने वाले मैसेज का पेलोड
साइज़ (हेडर का साइज़ शामिल नहीं है): अलग-अलग होता है (कॉमन पार्ट 2 बाइट और शामिल की गई हर रेंजिंग टेक्नोलॉजी के बाइट का साइज़)
ब्यौरा: यह मैसेज, फ़ॉर्म का जवाब देने वाले व्यक्ति ने Ranging Capability
Request मैसेज के जवाब के तौर पर भेजा है. इस मैसेज पेलोड में, सामान्य हिस्सा और टेक्नोलॉजी के हिसाब से अलग-अलग हिस्से (बीएलई सीएस, वाई-फ़ाई एनएएन आरटीटी, बीएलई आरएसएसआई) शामिल होते हैं. इन्हें यहां दी गई टेबल में दिखाया गया है. रेंजिंग टेक्नोलॉजी से जुड़ा हर हिस्सा सिर्फ़ तब जोड़ा जाना चाहिए, जब
रेस्पॉन्डर डिवाइस पर वह रेंजिंग टेक्नोलॉजी काम करती हो और Ranging Capability Request मैसेज में उसका अनुरोध किया गया हो. विज्ञापन के कम्यूनिकेशन चैनल के मामले में, रेंजिंग की सभी टेक्नोलॉजी शामिल होनी चाहिए.
Ranging Capability Response मैसेज के सामान्य पेलोड के बारे में यहां बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8*2 | रेंजिंग टेक्नोलॉजी के साथ काम करने वाले बिटफ़ील्ड. यह रेंजिंग टेक्नोलॉजी की उन सुविधाओं के सेट के बारे में बताता है जो पेलोड के बाकी हिस्से में शामिल हैं. |
|
| 2 | बाइट अरे | टेक्नोलॉजी की क्षमता के हिसाब से बाइट की रेंज. | हर टेक्नोलॉजी के हिसाब से तय किए गए स्ट्रक्चर के दोहराए गए ब्लॉक. |
UWB Ranging Capability Response मैसेज के पेलोड के बारे में यहां बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x0 - यूडब्ल्यूबी |
| 1 | uint8 | साइज़ | यूडब्ल्यूबी की क्षमताओं का साइज़, बाइट में. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं. |
| 2 | uint8*2 | UWB पता | यह डिवाइस के यूडब्ल्यूबी का दो बाइट वाला पता होता है. |
| 4 | uint8*4 | सहायता देने वाले चैनलों का बिटफ़ील्ड | यह बिटफ़ील्ड, उन चैनलों के बारे में बताता है जिन पर यह सुविधा काम करती है. बिट को 0 पर सेट करने का मतलब है कि सुविधा काम नहीं करती और 1 पर सेट करने का मतलब है कि सुविधा काम करती है. बिट 0, चैनल 0 से मेल खाता है.LSB == channel 0MSB == channel 31 |
| 8 | uint8*4 | प्रीऐंबल इंडेक्स बिटफ़ील्ड के साथ काम करता है | सपोर्ट किए गए प्रीऐम्बल इंडेक्स का बिटफ़ील्ड. बिट को 0 पर सेट करने का मतलब है कि सुविधा काम नहीं करती और 1 पर सेट करने का मतलब है कि सुविधा काम करती है. बिट 0, प्रीऐंबल इंडेक्स 1 के हिसाब से होता है.LSB == preamble index 1MSB == preamble index 32 |
| 12 | uint8*4 | कॉन्फ़िगरेशन आईडी बिटफ़ील्ड | यह यूडब्ल्यूबी के साथ काम करने वाले कॉन्फ़िगरेशन आईडी का बिटफ़ील्ड है. बिट को 0 पर सेट करने का मतलब है कि यह सुविधा काम नहीं करती. वहीं, बिट को 1 पर सेट करने का मतलब है कि यह सुविधा काम करती है.LSB == config Id 0> MSB == config Id 31 |
| 16 | uint8*2 | रेंजिंग के लिए कम से कम इंटरवल | इससे पता चलता है कि रेंजिंग के लिए सबसे कम समय कितना है. यह समय मिलीसेकंड में होता है. इस्तेमाल की जा सकने वाली वैल्यू (मिलीसेकंड में):
|
| 18 | uint8 | स्लॉट की कम से कम अवधि | इससे पता चलता है कि स्लॉट की कम से कम अवधि कितनी होनी चाहिए. यह अवधि मिलीसेकंड में होती है. उदाहरण के लिए, अगर डिवाइस 1 मि॰से॰ दिखाता है, तो यह माना जाता है कि यह 2 मि॰से॰ से ज़्यादा की अवधि वाले स्लॉट के साथ भी काम करता है. इस्तेमाल की जा सकने वाली वैल्यू (मिलीसेकंड में):
|
| 19 | यूडब्ल्यूबी डिवाइस की भूमिका के लिए बिटफ़ील्ड | यह UWB की उन भूमिकाओं का बिटफ़ील्ड है जिनके लिए डिवाइस काम करता है. उदाहरण के लिए, अगर दोनों में फ़ाइनल फ़ील्ड वैल्यू काम करती है, तो यह 0x3 होगी.
|
BLE CS Ranging Capability Response मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x1 - BLE CS |
| 1 | uint8 | साइज़ | यह BLE CS की क्षमताओं का साइज़ है. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं. |
| 2 | uint8 | सुरक्षा के टाइप के लिए इस्तेमाल किया जा सकने वाला बिटफ़ील्ड | यह BLE CS के लिए, इस्तेमाल की जा सकने वाली सुरक्षा के टाइप का बिटफ़ील्ड है.
|
| 3 | uint8*6 | डिवाइस का पता | BLE CS के लिए इस्तेमाल किए गए डिवाइस का पता; बिग-एंडियन क्रम में. |
वाई-फ़ाई एनएएन आरटीटी Ranging Capability Response मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x2 - वाई-फ़ाई एनएएन आरटीटी |
| 1 | uint8 | साइज़ | बाइट में, बीएलई आरएसएसआई की क्षमताओं का साइज़. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं. |
| 2 | uint8 | इस्तेमाल की जा सकने वाली सुविधाओं का बिटफ़ील्ड | इस्तेमाल की जा सकने वाली सुविधाओं का बिटफ़ील्ड.
|
| 3 | uint8 | समय-समय पर रेंजिंग की सुविधा उपलब्ध है |
|
| 4 | uint8 | बैंडविड्थ की सुविधा | इस जानकारी से, वाई-फ़ाई एनएएन का इस्तेमाल करके, रेंजिंग की सटीक जानकारी हासिल करने में मदद मिलती है. साथ ही, इससे ऐप्लिकेशन को यह तय करने में मदद मिलती है कि रेंजिंग के लिए, यूडब्ल्यूबी, बीएलई सीएस, बीएलई आरएसएसआई या वाई-फ़ाई एनएएन का इस्तेमाल करना है या नहीं.
|
| 5 | uint8 | मिलने वाली चेन की संख्या | इस जानकारी से, वाई-फ़ाई एनएएन का इस्तेमाल करके, रेंजिंग की सटीक जानकारी हासिल करने में मदद मिलती है. साथ ही, इससे ऐप्लिकेशन को यह तय करने में मदद मिलती है कि रेंजिंग के लिए, यूडब्ल्यूबी, बीएलई सीएस, बीएलई आरएसएसआई या वाई-फ़ाई एनएएन का इस्तेमाल करना है या नहीं.
|
BLE RSSI Ranging Capability Response मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x3 - बीएलई आरएसएसआई |
| 1 | uint8 | साइज़ | BLE RSSI की क्षमताओं के बाइट का साइज़. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं |
| 2 | uint8*6 | डिवाइस का पता | BLE RSSI के लिए इस्तेमाल किए गए डिवाइस का पता; बिग-एंडियन ऑर्डर में |
रेंजिंग कॉन्फ़िगरेशन मैसेज पेलोड
साइज़ (हेडर का साइज़ शामिल नहीं है): अलग-अलग होता है (कॉमन पार्ट 4 बाइट के साथ-साथ, शामिल की गई हर रेंजिंग टेक्नोलॉजी के बाइट का साइज़).
ब्यौरा: यह मैसेज, रेंजिंग की प्रोसेस शुरू करने वाले व्यक्ति या कंपनी ने भेजा है. इसमें वे कॉन्फ़िगरेशन शामिल हैं जिनकी मदद से, रेंजिंग की प्रोसेस शुरू की जा सकती है. इस मैसेज को पाने के बाद, जवाब देने वाले डिवाइस को रेंजिंग की हर बताई गई टेक्नोलॉजी के साथ रेंजिंग शुरू करनी होगी. इस मैसेज पेलोड में, सामान्य हिस्सा और रेंजिंग टेक्नोलॉजी के हिसाब से अलग-अलग हिस्से (यूडब्ल्यूबी, बीएलई सीएस, वाई-फ़ाई एनएएन आरटीटी, बीएलई आरएसएसआई) शामिल होते हैं. इन्हें यहां दी गई टेबल में दिखाया गया है.
Ranging Configuration मैसेज के सामान्य पेलोड के बारे में यहां बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8*2 | Ranging technologies configuration set bitfield | यह रेंजिंग टेक्नोलॉजी का बिटफ़ील्ड है. इस मैसेज में, इसके कॉन्फ़िगरेशन का डेटा होता है. साथ ही, इसके कॉन्फ़िगरेशन पैरामीटर सेट किए जाने चाहिए.
|
| 2 | uint8*2 | बिटफ़ील्ड | RFU. इसे Ranging technologies configuration set bitfield फ़ील्ड की वैल्यू के बराबर सेट किया जाना चाहिए. |
| 4 | बाइट अरे | रेंजिंग टेक्नोलॉजी के कॉन्फ़िगरेशन बाइट | हर टेक्नोलॉजी के हिसाब से तय की गई स्ट्रक्चर की दोहराई गई ब्लॉक |
UWB Ranging Configuration मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x0 - यूडब्ल्यूबी |
| 1 | uint8 | साइज़ | बाइट में, यूडब्ल्यूबी कॉन्फ़िगरेशन का साइज़. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं |
| 2 | uint8*2 | UWB पता | डिवाइस का यूडब्ल्यूबी पता (2 बाइट) |
| 4 | uint8*4 | सेशन आईडी | जनरेट किया गया सेशन आईडी. सेशन आईडी, फ़ोन और पेरिफ़रल के बीच रेंजिंग सेशन के लिए यूनीक आइडेंटिफ़ायर होता है. |
| 8 | uint8 | चुना गया कॉन्फ़िगरेशन आईडी | चुने गए कॉन्फ़िगरेशन आईडी की संख्या पूर्णांक में. कॉन्फ़िगरेशन आईडी, टाइमिंग पैरामीटर और सुरक्षा के उस टाइप के बारे में बताता है जिसका इस्तेमाल यूडब्ल्यूबी रेंजिंग सेशन के लिए किया जाना चाहिए. |
| 9 | uint8 | चुना गया चैनल | UWB रेंजिंग सेशन के लिए चुना गया चैनल |
| 10 | uint8 | चुना गया प्रस्तावना इंडेक्स | UWB रेंजिंग सेशन के लिए चुना गया प्रीऐंबल इंडेक्स |
| 11 | uint8*2 | चुना गया रेंजिंग इंटरवल | चुने गए रेंजिंग इंटरवल की दर, मिलीसेकंड में. इस्तेमाल की जा सकने वाली वैल्यू (मिलीसेकंड में):
|
| 13 | uint8 | चुने गए स्लॉट की अवधि | चुने गए स्लॉट की अवधि, मिलीसेकंड में. इस्तेमाल की जा सकने वाली वैल्यू (मिलीसेकंड में):
|
| 14 | uint8 | सेशन की कुंजी की लंबाई | सेशन कुकी की लंबाई, बाइट में |
| 15 | बाइट अरे | सेशन की कुंजी | सेशन के लिए कुंजी. अगर S-STS का इस्तेमाल किया जाता है, तो पहले दो बाइट वेंडर आईडी होते हैं और अगले छह बाइट स्टैटिक STS IV होते हैं. अगर P-STS का इस्तेमाल किया जाता है, तो यह 16 बाइट या 32 बाइट की सेशन कुकी होती है. इस्तेमाल की गई सुरक्षा का टाइप, कॉन्फ़िगरेशन आईडी से तय होता है. |
| अलग-अलग होती है | uint8*2 | देश का कोड | ISO 3166-1 alpha-2 देश का कोड, जिसे दो ASCII वर्णों से दिखाया जाता है |
| अलग-अलग होती है | uint8 | चुने गए डिवाइस की भूमिका |
|
| अलग-अलग होती है | uint8 | चुना गया डिवाइस मोड |
|
BLE CS Ranging Configuration मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x1 - BLE CS |
| 1 | uint8 | साइज़ | बाइट में, BLE CS कॉन्फ़िगरेशन का साइज़. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं |
| 2 | uint8 | चुनी गई सुरक्षा का टाइप | चुनी गई सुरक्षा का टाइप. इस्तेमाल की जा सकने वाली वैल्यू:
|
| 3 | uint8*6 | डिवाइस का पता | BLE CS के लिए इस्तेमाल किए गए डिवाइस का पता; बिग-एंडियन क्रम में |
वाई-फ़ाई एनएएन आरटीटी Ranging Configuration मैसेज पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x2 - वाई-फ़ाई एनएएन आरटीटी |
| 1 | uint8 | साइज़ | बाइट में, वाई-फ़ाई एनएएन आरटीटी कॉन्फ़िगरेशन का साइज़. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं |
| 2 | uint8 | सेवा के नाम की लंबाई | सेवा के नाम वाले फ़ील्ड की लंबाई बाइट में. Wi-Fi Aware Specification v4.0 सेक्शन 1.3.3 टेबल 1 देखें. परिभाषाएं. |
| 3 | बाइट अरे | सेवा का नाम | सेवा का नाम. Wi-Fi Aware Specification v4.0 सेक्शन 1.3.3 टेबल 1 देखें. परिभाषाएं. |
| अलग-अलग होती है | uint8 | डिवाइस की भूमिका |
|
| अलग-अलग होती है | uint8 | समय-समय पर रेंजिंग की सुविधा का इस्तेमाल करना |
|
BLE RSSI Ranging Configuration मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8 | रेंजिंग टेक्नोलॉजी आईडी | 0x3 - बीएलई आरएसएसआई |
| 1 | uint8 | साइज़ | बीएलई आरएसएसआई कॉन्फ़िगरेशन का साइज़, बाइट में. इसमें टेक्नोलॉजी आईडी और साइज़ फ़ील्ड शामिल हैं |
| 2 | uint8*6 | डिवाइस का पता | BLE RSSI के लिए इस्तेमाल किए गए डिवाइस का पता; बिग-एंडियन ऑर्डर में |
रेंजिंग कॉन्फ़िगरेशन के जवाब वाले मैसेज का पेलोड
साइज़ (इसमें हेडर का साइज़ शामिल नहीं है): 2 बाइट
ब्यौरा: यह मैसेज, जवाब देने वाले व्यक्ति ने Ranging Configuration मैसेज के जवाब के तौर पर भेजा है. यह मैसेज देना ज़रूरी नहीं है. यह सिर्फ़ तब ज़रूरी होता है, जब इस्तेमाल किए गए कम्यूनिकेशन चैनल को हर अनुरोध के लिए साफ़ तौर पर जवाब देने की ज़रूरत होती है.
Ranging Configuration Response मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8*2 | रेंजिंग टेक्नोलॉजी के कॉन्फ़िगरेशन के लिए बिट फ़ील्ड सेट किया गया | रेंजिंग टेक्नोलॉजी का बिटफ़ील्ड, जिन्हें सेट किया गया है. अगर टेक्नोलॉजी का अनुरोध किया गया है और उसे सेट कर लिया गया है, तो बिटफ़ील्ड, रेंजिंग टेक्नोलॉजी बिट को 1 पर सेट करता है. ऐसा न होने पर, इसे 0 पर सेट करता है.
|
मैसेज पेलोड की रेंजिंग बंद करें
साइज़ (इसमें हेडर का साइज़ शामिल नहीं है): 2 बाइट
ब्यौरा: यह मैसेज, रेंजिंग की प्रोसेस शुरू करने वाला डिवाइस भेजता है. ऐसा तब होता है, जब रेंजिंग की प्रोसेस को बंद करने का समय आ जाता है.
Stop Ranging मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8*2 | बिटफ़ील्ड को रोकने के लिए रेंजिंग टेक्नोलॉजी | रेंजिंग टेक्नोलॉजी का बिटफ़ील्ड, जिसे रेंजिंग बंद करनी होगी. बिट को 1 पर सेट करने का मतलब है कि रेंजिंग टेक्नोलॉजी को रेंजिंग बंद करनी होगी. वहीं, 0 पर सेट करने का मतलब है कि रेंजिंग टेक्नोलॉजी या तो शुरू से रेंजिंग नहीं कर रही थी या अगर वह पहले से रेंजिंग कर रही थी, तो उसे रेंजिंग जारी रखनी होगी. कुछ रेंजिंग टेक्नोलॉजी (जैसे कि सीएस) के लिए, यह कोई कार्रवाई नहीं है, क्योंकि रेंजिंग की सुविधा सिर्फ़ शुरू करने वाले व्यक्ति के डिवाइस पर शुरू और बंद की जाती है.
|
जवाब के मैसेज पेलोड की रेंजिंग बंद करें
साइज़ (इसमें हेडर का साइज़ शामिल नहीं है): 2 बाइट
ब्यौरा: यह मैसेज, जवाब देने वाले व्यक्ति ने Stop Ranging मैसेज के जवाब के तौर पर भेजा है. यह मैसेज देना ज़रूरी नहीं है. यह सिर्फ़ तब ज़रूरी होता है, जब इस्तेमाल किए गए कम्यूनिकेशन चैनल को हर अनुरोध के लिए साफ़ तौर पर जवाब देना होता है.
Stop Ranging Response मैसेज के पेलोड के बारे में यहां दी गई टेबल में बताया गया है:
| ऑक्टेट | डेटा टाइप | ब्यौरा | वैल्यू |
|---|---|---|---|
| 0 | uint8*2 | रेंजिंग टेक्नोलॉजी को रोकने से जुड़ा बिटफ़ील्ड | रेंजिंग टेक्नोलॉजी का बिटफ़ील्ड, जिसने रेंजिंग को सफलतापूर्वक रोक दिया है. अगर टेक्नोलॉजी को बंद करने का अनुरोध किया गया था और वह बंद हो गई है, तो बिटफ़ील्ड, रेंजिंग टेक्नोलॉजी बिट को 1 पर सेट करता है. अगर टेक्नोलॉजी बंद नहीं हुई है, तो बिटफ़ील्ड, रेंजिंग टेक्नोलॉजी बिट को 0 पर सेट करता है.
|
वर्शन
स्पेसिफ़िकेशन का वर्शन, हर मैसेज के हेडर में शामिल होता है. इस सेक्शन में बताया गया है कि जब दोनों डिवाइसों में से कोई एक डिवाइस (शुरू करने वाला या जवाब देने वाला) दूसरे डिवाइस के मुकाबले पुराने वर्शन पर हो, तो कम्यूनिकेशन कैसे किया जाता है.
पहला केस: कनेक्शन पर आधारित कम्यूनिकेशन चैनल
इस सेक्शन में, कनेक्शन पर आधारित बातचीत के चैनल का इस्तेमाल करने वाले उदाहरणों के बारे में बताया गया है. इनमें Ranging Capability Request, शुरू करने वाले डिवाइस से भेजा गया पहला मैसेज है.
पहली स्थिति (1.a): अनुरोध करने वाला, नए वर्शन के साथ काम करता है. वहीं, जवाब देने वाला, पुराने वर्शन के साथ काम करता है.
शुरुआत करने वाला डिवाइस, नए वर्शन के साथ Ranging Capability Request मैसेज भेजता है. जवाब देने वाला डिवाइस सिर्फ़ पुराने वर्शन के साथ काम करता है. इसलिए, वह उसी वर्शन में जवाब देता है. इसके बाद, मैसेज के बाकी लेन-देन के लिए, जवाब देने वाले डिवाइस के पुराने वर्शन का इस्तेमाल किया जाता है. इसका मतलब है कि Ranging Capability Request मैसेज, पुराने सिस्टम के साथ काम करने वाला होना चाहिए.
केस 1.b: अनुरोध करने वाला पक्ष, पुराने वर्शन के साथ काम करता है. वहीं, जवाब देने वाला पक्ष, नए वर्शन के साथ काम करता है.
जवाब देने वाले डिवाइस को पता चलता है कि शुरू करने वाला डिवाइस, नए वर्शन का इस्तेमाल नहीं कर सकता. इसलिए, वह सिर्फ़ पुराने वर्शन का इस्तेमाल करके मैसेज भेजता है. यह वही वर्शन होता है जिसके लिए शुरू करने वाले डिवाइस ने शुरुआत में अनुरोध किया था.
दूसरा उदाहरण: विज्ञापन पर आधारित कम्यूनिकेशन चैनल
इस सेक्शन में, विज्ञापन पर आधारित कम्यूनिकेशन चैनल का इस्तेमाल करने के उदाहरण दिए गए हैं. इनमें जवाब देने वाला डिवाइस, शुरुआती अनुरोध के बिना सीधे तौर पर विज्ञापन दिखाता है Ranging Capability Request.
केस 2.a: अनुरोध करने वाला, नए वर्शन के साथ काम करता है. वहीं, जवाब देने वाला, स्पेसिफ़िकेशन के पुराने वर्शन के साथ काम करता है.
Ranging Capability Response विज्ञापन में सेट किए गए पुराने वर्शन का इस्तेमाल, बाकी के कम्यूनिकेशन के लिए किया जाता है.
केस 2.b: अनुरोध करने वाला डिवाइस, पुराने वर्शन के साथ काम करता है. वहीं, जवाब देने वाला डिवाइस, नए वर्शन के साथ काम करता है.
Ranging Capability Response विज्ञापन का नया वर्शन, पिछले वर्शन के साथ काम करने वाला होना चाहिए, ताकि शुरू करने वाला डिवाइस मैसेज को पढ़ सके. भले ही, वह नए वर्शन का इस्तेमाल कर रहा हो. इसके बाद, शुरू करने वाला डिवाइस, Ranging
Configuration मैसेज को उस पुराने वर्शन का इस्तेमाल करके भेजता है जिसे वह डिवाइस इस्तेमाल कर सकता है. यह वह वर्शन है जिसका इस्तेमाल, बाकी के कम्यूनिकेशन के लिए किया जाता है.
यह पक्का करने के लिए कि Ranging Capability Response पुराने सिस्टम के साथ काम करता है, Ranging
Capability Response मैसेज पेलोड में इस स्पेसिफ़िकेशन के अगले वर्शन में जोड़े गए किसी भी नए फ़ील्ड को पेलोड के आखिर में जोड़ना होगा. साथ ही, मौजूदा फ़ील्ड में से किसी को भी बदला नहीं जा सकता. कॉन्फ़िगरेशन को पार्स करते समय, अगर बताया गया साइज़ उम्मीद से ज़्यादा है, तो अतिरिक्त फ़ील्ड को ऐसे डिवाइस से अनदेखा किया जाना चाहिए जो सिर्फ़ स्पेसिफ़िकेशन के पुराने वर्शन को समझ सकता है.
फ़्रैगमेंटेशन
यह स्पेसिफ़िकेशन, कम्यूनिकेशन चैनल से अलग है. इसलिए, यह नहीं बताता कि अगर कोई मैसेज इतना बड़ा है कि इस्तेमाल किए जा रहे कम्यूनिकेशन चैनल के ट्रांसफ़र पैकेट में फ़िट नहीं हो सकता, तो मैसेज पेलोड को कैसे फ़्रैगमेंट किया जाए. रेंजिंग मॉड्यूल को हर मैसेज पूरा मिलना चाहिए. ओओबी कम्यूनिकेशन चैनल को लागू करने वाले व्यक्ति की यह ज़िम्मेदारी है कि वह फ़्रैगमेंटेशन को ठीक करे.
रेंजिंग टेक्नोलॉजी की खास बातें
इस सेक्शन में, रेंजिंग टेक्नोलॉजी के बारे में खास जानकारी दी गई है.
अल्ट्रा-वाइडबैंड (यूडब्ल्यूबी) की खास बातें
इस सेक्शन में, अल्ट्रा-वाइडबैंड से जुड़ी खास जानकारी दी गई है.
कॉन्फ़िगरेशन आईडी
UWB के लिए एक्सचेंज किए गए OOB कॉन्फ़िगरेशन डेटा में, कॉन्फ़िगर किए जा सकने वाले सभी पैरामीटर मौजूद नहीं हैं. UWB को UWB रेंजिंग सेशन शुरू करने के लिए इन पैरामीटर की ज़रूरत होती है. ऐसा इसलिए है, क्योंकि चुने गए कॉन्फ़िग आईडी के हिसाब से कुछ पैरामीटर अपने-आप चुने जाते हैं.
हर कॉन्फ़िगरेशन आईडी, पहले से तय किए गए यूडब्ल्यूबी कॉन्फ़िगरेशन पैरामीटर का एक सेट होता है. इसके बारे में UwbRangingParams में बताया गया है. जवाब देने वाला डिवाइस, उन सभी कॉन्फ़िगरेशन आईडी की सूची भेजता है जिन पर वह काम करता है. यह सूची, क्षमता की जानकारी देने वाले मैसेज का हिस्सा होती है. इसके बाद, शुरू करने वाला डिवाइस, काम करने वाले किसी एक कॉन्फ़िगरेशन आईडी को चुनता है. इससे ओओबी के दौरान, कॉन्फ़िगरेशन पैरामीटर का छोटा सेट एक्सचेंज किया जा सकता है. यह यूडब्ल्यूबी के साथ रेंजिंग के लिए इस्तेमाल किए जा सकने वाले पैरामीटर के संभावित कॉम्बिनेशन की संख्या को भी सीमित करता है. इससे, पैरामीटर के सिर्फ़ उन कॉम्बिनेशन की जांच की जा सकती है जिनकी अनुमति है.
हर यूडब्ल्यूबी सेशन के बाद, अनुरोध करने की सुविधाएं
मौजूदा यूडब्ल्यूबी सेशन को रोकने और नया यूडब्ल्यूबी सेशन शुरू करने से पहले, सेशन शुरू करने वाले डिवाइस को सेशन में शामिल होने वाले डिवाइस की क्षमताओं के लिए अनुरोध करना होगा. साथ ही, कॉन्फ़िगरेशन पैरामीटर को फिर से सेट करना होगा. ऐसा इसलिए, क्योंकि मौजूदा रेंजिंग सेशन खत्म होते ही यूडब्ल्यूबी पते में बदलाव हो सकता है.
BLE चैनल साउंडिंग (सीएस) की खास बातें
इस सेक्शन में, चैनल साउंडिंग के बारे में खास जानकारी दी गई है.
डिवाइसों के बीच बॉन्ड होना ज़रूरी है
चैनल साउंडिंग का इस्तेमाल करके रेंजिंग की सुविधा काम करने के लिए, ज़रूरी है कि शुरू करने वाले और जवाब देने वाले डिवाइस के बीच पहले से कोई बॉन्ड मौजूद हो. इस स्पेसिफ़िकेशन में, डिवाइसों के बीच बॉन्ड बनाने का कोई तरीका नहीं बताया गया है. रेंजिंग एपीआई का इस्तेमाल करने वाले व्यक्ति को, डिवाइसों के बीच यह कनेक्शन बनाना होगा.
सीएस के लिए, जवाब देने वाले डिवाइस पर कार्रवाई करना ज़रूरी है
UWB में, दोनों डिवाइसों को UWB स्टार्ट रेंजिंग और स्टॉप रेंजिंग एपीआई को साफ़ तौर पर कॉल करना होता है. इसके उलट, सीएस के लिए, सिर्फ़ शुरुआत करने वाले डिवाइस को ब्लूटूथ (बीटी) स्टैक को कॉल करके सीएस रेंजिंग शुरू करने की ज़रूरत होती है. जवाब देने वाले डिवाइस पर, बाकी का इनिशियलाइज़ेशन बीटी के ज़रिए होता है. इसका मतलब है कि सीएस के लिए Ranging Configuration या Stop Ranging मैसेज मिलने पर, अगर बीटी चालू है, तो जवाब देने वाले डिवाइस को कुछ भी करने की ज़रूरत नहीं है. जवाब देने वाला डिवाइस, उन मैसेज का इस्तेमाल यूज़र इंटरफ़ेस (यूआई) को अपडेट करने के लिए ट्रिगर के तौर पर कर सकता है. उदाहरण के लिए, डिवाइस के एलईडी को ब्लिंक करने के लिए.