होस्ट कंट्रोलर इंटरफ़ेस (एचसीआई) का इस्तेमाल, ब्लूटूथ कंट्रोलर के साथ इंटरैक्ट करने के लिए किया जाता है.
इस दस्तावेज़ में, ब्लूटूथ (बीटी) और ब्लूटूथ लो एनर्जी (बीएलई) एचसीआई की ज़रूरी शर्तों की सूची दी गई है. इसका मकसद, होस्ट बीटी स्टैक वेंडर और बीटी कंट्रोलर वेंडर को प्लैटफ़ॉर्म से जुड़ी इन ज़रूरी शर्तों का पालन करने के लिए कहना है, ताकि वे नीचे बताई गई सुविधाओं का इस्तेमाल कर सकें.
इस दस्तावेज़ में, Bluetooth Core 5.2 Specification को "स्पेसिफ़िकेशन" के तौर पर बताया गया है. Bluetooth Core 5.2 स्पेसिफ़िकेशन, Bluetooth SIG की वेबसाइट पर उपलब्ध है. साथ ही, इस पर अन्य दस्तावेज़ भी उपलब्ध हैं.
डिज़ाइन की खास जानकारी
चिप की सुविधाएं और कॉन्फ़िगरेशन
Android एक ओपन प्लैटफ़ॉर्म है. इसमें सॉफ़्टवेयर रिलीज़, ओईएम, वेंडर, और प्लैटफ़ॉर्म और चिप की क्षमताओं का मैट्रिक्स होता है.
इस दस्तावेज़ में, अलग-अलग लैंडस्केप और माइग्रेशन को मैनेज करने के लिए, डिज़ाइन के सिद्धांत के बारे में बताया गया है. इसके तहत, बीटी कंट्रोलर को अपनी क्षमताओं को ज़ाहिर करने की अनुमति दी जाती है. ये क्षमताएं, ब्लूटूथ कोर 5.2 स्पेसिफ़िकेशन से अलग होती हैं. इसके बाद, होस्ट बीटी स्टैक इन सुविधाओं का इस्तेमाल करके यह तय कर सकता है कि कौनसी सुविधाएं चालू करनी हैं.
ओपन स्टैंडर्ड के साथ काम करना
Android का एक लक्ष्य यह है कि ब्लूटूथ स्पेसिफ़िकेशन में पुष्टि होने के बाद, ओपन स्टैंडर्ड का इस्तेमाल किया जा सके. अगर नीचे बताई गई कोई सुविधा, आने वाले समय में ब्लूटूथ के स्टैंडर्ड एचसीआई तरीकों में उपलब्ध हो जाती है, तो हम उस सुविधा को डिफ़ॉल्ट रूप से उपलब्ध कराने पर विचार करेंगे.
वेंडर के हिसाब से उपलब्ध सुविधाएं
वेंडर के हिसाब से निर्देश: LE_Get_Vendor_Capabilities_Command
ऑपकोड कमांड फ़ील्ड (ओसीएफ़): 0x153
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| NA | कमांड पैरामीटर की सूची खाली है |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
max_advt_instances(अब काम नहीं करता) |
1 ऑक्टेट |
विज्ञापन के जितने इंस्टेंस इस्तेमाल किए जा सकते हैं उनकी संख्या. v0.98 के बाद के वर्शन के लिए रिज़र्व किया गया. Google की सुविधा के स्पेसिफ़िकेशन v0.98 और इसके बाद के वर्शन में, इस पैरामीटर का इस्तेमाल नहीं किया जा सकता. इसके बजाय, BT स्पेसिफ़िकेशन के 5.0 और इसके बाद के वर्शन में उपलब्ध LE Extended Advertising का इस्तेमाल किया जा सकता है. |
offloaded_resolution_of_private-address(अब काम नहीं करता) |
1 ऑक्टेट |
बीटी चिप की मदद से आरपीए को कंट्रोल करने की सुविधा. अगर चिप में यह सुविधा काम करती है, तो होस्ट को इसे चालू करना होगा. 0 = सुविधा उपलब्ध नहीं है 1 = सुविधा उपलब्ध है v0.98 के बाद के वर्शन के लिए रिज़र्व किया गया है. Google की सुविधा के स्पेसिफ़िकेशन v0.98 और इसके बाद के वर्शन में, इस पैरामीटर का इस्तेमाल नहीं किया जा सकता. इसके बजाय, BT स्पेसिफ़िकेशन के 4.2 और इसके बाद के वर्शन में उपलब्ध निजता से जुड़ी सुविधा का इस्तेमाल किया जा सकता है. |
total_scan_results_storage |
दो ऑक्टेट | स्कैन के नतीजों के लिए स्टोरेज, बाइट में |
max_irk_list_sz |
1 ऑक्टेट | फ़र्मवेयर में काम करने वाली आईआरके एंट्री की संख्या |
filtering_support |
1 ऑक्टेट |
कंट्रोलर में फ़िल्टर करने की सुविधा 0 = उपलब्ध नहीं है 1 = उपलब्ध है |
max_filter |
1 ऑक्टेट | इस्तेमाल किए जा सकने वाले फ़िल्टर की संख्या |
activity_energy_info_support |
1 ऑक्टेट |
गतिविधि और ऊर्जा की जानकारी की रिपोर्टिंग की सुविधा 0 = उपलब्ध नहीं है 1 = उपलब्ध है |
version_supported |
दो ऑक्टेट |
Google की सुविधा के साथ काम करने वाले वर्शन के बारे में बताता है byte[0] = Major number byte[1] = Minor number v1.06 byte[0] = 0x01 byte[1] = 0x06 इन वर्शन में जोड़ी गई सुविधाएं: v1.06:
|
total_num_of_advt_tracked |
दो ऑक्टेट |
OnLost/OnFound के लिए ट्रैक किए गए विज्ञापन देने वाले लोगों या कंपनियों की कुल संख्या
|
extended_scan_support |
1 ऑक्टेट | ज़्यादा समय तक स्कैन करने की सुविधा और इंटरवल के साथ काम करता है |
debug_logging_supported |
1 ऑक्टेट | यह कुकी, कंट्रोलर से बाइनरी डीबग जानकारी को लॉग करने में मदद करती है |
LE_address_generation_offloading_support(अब काम नहीं करता) |
1 ऑक्टेट |
0 = मौजूद नहीं 1 = काम करता है v0.98 के बाद के वर्शन के लिए रिज़र्व किया गया. Google की सुविधा के स्पेसिफ़िकेशन v0.98 और इसके बाद के वर्शन में, इस पैरामीटर का इस्तेमाल नहीं किया जा सकता. इसके बजाय, BT स्पेसिफ़िकेशन के 4.2 और इसके बाद के वर्शन में उपलब्ध निजता से जुड़ी सुविधा का इस्तेमाल किया जा सकता है. |
A2DP_source_offload_capability_mask |
4 ऑक्टेट |
सपोर्ट किए गए कोडेक टाइप के लिए बिट मास्क बिट 0 - SBC बिट 1 - AAC बिट 2 - APTX बिट 3 - APTX HD बिट 4 - LDAC बिट 5 - Opus बिट 6-31 रिज़र्व हैं |
bluetooth_quality_report_support |
1 ऑक्टेट |
ब्लूटूथ की क्वालिटी से जुड़े इवेंट की रिपोर्टिंग की सुविधा काम करती है 0 = काम नहीं करती 1 = काम करती है |
dynamic_audio_buffer_support |
चार ऑक्टेट |
ब्लूटूथ कंट्रोलर में डाइनैमिक ऑडियो बफ़र की सुविधा काम करती है सपोर्ट किए गए कोडेक टाइप के लिए बिट मास्क बिट 0 - SBC बिट 1 - AAC बिट 2 - APTX बिट 3 - APTX HD बिट 4 - LDAC बिट 5 - Opus बिट 6 से 31 तक के बिट रिज़र्व किए गए हैं |
a2dp_offload_v2_support |
1 ऑक्टेट |
ब्लूटूथ कंट्रोलर में A2DP ऑफ़लोड v2 निर्देश काम करते हैं (देखें
Start A2DP offload,
Stop A2DP offload) 0 = मौजूद नहीं 1 = काम करते हैं |
iso_link_feedback_support |
1 ऑक्टेट |
आईएसओ लिंक के बारे में सुझाव/राय देने या शिकायत करने से जुड़े इवेंट के साथ काम करता है 0 = काम नहीं करता 1 = काम करता है |
sniff_offload_support |
1 ऑक्टेट |
ब्लूटूथ कंट्रोलर में Sniff Offload कमांड काम करती हैं 0 = काम नहीं करती 1 = काम करती हैं |
big_set_channel_map_classification_support |
दो ऑक्टेट |
LE ब्रॉडकास्ट चैनल मैप क्लासिफ़िकेशन सुविधा के sub_opcode के साथ काम करता है बिट 0 - sub_opcode 0x01 (LE ACL कनेक्शन हैंडल के ज़रिए BIG चैनल मैप सेट करें) के साथ काम करता है बिट 1-15 - रिज़र्व किया गया बिट की वैल्यू: 0 0 = मौजूद नहीं 1 = काम करता है |
vendor_connection_handle_min |
दो ऑक्टेट | यह कुकी, एसीएल पैकेट पर मिले एचसीआई वेंडर इवेंट के लिए, वेंडर कनेक्शन हैंडल की कम से कम वैल्यू की रिपोर्ट करती है. हैंडल 0 का इस्तेमाल, एसीएल डेटा पैकेट पर वेंडर इवेंट रिपोर्टिंग के लिए सहायता उपलब्ध न होने की जानकारी देने के लिए किया जाता है. |
vendor_connection_handle_max |
दो ऑक्टेट | यह कुकी, एसीएल पैकेट के ज़रिए मिले एचसीआई वेंडर इवेंट के लिए, वेंडर कनेक्शन हैंडल की ज़्यादा से ज़्यादा वैल्यू की रिपोर्ट करती है. हैंडल 0 का इस्तेमाल, एसीएल डेटा पैकेट पर वेंडर इवेंट रिपोर्टिंग के लिए सहायता उपलब्ध न होने की जानकारी देने के लिए किया जाता है. |
connection_proximity_threshold_support |
1 ऑक्टेट |
चिप में कनेक्शन प्रॉक्सिमिटी थ्रेशोल्ड की सुविधा काम करती है या नहीं 0 = काम नहीं करती 1 = काम करती है |
बैच स्कैन के नतीजे
इस डिज़ाइन का मकसद, होस्ट को Bluetooth LE स्कैन रिस्पॉन्स इवेंट की सूचनाएं बेहतर तरीके से देना है, ताकि होस्ट में बैटरी की बचत हो सके.
कंट्रोलर, होस्ट ऐप्लिकेशन प्रोसेसर को स्कैन के नतीजे भेजने की फ़्रीक्वेंसी कम कर देता है. इससे होस्ट ऐप्लिकेशन प्रोसेसर, ज़्यादा समय तक कुछ समय से इस्तेमाल में नहीं है/स्लीप मोड में रह सकता है. इससे होस्ट में बिजली की खपत कम हो जाती है. LE_Get_Vendor_Capabilities_Command के total_scan_results_storage पैरामीटर से पता चलता है कि स्कैन के नतीजों को सेव करने के लिए, चिप में कितनी जगह है.
इस सुविधा का मकसद, ब्लूटूथ कंट्रोलर में LE स्कैन के नतीजों को सेव करने की सुविधा को मैनेज और कॉन्फ़िगर करना है. इस स्टोरेज का इस्तेमाल, विज्ञापन के डेटा और स्कैन किए गए डेटा को कुछ समय के लिए बैच करने के लिए किया जाता है. साथ ही, इसका इस्तेमाल ऐसे मेटाडेटा को बैच करने के लिए भी किया जाता है जिसे कंट्रोलर को होस्ट को बाद में डिलीवर करना होता है.
फ़र्मवेयर में दो तरह की बैचिंग की सुविधा होनी चाहिए, जिन्हें एक साथ चालू किया जा सकता है:
- काटा गया. इसमें ये जानकारी वाले एलिमेंट शामिल होते हैं: {MAC, TX Power, RSSI, Timestamp}
- पूरी जानकारी. इसमें ये जानकारी वाले एलिमेंट शामिल होते हैं: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Batch_Scan_opcode |
1 ऑक्टेट |
0x1 - Enable customer-specific feature 0x2 - Set Batch Scan Storage parameters 0x3 - Set Batch Scan parameters 0x4 - Read Batch Scan Result parameters |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा. ग्राहक के हिसाब से सुविधा चालू करने पर, स्कैन शुरू नहीं होता.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Batch_Scan_opcode |
1 ऑक्टेट |
0x1 - Enable customer-specific feature 0x2 - Set Batch Scan Storage parameters 0x3 - Set Batch Scan parameters 0x4 - Read Batch Scan Result parameters |
LE_Batch_Scan_Command: Enable customer-specific feature
Sub OCF: 0x01
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
enable_customer_specific_feature_set |
1 ऑक्टेट |
0x01 - बैच स्कैन करने की सुविधा चालू करें 0x00 - बैच स्कैन करने की सुविधा बंद करें |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Batch_Scan_opcode |
1 ऑक्टेट |
0x1 - Enable customer-specific feature 0x2 - Set Batch Scan Storage parameters 0x3 - Set Batch Scan parameters 0x4 - Read Batch Scan Result parameters |
LE_Batch_Scan_Command: Set batch scan storage parameter subcommand
Sub OCF: 0x02
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Batch_Scan_Full_Max |
1 ऑक्टेट |
फ़ुल स्टाइल के लिए, ज़्यादा से ज़्यादा स्टोरेज स्पेस (प्रतिशत में) [रेंज: 0-100] |
Batch_Scan_Truncated_Max |
1 ऑक्टेट |
ट्रंकेट किए गए स्टाइल को असाइन किया गया ज़्यादा से ज़्यादा स्टोरेज स्पेस (प्रतिशत में) [रेंज: 0 से 100] |
Batch_Scan_Notify_Threshold |
1 ऑक्टेट |
हर स्टोरेज पूल के लिए सूचना का लेवल (प्रतिशत में) सेट अप करें
[रेंज: 0-100] इस सेटिंग को 0 पर सेट करने से सूचनाएं पाने की सुविधा बंद हो जाएगी. वेंडर के हिसाब से एचसीआई इवेंट जनरेट होता है (स्टोरेज थ्रेशोल्ड उल्लंघन वाला सब-इवेंट) |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Batch_scan_opcode |
1 ऑक्टेट | 0x02 [Set Batch Scan parameters] |
LE_Batch_Scan_Command: Set batch scan parameter subcommand
सब ओसीएफ़: 0x03
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Batch_Scan_Mode |
1 ऑक्टेट |
0x00 – बैच स्कैन की सुविधा बंद है 0x01 – ट्रंकेटेड मोड चालू है 0x02 – फ़ुल मोड चालू है 0x03 – ट्रंकेटेड और फ़ुल मोड चालू हैं |
Duty_cycle_scan_window |
चार ऑक्टेट | बैच स्कैन में लगा समय (स्लॉट की संख्या) |
Duty_cyle_scan_interval |
चार ऑक्टेट | बैच स्कैन इंटरवल की अवधि (स्लॉट की संख्या) |
own_address_type |
1 ऑक्टेट |
0x00 - सार्वजनिक डिवाइस का पता 0x01 - डिवाइस का रैंडम पता |
Batch_scan_Discard_Rule |
1 ऑक्टेट |
0 - सबसे पुराना विज्ञापन हटाएं 1 - सबसे कम आरएसएसआई वाला विज्ञापन हटाएं |
अगर बैच स्कैनिंग की सुविधा चालू है, तो यह सब-कमांड बैच स्कैनिंग शुरू कर देगी. ट्रंकेटेड स्कैनिंग में, नतीजों को ट्रंकेटेड फ़ॉर्म में सेव किया जाता है. इसमें ट्रंकेटेड स्टाइल के लिए यूनीक कुंजी = {BD_ADDR, scan_interval} होती है. इसका मतलब है कि हर स्कैन इंटरवल के लिए, सिर्फ़ एक BD_ADDR will रिकॉर्ड किया जाएगा. ट्रंकेटेड मोड के लिए, यह रिकॉर्ड सेव किया जाता है: {BD_ADDR,
Tx Power, RSSI, Timestamp}
फ़ुल मोड चालू होने पर, ऐक्टिव स्कैनिंग का इस्तेमाल किया जाएगा. साथ ही, स्कैन के जवाब रिकॉर्ड किए जाएंगे. फ़ुल स्टाइल की यूनीक कुंजी = {एमएसी, विज्ञापन पैकेट},
स्कैन इंटरवल से कोई फ़र्क़ नहीं पड़ता. फ़ुल मोड के लिए, यह रिकॉर्ड सेव किया जाता है:
{BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan
Response}. फ़ुल स्टाइल में, एक ही विज्ञापन पैकेट को अलग-अलग स्कैन इंटरवल में कई बार देखने पर, उसे सिर्फ़ एक बार रिकॉर्ड किया जाता है. हालांकि, ट्रंकेटेड मोड में, अलग-अलग स्कैन इंटरवल में � की विज़िबिलिटी अहम होती है (हर स्कैन इंटरवल में एक बार).BA_ADDR आरएसएसआई, स्कैन इंटरवल में किसी यूनीक विज्ञापन के सभी डुप्लीकेट की औसत वैल्यू होती है.
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Batch_scan_opcode |
1 ऑक्टेट | 0x03 [Set Batch Scan Parameters] |
LE_Batch_Scan_Command: Read batch scan results subcommand
उप ओसीएफ़: 0x04
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Batch_Scan_Data_read |
1 ऑक्टेट |
0x01 - ट्रंकेटेड मोड का डेटा 0x02 - फ़ुल मोड का डेटा |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा. जब होस्ट यह निर्देश देता है, तो कंट्रोलर में मौजूद सभी नतीजे, एक निर्देश पूरा होने वाले इवेंट में शामिल नहीं किए जा सकते. होस्ट इस कमांड को तब तक जारी करता रहेगा, जब तक कि Command Complete इवेंट में मौजूद नतीजे, रिकॉर्ड की संख्या में 0 न दिखाएं. इससे पता चलता है कि कंट्रोलर के पास होस्ट को भेजने के लिए कोई और रिकॉर्ड नहीं है. हर Command Complete इवेंट में, सिर्फ़ एक तरह के डेटा के कई रिकॉर्ड हो सकते हैं. जैसे, पूरा डेटा या काटा गया डेटा.
कंट्रोलर और होस्ट के समय के रेफ़रंस सिंक नहीं किए गए हैं. टाइमस्टैंप की यूनिट 50 मि॰से॰ है. टाइमस्टैंप की वैल्यू, इस बात पर निर्भर करती है कि होस्ट ने Read_Batch_Scan_Results_Sub_cmd कब दिया है. अगर फ़र्मवेयर में कमांड के पहुंचने का समय T_c है, तो फ़र्मवेयर में टाइमस्टैंप लिए जाने का असल समय T_fw है. रिपोर्टिंग का समय यह होगा:
(T_c - T_fw). T_c और
T_fw , फ़र्मवेयर के टाइम डोमेन में हैं. इससे होस्ट को यह पता चलता है कि इवेंट कब हुआ था.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Batch_scan_opcode |
1 ऑक्टेट | 0x03 [Set Batch Scan parameters] |
Batch_Scan_data_read |
1 ऑक्टेट | इससे फ़ॉर्मैट (काटा गया या पूरा) की पहचान होती है |
num_of_records |
1 ऑक्टेट | Batch_Scan_data_read के रिकॉर्ड की संख्या |
format_of_data |
वैरिएबल |
ट्रंकेटेड मोड: Address[0]: 6 octets Address_Type[0]: 1 octet Tx_Pwr[0]: 1 octet RSSI[0] : 1 octet Timestamp[0]: 2 octets [multiple records ( num_of_records) with above format]फ़ुल मोड: Address[0]: 6 octets Address_Type[0]: 1 octet Tx_Pwr[0]: 1 octet RSSI[0]: 1 octet Timestamp[0]: 2 octets Adv packet_len[0]: 1 octet Adv_packet[0]: Adv_packet_len octets Scan_data_resp_len[0]: 1 octet Scan_data_resp[0]: Scan_data_resp octets[multiple records with above format ( num_of_records)]
|
विज्ञापन पैकेट के कॉन्टेंट को फ़िल्टर करने की सुविधा
इसका इस्तेमाल, कंट्रोलर में Advertising Packet Content Filter (APCF) को चालू/बंद/सेटअप करने के लिए करें. APCF, कंट्रोलर में विज्ञापन की रिपोर्ट को फ़िल्टर करता है. हालांकि, यह समय-समय पर दिखाए जाने वाले विज्ञापनों को फ़िल्टर नहीं करता.
LE_APCF_Command
OCF: 0x157
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_opcode |
1 ऑक्टेट |
0x00 - APCF चालू करें 0x01 - APCF फ़िल्टर करने के पैरामीटर सेट करें 0x02 - APCF ब्रॉडकास्टर का पता 0x03 - APCF सर्विस यूयूआईडी 0x04 - APCF सर्विस सॉलिसिटेशन यूयूआईडी 0x05 - APCF लोकल नेम 0x06 - APCF मैन्युफ़ैक्चरर डेटा 0x07 - APCF सर्विस डेटा 0x08 - APCF ट्रांसपोर्ट डिस्कवरी सर्विस 0x09 - APCF विज्ञापन टाइप फ़िल्टर 0x10 ~ 0xAF - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है 0xB0 ~ 0xDF - वेंडर के लिए सुरक्षित रखा गया है 0xE0 ~ 0xFE - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है 0xFF - APCF की एक्सटेंडेड सुविधाएं पढ़ें |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | सामान लौटाने की स्थिति |
APCF_opcode |
1 ऑक्टेट |
0x00 - APCF चालू करें 0x01 - APCF फ़िल्टर करने के पैरामीटर सेट करें 0x02 - APCF ब्रॉडकास्टर का पता 0x03 - APCF सर्विस यूयूआईडी 0x04 - APCF सर्विस सॉलिसिटेशन यूयूआईडी 0x05 - APCF लोकल नेम 0x06 - APCF मैन्युफ़ैक्चरर डेटा 0x07 - APCF सर्विस डेटा 0x08 - APCF ट्रांसपोर्ट डिस्कवरी सर्विस 0x09 - APCF विज्ञापन टाइप फ़िल्टर 0x10 ~ 0xAF - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है 0xB0 ~ 0xDF - वेंडर के लिए सुरक्षित रखा गया है 0xE0 ~ 0xFE - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है 0xFF - APCF की एक्सटेंडेड सुविधाएं पढ़ें |
LE_APCF_Command: Enable_sub_cmd
सब ओसीएफ़: 0x00
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_enable |
1 ऑक्टेट |
0x01 - APCF सुविधा चालू करें 0x00 - APCF सुविधा बंद करें |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x0 - APCF Enable |
APCF_Enable |
1 ऑक्टेट | चालू/बंद करने की सेटिंग APCF_enable के ज़रिए सेट की जाती है |
LE_APCF_Command: set_filtering_parameters_sub_cmd
इस सब-कमांड का इस्तेमाल, फ़िल्टर स्पेसिफ़िकेशन को जोड़ने या हटाने के लिए किया जाता है. इसका इस्तेमाल, ऑन-चिप फ़िल्टरिंग के लिए फ़िल्टर की सूची को मिटाने के लिए भी किया जाता है.
Sub OCF: 0x01
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - Add 0x01 - Delete 0x02 - Clear Delete से, खास फ़िल्टर और उससे जुड़ी सुविधा की एंट्री को अन्य टेबल से हटा दिया जाएगा. 'हटाएं' पर क्लिक करने से, सभी फ़िल्टर और उनसे जुड़ी एंट्री अन्य टेबल से हट जाएंगी. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_Feature_Selection |
दो ऑक्टेट |
चुनी गई सुविधाओं के लिए बिट मास्क: बिट 0: ब्रॉडकास्ट पते के फ़िल्टर को चालू करने के लिए सेट किया गया है बिट 1: सेवा के डेटा में बदलाव के फ़िल्टर को चालू करने के लिए सेट किया गया है बिट 2: सेवा के यूयूआईडी की जांच को चालू करने के लिए सेट किया गया है बिट 3: सेवा के अनुरोध के यूयूआईडी की जांच को चालू करने के लिए सेट किया गया है बिट 4: लोकल नेम की जांच को चालू करने के लिए सेट किया गया है बिट 5: मैन्युफ़ैक्चरर के डेटा की जांच को चालू करने के लिए सेट किया गया है बिट 6: सेवा के डेटा की जांच को चालू करने के लिए सेट किया गया है बिट 7: ट्रांसपोर्ट डिस्कवरी सेवा की जांच को चालू करने के लिए सेट किया गया है बिट 8: विज्ञापन टाइप की जांच को चालू करने के लिए सेट किया गया है |
APCF_List_Logic_Type |
दो ऑक्टेट |
APCF_Feature_Selection में बताई गई हर सुविधा के चुनाव के लिए लॉजिक ऑपरेशन (हर बिट के हिसाब से).
यह सिर्फ़ तब मान्य होता है, जब कोई सुविधा चालू हो. बिट की पोज़िशन की वैल्यू: 0: OR 1: AND अगर "AND" लॉजिक चुना जाता है, तो ADV पैकेट सिर्फ़ तब फ़िल्टर पास करेगा, जब उसमें सूची की सभी एंट्री शामिल हों. अगर "OR" लॉजिक चुना जाता है, तो कोई ADV पैकेट फ़िल्टर तब पास करेगा, जब उसमें सूची में मौजूद कोई भी एंट्री शामिल हो. |
APCF_Filter_Logic_Type |
1 ऑक्टेट |
0x00: OR 0x01: AND ध्यान दें: APCF_Feature_Selection के पहले तीन फ़ील्ड के लिए, लॉजिक टाइप लागू नहीं होता. यह हमेशा "AND" लॉजिक होता है. ये सिर्फ़ APCF_Feature_Selection के चार फ़ील्ड (बिट 3 से बिट 6) पर लागू होते हैं.
|
rssi_high_thresh |
1 ऑक्टेट |
[in dBm] विज्ञापन देने वाले व्यक्ति या कंपनी को सिर्फ़ तब देखा गया माना जाता है, जब सिग्नल, आरएसएसआई के ज़्यादा थ्रेशोल्ड से ज़्यादा हो. अगर ऐसा नहीं होता है, तो फ़र्मवेयर को इस तरह काम करना चाहिए कि उसे कभी यह जानकारी मिली ही न हो. |
delivery_mode |
1 ऑक्टेट |
0x00 - immediate0x01 - on_found0x02 - batched
|
onfound_timeout |
दो ऑक्टेट |
यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.[मिलीसेकंड में] फ़र्मवेयर को रिपोर्टिंग से पहले, कुछ समय के लिए रुकने और अतिरिक्त विज्ञापन इकट्ठा करने में लगने वाला समय. |
onfound_timeout_cnt |
1 ऑक्टेट |
यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.[count] अगर कोई विज्ञापन onfound_timeout अवधि तक फ़र्मवेयर में बना रहता है, तो यह कुछ विज्ञापन इकट्ठा करेगा और गिनती की जांच की जाएगी.onFound अगर यह संख्या onfound_timeout_cnt से ज़्यादा होती है, तो इसकी सूचना OnFound तुरंत दी जाती है.
|
rssi_low_thresh |
1 ऑक्टेट |
यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.[in dBm] विज्ञापन देने वाले व्यक्ति या कंपनी के पैकेट को तब तक नहीं देखा गया माना जाता है, जब तक कि मिले हुए पैकेट का आरएसएसआई, आरएसएसआई के निचले थ्रेशोल्ड से ऊपर न हो. |
onlost_timeout |
दो ऑक्टेट |
यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.[मिलीसेकंड में] अगर कोई विज्ञापन, खोजे जाने के बाद lost_timeout अवधि तक लगातार नहीं दिखता है, तो उसे तुरंत
खोया हुआ विज्ञापन माना जाएगा.
|
num_of_tracking_entries |
दो ऑक्टेट |
यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.[count] हर फ़िल्टर के हिसाब से, ट्रैक किए जाने वाले विज्ञापन देने वाले लोगों या कंपनियों की कुल संख्या. |
नेगेटिव वैल्यू दिखाने के लिए, आरएसएसआई वैल्यू में 2's कॉम्प्लिमेंट का इस्तेमाल करना ज़रूरी है.
होस्ट, अलग-अलग फ़िल्टर कॉम्बिनेशन को मैनेज करने के लिए, कई फ़िल्टर कॉन्फ़िगर कर सकता है. इसके लिए, उसे APCF_Application_Address_type को 0x02 पर सेट करना होगा (सभी ब्रॉडकास्टर पतों के लिए).
फ़िल्टर करना, बैच बनाना, और रिपोर्टिंग, एक-दूसरे से जुड़े कॉन्सेप्ट हैं. हर विज्ञापन और उससे जुड़ी स्कैन प्रतिक्रिया को एक के बाद एक, सभी फ़िल्टर से गुज़रना होगा. इसलिए, नतीजे के तौर पर मिलने वाली कार्रवाइयां (delivery_mode), फ़िल्टर करने से जुड़ी होती हैं. डिलीवरी के मोड ये हैं: report_immediately, batch, और onFound. OnLost की वैल्यू, OnFound से इस तरह जुड़ी होती है कि अगर OnFound खो जाता है, तो OnLost की वैल्यू का इस्तेमाल किया जाएगा.
इस प्रोसेसिंग फ़्लो में, कॉन्सेप्ट मॉडल दिखाया गया है:
जब कोई विज्ञापन (या स्कैन रिस्पॉन्स) फ़्रेम मिलता है, तो उसे क्रम से सभी फ़िल्टर पर लागू किया जाता है. ऐसा हो सकता है कि कोई विज्ञापन, एक फ़िल्टर के आधार पर तुरंत रिपोर्टिंग कर सके. वहीं, किसी दूसरे फ़िल्टर की वजह से, उसी विज्ञापन की रिपोर्टिंग बैच में की जाए.
आरएसआईआई लेवल थ्रेशोल्ड (ज़्यादा और कम) से यह कंट्रोल किया जा सकता है कि फ़िल्टर प्रोसेसिंग के लिए फ़्रेम कब दिखेगा. भले ही, कंट्रोलर को मान्य पैकेट मिला हो. अगर डिलीवरी मोड को तुरंत या बैच में सेट किया गया है, तो कंट्रोलर प्रोसेसिंग के लिए फ़्रेम के आरएसएसआई पर विचार किया जाता है. अलग-अलग ऐप्लिकेशन के लिए, रिपोर्टिंग और बैचिंग के अलग-अलग तरीके की ज़रूरत होती है. इससे एक साथ कई ऐप्लिकेशन, फ़र्मवेयर में सीधे तौर पर रिपोर्टिंग कर सकते हैं और/या नतीजों को बैच कर सकते हैं. उदाहरण के लिए, किसी एक ऐप्लिकेशन से बैच स्कैन चालू है और बाद में किसी दूसरे ऐप्लिकेशन से सामान्य एलई स्कैन जारी किया जाता है. बैच स्कैन जारी करने से पहले, फ़्रेमवर्क/ऐप्लिकेशन सही फ़िल्टर सेट करता है. इसके बाद, जब दूसरा ऐप्लिकेशन नियमित स्कैन करता है, तब बैचिंग की पिछली प्रोसेस जारी रहती है. हालांकि, नियमित स्कैन की वजह से, यह LE स्कैन कमांड के साथ-साथ, सभी मौजूदा फ़िल्टर के साथ-साथ एक नल फ़िल्टर जोड़ने जैसा है. LE स्कैन कमांड पैरामीटर चालू होने पर, उन्हें प्राथमिकता दी जाती है. LE स्कैन की सुविधा बंद होने पर, कंट्रोलर पिछले बैच स्कैन पर वापस चला जाएगा. हालांकि, ऐसा तब होगा, जब वह स्कैन मौजूद हो.
OnFound डिलीवरी मोड, कॉन्फ़िगर किए गए फ़िल्टर पर आधारित होता है. फ़िल्टर के ऐक्शन को ट्रिगर करने वाले कॉम्बिनेशन को, onLost के लिए ट्रैक की जाने वाली इकाई माना जाता है. इससे जुड़ा इवेंट, LE
Advt ट्रैकिंग सब-इवेंट है.
अगर फ़िल्टर चालू है, तो OnFound/OnLost के लिए ट्रांज़िशन इस तरह दिखेगा:
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x01 - APCF Set Filtering Parameters |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | फ़िल्टर टेबल में उपलब्ध एंट्री की संख्या |
LE_APCF_Command: broadcast_address_sub_cmd
इस सबकमांड का इस्तेमाल, विज्ञापन देने वाले व्यक्ति या कंपनी का पता जोड़ने या मिटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर फ़िल्टर करने के लिए, विज्ञापन देने वाले व्यक्ति या कंपनी के पतों की सूची को मिटाने के लिए भी किया जाता है.
Sub OCF: 0x02
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - Add 0x01 - Delete 0x02 - Clear Delete से, ब्रॉडकास्टर का वह पता मिट जाएगा जिसे फ़िल्टर में चुना गया है. Clear से, तय किए गए फ़िल्टर में ब्रॉडकास्टर के सभी पते हट जाएंगे. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_Broadcaster_Address |
6 ऑक्टेट | ब्रॉडकास्टर के पते की सूची में जोड़ने या उससे हटाने के लिए, छह बाइट का डिवाइस पता |
APCF_Application_Address_type |
1 ऑक्टेट |
0x00: सार्वजनिक 0x01: रैंडम 0x02: लागू नहीं (पते के टाइप को अनदेखा करें) पहचान के पते के टाइप (0x02, 0x03) के हिसाब से विज्ञापन रिपोर्ट फ़िल्टर करने के लिए. अगर आपको पते के टाइप 0x02 और 0x03 वाली विज्ञापन रिपोर्ट चाहिए, तो इस फ़ील्ड को 0x02 पर सेट करें: NA (पते के टाइप को अनदेखा करें). |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x02 - APCF ब्रॉडकास्टर का पता |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | ब्रॉडकास्ट पते की टेबल में अब भी उपलब्ध मुफ़्त एंट्री की संख्या |
LE_APCF_Command: service_uuid_sub_cmd
इस सबकमांड का इस्तेमाल, किसी सेवा के यूयूआईडी को जोड़ने या मिटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर फ़िल्टर करने के लिए सेवा के यूयूआईडी की सूची को मिटाने के लिए भी किया जाता है.
सब ओसीएफ़: 0x03
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - जोड़ें 0x01 - मिटाएं 0x02 - हटाएं मिटाएं, चुने गए फ़िल्टर में दिए गए सेवा के यूयूआईडी पते को मिटा देगा. Clear से, चुने गए फ़िल्टर में मौजूद सभी सेवा UUID मिट जाएंगे. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_UUID |
2,4,16 ऑक्टेट | सूची में जोड़ने या उससे हटाने के लिए, सर्विस यूयूआईडी (16-बिट, 32-बिट या 128-बिट). |
APCF_UUID_MASK |
2,4,16 ऑक्टेट |
सूची में जोड़ने के लिए, सेवा का यूयूआईडी मास्क (16-बिट, 32-बिट या 128-बिट).
इसकी लंबाई APCF_UUID. के बराबर होनी चाहिए
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x03 - APCF सर्विस यूयूआईडी |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | Service UUID टेबल में अब भी उपलब्ध मुफ़्त एंट्री की संख्या |
LE_APCF_Command: solicitation_uuid_sub_cmd
इस सबकमांड का इस्तेमाल, अनुरोध करने वाले यूयूआईडी को जोड़ने या मिटाने के लिए किया जाता है. इसके अलावा, इसका इस्तेमाल चिप पर फ़िल्टर करने के लिए, अनुरोध करने वाले यूयूआईडी की सूची को मिटाने के लिए भी किया जाता है.
उप ओसीएफ़: 0x04
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - Add 0x01 - Delete 0x02 - Clear Delete से, चुने गए फ़िल्टर में मौजूद अनुरोध का यूयूआईडी पता मिट जाएगा. Clear से, चुने गए फ़िल्टर में मौजूद सभी यूयूआईडी मिट जाएंगे. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_UUID |
2,4,16 ऑक्टेट | सूची में जोड़ने या उससे मिटाने के लिए, अनुरोध का यूयूआईडी (16-बिट, 32-बिट या 128-बिट). |
APCF_UUID_MASK |
2,4,16 ऑक्टेट |
सूची में जोड़ने के लिए, अनुरोध का यूयूआईडी मास्क (16-बिट, 32-बिट या 128-बिट). इसकी लंबाई APCF_UUID एट्रिब्यूट की वैल्यू के बराबर होनी चाहिए.
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x04 - APCF Solicitation UUID |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | Solicitation UUID टेबल में अब भी उपलब्ध मुफ़्त एंट्री की संख्या |
LE_APCF_Command: local_name_sub_cmd
इस सब-कमांड का इस्तेमाल, स्थानीय नाम वाली स्ट्रिंग को जोड़ने या मिटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर मौजूद फ़िल्टर के लिए स्थानीय नाम वाली स्ट्रिंग की सूची को मिटाने के लिए भी किया जाता है.
Sub OCF: 0x05
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - जोड़ें 0x01 - मिटाएं 0x02 - हटाएं 'मिटाएं' विकल्प चुनने पर, चुने गए फ़िल्टर में मौजूद स्थानीय नाम की स्ट्रिंग मिट जाएगी. Clear से, तय किए गए फ़िल्टर में मौजूद स्थानीय नाम की सभी स्ट्रिंग हट जाएंगी. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
वैरिएबल साइज़ |
स्थानीय नाम के लिए वर्ण स्ट्रिंग. ध्यान दें:
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x05 - APCF Local Name |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | स्थानीय नाम टेबल में अब भी उपलब्ध मुफ़्त एंट्री की संख्या |
LE_APCF_Command: manf_data_sub_cmd
इस सबकमांड का इस्तेमाल, मैन्युफ़ैक्चरर डेटा स्ट्रिंग को जोड़ने या मिटाने के लिए किया जाता है. इसके अलावा, इसका इस्तेमाल चिप पर फ़िल्टर करने के लिए, मैन्युफ़ैक्चरर डेटा स्ट्रिंग की सूची को मिटाने के लिए भी किया जाता है.
सब ओसीएफ़: 0x06
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - जोड़ें 0x01 - मिटाएं 0x02 - हटाएं 'मिटाएं' विकल्प चुनने पर, फ़िल्टर में मौजूद मैन्युफ़ैक्चरर के डेटा स्ट्रिंग को मिटा दिया जाएगा. Clear से, तय किए गए फ़िल्टर में मौजूद मैन्युफ़ैक्चरर के डेटा की सभी स्ट्रिंग मिट जाएंगी. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
वैरिएबल साइज़ |
निर्माता के डेटा के लिए वर्ण स्ट्रिंग. ध्यान दें:
|
APCF_ManData_Mask |
वैरिएबल साइज़ |
सूची में जोड़ने के लिए, मैन्युफ़ैक्चरर के डेटा मास्क की जानकारी. इसकी लंबाई APCF_LocName_or_ManData_or_SerData के बराबर होनी चाहिए.
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x06 - APCF Manufacturer Data |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | Manufacturer Data टेबल में अब भी उपलब्ध मुफ़्त एंट्री की संख्या |
LE_APCF_Command: service_data_sub_cmd
इस सब-कमांड का इस्तेमाल, सेवा से जुड़ा डेटा स्ट्रिंग जोड़ने या मिटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर फ़िल्टर करने के लिए सेवा से जुड़े डेटा स्ट्रिंग की सूची को मिटाने के लिए भी किया जाता है.
सब ओसीएफ़: 0x07
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - Add 0x01 - Delete 0x02 - Clear Delete से, चुने गए फ़िल्टर में सेवा के लिए तय की गई डेटा स्ट्रिंग मिट जाएगी. Clear विकल्प चुनने पर, चुने गए फ़िल्टर में मौजूद सेवा से जुड़ी सभी डेटा स्ट्रिंग मिट जाएंगी. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
वैरिएबल साइज़ |
यह सेवा से जुड़े डेटा के लिए एक वर्ण स्ट्रिंग होती है. ध्यान दें:
|
APCF_LocName_Mandata_or_SerData_Mask |
वैरिएबल साइज़ |
सूची में जोड़ने के लिए, सेवा का डेटा मास्क. इसकी लंबाई APCF_LocName_or_ManData_or_SerData. के बराबर होनी चाहिए
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x07 - APCF सेवा डेटा |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | सेवा के डेटा की टेबल के लिए, अब भी उपलब्ध मुफ़्त एंट्री की संख्या |
LE_APCF_Command: transport_discovery_service_sub_cmd
इस सबकमांड का इस्तेमाल, ट्रांसपोर्ट डिस्कवरी सर्विस (टीडीएस) फ़िल्टर को जोड़ने या हटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर फ़िल्टर करने के लिए टीडीएस फ़िल्टर की सूची को मिटाने के लिए भी किया जाता है. read_extended_features_sub_cmd का इस्तेमाल करके देखें कि यह निर्देश काम करता है या नहीं.
OCF का उप-समूह: 0x08
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - Add 0x01 - Delete 0x02 - Clear Delete से, चुने गए फ़िल्टर में मौजूद TDS फ़िल्टर मिट जाएगा. Clear से, तय किए गए फ़िल्टर में मौजूद सभी टीडीएस फ़िल्टर हट जाएंगे. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
Org_ID |
1 ऑक्टेट | Bluetooth SIG ने यह संगठन आईडी तय किया है. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
TDS_Flags |
1 ऑक्टेट | मैच करने के लिए, टीडीएस फ़्लैग. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
TDS_Flags_Mask |
1 ऑक्टेट | टीडीएस फ़्लैग के लिए मास्क. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
Transport_Data_Length |
1 ऑक्टेट | Transport_Data की लंबाई. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
Transport_Data |
वैरिएबल साइज़ | Transport_Data_Length के आधार पर, अलग-अलग साइज़ में उपलब्ध है. मिलान करने के लिए, ट्रांसपोर्ट ब्लॉक का डेटा. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
Transport_Data_Mask_Length |
1 ऑक्टेट | Transport_Data_Mask की लंबाई. यह वैल्यू Transport_Data_Length के बराबर होनी चाहिए. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
Transport_Data_Mask |
वैरिएबल साइज़ | Transport_Data_Mask_Length के आधार पर, अलग-अलग साइज़ में उपलब्ध है. ट्रांसपोर्ट ब्लॉक के डेटा के लिए मास्क. इसकी लंबाई Transport_Data के बराबर होनी चाहिए. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
Meta_Data_Type |
1 ऑक्टेट |
0x00 - अमान्य 0x01 - वाई-फ़ाई एनएएन हैश अगर APCF_Action की वैल्यू 0x02 (साफ़) है, तो इसे अनदेखा करें.
|
Meta_Data_Length |
1 ऑक्टेट | Meta_Data की लंबाई. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
Meta_Data |
वैरिएबल साइज़ | Meta_Data_Length के आधार पर, अलग-अलग साइज़ में उपलब्ध है. मैच करने के लिए मेटाडेटा. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें. |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x08 - APCF Transport Discovery Service |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | टीडीएस फ़िल्टर टेबल में अब भी बिना शुल्क वाली कितनी एंट्री उपलब्ध हैं |
LE_APCF_Command: ad_type_sub_cmd
इस सबकमांड का इस्तेमाल, विज्ञापन टाइप को जोड़ने या हटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर फ़िल्टर करने के लिए विज्ञापन टाइप की सूची को मिटाने के लिए भी किया जाता है. read_extended_features_sub_cmd का इस्तेमाल करके देखें कि यह निर्देश काम करता है या नहीं.
अगर APCF_AD_DATA_Length की वैल्यू 0 है, तो विज्ञापन के डेटा और विज्ञापन के डेटा मास्क की तुलना किए बिना, APCF_AD_TYPE को फ़िल्टर करें.
अगर मिले हुए ADV पैकेट के डेटा की लंबाई AD_DATA_LENGTH से ज़्यादा है, तो AD डेटा के सिर्फ़ पहले AD_DATA_LENGTH बाइट की तुलना करें और बाकी डेटा को अनदेखा करें.
उप ओसीएफ़: 0x09
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Action |
1 ऑक्टेट |
0x00 - Add 0x01 - Delete 0x02 - Clear Delete से, चुने गए फ़िल्टर में मौजूद एआईडी टाइप मिट जाएगा. 'हटाएं' विकल्प चुनने पर, चुने गए फ़िल्टर में मौजूद सभी विज्ञापन टाइप हट जाएंगे. |
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
APCF_AD_TYPE |
1 ऑक्टेट | सूची में जोड़ने या सूची से हटाने के लिए, विज्ञापन का टाइप. APCF_Action 0x02 (Clear) होने पर अनदेखा करें |
APCF_AD_DATA_Length |
1 ऑक्टेट |
0x00 - इसका मतलब है कि डेटा कॉन्टेंट को फ़िल्टर न करें जब APCF_Action 0x02 (हटाएं) हो, तब इसे अनदेखा करें
|
APCF_AD_DATA |
वैरिएबल साइज़ |
APCF_AD_DATA_Lengthके आधार पर अलग-अलग साइज़ APCF_Action की वैल्यू 0x02 (साफ़) होने पर अनदेखा करें |
APCF_AD_DATA_MASK |
वैरिएबल साइज़ |
APCF_AD_DATA_Lengthके आधार पर अलग-अलग साइज़ का होता है जब APCF_Action 0x02 (साफ़)हो, तब इसे अनदेखा करें इसकी लंबाई APCF_AD_DATA के बराबर होनी चाहिए.
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0x09 - APCF AD Type |
APCF_Action |
1 ऑक्टेट | कमांड को वापस दोहराने की सुविधा APCF_Action |
APCF_AvailableSpaces |
1 ऑक्टेट | विज्ञापन टाइप टेबल में अब भी उपलब्ध मुफ़्त एंट्री की संख्या |
LE_APCF_Command: read_extended_features_sub_cmd
इस सब-कमांड का इस्तेमाल, APCF की एक्सटेंडेट सुविधाओं को पढ़ने के लिए किया जाता है.
सब ओसीएफ़: 0xFF
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| लागू नहीं | कमांड पैरामीटर खाली है. |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
APCF_opcode |
1 ऑक्टेट | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features |
2 ऑक्टेट |
एक्सटेंडेड सुविधाओं के लिए बिट मास्क:
बिट की वैल्यू
|
कंट्रोलर की गतिविधि और ऊर्जा की जानकारी देने वाला कमांड
इस जानकारी का मकसद, होस्ट सिस्टम के फ़ंक्शन को बेहतर बनाना है. इससे सभी कॉम्पोनेंट की गतिविधियों का विश्लेषण किया जा सकता है. इसमें बीटी कंट्रोलर और उसकी मैक्रो स्थिति के साथ-साथ, ऐप्लिकेशन और फ़्रेमवर्क में हो रही गतिविधियों का विश्लेषण भी शामिल है. इसके लिए, बीटी स्टैक और कंट्रोलर से यह जानकारी चाहिए:
- BT स्टैक: कंट्रोलर की मौजूदा मैक्रो-ऑपरेशनल स्थिति की रिपोर्ट करना
- फ़र्मवेयर: गतिविधि और ऊर्जा की कुल जानकारी की रिपोर्टिंग
उपयोगकर्ता के लेवल पर तय की गई, बीटी होस्ट स्टैक मैक्रो की स्थितियां:
- प्रयोग में नहीं है: [पेज स्कैन, एलई विज्ञापन, पूछताछ स्कैन, एलई स्कैन]
- स्कैन करें: [paging/inquiry/trying to connect]
- चालू है: [ACL लिंक चालू है, SCO लिंक जारी है, स्निफ़ मोड]
कंट्रोलर अपनी लाइफ़साइकल के दौरान इन गतिविधियों को ट्रैक करता है: डेटा भेजने में लगा समय, डेटा पाने में लगा समय, कुछ समय से इस्तेमाल में न होने का समय, और कुल ऊर्जा की खपत. होस्ट से पढ़ने पर, इन्हें मिटा दिया जाता है.
LE_Get_Controller_Activity_Energy_Info
यह वेंडर के हिसाब से तय की गई कमांड है.
OCF: 0x159
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| NA | कमांड के पैरामीटर खाली हैं |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
total_tx_time_ms |
चार ऑक्टेट | Tx को पूरा करने में लगा कुल समय |
total_rx_time_ms |
चार ऑक्टेट | Rx को पूरा करने में लगा कुल समय |
total_idle_time_ms |
चार ऑक्टेट | स्लीप मोड में न होने पर, कम पावर मोड में बिताया गया कुल समय |
total_energy_used |
चार ऑक्टेट | इस्तेमाल की गई कुल ऊर्जा [विद्युत धारा (mA), वोल्टेज (V), और समय (ms) का गुणनफल] |
LE extended set scan parameters कमांड
इस कमांड का इस्तेमाल, कंट्रोलर में स्कैन विंडो और इंटरवल को बड़ा करने के लिए किया जा सकता है. BT Core 5.2 स्पेसिफ़िकेशन के मुताबिक, स्कैन विंडो और इंटरवल की ऊपरी सीमा 10.24 सेकंड होती है. इससे ऐप्लिकेशन के लिए, 10.24 सेकंड से ज़्यादा के स्कैन इंटरवल में रुकावट आती है.
बेस रेफ़रंस: BT Core 5.2 स्पेसिफ़िकेशन, पेज 2493 (LE Set Scan Parameters Command)
OCF: 0x15A
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
LE_Ex_Scan_Type |
1 ऑक्टेट |
0x00 - पैसिव स्कैनिंग. कोई SCAN_REQ पैकेट नहीं भेजा जाएगा (डिफ़ॉल्ट).0x01 - स्कैनिंग चालू है. SCAN_REQ पैकेट भेजे जा सकते हैं.
|
LE_Ex_Scan_Interval |
चार ऑक्टेट |
इसे उस समय अंतराल के तौर पर तय किया जाता है जब कंट्रोलर ने अपना आखिरी एलई स्कैन शुरू किया था और जब उसने अगला एलई स्कैन शुरू किया था. रेंज: 0x0004 से 0x00FFFFFF डिफ़ॉल्ट: 0x0010 (10 मि॰से॰) समय = N * 0.625 मि॰से॰ समय की रेंज: 2.5 मि॰से॰ से 10442.25 सेकंड |
LE_Ex_Scan_Window |
चार ऑक्टेट |
एलई स्कैन की अवधि. LE_Scan_Window की वैल्यू, LE_Scan_Interval से कम या इसके बराबर होनी चाहिए.
रेंज: 0x0004 से 0xFFFF डिफ़ॉल्ट: 0x0010 (10 मि॰से॰) समय = N * 0.625 मि॰से॰ समय की रेंज: 2.5 मि॰से॰ से 40.95 सेकंड |
Own_Address_Type |
1 ऑक्टेट |
0x00 - सार्वजनिक डिवाइस का पता (डिफ़ॉल्ट) 0x01 - डिवाइस का रैंडम पता |
LE_Ex_Scan_Filter_Policy |
0x00 - सभी विज्ञापन पैकेट स्वीकार करें (डिफ़ॉल्ट). इस डिवाइस के लिए डायरेक्ट किए गए ऐसे विज्ञापन पैकेट अनदेखा कर दिए जाएंगे जिनमें इस डिवाइस का पता नहीं दिया गया है. 0x01 - Ignore advertisement packets from devices not in the White List Only list. विज्ञापन के ऐसे पैकेट जो इस डिवाइस के लिए नहीं हैं उन्हें अनदेखा कर दिया जाएगा. |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
कंट्रोलर की डीबग जानकारी पाने का निर्देश
इस जानकारी एलिमेंट का मकसद, होस्ट को कंट्रोलर डीबग करने की जानकारी देना है. यह जानकारी बाइनरी फ़ॉर्म में होती है, ताकि पोस्ट-प्रोसेसिंग और विश्लेषण किया जा सके. इससे फ़ील्ड में आने वाली समस्याओं को डीबग करने में मदद मिलती है. साथ ही, इंजीनियरों को विश्लेषण के लिए जानकारी लॉग करने का टूलकिट मिलता है. जब होस्ट, इवेंट (Controller Debug Info subevent) के ज़रिए अनुरोध करता है, तब कंट्रोलर जानकारी दे सकता है. इसके अलावा, कंट्रोलर जब चाहे, तब भी जानकारी दे सकता है. उदाहरण के लिए, इसका इस्तेमाल इन कामों के लिए किया जा सकता है: फ़र्मवेयर की स्थिति की जानकारी, क्रैश डंप की जानकारी, लॉगिंग की जानकारी वगैरह की रिपोर्ट करना.
OCF: 0x15B
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| लागू नहीं | कमांड पैरामीटर की खाली सूची |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
A2DP हार्डवेयर ऑफ़लोड की सुविधा
A2DP ऑफ़लोड की सुविधा, A2DP ऑडियो एन्कोडिंग की प्रोसेस को बीटी कंट्रोलर से जुड़े ऑडियो प्रोसेसर पर ऑफ़लोड करने की सुविधा देती है. एन्कोड की गई ऑडियो डेटा स्ट्रीम, सीधे तौर पर ऑडियो प्रोसेसर से बीटी कंट्रोलर तक जाती है. इसमें बीटी होस्ट शामिल नहीं होता. BT होस्ट अब भी A2DP सेशन को कॉन्फ़िगर करने और कंट्रोल करने के लिए ज़िम्मेदार है. कमांड के दो वर्शन उपलब्ध हैं. लेगसी कमांड में, सिर्फ़ ओपन-सोर्स कोडेक इस्तेमाल किए जा सकते हैं. इनमें सब ओसीएफ़ 0x01-0x02 शामिल हैं. Sub-OCF 0x03-0x04 वाले वर्शन, कॉन्फ़िगर किए गए कोडेक के हिसाब से काम करते हैं.
OCF: 0x15D
A2DP ऑफ़लोड (लेगसी) शुरू करें
Sub OCF: 0x01
इस कमांड का इस्तेमाल, A2DP ऑफ़लोड प्रोसेस को कॉन्फ़िगर करने और A2DP स्ट्रीम शुरू करने, दोनों के लिए किया जाता है.
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Codec |
चार ऑक्टेट |
कोडेक टाइप की जानकारी देता है 0x01 - SBC 0x02 - AAC 0x04 - APTX 0x08 - APTX HD 0x10 - LDAC 0x20 - Opus |
Max_Latency |
दो ऑक्टेट | ज़्यादा से ज़्यादा इंतज़ार का समय (मिली सेकंड में). शून्य वैल्यू होने पर, फ़्लश करने की सुविधा बंद हो जाती है. |
SCMS-T_Enable |
दो ऑक्टेट |
ऑक्टेट 0: यह फ़्लैग, SCMS-T हेडर जोड़ने की सुविधा चालू करता है.
ऑक्टेट 1: SCMS-T हेडर के लिए वैल्यू. यह तब लागू होती है, जब SCMS-T हेडर चालू हो. |
Sampling_Frequency |
चार ऑक्टेट |
0x01 - 44100 हर्ट्ज़ 0x02 - 48000 हर्ट्ज़ 0x04 - 88200 हर्ट्ज़ 0x08 - 96000 हर्ट्ज़ |
Bits_Per_Sample |
1 ऑक्टेट |
0x01 - 16 बिट प्रति सैंपल 0x02 - 24 बिट प्रति सैंपल 0x04 - 32 बिट प्रति सैंपल |
Channel_Mode |
1 ऑक्टेट |
0x01 - मोनो 0x02 - स्टीरियो |
Encoded_Audio_Bitrate |
चार ऑक्टेट |
कोड में बदले गए ऑडियो का बिटरेट, बिट प्रति सेकंड में. 0x00000000 - ऑडियो बिटरेट की जानकारी नहीं दी गई है / इसका इस्तेमाल नहीं किया गया है. 0x00000001 - 0x00FFFFFF - एन्कोड किए गए ऑडियो का बिटरेट, बिट प्रति सेकंड में. 0x01000000 - 0xFFFFFFFF - रिज़र्व किया गया. |
Connection_Handle |
दो ऑक्टेट | कॉन्फ़िगर किए जा रहे A2DP कनेक्शन का कनेक्शन हैंडल |
L2CAP_Channel_ID |
दो ऑक्टेट | इस A2DP कनेक्शन के लिए इस्तेमाल किया जाने वाला L2CAP चैनल आईडी |
L2CAP_MTU_Size |
दो ऑक्टेट | एन्कोड किए गए ऑडियो पैकेट वाले L2CAP MTU का ज़्यादा से ज़्यादा साइज़ |
Codec_Information |
32 ऑक्टेट |
कोडेक से जुड़ी जानकारी.
एसबीसी कोडेक:
A2DP v1.3 में, एसबीसी कोडेक से जुड़ी खास जानकारी वाले एलिमेंट देखें. AAC कोडेक:
A2DP v1.3 एलडीएसी कोडेक:
ऑक्टेट 0-3: वेंडर आईडी
ऑक्टेट 4-5: कोडेक आईडी
ऑक्टेट 6: बिटरेट इंडेक्स:
ऑक्टेट 7: एलडीएसी चैनल मोड ऑक्टेट 8-31: सुरक्षित रखा गया है Opus कोडेक:
ऑक्टेट 0-3: वेंडर आईडी
ऑक्टेट 4-5: कोडेक आईडी ऑक्टेट 6-31: सुरक्षित रखा गया है अन्य सभी कोडेक: ऑक्टेट 0 से 31: सुरक्षित रखा गया है |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Sub_Opcode |
1 ऑक्टेट | 0x01 - Start A2DP offload |
A2DP ऑफ़लोड शुरू करें
सब ओसीएफ़: 0x03
इस कमांड का इस्तेमाल, A2DP ऑफ़लोड प्रोसेस को कॉन्फ़िगर करने और A2DP स्ट्रीम शुरू करने, दोनों के लिए किया जाता है.
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Connection Handle |
दो ऑक्टेट | चालू एचसीआई कनेक्शन का हैंडल |
L2CAP_Channel_ID |
दो ऑक्टेट | A2DP स्ट्रीमिंग के लिए खोले गए L2CAP चैनल का आइडेंटिफ़ायर |
Data_Path_Direction |
1 ऑक्टेट |
0x00 - आउटपुट (AVDTP सोर्स/मर्ज) 0x01 - इनपुट (AVDTP सिंक/स्प्लिट) |
Peer_MTU |
दो ऑक्टेट | L2CAP पैकेट का ज़्यादा से ज़्यादा साइज़, जिसे पीयर के साथ नेगोशिएट किया गया है. |
CP_Enable_SCMS_T |
1 ऑक्टेट |
0x00 - SCMS-T Content Protection Header बंद करें 0x01 - SCMS-T Content Protection Header चालू करें |
CP_Header_SCMS_T |
1 ऑक्टेट |
SCMS-T Content Protection Header चालू होने पर (CP_SCMS_T_Enable
0x01 पर सेट होने पर), यह ऑडियो कॉन्टेंट से पहले आने वाले हेडर की वैल्यू तय करता है. यह वैल्यू, Bluetooth Assigned Numbers के सेक्शन 6.3.2 में बताई गई है. ज़्यादा जानकारी के लिए, A2DP के सेक्शन 3.2.1-2 पर जाएं.SCMS-T Content protection की सुविधा चालू न होने पर, इसे अनदेखा कर दिया जाता है. |
Vendor_Specific_Parameters_Length |
1 ऑक्टेट |
वेंडर के हिसाब से तय किए गए पैरामीटर की लंबाई, 0 से 128 के बीच होनी चाहिए. जब कोई अतिरिक्त पैरामीटर नहीं दिया जाता है, तब वैल्यू 0 का इस्तेमाल किया जाता है. |
Vendor_Specific_Parameters |
0-128 ऑक्टेट |
वेंडर के खास पैरामीटर, जो Bluetooth Audio HAL से मिले हैं,
CodecParameters.vendorSpecificParameters[].
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Sub_Opcode |
1 ऑक्टेट | 0x03 - Start A2DP offload |
A2DP ऑफ़लोड (लेगसी) बंद करें
Sub OCF: 0x02
इस कमांड का इस्तेमाल, A2DP ऑफलोड स्ट्रीम को रोकने के लिए किया जाता है.
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| लागू नहीं | कमांड पैरामीटर की सूची खाली है. |
इस कमांड के लिए कोई पैरामीटर तय नहीं किया गया है.
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Sub_Opcode |
1 ऑक्टेट | 0x02 - Stop A2DP offload |
A2DP ऑफ़लोड बंद करें
उप ओसीएफ़: 0x04
इस कमांड का इस्तेमाल, A2DP ऑफलोड स्ट्रीम को रोकने के लिए किया जाता है.
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Connection Handle |
दो ऑक्टेट | चालू एचसीआई कनेक्शन का हैंडल |
L2CAP_Channel_ID |
दो ऑक्टेट | A2DP स्ट्रीमिंग के लिए खोले गए L2CAP चैनल का आइडेंटिफ़ायर |
Data_Path_Direction |
1 ऑक्टेट |
0x00 - आउटपुट (AVDTP सोर्स/मर्ज) 0x01 - इनपुट (AVDTP सिंक/स्प्लिट) |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Sub_Opcode |
1 ऑक्टेट | 0x04 - Stop A2DP offload |
ब्लूटूथ की क्वालिटी से जुड़ी शिकायत की रिपोर्ट भेजने का निर्देश
BT Quality Report कमांड की सुविधा, ब्लूटूथ कंट्रोलर में एक ऐसा मेकेनिज़्म शुरू करती है जो होस्ट को ब्लूटूथ क्वालिटी इवेंट की रिपोर्ट भेजता है. इन चार विकल्पों को चालू किया जा सकता है:
- क्वालिटी मॉनिटरिंग मोड: कंट्रोलर, समय-समय पर होस्ट को लिंक की क्वालिटी से जुड़ा BQR सबइवेंट भेजता है.
- एलएसटीओ के करीब पहुंचना: अगर कनेक्ट किए गए बीटी डिवाइस से, लिंक सुपरविज़न टाइमआउट (एलएसटीओ) की वैल्यू के आधे से ज़्यादा समय तक कोई पैकेट नहीं मिलता है, तो कंट्रोलर, होस्ट को एलएसटीओ के करीब पहुंचने वाले इवेंट की सूचना देता है.
- A2DP ऑडियो रुक-रुककर चलना: जब कंट्रोलर को ऐसे फ़ैक्टर का पता चलता है जिनकी वजह से ऑडियो रुक-रुककर चलता है, तो कंट्रोलर होस्ट को A2DP ऑडियो रुक-रुककर चलने वाले इवेंट की जानकारी देता है.
- (e)SCO Voice Choppy: जब कंट्रोलर को ऐसे फ़ैक्टर का पता चलता है जिनकी वजह से आवाज़ ठीक से नहीं सुनाई देती, तब कंट्रोलर होस्ट को (e)SCO Voice Choppy इवेंट की सूचना देता है.
- रूट इन्फ़्लेमेशन: इस इवेंट को कंट्रोलर, स्टैक को तब भेजता है, जब HAL या कंट्रोलर को कोई गंभीर गड़बड़ी मिलती है और उसे ब्लूटूथ को रीस्टार्ट करने की ज़रूरत होती है.
- एलएमपी/एलएल मैसेज ट्रेस: कंट्रोलर, रिमोट डिवाइस के साथ एलएमपी/एलएल मैसेज हैंडशेकिंग को होस्ट को भेजता है.
- ब्लूटूथ मल्टी-प्रोफ़ाइल/कोएक्स शेड्यूलिंग ट्रेस: कंट्रोलर, होस्ट को 2.4 Ghz बैंड में कई ब्लूटूथ प्रोफ़ाइलों और वायरलेस कोएक्सिस्टेंस को मैनेज करने से जुड़ी शेड्यूलिंग की जानकारी भेजता है.
- कंट्रोलर की डीबग जानकारी का तरीका: इस सुविधा के चालू होने पर, कंट्रोलर होस्ट को कंट्रोलर की डीबग जानकारी वाले सब-इवेंट के ज़रिए, डीबग लॉगिंग की जानकारी अपने-आप भेज सकता है.
- LE Audio Choppy: जब कंट्रोलर को ऐसी समस्याओं का पता चलता है जिनकी वजह से ऑडियो रुक-रुककर आता है, तो कंट्रोलर होस्ट को LE Audio Choppy इवेंट की सूचना देता है.
-
एडवांस आरएफ़ स्टैटिस्टिक्स मोड: कंट्रोलर, होस्ट को आरएफ़ स्टैटिस्टिक्स से जुड़ी जानकारी देता है. इसमें रिपोर्ट के इस्तेमाल के दो उदाहरण शामिल हैं:
- समय-समय पर मिलने वाली रिपोर्ट
- इवेंट ट्रिगर (स्ट्रीम शुरू/बंद करना और लिंक क्वालिटी इवेंट ट्रिगर करना).
- नियंत्रक की सेहत की निगरानी करने वाला सिस्टम, होस्ट को सेहत से जुड़ी जानकारी देता है. यह जानकारी दो तरह के इवेंट के ज़रिए मिलती है: समय-समय पर मिलने वाली रिपोर्ट और इवेंट ट्रिगर होने पर मिलने वाली रिपोर्ट.
- ब्लूटूथ क्वालिटी रिपोर्ट कमांड का BQR_Report_Action: होस्ट इस एचसीआई कमांड का इस्तेमाल, क्वालिटी मॉनिटरिंग मोड, एनर्जी मॉनिटर मोड या अडवांस आरएफ़ स्टैट्स मोड के लिए एक बार की क्वेरी पाने के लिए कर सकता है.
OCF: 0x15E
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
BQR_Report_Action |
1 ऑक्टेट |
BQR_Quality_Event_Mask पैरामीटर में सेट किए गए क्वालिटी इवेंट की रिपोर्टिंग को जोड़ने / मिटाने या सभी को हटाने की कार्रवाई.
0x00 - जोड़ें
मिटाएं पर क्लिक करने से, क्वालिटी से जुड़े किसी इवेंट की रिपोर्टिंग मिट जाएगी. |
BQR_Quality_Event_Mask |
चार ऑक्टेट |
चुने गए क्वालिटी इवेंट की रिपोर्टिंग के लिए बिट मास्क.
बिट 0: क्वालिटी मॉनिटरिंग मोड चालू करने के लिए सेट करें. |
BQR_Minimum_Report_Interval |
दो ऑक्टेट |
चुने गए क्वालिटी इवेंट के लिए, क्वालिटी इवेंट की रिपोर्टिंग का कम से कम समय अंतराल तय करें. कंट्रोलर फ़र्मवेयर को तय किए गए समय अंतराल के अंदर, अगले इवेंट की जानकारी नहीं देनी चाहिए. इंटरवल सेटिंग, जोड़े जा रहे क्वालिटी इवेंट के हिसाब से होनी चाहिए.
यूनिट: मिलीसेकंड |
BQR_Vendor_Specific_Quality_Event_Mask |
चार ऑक्टेट |
चुने गए वेंडर के हिसाब से क्वालिटी इवेंट की रिपोर्टिंग के लिए बिट मास्क. यह पैरामीटर सिर्फ़ तब मान्य होता है, जब BQR_Quality_Event_Mask का बिट 15 सेट किया गया हो.
बिट 0 से 31: रिज़र्व किया गया. |
BQR_Vendor_Specific_Trace_Mask |
चार ऑक्टेट |
चुने गए वेंडर के हिसाब से ट्रेस रिपोर्टिंग के लिए बिट मास्क. यह पैरामीटर सिर्फ़ तब मान्य होता है, जब BQR_Quality_Event_Mask का बिट 31 सेट हो.
बिट 0 से 31: रिज़र्व किया गया. |
Report_interval_multiple |
चार ऑक्टेट |
BQR_Minimum_Report_Interval के लिए मल्टीप्लायर. जब यह वैल्यू >= 1 होती है, तो
BQR रिपोर्ट इंटरवल, इस फ़ॉर्मैट में होता है BQR रिपोर्ट इंटरवल = BQR_Minimum_Report_Interval x Report_interval_multiple. कंट्रोलर फ़र्मवेयर को तय किए गए समय अंतराल के अंदर, अगले इवेंट की जानकारी नहीं देनी चाहिए. इंटरवल सेटिंग, खास तौर पर जोड़े गए क्वालिटी इवेंट के लिए होती है.
यूनिट: मिलीसेकंड BQR_Report_Interval की सेटिंग, कंट्रोलर की क्षमता से ज़्यादा है, तो कंट्रोलर को कमांड पूरी होने पर, ज़्यादा से ज़्यादा BQR_Report_Interval समय दिखाना होगा.
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Current_Quality_Event_Mask |
चार ऑक्टेट |
इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है. बिट 0: क्वालिटी मॉनिटरिंग मोड चालू है. बिट 1: एलएसटीओ इवेंट की रिपोर्टिंग की सुविधा चालू है. बिट 2: A2DP ऑडियो के रुक-रुककर चलने की समस्या की रिपोर्टिंग चालू है. तीसरा बिट: (e)SCO वॉइस चॉपी इवेंट की रिपोर्टिंग चालू है. चौथा बिट: रूट में सूजन की जानकारी रिपोर्ट करने की सुविधा चालू है. बिट 5: एनर्जी मॉनिटरिंग मोड चालू है. छठा बिट: LE Audio के रुक-रुक कर चलने वाले इवेंट की रिपोर्टिंग चालू है. बिट 7: कनेक्ट नहीं हो सका इवेंट. बिट 8: इसे सेट करने पर, Advance RF Stats मोड इवेंट ट्रिगर चालू हो जाता है. बिट 9: इसे सेट करने पर, ऐडवांस आरएफ़ के आंकड़े समय-समय पर रिपोर्ट किए जाते हैं. बिट 10: कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने की सुविधा के लिए, इवेंट ट्रिगर चालू करने पर सेट होता है. बिट 11: इसे चालू पर सेट करने पर, कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने की सुविधा समय-समय पर रिपोर्ट करती है. बिट 12 ~ 14: आरक्षित. बिट 15: वेंडर के हिसाब से क्वालिटी इवेंट की रिपोर्टिंग चालू है. बिट 16: एलएमपी/एलएल मैसेज ट्रेस करने की सुविधा चालू है. बिट 17: ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस चालू है. बिट 18: कंट्रोलर की डीबग जानकारी देने वाला सिस्टम चालू है. बिट 19: ऑफ़लोड डीबग की जानकारी के लिए रिज़र्व किया गया है बिट 20: यूएआरटी हिस्ट्री डंप इवेंट ट्रिगर बिट 21 से 30: रिज़र्व किया गया है. बिट 31: वेंडर के हिसाब से ट्रेस करने की सुविधा चालू है. |
Current_Vendor_Specific_Quality_Event_Mask |
चार ऑक्टेट | इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है. |
Current_Vendor_Specific_Trace_Mask |
चार ऑक्टेट | इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है. |
BQR_Report_interval |
चार ऑक्टेट | इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है. |
Current_Vendor_Specific_Trace_Mask |
चार ऑक्टेट |
BQR_Report_interval की सेटिंग. यह वैल्यू, BQR_Minimum_Report_Interval * Report_interval_multiple या कंट्रोलर के ज़्यादा से ज़्यादा सपोर्ट इंटरवल के बीच की कम से कम वैल्यू होनी चाहिए. |
डाइनैमिक ऑडियो बफ़र कमांड
डाइनैमिक ऑडियो बफ़र की सुविधा, ऑडियो में गड़बड़ी होने की समस्या को कम करती है. यह अलग-अलग स्थितियों के आधार पर, ब्लूटूथ कंट्रोलर में ऑडियो बफ़र के साइज़ को बदलती है.
OCF: 0x15F
ऑडियो के बफ़र होने में लगने वाले समय की जानकारी पाने की सुविधा
Sub OCF: 0x01
इस निर्देश का इस्तेमाल करके, ब्लूटूथ कंट्रोलर से ऑडियो बफ़र टाइम की सुविधा पाएं.
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| लागू नहीं | कमांड पैरामीटर की सूची खाली है |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Dynamic_Audio_Buffer_opcode |
1 ऑक्टेट | 0x01 - Get audio buffer time |
Audio_Codec_Type_Supported |
चार ऑक्टेट |
सपोर्ट किए गए कोडेक टाइप के लिए बिट मास्क बिट 0 - एसबीसी बिट 1 - एएसी बिट 2 - एपीटीएक्स बिट 3 - एपीटीएक्स एचडी बिट 4 - एलडीएसी बिट 5-31 रिज़र्व हैं |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताया गया, Bit 0 कोडेक टाइप का डिफ़ॉल्ट बफ़र टाइम. अगर बिट 0 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी. यूनिट: मि॰से॰ |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताए गए Bit 0 कोडेक टाइप का ज़्यादा से ज़्यादा बफ़र समय. अगर बिट 0 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी. यूनिट: मि॰से॰ |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताए गए Bit 0 कोडेक टाइप के लिए, कम से कम बफ़र समय. अगर बिट 0 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी. यूनिट: मि॰से॰ |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताए गए Bit 1 कोडेक टाइप का डिफ़ॉल्ट बफ़र टाइम. अगर Bit 1 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी. यूनिट: मि॰से॰ |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
दो ऑक्टेट |
Bit 1 कोडेक टाइप के लिए ज़्यादा से ज़्यादा बफ़र समय, जो Audio_Codec_Type_Supported में बताया गया है. अगर Bit 1 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी. यूनिट: मि॰से॰ |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताए गए Bit 1 कोडेक टाइप के लिए, कम से कम बफ़र समय. अगर Bit 1 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी. यूनिट: मि॰से॰ |
| ...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताए गए Bit 31 कोडेक टाइप का डिफ़ॉल्ट बफ़र टाइम. अगर बिट 31 कोडेक टाइप मौजूद नहीं है, तो इस वैल्यू को 0 पर सेट करें. यूनिट: मि॰से॰ |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताए गए Bit 31 कोडेक टाइप का ज़्यादा से ज़्यादा बफ़र समय. अगर बिट 31 कोडेक टाइप मौजूद नहीं है, तो इस वैल्यू को 0 पर सेट करें. यूनिट: मि॰से॰ |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
दो ऑक्टेट |
Audio_Codec_Type_Supported में बताए गए Bit 31 कोडेक टाइप का कम से कम बफ़र समय. अगर बिट 31 कोडेक टाइप मौजूद नहीं है, तो इस वैल्यू को 0 पर सेट करें. यूनिट: मि॰से॰ |
ऑडियो बफ़र होने में लगने वाला समय सेट करना
Sub OCF: 0x02
इस कमांड का इस्तेमाल, ब्लूटूथ कंट्रोलर के लिए ऑडियो बफ़र टाइम सेट करने के लिए करें.
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Audio_Codec_Buffer_Time |
दो ऑक्टेट |
मौजूदा कोडेक के लिए, ऑडियो बफ़र करने का अनुरोध किया गया समय. इकाई: मिलीसेकंड |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Dynamic_Audio_Buffer_opcode |
1 ऑक्टेट | 0x02 - ऑडियो बफ़र टाइम सेट करना |
Audio_Codec_Buffer_Time |
दो ऑक्टेट |
ब्लूटूथ कंट्रोलर में मौजूदा ऑडियो बफ़र का समय. यूनिट: मि॰से॰ |
कनेक्शन प्रॉक्सिमिटी थ्रेशोल्ड (v1.06)
LE_Add_Device_To_Filter_Accept_List_With_Proximity_Threshold_Command
इस कमांड का इस्तेमाल, फ़िल्टर की गई स्वीकार की गई सूची में कोई डिवाइस जोड़ते समय, कनेक्शन की प्रॉक्सिमिटी थ्रेशोल्ड (पाथ लॉस और आरएसएसआई) की जानकारी देने के लिए किया जा सकता है.
कनेक्शन सिर्फ़ तब होना चाहिए, जब सिग्नल में पाथ लॉस की वैल्यू, पाथ लॉस थ्रेशोल्ड से कम हो.
अगर TxPower उपलब्ध नहीं है या No Path Loss filtering का इस्तेमाल किया गया है, तो कनेक्शन सिर्फ़ तब बनाया जाना चाहिए, जब सिग्नल की आरएसएसआई वैल्यू, तय की गई आरएसएसआई थ्रेशोल्ड से ज़्यादा हो.
इस निर्देश का इस्तेमाल, ब्लूटूथ के स्टैंडर्ड निर्देश LE Add Device To Filter Accept List command के विकल्प के तौर पर किया जा सकता है.
अगर डिवाइस पहले से ही फ़िल्टर स्वीकार करने वाली सूची में है और इस दौरान थ्रेशोल्ड की अलग-अलग वैल्यू के साथ इस कमांड को कॉल किया जाता है, तो थ्रेशोल्ड की वैल्यू अपडेट की जानी चाहिए.
मूल रेफ़रंस: बीटी कोर 6.2 स्पेसिफ़िकेशन, 7.8.16 (एलई ऐड डिवाइस टू फ़िल्टर ऐक्सेप्ट लिस्ट कमांड)
इस कमांड का इस्तेमाल इन स्थितियों में नहीं किया जाना चाहिए:
- विज्ञापन दिखाने के लिए फ़िल्टर करने से जुड़ी कोई नीति, फ़िल्टर स्वीकार करने की सूची का इस्तेमाल करती है और विज्ञापन दिखाने की सुविधा चालू है,
- स्कैनिंग फ़िल्टर की नीति, फ़िल्टर स्वीकार करने की सूची का इस्तेमाल करती है और स्कैनिंग की सुविधा चालू है या
- इनीशिएटर फ़िल्टर करने की नीति, फ़िल्टर स्वीकार करने की सूची का इस्तेमाल करती है और
HCI_LE_Create_ConnectionयाHCI_LE_Extended_Create_Connectionकमांड लंबित है.
LE Remove Device From Filter Accept List को उस डिवाइस को फ़िल्टर स्वीकार करने वाली सूची से हटाना होगा जिसे इस कमांड से जोड़ा गया था.
ऑपकोड: 0xFD66 (OCF: 0x166)
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Address_Type |
1 ऑक्टेट |
0x00 - सार्वजनिक डिवाइस का पता 0x01 - रैंडम डिवाइस का पता 0xFF - ऐसे डिवाइस जो पहचान छिपाकर विज्ञापन भेजते हैं अन्य सभी वैल्यू - आने वाले समय में इस्तेमाल के लिए रिज़र्व की गई हैं |
LE_Device_Address |
6 ऑक्टेट |
सार्वजनिक या कोई भी पता Address_Type को 0xFF पर सेट करने पर, पते को अनदेखा कर दिया जाएगा. |
Connection_Path_Loss_Threshold |
1 ऑक्टेट |
रेंज: 0 से +100, +127 [dB में] यह कनेक्शन के पाथ लॉस थ्रेशोल्ड को दिखाता है. इससे डिवाइस के मिलने पर, उससे कनेक्शन शुरू किया जा सकता है (0 से +100). कनेक्शन शुरू करने के लिए, पाथ लॉस की वैल्यू कम होनी चाहिए. No Path Loss filtering को दिखाने के लिए, वैल्यू +127 का इस्तेमाल किया जाता है. जब TxPower उपलब्ध न हो या यह वैल्यू +127 हो, तो इस कमांड को नीचे दिए गए आरएसएसआई फ़िल्टरिंग पर वापस जाना चाहिए.
|
Connection_RSSI_Threshold |
1 ऑक्टेट |
रेंज: -127 से +20, +127 [dBm में] इससे कनेक्शन के आरएसएसआई थ्रेशोल्ड का पता चलता है. इससे यह तय होता है कि डिवाइस का पता चलने पर, उससे कनेक्शन शुरू करना है या नहीं. (-127 से +20). कनेक्शन शुरू करने के लिए, आरएसएसआई वैल्यू ज़्यादा होनी चाहिए. अगर TxPower उपलब्ध नहीं है या पाथ लॉस थ्रेशोल्ड को +127 पर सेट किया गया है, तो आरएसएसआई फ़िल्टरिंग का इस्तेमाल किया जाता है. No RSSI filtering को दिखाने के लिए, वैल्यू +127 का इस्तेमाल किया जाता है.
|
जब पाथ लॉस थ्रेशोल्ड और आरएसएसआई थ्रेशोल्ड, दोनों +127 हों, तो इस कमांड को ब्लूटूथ स्टैंडर्ड LE Add Device To Filter Accept List command की तरह काम करना चाहिए.
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
एचसीआई इवेंट (वेंडर के हिसाब से)
कुछ मामलों में, वेंडर के हिसाब से एचसीआई इवेंट की ज़रूरत होती है. BT Core 5.2 स्पेसिफ़िकेशन के पेज 1897 पर मौजूद, इमेज 5.4 देखें. इवेंट पैरामीटर 0 में हमेशा पहला सब-इवेंट कोड शामिल होगा. इसके आधार पर, बाकी एचसीआई इवेंट को डिकोड किया जाता है.
| इवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
HCI_vendor_specific_event_code |
1 ऑक्टेट | 0xFF |
sub_event_code |
1 ऑक्टेट | सबेवेंट कोड का साइज़ एक ऑक्टेट होगा. यह एचसीआई इवेंट पैकेट में पैरामीटर की लंबाई के ठीक बाद वाला बाइट होता है. |
स्टोरेज की तय सीमा से ज़्यादा इस्तेमाल होने पर दिखने वाला सबइवेंट
इस इवेंट से पता चलता है कि स्टोरेज थ्रेशोल्ड का उल्लंघन हुआ है.
Subevent code = 0x54
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
| कोई नहीं |
LE multi-advertising state change subevent
इस इवेंट से पता चलता है कि विज्ञापन दिखाने वाले किसी इंस्टेंस की स्थिति बदल गई है. फ़िलहाल, इस इवेंट का इस्तेमाल सिर्फ़ यह बताने के लिए किया जाता है कि कनेक्शन की वजह से, विज्ञापन दिखाने वाले किस इंस्टेंस को बंद किया गया.
Subevent code = 0x55
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Advertising_instance |
1 ऑक्टेट |
विज्ञापन के किसी इंस्टेंस की पहचान करता है मान्य वैल्यू 0 से लेकर max_advt_instances-1 तक होती हैं
|
State_Change_Reason |
1 ऑक्टेट | 0x00: कनेक्शन मिला |
Connection_handle |
दो ऑक्टेट |
उस कनेक्शन की पहचान करता है जिसकी वजह से advt इंस्टेंस बंद हो गया (अमान्य होने पर 0xFFFF)
|
विज्ञापन की ट्रैकिंग का LE सब-इवेंट
इस इवेंट से पता चलता है कि विज्ञापन देने वाला व्यक्ति या कंपनी कब मिली या कब खो गई.
सब इवेंट कोड = 0x56
| सब-इवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
APCF_Filter_Index |
1 ऑक्टेट | फ़िल्टर इंडेक्स (0, max_filter-1) |
Advertiser_State |
1 ऑक्टेट |
0x00: विज्ञापन देने वाला व्यक्ति या कंपनी मिली 0x01: विज्ञापन देने वाला व्यक्ति या कंपनी नहीं मिली |
Advt_Info_Present |
1 ऑक्टेट |
0x00: विज्ञापन देने वाले व्यक्ति या कंपनी की जानकारी (Advt_Info) मौजूद है0x01: विज्ञापन देने वाले व्यक्ति या कंपनी की जानकारी ( Advt_Info) मौजूद नहीं है
|
Advertiser_Address |
6 ऑक्टेट | सार्वजनिक या कोई भी पता |
Advertiser_Address_Type |
1 ऑक्टेट |
0x00: सार्वजनिक पता 0x01: रैंडम पता |
Advt_Info |
Tx_Pwr[0]: 1 ऑक्टेटRSSI[0]: 1 ऑक्टेटTimestamp[0]: 2 ऑक्टेटAdv packet_len[0]: 1 ऑक्टेटAdv_packet[0]: Adv_packet_len ऑक्टेटScan_data_resp_len[0]: 1 ऑक्टेटScan_data_resp[0]: Scan_data_resp ऑक्टेट
|
कंट्रोलर की डीबग जानकारी वाला सब-इवेंट
इस इवेंट का इस्तेमाल कंट्रोलर, होस्ट को बाइनरी डीबग जानकारी देने के लिए करता है.
Subevent code = 0x57
| सब-इवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
debug_block_byte_offset_start |
दो ऑक्टेट | शुरुआत से ब्लॉक बाइट ऑफ़सेट डीबग करें |
last_block |
1 ऑक्टेट |
0x00: ज़्यादा डीबग डेटा मौजूद है 0x01: आखिरी बाइनरी ब्लॉक; अब कोई डीबग डेटा नहीं है |
cur_pay_load_sz |
दो ऑक्टेट | मौजूदा इवेंट में बाइनरी ब्लॉक का साइज़ |
Debug_Data |
वैरिएबल | cur_payload_sz का डीबग डेटा |
LE ब्रॉडकास्ट चैनल मैप क्लासिफ़िकेशन (v1.06)
ब्लूटूथ चैनलों पर रेडियो नॉइज़ लेवल, पैकेट रिसेप्शन की सफलता तय करने वाला एक अहम फ़ैक्टर है. ट्रांसमिशन की विश्वसनीयता को ऑप्टिमाइज़ करने के लिए, चैनल मैप क्लासिफ़िकेशन मेकेनिज़्म ज़रूरी है. इससे चैनल की क्वालिटी का पता चलता है. LE Audio ब्रॉडकास्ट सोर्स के स्टैंडर्ड तरीके में, सोर्स को आम तौर पर यह पता नहीं होता कि कौनसे डिवाइस, ब्रॉडकास्ट को सुन रहे हैं. इसलिए, ब्रॉडकास्ट सोर्स को चैनल की क्वालिटी के अपने आकलन पर ही भरोसा करना चाहिए, ताकि वह बीआईजी चैनल मैप तय कर सके. हालांकि, सिर्फ़ सोर्स के आधार पर तय किया गया बीआईजी चैनल मैप, हर रिसीवर के लिए सबसे अच्छा नहीं हो सकता. ऐसा इसलिए, क्योंकि अलग-अलग जगहों पर पर्यावरण की स्थितियां अलग-अलग होती हैं. इसके अलावा, हर रिसीवर के आस-पास स्थानीय तौर पर सिग्नल में रुकावट डालने वाले सोर्स मौजूद हो सकते हैं. अगर ब्रॉडकास्ट रिसीवर, ब्रॉडकास्ट सोर्स को चैनल के क्लासिफ़िकेशन की जानकारी दे सकता है, तो सोर्स अपने बीआईजी चैनल मैप को उसके हिसाब से अडजस्ट कर सकता है. इससे ब्रॉडकास्ट स्ट्रीम के ट्रांसमिशन और रिसेप्शन को बेहतर बनाने में मदद मिलेगी. साथ ही, इससे ब्रॉडकास्ट स्ट्रीम में होने वाली रुकावटों को कम किया जा सकेगा.
उदाहरण के लिए, निजी ऑडियो शेयर करने (पीएएस) की सुविधा वाले ऐप्लिकेशन में, ईयरबड और ब्रॉडकास्ट सोर्स के बीच एक LE ACL लिंक (ब्रॉडकास्ट असिस्टेंट के तौर पर काम करता है, ताकि यह अपने लोकल ब्रॉडकास्ट सोर्स के साथ सिंक हो सके) बनाया जाता है. इस मौजूदा एलई एसीएल कनेक्शन का इस्तेमाल, ब्रॉडकास्ट सोर्स को ईयरबड (LL_CHANNEL_STATUS_IND पैकेट के ज़रिए) से चैनल के क्लासिफ़िकेशन की जानकारी देने के लिए किया जा सकता है. इसके बाद, ब्रॉडकास्ट सोर्स इस जानकारी का इस्तेमाल करके, अपने बीआईजी चैनल मैप को बेहतर बना सकता है.
इसलिए, हम LE_BIG_Set_Channel_Map_Classification_Command को तय कर रहे हैं. इस कमांड से, BIG सोर्स में चैनल मैप मैनेजमेंट की सुविधा चालू हो जाती है. इससे, पेरिफ़रल डिवाइसों से मिली चैनल क्लासिफ़िकेशन की जानकारी को ध्यान में रखा जाता है. इस कमांड की मदद से, कंट्रोलर को कोई खास एलई एसीएल कनेक्शन हैंडल सेट करने की अनुमति मिलेगी. यह जानकारी मिलने के बाद कंट्रोलर, दिए गए एलई एसीएल कनेक्शन से जुड़े चैनल क्लासिफ़िकेशन डेटा के आधार पर, अपने बीआईजी चैनल मैप का पता लगाएगा.
इस वीएससी को लागू करने के लिए, ब्रॉडकास्ट सोर्स को यह ज़रूरी है कि वह बीआईजी चैनल मैप बनाते समय, चैनल के वर्गीकरण के कई सोर्स को ध्यान में रखे. उदाहरण के लिए, कंट्रोलर, कनेक्ट किए गए रिमोट डिवाइसों से मिली "अच्छी" चैनल क्लासिफ़िकेशन की जानकारी के इंटरसेक्शन का पता लगा सकता है. साथ ही, इसे BIG चैनल मैप पर लागू कर सकता है. इन चैनल क्लासिफ़िकेशन को मर्ज करने के लिए, खास एल्गोरिदम का इस्तेमाल करने का फ़ैसला हर कंट्रोलर वेंडर पर निर्भर करता है. इससे इनोवेशन और ऑप्टिमाइज़ेशन को बढ़ावा मिलता है.
LE_BIG_Set_Channel_Map_Classification_Command
Opcode: 0xFD65 (OCF: 0x165)
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Sub_opcode |
1 ऑक्टेट |
0x01 - LE ACL कनेक्शन हैंडल के ज़रिए, BIG चैनल मैप सेट करें 0x02-0x0E - आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया |
Set_BIG_Channel_Action |
1 ऑक्टेट |
BD_ADDR या LE ACL कनेक्शन हैंडल जोड़ने या मिटाने या सभी को हटाने की कार्रवाई. 0x00 - जोड़ें 0x01 - मिटाएं 0x02 - हटाएं 0x03-0xFF - आरक्षित |
BIG_Handle |
1 ऑक्टेट |
यह पेरीफ़ेरल के चैनल क्लासिफ़िकेशन के साथ अपडेट करने के लिए, BIG हैंडल तय करता है रेंज: 0x00 से 0xEF |
cmd_para[] |
वैरिएबल | वैरिएबल पैरामीटर, Set_BIG_Channel_opcode पर निर्भर करते हैं |
LE_BIG_Set_Channel_Map_Classification_Command_by_Conn_Handle
Sub OCF: 0x01
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Sub_opcode |
1 ऑक्टेट |
0x01 - LE ACL कनेक्शन हैंडल के ज़रिए, BIG चैनल मैप सेट करें 0x02-0x0E - आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया |
Set_BIG_Channel_Action |
1 ऑक्टेट |
एलई एसीएल कनेक्शन हैंडल जोड़ने, मिटाने या सभी को हटाने की कार्रवाई. 0x00 - जोड़ें 0x01 - मिटाएं 0x02 - हटाएं 0x03-0xFF - आरक्षित |
BIG_Handle |
1 ऑक्टेट |
इससे उस बीआईजी हैंडल का पता चलता है जिसे पेरिफ़ेरल के चैनल क्लासिफ़िकेशन के साथ अपडेट करना है. रेंज: 0x00 से 0xEF |
Number_of_LE_ACL_Connections |
1 ऑक्टेट |
इससे पता चलता है कि BIG चैनल मैप को अपडेट करने के लिए, LE ACL कनेक्शन की कितनी संख्या का इस्तेमाल करना है. Set_BIG_Channel_Action साफ़ होने पर अनदेखा करें (0x02) रेंज: 0x01 से 0xFF |
LE_ACL_Connection_Handles |
वैरिएबल (Number_of_LE_ACL_Connections * 2 ऑक्टेट) |
वैरिएबल साइज़, Number_of_LE_ACL_Connections पर आधारित Set_BIG_Channel_Action के Clear (0x02) होने पर अनदेखा करें कनेक्शन हैंडल की रेंज: 0x0000 से 0x0EFF |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति. सभी LE ACL conn_handles जोड़ने के बाद, SUCCESS दिखाता है. |
Set_BIG_Channel_opcode |
1 ऑक्टेट | Echo back command's Set_BIG_Channel_opcode |
Set_BIG_Channel_Action |
1 ऑक्टेट | Echo back command's Set_BIG_Channel_Action |
BIG_Handle |
1 ऑक्टेट | Echo back command's BIG_Handle |
ब्लूटूथ की क्वालिटी रिपोर्ट का सब-इवेंट
इस इवेंट से इनमें से किसी एक के बारे में पता चलता है: ब्लूटूथ क्वालिटी इवेंट हुआ, कंट्रोलर ने एलएमपी/एलएल मैसेज ट्रेस और ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस अपलोड किया या कंट्रोलर ने डीबग जानकारी का डेटा डंप किया.
Subevent code = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Quality_Report_Id |
1 ऑक्टेट |
0x01: मॉनिटरिंग मोड में क्वालिटी रिपोर्टिंग. 0x02: LSTO के करीब पहुंच रहा है. 0x03: A2DP ऑडियो रुक-रुककर चल रहा है. 0x04: (e)SCO Voice Choppy. 0x05 ~ 0x06: बुक किया गया. 0x07: LE Audio में आवाज़ रुक-रुककर आ रही है. 0x08: कनेक्ट नहीं हो सका. 0x09 ~ 0xFF: रिज़र्व किया गया. |
Packet_Types |
1 ऑक्टेट |
0x01: ID 0x02: NULL 0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0A: EV4 0x0B: EV5 0x0C: 2-EV3 0x0D: 2-EV5 0x0E: 3-EV3 0x0F: 3-EV5 0x10: DM1 0x11: DH1 0x12: DM3 0x13: DH3 0x14: DM5 0x15: DH5 0x16: AUX1 0x17: 2-DH1 0x18: 2-DH3 0x19: 2-DH5 0x1A: 3-DH1 0x1B: 3-DH3 0x1C: 3-DH5 0x1D ~ 0x50: Reserved 0x51: ISO packet 0x52: 1M PHY 0x53: 2M PHY 0x54: Codec PHY S=2 0x55: Codec PHY S=8 0x56 ~ 0xFF: Reserved |
Connection_Handle |
दो ऑक्टेट | ACL/(e)SCO/ISO कनेक्शन हैंडल. |
Connection_Role |
1 ऑक्टेट |
कनेक्शन के लिए भूमिका. 0x00: सेंट्रल 0x01: पेरिफ़ेरल 0x02 ~ 0xFF: आरक्षित. |
TX_Power_Level |
1 ऑक्टेट |
Connection_Handle के लिए, ट्रांसमिट पावर का मौजूदा लेवल.
यह वैल्यू, HCI_Read_Transmit_Power_Level एचसीआई कमांड का जवाब देने वाले कंट्रोलर की वैल्यू के बराबर होनी चाहिए. |
RSSI |
1 ऑक्टेट |
[dBm में]
Connection_Handle के लिए, Received Signal Strength Indication (RSSI) वैल्यू. |
SNR |
1 ऑक्टेट |
[dB में]
बताए गए Connection_Handle के लिए, सिग्नल-टू-नॉइज़ रेशियो (एसएनआर) की वैल्यू. |
Unused_AFH_Channel_Count |
1 ऑक्टेट |
AFH_channel_map में इस्तेमाल नहीं किए गए चैनलों की संख्या दिखाता है. 0x4F ~ 0xFF: आरक्षित. |
AFH_Select_Unideal_Channel_Count |
1 ऑक्टेट |
इससे उन चैनलों की संख्या का पता चलता है जिनमें रुकावट आ रही है और जिनकी क्वालिटी खराब है. हालांकि, उन्हें अब भी एएफ़एच के लिए चुना गया है. ब्लूटूथ की खास बातों के मुताबिक, कम से कम 20 चैनलों का इस्तेमाल किया जा सकता है. इसलिए, अगर सभी 79 चैनलों में रुकावट आ रही है और उनकी क्वालिटी खराब है, तो भी कंट्रोलर को एएफ़एच के लिए कम से कम 20 चैनल चुनने होंगे. |
LSTO |
दो ऑक्टेट |
लिंक की गई निगरानी की सुविधा के लिए, टाइम आउट की मौजूदा सेटिंग. Time = N * 0.625 ms Time Range: 0.625 ms to 40.9 s |
Connection_Piconet_Clock |
चार ऑक्टेट |
Connection_Handle के लिए पिकोनेट क्लॉक. यह वैल्यू, HCI_Read_Clock HCI कमांड का जवाब देने वाले कंट्रोलर की वैल्यू के बराबर होनी चाहिए. इस कमांड में, "Which_Clock" पैरामीटर की वैल्यू 0x01 (पिकोनेट क्लॉक) होती है. यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक) |
Retransmission_Count |
चार ऑक्टेट |
पिछले इवेंट के बाद से, फिर से भेजे गए इवेंट की संख्या. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी. |
No_RX_Count |
चार ऑक्टेट |
पिछले इवेंट के बाद से, कोई आरएक्स काउंट नहीं है. यह संख्या तब बढ़ती है, जब तय किए गए समय पर कोई पैकेट नहीं मिलता या मिला हुआ पैकेट खराब होता है. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी. |
NAK_Count |
चार ऑक्टेट |
पिछले इवेंट के बाद से, NAK (नेगेटिव ऐक्नॉलेज) की संख्या. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी. |
Last_TX_ACK_Timestamp |
चार ऑक्टेट |
पिछली बार TX ACK का टाइमस्टैंप. यह पिकोनेट सेंट्रल (सीएलके) के ब्लूटूथ क्लॉक पर आधारित होता है. यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक) |
Flow_Off_Count |
चार ऑक्टेट |
पिछले इवेंट के बाद से, कंट्रोलर को कितनी बार फ़्लो-ऑफ़ (STOP) मिला है. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी. |
Last_Flow_On_Timestamp |
चार ऑक्टेट |
पिछली बार फ़्लो-ऑन (GO) होने का टाइमस्टैंप. यह पिकोनेट सेंट्रल (सीएलके) के ब्लूटूथ क्लॉक पर आधारित होता है. यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक) |
Buffer_Overflow_Bytes |
चार ऑक्टेट |
[बाइट में]
पिछले इवेंट के बाद से, बफ़र ओवरफ़्लो की संख्या. |
Buffer_Underflow_Bytes |
चार ऑक्टेट |
[बाइट में]
पिछले इवेंट के बाद से, बफ़र अंडरफ़्लो की संख्या. |
bdaddr |
6 ऑक्टेट | रिमोट डिवाइस का पता |
cal_failed_item_count |
1 ऑक्टेट | कैलिब्रेशन की प्रोसेस पूरी न होने की वजह से अस्वीकार किए गए आइटम की संख्या |
TX_Total_Packets |
चार ऑक्टेट | भेजे गए पैकेट की संख्या. |
TX_UnAcked_Packets |
चार ऑक्टेट |
ऐसे पैकेट की संख्या जिन्हें स्वीकार नहीं किया गया है. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है. |
TX_Flushed_Packets |
चार ऑक्टेट |
उन पैकेट की संख्या जिन्हें फ़्लश पॉइंट से नहीं भेजा जाता है. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है. |
TX_Last_Subevent_Packets |
चार ऑक्टेट |
यह CIS इवेंट के आखिरी सबइवेंट में, CIS डेटा PDU को ट्रांसमिट करने वाले लिंक लेयर के पैकेट की संख्या होती है. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है. अगर लिंक के लिए कोई मान्य वैल्यू नहीं है, तो वैल्यू शून्य होती है. |
CRC_Error_Packets |
चार ऑक्टेट |
पिछले इवेंट के बाद से, सीआरसी गड़बड़ी वाले मिले पैकेज की संख्या. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है. |
RX_Duplicate_Packets |
चार ऑक्टेट |
पिछले इवेंट के बाद से, डुप्लीकेट (फिर से ट्रांसमिट किए गए) पैकेज की संख्या. होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है. |
RX_Unreceived_Packets |
चार ऑक्टेट |
नहीं मिले पैकेट की संख्या, LE READ ISO Link Quality कमांड के पैरामीटर के बराबर होती है. इसके बारे में जानने के लिए, Bluetooth core Specification Version 5.4 देखें. इससे जुड़ी स्ट्रीम, सीआईएस और बीआईएस हैं. इस वैल्यू के बढ़ने पर, लिंक लेयर को फ़्लश पॉइंट (सीआईएस पर) या उससे जुड़े इवेंट के आखिर में (बीआईएस पर) कोई खास पेलोड नहीं मिलता है. इसके बारे में ज़्यादा जानने के लिए, Bluetooth core Specification Version 5.4 Vol 6 Part B, Section 4.4.6.6 देखें. |
Coex_Info_Mask |
दो ऑक्टेट |
बिट 0 - CoexInvolvement: इस रिपोर्ट के जनरेट होने पर, यह सेट किया जाता है. इससे पता चलता है कि कोएक्स गतिविधियों के शामिल होने का शक है. उदाहरण के लिए, A2DP Chops और Approaching LSTO. Bit 1 - WL 2G Radio Active: Set to indicate WLAN 2G Radio is active. बिट 2 - WL 2G Connected: यह सेट किया जाता है, ताकि यह पता चल सके कि WLAN 2G रेडियो चालू है और कनेक्ट किया गया है. बिट 3 - WL 5G/6G रेडियो चालू है: इसे सेट करके यह दिखाया जाता है कि WLAN 5G/6G रेडियो चालू है. बिट 4-15 - रिज़र्व की गई हैं |
| वेंडर के हिसाब से पैरामीटर | (पैरामीटर की कुल लंबाई - टीबीडी) * ऑक्टेट | इससे कंट्रोलर वेंडर को, वेंडर के हिसाब से ज़्यादा पैरामीटर मिलते हैं. |
Subevent code = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]
इस इवेंट से पता चलता है कि ब्लूटूथ एचएएल या कंट्रोलर में कोई गंभीर गड़बड़ी हुई है. इस स्थिति को रिकॉर्ड करने और रीस्टार्ट करने के लिए, ब्लूटूथ स्टैक की ज़रूरत है. कंट्रोलर को, ब्लूटूथ स्टैक को Root_Inflammation_Event भेजना होगा. ऐसा, किसी भी मामले में डीबग जानकारी वाले इवेंट का पहला फ़्रैगमेंट भेजने से पहले करना होगा.
Error_Code पैरामीटर में, HAL/Controller से रिपोर्ट किया गया गड़बड़ी कोड होता है. अगर यह चिपसेट वेंडर से जुड़ी कोई गड़बड़ी है, तो इसकी वैल्यू 0 होती है. Vendor_Specific_Error_Code में, HAL/Controller से मिला चिपसेट वेंडर का गड़बड़ी वाला कोड होता है. अगर Error_Code पैरामीटर की वैल्यू 0 नहीं है, तो इसे 0 के तौर पर सेट किया जाना चाहिए. Error_Code और Vendor_Specific_Error_Code, दोनों पैरामीटर की वैल्यू 0 नहीं होनी चाहिए.
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Quality_Report_Id |
1 ऑक्टेट |
0x00 ~ 0x04: रिज़र्व किया गया. 0x05: रूट में सूजन. 0x06 ~ 0xFF: आरक्षित. |
Error_Code |
1 ऑक्टेट |
0x00: इसमें चिपसेट वेंडर का गड़बड़ी वाला कोड शामिल होता है. 0x01 ~ 0xFF: कंट्रोलर में कोई गड़बड़ी हुई. गड़बड़ी के कोड और उनके बारे में जानकारी की सूची देखने के लिए, Bluetooth Spec [Vol 2] Part D, Error Codes देखें. |
Vendor_Specific_Error_Code |
1 ऑक्टेट |
0x00: इसमें चिपसेट वेंडर के हिसाब से गड़बड़ी का कोई कोड शामिल नहीं है. 0x01 ~ 0xFF: चिपसेट वेंडर के हिसाब से तय किया गया गड़बड़ी का कोड. |
| वेंडर के हिसाब से पैरामीटर | (पैरामीटर की कुल लंबाई - 4) * ऑक्टेट | इससे कंट्रोलर वेंडर को, वेंडर के हिसाब से ज़्यादा पैरामीटर मिलते हैं. |
Subevent code = 0x58 [Quality_Report_Id = 0x06, एनर्जी मॉनिटर इवेंट]
इस इवेंट से, किसी तय समयावधि में ब्लूटूथ कंट्रोलर की बैटरी खपत और चालू होने की स्थितियों के बारे में खास जानकारी मिलती है. इस इवेंट से डेवलपर और इंजीनियर को यह समझने में मदद मिलती है कि कंट्रोलर, बैटरी को कैसे मैनेज करता है. साथ ही, यह भी पता चलता है कि किन गतिविधियों में सबसे ज़्यादा बैटरी खर्च होती है और बैटरी से जुड़ी समस्याओं को कैसे हल किया जा सकता है.
रिपोर्ट में मौजूद पैरामीटर, मुख्य मेट्रिक को ट्रैक करते हैं. इनमें ये शामिल हैं:
- औसत करंट खपत: कंट्रोलर द्वारा इस्तेमाल किया गया कुल करंट.
- अलग-अलग स्थितियों में बिताया गया समय: कंट्रोलर ने निष्क्रिय (स्लीप/कम पावर) स्थिति में कुल कितना समय (मिलीसेकंड में) बिताया और चालू स्थिति में कितना समय बिताया. चालू स्थिति में कंट्रोलर कनेक्ट होता है, डेटा ट्रांसमिट करता है या डेटा रिसीव करता है.
- स्टेट ट्रांज़िशन की संख्या: इससे पता चलता है कि कंट्रोलर, आइडल और ऐक्टिव स्टेट के बीच कितनी बार स्विच करता है.
- रेडियो की अलग-अलग स्थितियों में बिताया गया समय: BR/EDR (ब्लूटूथ क्लासिक) और LE (ब्लूटूथ लो एनर्जी) लिंक, दोनों के लिए ट्रांसमिट (Tx) और रिसीव (Rx) करने में बिताए गए समय के लिए अलग-अलग मेट्रिक.
- ट्रांसमिट पावर लेवल का औसत: BR/EDR और LE लिंक पर ट्रांसमिशन के लिए इस्तेमाल की गई औसत पावर (dBm में).
- चेन की गतिविधि के बारे में ज़्यादा जानकारी: चालू ट्रांसमिट या रिसीव चेन के साथ बिताए गए समय की रिपोर्ट. इसमें एक चेन और दो चेन के ऑपरेशन के साथ-साथ, इंटरनल (iPA) और एक्सटर्नल (ePA) पावर ऐम्प्लीफ़ायर के बीच अंतर बताया जाता है.
- स्कैन करने में लगा समय: कंट्रोलर को BR/EDR और LE डिवाइसों को स्कैन करने में लगा समय.
इन पैरामीटर की जांच करके, इंजीनियर कंट्रोलर की पावर एफिशिएंसी के बारे में अहम जानकारी पा सकते हैं. साथ ही, उसकी परफ़ॉर्मेंस को ऑप्टिमाइज़ कर सकते हैं.
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Quality_Report_Id |
1 ऑक्टेट | 0x06: एनर्जी मॉनिटरिंग |
Average_Current_Consumption |
दो ऑक्टेट | [mA में] कंट्रोलर की ओर से इस्तेमाल की गई सभी गतिविधियों के लिए, मौजूदा खपत का औसत |
Idle_Total_Time (स्लीप) |
चार ऑक्टेट | [मिलीसेकंड में] कुछ समय से इस्तेमाल में नहीं है (कम पावर मोड, स्लीप मोड) की स्थिति में बिताया गया कुल समय. |
Idle_Sate_Enter_Count |
चार ऑक्टेट | इससे पता चलता है कि कंट्रोलर कितनी बार निष्क्रिय स्थिति में जाता है. |
Active_Total_Time |
चार ऑक्टेट | [मिलीसेकंड में] चालू स्थिति में कुल समय. जैसे, पूछताछ करना, पेजिंग करना, ACL/SCO/eSCO/BIS/CIS ट्रैफ़िक, किसी टास्क को प्रोसेस करना. |
Active_State_Enter_Count |
चार ऑक्टेट | इससे पता चलता है कि कंट्रोलर कितनी बार चालू हुआ. |
BR_RDR_Tx_Total_Time |
चार ऑक्टेट | [मिलीसेकंड में] बीआर/ईडीआर के लिए, Tx(ट्रांसमिटिंग फ़ॉर एसीएल/एससीओ/ईएससीओ ट्रैफ़िक)स्टेट में कुल समय. |
BR_RDR_Tx_State_Enter_Count |
चार ऑक्टेट | इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Tx स्टेट में कितनी बार गया. |
BR_RDR_Tx_Average_Power_Level |
1 ऑक्टेट | [dBm में] सभी BR/EDR लिंक का औसत Tx पावर लेवल |
BR_RDR_Rx_Total_Time |
चार ऑक्टेट | [मिलीसेकंड में] बीआर/ईडीआर के लिए, खास तौर पर Rx (एसीएल/एससीओ/ईएससीओ ट्रैफ़िक से डेटा पाना) स्थिति में बिताया गया कुल समय. |
BR_RDR_Rx_State_Enter_Count |
चार ऑक्टेट | [मिलीसेकंड में] इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Rx स्थिति में कितनी बार आता है. |
LE_Tx_Total_Time |
चार ऑक्टेट | [मिलीसेकंड में] LE स्पेसिफ़िक Tx (ACL/BIS/CIS या LE विज्ञापन ट्रैफ़िक के लिए ट्रांसमिट करना) स्थिति में कुल समय. |
LE_Tx_State_Enter_Count |
चार ऑक्टेट | इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Rx स्थिति में कितनी बार आता है. |
LE_Tx_Average_Power_Level |
1 ऑक्टेट | [in dBm] सभी LE लिंक का औसत Tx पावर लेवल. |
LE_Rx_Total_Time |
चार ऑक्टेट | [मिलीसेकंड में] LE के लिए खास तौर पर बनाए गए Rx (ACL/BIS/CIS या LE स्कैनिंग ट्रैफ़िक से डेटा पाना) मोड में बिताया गया कुल समय. |
LE_Rx_State_Enter_Count |
चार ऑक्टेट | [मिलीसेकंड में] इससे पता चलता है कि कंट्रोलर, LE स्पेसिफ़िक Rx स्टेट में कितनी बार जाता है |
Report_Time_Duration (कुल समय) |
चार ऑक्टेट | [मिलीसेकंड में] बैटरी से जुड़ी जानकारी इकट्ठा करने में लगा कुल समय. |
RX_Active_One_Chain_Time |
चार ऑक्टेट | [मिलीसेकंड में] एक चेन में RX के चालू रहने की अवधि |
RX_Active_Two_Chain_Time |
चार ऑक्टेट | [मिलीसेकंड में] दो चेन में RX के चालू रहने की अवधि |
TX_iPA_Active_One_Chain_Time |
चार ऑक्टेट | [मिलीसेकंड में] एक चेन में चालू इंटरनल टीएक्स की अवधि |
TX_iPA_Active_Two_Chain_Time |
चार ऑक्टेट | [मिलीसेकंड में] दो चेन में इंटरनल टीएक्स के चालू रहने की अवधि |
TX_ePA_Active_One_Chain_Time |
चार ऑक्टेट | [मिलीसेकंड में] एक चेन में बाहरी टीएक्स के चालू रहने की अवधि |
TX_ePA_Active_Two_Chain_Time |
चार ऑक्टेट | [मिलीसेकंड में] दो चेन में बाहरी TX के चालू रहने की अवधि |
BREDR_RX_Active_Scan_total_Time |
चार ऑक्टेट | [मिलीसेकंड में] बीआर/ईडीआर स्कैन के दौरान, डेटा पाने के लिए डिवाइस के चालू रहने की समयावधि (मिलीसेकंड में) |
LE_RX_Active_Scan_total_Time |
चार ऑक्टेट | [मिलीसेकंड में] एलई स्कैन आरएक्स ऐक्टिव टाइम पर समय अवधि (मिलीसेकंड) |
Subevent code = 0x58 [Quality_Report_Id = 0x09~0x0A, ऐडवांस रेडियो फ़्रीक्वेंसी स्टैट्स इवेंट]
Bluetooth Advanced RF (रेडियो फ़्रीक्वेंसी) Stats इवेंट से, ब्लूटूथ कंट्रोलर के रेडियो बिहेवियर के बारे में परफ़ॉर्मेंस की ज़्यादा जानकारी मिलती है. इस इवेंट को दो तरीकों से ट्रिगर किया जा सकता है:
- ट्रिगर (0x09) के ज़रिए: किसी खास कमांड के जवाब में, एक बार रिपोर्ट भेजी जाती है.
- मॉनिटर (0x0A) के ज़रिए: कंट्रोलर, तय किए गए इंटरवल पर समय-समय पर रिपोर्ट भेजता है.
इवेंट के पैरामीटर, असल में पैकेट काउंटर होते हैं. ये तय की गई समयावधि में, रेडियो से जुड़ी अलग-अलग गतिविधियों को ट्रैक करते हैं.
मुख्य मेट्रिक और उनका मकसद
- पावर के आंकड़े ट्रांसमिट करना: ये काउंटर, अलग-अलग पावर कॉन्फ़िगरेशन का इस्तेमाल करके भेजे गए पैकेट को ट्रैक करते हैं. साथ ही, इंटरनल (iPA) और एक्सटर्नल (ePA) पावर ऐम्प्लिफ़ायर के साथ-साथ अलग-अलग ऐंटीना डाइवर्सिटी (Div) या बीमफ़ॉर्मिंग (BF) मोड के बीच अंतर करते हैं. इससे यह पता लगाने में मदद मिलती है कि पावर और ऐंटीना की किन सेटिंग का इस्तेमाल सबसे ज़्यादा किया जा रहा है.
- सिग्नल क्षमता का संकेतक (आरएसएसआई) बिन: ये पैरामीटर, सिग्नल क्षमता के आधार पर मिले हुए पैकेट को कैटगरी में बांटते हैं. इस रिपोर्ट में, आरएसएसआई की खास रेंज (जैसे, -90 dBm से कम, -70 से -75 dBm) में मौजूद पैकेट की संख्या दी जाती है. इससे लिंक की क्वालिटी के बारे में साफ़ तौर पर पता चलता है. "कमज़ोर" सिग्नल बिन (उदाहरण के लिए, < -90 dBm) में ज़्यादा संख्या होने का मतलब है कि कनेक्शन खराब है.
- आरएसएसआई डेल्टा: यह मेट्रिक, सिग्नल की क्षमता में अंतर को मेज़र करती है. यह अंतर, सिग्नल पाने वाले दो ऐंटेना के बीच होता है. हालांकि, यह अंतर तब ही मेज़र किया जाता है, जब यह लागू होता है. काउंटर ट्रैक करते हैं कि कितने पैकेट में अलग-अलग रेंज में आरएसएसआई डेल्टा है. डेल्टा का बड़ा अंतर (उदाहरण के लिए, >11 dBm) इंटरफ़ेरंस या किसी रुकावट की वजह से हो सकता है. ऐसा इसलिए, क्योंकि एक ऐंटेना को दूसरे ऐंटेना के मुकाबले ज़्यादा मज़बूत सिग्नल मिल रहा है.
- ऐंटेना स्विच करना और फिर से ट्रांसमिट करना: इस रिपोर्ट से पता चलता है कि कंट्रोलर कितनी बार ऐंटेना स्विच करता है. साथ ही, यह रिपोर्ट फिर से ट्रांसमिट किए गए (ReTX) पैकेट को ट्रैक करती है. डेटा को बार-बार ट्रांसफ़र करने से पता चलता है कि कनेक्शन कमज़ोर है या भरोसेमंद नहीं है. इसलिए, पैकेट को फिर से भेजना पड़ता है.
- चैनल की क्वालिटी: ये पैरामीटर, अलग-अलग कम्यूनिकेशन चैनलों की परफ़ॉर्मेंस के बारे में खास जानकारी देते हैं. साथ ही, आरएसएसआई के आधार पर उन्हें "अच्छी," "ठीक है," "खराब," या "बहुत खराब" के तौर पर कैटगरी में बांटते हैं. इससे आरएफ़ एनवायरमेंट के बारे में तुरंत खास जानकारी मिलती है.
- TX बफ़र क्यू: यह सेक्शन, कंट्रोलर के ट्रांसमिट बफ़र में इंतज़ार कर रहे पैकेट की संख्या पर नज़र रखता है. यह संख्या, अलग-अलग तरह के लिंक के लिए होती है. जैसे, ACL (एसिंक्रोनस कनेक्शन-ओरिएंटेड लॉजिकल लिंक), LECONN (एलई कनेक्शन), और LEISOC (एलई आइसक्रोनस). बफ़र की संख्या ज़्यादा होने से, बॉटलनेक या होस्ट से कंट्रोलर तक डेटा फ़्लो होने में समस्या आ सकती है.
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Quality_Report_Id |
1 ऑक्टेट | 0x09: Advance RF Stats By Trigger 0x0A: Advance RF Stats By Monitor |
Extension_info |
1 ऑक्टेट | BQR के वर्शन की जानकारी. BQRv6 के लिए 0x01 BQRv7 के लिए 0x02 |
Report_Time_Period |
चार ऑक्टेट | परफ़ॉर्मेंस की जानकारी इकट्ठा करने की समयावधि. यूनिट: मि॰से॰ |
TX_Power_iPA_BF |
चार ऑक्टेट | iPA BF का पैकेट काउंटर |
TX_Power_ePA_BF |
चार ऑक्टेट | ePA BF का पैकेट काउंटर |
TX_Power_iPA_Div |
चार ऑक्टेट | ईपीए डिव का पैकेट काउंटर |
TX_Power_ePA_Div |
चार ऑक्टेट | ईपीए डिव का पैकेट काउंटर |
RSSI_chain_50 |
चार ऑक्टेट | RSSI चेन का पैकेट काउंटर > -50 dBm |
RSSI_chain_50_55 |
चार ऑक्टेट | -50 dBm ~ >-55 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_55_60 |
चार ऑक्टेट | -55 dBm ~ >-60 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_60_65 |
चार ऑक्टेट | -60 dBm ~ >-65 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_65_70 |
चार ऑक्टेट | -65 dBm ~ >-70 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_70_75 |
चार ऑक्टेट | -70 dBm ~ >-75 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_75_80 |
चार ऑक्टेट | -75 dBm ~ >-80 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_80_85 |
चार ऑक्टेट | -80 dBm ~ >-85 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_85_90 |
चार ऑक्टेट | -85 dBm ~ >-90 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर |
RSSI_chain_90 |
चार ऑक्टेट | आरएसएसआई चेन < -90 डीबीएम का पैकेट काउंटर |
RSSI_delta_2 |
चार ऑक्टेट | RSSI डेल्टा < 2 dBm का पैकेट काउंटर |
RSSI_delta_2_5 |
चार ऑक्टेट | 2 dBm से 5 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर |
RSSI_delta_5_8 |
चार ऑक्टेट | 5 dBm से 8 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर |
RSSI_delta_8_11 |
चार ऑक्टेट | 8 dBm से 11 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर |
RSSI_delta_11 |
चार ऑक्टेट | आरएसएसआई डेल्टा > 11 dBm का पैकेट काउंटर |
Antenna_Switch_Count |
चार ऑक्टेट | ऐंटिना स्विच करने वाले इवेंट का पैकेट काउंटर |
ReTX_iPA_BF |
चार ऑक्टेट | हाल ही की समयावधि में ReTX_iPA_BF का पैकेट काउंटर |
ReTX_ePA_BF |
चार ऑक्टेट | सबसे हाल की समयावधि में ReTX_ePA_BF का पैकेट काउंटर |
ReTX_iPA_Div |
चार ऑक्टेट | हाल ही की समयावधि में, ReTX_iPA_Div का पैकेट काउंटर |
ReTX_ePA_Div |
चार ऑक्टेट | हाल ही की समयावधि में, ReTX_ePA_Div का पैकेट काउंटर |
Channel_count_Good |
1 ऑक्टेट | उन चैनलों की संख्या जिनका आरएसएसआई, बिन-1 (<-90) में आता है |
Channel_count_OK |
1 ऑक्टेट | उन चैनलों की संख्या जिनका आरएसएसआई, बिन-2 (-90~-76) के बीच है |
Channel_count_Bad |
1 ऑक्टेट | उन चैनलों की संख्या जिनका आरएसएसआई, बिन-3 (-76~-50) के बीच है |
Channel_count_VeryBad |
1 ऑक्टेट | उन चैनलों की संख्या जिनका आरएसएसआई, बिन-4 (>-50) में आता है |
TX_buffer_Queue_Count |
चार ऑक्टेट | बफ़र क्यू की स्थिति का काउंटर- कंट्रोलर टीएक्स बफ़र, हाल ही की समयावधि में [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd |
Subevent code = 0x58 [Quality_Report_Id = 0x0B~0x0C, कंट्रोलर हेल्थ मॉनिटरिंग इवेंट]
ब्लूटूथ कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने वाले इवेंट से, कंट्रोलर की चालू स्थिति के बारे में खास जानकारी मिलती है. इस इवेंट को दो तरीकों से ट्रिगर किया जा सकता है:
- ट्रिगर (0x09) के ज़रिए: किसी खास कमांड के जवाब में, एक बार रिपोर्ट भेजी जाती है.
- मॉनिटर (0x0A) के ज़रिए: कंट्रोलर, तय किए गए इंटरवल पर समय-समय पर रिपोर्ट भेजता है.
ब्लूटूथ कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने वाला इवेंट, गड़बड़ी की जानकारी देने वाला एक टूल है. इससे कंट्रोलर के काम करने की स्थिति के बारे में खास जानकारी मिलती है. यह इवेंट, ब्लूटूथ क्वालिटी रिपोर्ट (बीक्यूआर) फ़्रेमवर्क का हिस्सा है. इसका इस्तेमाल कनेक्टिविटी, पावर मैनेजमेंट, और टाइमिंग से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है. इसे एक बार की रिपोर्ट के तौर पर भेजा जा सकता है. इसके अलावा, इसे समय-समय पर भी भेजा जा सकता है, ताकि लगातार निगरानी की जा सके.
मुख्य मेट्रिक और उनका मकसद
- एचसीआई पैकेट काउंटर: यह इवेंट, होस्ट से कंट्रोलर और इसके उलट भेजे गए पैकेट की कुल संख्या को ट्रैक करता है. ये काउंटर, होस्ट कंट्रोलर इंटरफ़ेस (एचसीआई) ट्रांसपोर्ट से जुड़ी समस्याओं को डीबग करने के लिए ज़रूरी हैं. एचसीआई ट्रांसपोर्ट, सॉफ़्टवेयर स्टैक और ब्लूटूथ कंट्रोलर चिप के बीच कम्यूनिकेशन चैनल होता है.
- पैकेट की लंबाई: यह इवेंट, भेजे गए और पाए गए आखिरी एचसीआई पैकेट की लंबाई की जानकारी देता है. इससे यह पुष्टि करने में मदद मिलती है कि डेटा सही तरीके से ट्रांसमिट किया जा रहा है और साइज़ से जुड़ी कोई अनचाही समस्या नहीं है.
- वेक-अप सिग्नल की संख्या: रिपोर्ट में, BT_Wake और HOST_Wake पिन के असर्ट किए जाने की कुल संख्या शामिल होती है. ये फ़िज़िकल सिग्नल, पावर मैनेजमेंट के लिए बहुत ज़रूरी होते हैं. इनका इस्तेमाल, संबंधित इकाइयों को कम पावर वाली स्थितियों से जगाने के लिए किया जाता है. इन संख्याओं पर नज़र रखने से, बैटरी से जुड़ी समस्याओं को ठीक करने में मदद मिलती है. जैसे, डिवाइस के अपने-आप चालू होने या स्लीप मोड में न जाने की समस्याएं.
- टाइमस्टैंप: इस इवेंट में कई टाइमस्टैंप शामिल होते हैं. इनमें, आखिरी बार वेक-अप सिग्नल मिलने और आखिरी बार एचसीआई रीसेट होने का समय शामिल है. इन टाइमस्टैंप से, समय से जुड़ी समस्याओं को हल करने में मदद मिलती है. साथ ही, इनसे यह पता चलता है कि कुछ इवेंट कब हुए थे.
- वॉचडॉग टाइमर: कोई खास फ़्लैग यह दिखाता है कि इवेंट को इस शुरुआती चेतावनी के तौर पर जनरेट किया गया था कि कंट्रोलर का वॉचडॉग टाइमर खत्म होने वाला है. यह कंट्रोलर के फ़्रीज़ होने या ठीक से काम न करने की गंभीर चेतावनी है.
- लिंक की स्थिति: रिपोर्ट में, चालू कनेक्शन की मौजूदा स्थिति के बारे में खास जानकारी दी जाती है. इसमें BR/EDR, LE, और CIS (कनेक्टेड आइसोक्रोनस स्ट्रीम) लिंक की कुल संख्या शामिल होती है. इससे यह भी पता चलता है कि कोई एससीओ (सिंक्रोनस कनेक्शन-ओरिएंटेड) लिंक चालू है या नहीं. इस जानकारी से, कंट्रोलर के मौजूदा कनेक्शन लोड की खास जानकारी मिलती है.
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Quality_Report_Id |
1 ऑक्टेट | 0xB~0xC 0x0B: एक बार या इवेंट ट्रिगर होने पर रिपोर्ट 0x0C: समय-समय पर रिपोर्ट. |
Packet_Count_Host_to_Controller |
4 ऑक्टेट | एचसीआई ट्रांसपोर्ट के ज़रिए, होस्ट से कंट्रोलर को भेजे गए पैकेट की कुल संख्या. इस फ़ील्ड का इस्तेमाल, एचसीआई (उदाहरण के लिए, UART) से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं. |
Packet_Count_Controller_to_Host |
4 ऑक्टेट | होस्ट को भेजे गए एचसीआई इवेंट पैकेट की कुल संख्या. इस फ़ील्ड का इस्तेमाल, एचसीआई (जैसे, UART) से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं. |
Last_Packet_Length_Host_to_Controller |
2 ऑक्टेट | होस्ट यूएआरटी को भेजे गए आखिरी एचसीआई पैकेट की लंबाई. ध्यान दें: एचसीआई पैकेट की लंबाई ज़्यादा से ज़्यादा 2 ऑक्टेट (इसमें एचसीआई, एसीएल, एससीओ, आईएसओ शामिल हैं) |
Last_Packet_Length_Controller_To_host |
2 ऑक्टेट | होस्ट यूएआरटी से मिला, एचसीआई का पिछला पैकेट. ध्यान दें: एचसीआई पैकेट की लंबाई ज़्यादा से ज़्यादा 2 ऑक्टेट होनी चाहिए. इसमें एचसीआई, एसीएल, एससीओ, आईएसओ शामिल हैं |
Total_BT_Wake_Count |
4 ऑक्टेट | होस्ट इकाई के हिसाब से, BT_Wake पिन असर्शन की कुल संख्या. यह फ़ील्ड, बिजली से जुड़ी समस्याओं को डीबग करने के लिए, डाइग्नोस्टिक्स टूल के तौर पर काम करता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं. |
Total_HOST_Wake_Count |
4 ऑक्टेट | कंट्रोलर की ओर से शुरू किए गए Host_Wake पिन असर्शन का कुल हिसाब. यह फ़ील्ड, बिजली से जुड़ी समस्याओं को डीबग करने के लिए, डाइग्नोस्टिक्स टूल के तौर पर काम करता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं. |
Last_BT_Wake_TimeStamp |
4 ऑक्टेट | वह आखिरी टाइमस्टैंप, जब होस्ट ने BT_Wake पिन की पुष्टि की थी.इस फ़ील्ड को पावर से जुड़ी समस्याओं को डीबग करने के लिए लागू किया गया है. |
Last_HOST_Wake_TimeStamp |
4 ऑक्टेट | यह सबसे नया टाइमस्टैंप होता है. इससे पता चलता है कि कंट्रोलर ने Host_Wake पिन को कब चालू किया था. इस फ़ील्ड का इस्तेमाल, बैटरी से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है. |
Reset_Timestamp |
4 ऑक्टेट | इस टाइमस्टैंप से पता चलता है कि एचसीआई को सबसे हाल ही में कब रीसेट किया गया था. इस फ़ील्ड का इस्तेमाल, समय से जुड़ी समस्याओं को हल करने के लिए किया जाता है. इसे शुरुआती रिकॉर्डिंग पॉइंट के तौर पर इस्तेमाल किया जाना चाहिए. इसके आधार पर, अन्य सभी आइटम का रेफ़रंस दिया जाता है. |
Current_Timestamp |
4 ऑक्टेट | यह इवेंट जनरेट होने का मौजूदा समय. इस फ़ील्ड का इस्तेमाल, समय में होने वाली गड़बड़ियों को ठीक करने के लिए किया जाता है. इसे ट्रिगर रिकॉर्डिंग पॉइंट के तौर पर इस्तेमाल किया जाना चाहिए. साथ ही, अन्य सभी एलिमेंट को इसे रेफ़रंस करना चाहिए. |
Is_WatchDog_Timer_About_To_Expire |
4 ऑक्टेट | इस फ़्लैग से पता चलता है कि सेहत की स्थिति से जुड़ा यह इवेंट, कंट्रोलर ने जनरेट किया है. ऐसा इसलिए किया गया है, ताकि वॉच डॉग के खत्म होने की सूचना पहले से दी जा सके. मौजूदा टाइमस्टैंप से, घटना के होने का समय पता चलता है. |
Coex_Status_Mask |
2 ऑक्टेट | बिट 0 - रिज़र्व किया गया |
Total_Links_BR_EDR_LE_Active |
1 ऑक्टेट | चालू स्थिति में मौजूद BR/EDR/LE के लिंक की कुल संख्या. |
Total_Links_BR_EDR_Sniff |
1 ऑक्टेट | स्निफ़/आइडल स्थिति में BR/EDR के लिंक की कुल संख्या. |
Total_Links_CIS |
1 ऑक्टेट | आईएसओ के लिंक की कुल संख्या. |
Is_SCO_Active |
1 ऑक्टेट | इस इंडिकेटर से यह पता चलता है कि क्या फ़िलहाल एससीओ लिंक चालू है. |
Subevent code = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log Dump related event]
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Quality_Report_Id |
1 ऑक्टेट |
0x00 ~ 0x10: रिज़र्व किया गया. 0x11: एलएमपी/एलएल मैसेज ट्रेस. 0x12: ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस. 0x13: कंट्रोलर की डीबग जानकारी का डेटा डंप. 0x14 ~ 0xFF: बुक किया गया. |
Connection_Handle |
दो ऑक्टेट | कनेक्शन हैंडल. |
| वेंडर के हिसाब से पैरामीटर | (पैरामीटर की कुल लंबाई - 4) * ऑक्टेट | एलएमपी मैसेज ट्रेस, ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस, और कंट्रोलर की डीबग जानकारी के डेटा डंप का वेंडर के हिसाब से फ़ॉर्मैट. |
Subevent code = 0x58 [Quality_Report_Id = 0x16, LEA ब्रॉडकास्ट सोर्स इवेंट]
BIG Handle से Timestamp पैरामीटर की मदद से कंट्रोलर, ब्रॉडकास्ट सोर्स की जानकारी को पहले से ही रिपोर्ट कर सकता है. इसमें, एयरवेव पर ट्रांसमिट किया गया BD_ADDR और फ़िलहाल इस्तेमाल किया जा रहा BIG चैनल मैप शामिल है. Broadcast ID of Broadcast Receiver Subscribed से लेकर RSSI तक के पैरामीटर, ब्रॉडकास्ट रिसीवर के लिए हैं. इनकी मदद से, सदस्यता लिए गए BIG सोर्स के बारे में जानकारी दी जाती है. यह जानकारी, ब्रॉडकास्ट रिसीवर से BIG सोर्स को PAwR, LE ACL कनेक्शन या लागू होने वाले किसी अन्य तरीके से भेजी जानी चाहिए.
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Quality_Report_Id |
1 ऑक्टेट | 0x16: LEA ब्रॉडकास्ट सोर्स इवेंट. |
BIG_Handle |
1 ऑक्टेट | होस्ट की ओर से असाइन किया गया BIG हैंडल. |
Broadcast_Source_BD_ADDR_Type |
1 ऑक्टेट | ब्रॉडकास्ट सोर्स (बड़ा हैंडल) का BD_ADDR टाइप, जिसे एयर पर भेजा गया है. |
Broadcast_Source_BD_ADDR |
6 ऑक्टेट | ब्रॉडकास्ट सोर्स (BIG हैंडल) का BD_ADDR, जिसे एयर पर भेजा गया है. |
BIG_Source_Prefer_Channel_Map |
पांच ऑक्टेट | यह बीआईजी चैनल मैप है. इसे कंट्रोलर प्राथमिकता देता है और चैनल क्लासिफ़िकेशन की सुविधा इसे पहचानती है. |
BIG_Source_Used_Channel_Map |
पांच ऑक्टेट | कंट्रोलर के ज़रिए इस्तेमाल किया जाने वाला BIG चैनल. |
BIG_TX_Power |
1 ऑक्टेट | ब्रॉडकास्ट आईडी में इस्तेमाल की जा रही मौजूदा टीएक्स पावर. |
Timestamp |
चार ऑक्टेट |
इस कुकी में, तय किए गए बड़े हैंडल के लिए टाइमस्टैंप (पिकोनट क्लॉक) होता है. यह वैल्यू, HCI_Read_Clock एचसीआई कमांड का जवाब देने वाले कंट्रोलर की वैल्यू के बराबर होनी चाहिए. इस कमांड में, 0x01 (पिकोनेट क्लॉक) का Which_Clock पैरामीटर होता है.यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक) |
Broadcast_ID_of_Broadcast_Receiver_Subscribed |
तीन ऑक्टेट |
इससे क्लाइंट डिवाइस के लिए सदस्यता लिए गए ब्रॉडकास्ट आईडी का पता चलता है. अमान्य वैल्यू: 0xFFFFFF |
Broadcast_Receiver_BD_ADDR_Type |
1 ऑक्टेट |
ब्रॉडकास्ट रिसीवर का BD_ADDR टाइप. अमान्य वैल्यू: 0xFF |
Broadcast_Receiver_BD_ADDR |
6 ऑक्टेट |
ब्रॉडकास्ट रिसीवर का BD_ADDR. अमान्य वैल्यू: 0x000000000000 |
Time_Duration |
चार ऑक्टेट |
परफ़ॉर्मेंस की जानकारी इकट्ठा करने की समयावधि. यूनिट: मि॰से॰ अमान्य वैल्यू: 0xFFFFFFFF |
BIS_Choppy_count |
चार ऑक्टेट |
BIS Choppy count: Choppy count with Time_Duration. अमान्य वैल्यू: 0xFFFFFFFF |
PER |
चार ऑक्टेट |
Time_Duration के दौरान पैकेट में गड़बड़ी की दर (पीईआर). अमान्य वैल्यू: 0xFFFFFFFF |
No_Sync |
चार ऑक्टेट |
RX के सिंक न होने की संख्या. अमान्य वैल्यू: 0xFFFFFFFF |
Receiver_Prefer_Channel_Map |
पांच ऑक्टेट |
यह ब्रॉडकास्ट रिसीवर के चैनल मैप के बारे में बताता है. अमान्य वैल्यू: 0x0000000000 |
Receiver_Tx_Power |
1 ऑक्टेट |
इससे ब्रॉडकास्ट रिसीवर से डेटा ट्रांसमिट करने वाले पैकेट के पावर लेवल का पता चलता है. अमान्य वैल्यू: 0xFF |
RSSI |
1 ऑक्टेट |
ब्रॉडकास्ट रिसीवर से मिले पैकेट का आरएसएसआई. अमान्य वैल्यू: 0x7F |
Reserved |
चार ऑक्टेट | बुक किया हुआ |
ISO लिंक के बारे में सुझाव, शिकायत या राय देने वाला सब-इवेंट
सब इवेंट कोड = 0x5C
चालू होने पर, इस इवेंट को हर आईएसओ इंटरवल के दौरान जनरेट किया जाना ज़रूरी है.
रणनीति लागू करने का तरीका
HCI_LE_Setup_ISO_Data_Path स्टैंडर्ड कमांड में वेंडर Data_Path_ID कोड
0x19 को चुनकर, इसे चालू किया जाता है.
HCI_Configure_Data_Path कमांड के साथ Data_Path_ID को 0x19 पर और Vendor_Specific_Config_Length को 0 पर सेट करने पर, इस कमांड को स्वीकार करना ज़रूरी है. भले ही, इस कमांड को पाने के बाद कंट्रोलर को कोई कार्रवाई न करनी हो.
डिस्पैच करने का समय
यह इवेंट, आईएसओ इंटरवल (सीआईजी या बीआईजी ऐंकर पॉइंट) की शुरुआत से लेकर अगले आईएसओ इंटरवल तक ट्रिगर होता है. कंट्रोलर,Anchor_Point_Delay का इस्तेमाल करके आईएसओ इंटरवल के असरदार तरीके से शुरू होने में हुई देरी के बारे में बताता है.
कंट्रोलर सिंक करना
आईएसओ इंटरवल की शुरुआत में, कंट्रोलर StreamSN का हिसाब लगाता है. इसके लिए, वह मौजूदा वैल्यू में कॉन्फ़िगर किया गयाISO_Interval ÷ SDU_Interval जोड़ता है. पहले इंटरवल में, इसे 0 पर सेट किया जाता है.इसके बाद, आईएसओ फ़िफ़ो में मौजूद हर पैकेट पर ये बातें लागू होती हैं:
-
कंट्रोलर, दो क्रम संख्याओं के बीच रैपिंग का अंतर SNdiff इस तरह से कैलकुलेट करता है:
SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000 - जब
(SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
पैकेट को फिर से ट्रांसमिट करने की विंडो में हो. इसे पिछले इंटरवल में ट्रांसमिशन के लिए शेड्यूल किया गया था और अब इसे फिर से ट्रांसमिट किया जा सकता है. अगर ऐसा नहीं है (इसे ट्रांसमिशन के लिए शेड्यूल नहीं किया गया है), तो इसे देर से मिला के तौर पर मार्क किया जाता है. इसकी जानकारी होस्ट कोIn_Statusका इस्तेमाल करके दी जानी चाहिए. ऐसे पैकेट को खारिज किया जा सकता है या ट्रांसमिशन के लिए शेड्यूल किया जा सकता है. यह विकल्प, लागू करने वाले व्यक्ति पर निर्भर करता है. - या जब
SNdiff < ISO_Interval ÷ SDU_Interval:
इस इवेंट से फ़्लश टाइमआउट होने तक, पैकेट को ट्रांसमिशन के लिए शेड्यूल किया जाता है. - या जब
SNdiff >= ISO_Interval ÷ SDU_IntervalऔरSNdiff <= Max_Forward_Buffers:
पैकेट आने वाले समय में है; इसे बाद के इवेंट के साथ ट्रांसमिट किया जाएगा. पैकेट क्रम से भेजे जाते हैं. इसलिए, यह शर्त इस इंटरवल के लिए पैकेट की खोज को खत्म कर देती है.
होस्ट की ओर से इस्तेमाल किए गए बफ़र की जानकारी कंट्रोलर को नहीं दी जाती. हालांकि, यहMax_Forward_Buffers = 16तक सीमित होती है. - इसके अलावा, अगर ऊपर दी गई कोई भी शर्त पूरी नहीं होती है, तो भी ऐसा हो सकता है:
पैकेट को खारिज कर दिया गया हो, फ़्लश करने की समयसीमा खत्म हो गई हो या गलत फ़ॉर्मैट वाला पैकेट मिला हो.
| सबइवेंट पैरामीटर | साइज़ | मकसद |
|---|---|---|
Connection_Handle |
दो ऑक्टेट |
सीआईएस या बीआईएस का कनेक्शन हैंडल रेंज: 0x0000 से 0x0EFF |
Sequence_Number |
दो ऑक्टेट |
स्ट्रीम का क्रम संख्या, जिसे कंट्रोलर मैनेज करता है. CIS या BIS बनाने पर, इसे 0 पर सेट किया जाता है. साथ ही, हर आईएसओ इंटरवल पर एसडीयू की संख्या के हिसाब से इसे बढ़ाया जाता है. आईएसओ आइसोक्रोनस इंटरवल को ISO_interval ÷ SDU_Interval के तौर पर तय किया जाता है.
|
Anchor_Point_Delay |
दो ऑक्टेट |
इवेंट जनरेट होने और असरदार BIG या CIG ऐंकर पॉइंट या आईएसओ इंटरवल के शुरू होने के बीच का समय, माइक्रोसेकंड में.
ऐंकर पॉइंट का टाइमस्टैंप, इन बातों से तय होता है:Event generation time - Anchor_Point_Delay
रेंज: 0 से लेकर आईएसओ इंटरवल तक (माइक्रोसेकंड में) |
In_Status |
दो ऑक्टेट |
कंट्रोलर आईएसओ बफ़र की स्थिति आईएसओ इंटरवल की शुरुआत में, हर बिट bi को तब सेट किया जाता है, जब एसडीयू (Sequence_Number + i) mod 0x10000 उपलब्ध हो. उपलब्ध न होने पर, एसडीयू को Not received from the host के तौर पर मार्क किया जाता है.वैल्यू i की सीमा 0 से ISO_Interval ÷ SDU_Interval - 1 तक होती है.
i की अन्य वैल्यू के लिए, बिट 0 पर सेट होती हैं.
|
Tx_Status |
दो ऑक्टेट |
क्रम संख्या वाले एसडीयू के हिसाब से ट्रांसमिशन का स्टेटस:(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000)
mod 0x10000
हर बिट bi तब सेट होती है, जब पहचाने गए एसडीयू के सभी पीडीयू, उसके क्रम संख्या के हिसाब से ट्रांसमिट हो जाते हैं और उनकी पुष्टि हो जाती है. वैल्यू i की सीमा 0 से ISO_Interval ÷ SDU_Interval - 1 तक होती है.
i की अन्य वैल्यू के लिए, बिट 0 पर सेट होती हैं.ब्रॉडकास्ट ग्रुप में, ट्रांसमिशन की पुष्टि हमेशा की जानी चाहिए. |
विज्ञापन देने वाले कई लोगों या कंपनियों के लिए सहायता
विज्ञापन देने वाले कई लोगों या कंपनियों के लिए उपलब्ध इस सुविधा के ये मकसद हैं:
-
एक से ज़्यादा विज्ञापन दिखाने की सुविधा
(
max_advt_instances) - अलग-अलग ट्रांसमिट पावर, ताकि अलग-अलग रेंज की अनुमति दी जा सके
- विज्ञापन का अलग-अलग कॉन्टेंट
- विज्ञापन देने वाले हर व्यक्ति या कंपनी के लिए अलग-अलग जवाब
- विज्ञापन देने वाले हर व्यक्ति या कंपनी के लिए निजता (ट्रैक नहीं किया जा सकता)
- कनेक्ट किया जा सकता है
इस स्पेसिफ़िकेशन को मौजूदा मानकों के मुताबिक रखने के लिए, वेंडर के हिसाब से ये कमांड दी गई हैं. ये ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन से लिए गए हैं.
LE_Multi_Advt_Command
OCF: 0x154
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Multi_advt_opcode |
1 ऑक्टेट |
0x01 - Set_Advt_Param_Multi_Sub_Cmd0x02 - Set_Advt_Data_Multi_Sub_Cmd0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd0x04 - Set_Random_Addr_Multi_Sub_Cmd0x05 - Set_Advt_Enable_Multi_Sub_Cmd
|
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Multi_advt_opcode |
1 ऑक्टेट |
0x01 - Set_Advt_Param_Multi_Command0x02 - Set_Advt_Data_Multi_Command0x03 - Set_Scan_Resp_Data_Multi_Command0x04 - Set_Random_Addr_Multi_Command0x05 - Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
बुनियादी रेफ़रंस: ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन, पेज 964 (LE Set Advertising Parameter Command)
Sub OCF: 0x01
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Advertising_Interval_Min |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Interval_Max |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Type |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Own_Address_Type |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Own_Address |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Direct_Address_Type |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Direct_Address |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Channel_Map |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Adverstising_Filter_Policy |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Instance |
1 ऑक्टेट | यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं |
Tx_power |
1 ऑक्टेट |
Transmit_Power Unit - in dBm (signed integer) Range (-70 to +20) |
Own_Address पैरामीटर, इस मल्टी-विज्ञापन इंस्टेंस को सेट अप करते समय, होस्ट के लिए कॉन्फ़िगर किया गया पता हो सकता है. इससे पहले बीकन के ट्रांसमिट होने के समय, हल किया जा सकने वाला निजी पता मिलता है. कनेक्शन की स्थिति चाहे जो भी हो, इंस्टेंस पर विज्ञापन दिखते रहेंगे. कनेक्शन के बाद, होस्ट बीटी स्टैक किसी इंस्टेंस पर विज्ञापन दिखाना शुरू करने का निर्देश दे सकता है.
ऊपर दी गई कमांड के मुताबिक, इस कमांड के लिए Command Complete इवेंट जनरेट होगा. इसके बारे में, Bluetooth Core 4.1 Specification में बताया गया है. अगर विज्ञापन इंस्टेंस या Tx_Power पैरामीटर अमान्य हैं, तो कंट्रोलर, अमान्य पैरामीटर वाला कोड भेजेगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Multi_advt_opcode |
1 ऑक्टेट | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
बुनियादी रेफ़रंस: ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन, पेज 969 (एलई सेट विज्ञापन डेटा कमांड)
Sub OCF: 0x02
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Advertising_Data_Length |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Data |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Instance |
1 ऑक्टेट | यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं |
ऊपर दी गई कमांड के मुताबिक, इस कमांड के लिए Command Complete इवेंट जनरेट होगा. इसके बारे में, Bluetooth Core 4.1 Specification में बताया गया है. अगर विज्ञापन इंस्टेंस या Tx_Power पैरामीटर अमान्य हैं, तो कंट्रोलर, नॉन-सक्सेस कोड के साथ जवाब देगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Multi_advt_opcode |
1 ऑक्टेट | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
बुनियादी रेफ़रंस: ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन, पेज 970 (एलई सेट स्कैन रिस्पॉन्स डेटा कमांड)
सब ओसीएफ़: 0x03
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Scan_Response_Data_Length |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Scan_Response_Data |
हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Instance |
1 ऑक्टेट | यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं |
ऊपर दी गई कमांड के मुताबिक, इस कमांड के लिए Command Complete इवेंट जनरेट होगा. इसके बारे में, Bluetooth Core 4.1 Specification में बताया गया है. अगर विज्ञापन इंस्टेंस या Tx_Power पैरामीटर अमान्य हैं, तो कंट्रोलर, अमान्य पैरामीटर के साथ जवाब देगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Multi_advt_opcode |
1 ऑक्टेट | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
बुनियादी रेफ़रंस: ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन, पेज 963 (एलई सेट रैंडम ऐड्रेस कमांड)
उप ओसीएफ़: 0x04
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| रैंडम पता | हर खास जानकारी के हिसाब से | हर खास जानकारी के हिसाब से |
Advertising_Instance |
1 ऑक्टेट | यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Multi_advt_opcode |
1 ऑक्टेट | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
बेस रेफ़रंस: ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन, पेज 971 (LE Set Advertise Enable Command in that core specification)
OCF: 0x05
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Advertising_Enable |
1 ऑक्टेट | वैल्यू 1 का मतलब है कि सुविधा चालू है. किसी अन्य वैल्यू का मतलब है कि सुविधा बंद है. |
Advertising_Instance |
1 ऑक्टेट | यह पैरामीटर बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं. इंस्टेंस 0 का मतलब है कि यह एक स्टैंडर्ड एचसीआई इंस्टेंस है. |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Multi_advt_opcode |
1 ऑक्टेट | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
निजी पते के समाधान को ऑफ़लोड किया गया
यह सुविधा, कंट्रोलर के फ़र्मवेयर या हार्डवेयर में मौजूद निजी पते की समस्या को ठीक करती है. इससे ये फ़ायदे मिलते हैं:
- निजी पते को हल करने में होस्ट को लगने वाला समय
- होस्ट को जगाए बिना बिजली बचाना
LE_Set_RPA_Timeout
OCF: 0x15C
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
LE_local_IRK |
16 ऑक्टेट | डिवाइस का वह आईआरके जिसका इस्तेमाल, रैंडम रिज़ॉल्व किए जा सकने वाले पते जनरेट करने के लिए किया गया था. |
tRPA_min |
दो ऑक्टेट |
सेकंड में, आरपीए जनरेट होने का कम से कम टाइम आउट. कंट्रोलर को इस टाइमआउट के बाद, विज्ञापन दिखाने/स्कैन करने/कनेक्ट करने से जुड़े किसी भी इवेंट के लिए, हल किए जा सकने वाले नए पते जनरेट करने होंगे. मान्य रेंज: 300 से 1800 |
tRPA_max |
दो ऑक्टेट |
आरपीए जनरेशन के लिए ज़्यादा से ज़्यादा टाइम आउट, सेकंड में. कंट्रोलर को इस टाइमआउट से पहले या इसके दौरान, विज्ञापन दिखाने/स्कैन करने/कनेक्ट करने से जुड़े किसी भी इवेंट के लिए, हल किए जा सकने वाले नए पते जनरेट करने होंगे. मान्य रेंज: tRPA_min-1800
|
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट |
कमांड की स्थिति. एचसीआई स्टेटस की सुझाई गई वैल्यू: 0x00 Success 0x01 Unknown command (if not supported) 0x12 Invalid command parameters (if any parameters are outside the given range) |
LE_RPA_offload_Command
OCF: 0x155
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
RPA_offload_opcode |
1 ऑक्टेट |
0x1 - Enable customer specific feature 0x2 - Add IRK to the list 0x3 - Remove IRK from the list 0x4 - Clear IRK list 0x5 - Read IRK list entry |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Event_RPA_offload_opcode |
1 ऑक्टेट |
0x1 - Enable customer specific feature 0x2 - Add IRK to the list 0x3 - Remove IRK from the list 0x4 - Clear IRK list 0x5 - Read IRK list entry |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
enable_customer_specific_feature_set |
1 ऑक्टेट |
0x01 - Enable offloaded RPA feature 0x00 - Disable offloaded RPA feature |
चिप की क्षमता के आधार पर, होस्ट को आरपीए ऑफ़लोड की सुविधा चालू करनी होगी. LE_Get_Vendor_Capabilities_Command पर जाएं.
हर चिप में फ़र्मवेयर का अलग-अलग max_irk_list_sz हो सकता है.
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Event_cust_specific_feature_opcode |
1 ऑक्टेट | 0x01 [Enable customer-specific feature] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
LE_IRK |
16 ऑक्टेट | LE IRK (1st byte LSB) |
Address_Type |
1 ऑक्टेट |
0: सार्वजनिक पता 1: रैंडम पता |
LE_Device_Address |
6 ऑक्टेट | आईआरके (पहला बाइट एलएसबी) से जुड़ा सार्वजनिक या रैंडम पता |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Event_cust_specific_feature_opcode |
1 ऑक्टेट | 0x02 [Add IRK to the list] |
LE_IrkList_AvailableSpaces |
1 ऑक्टेट | मौजूदा कार्रवाई के बाद, आईआरएल की सूची में उपलब्ध एंट्री |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
सब ओसीएफ़: 0x03
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Address_Type |
1 ऑक्टेट |
0: सार्वजनिक पता 1: रैंडम पता |
LE_Device_Address |
6 ऑक्टेट | आईआरके से जुड़ा कोई सार्वजनिक या रैंडम पता |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Event_cust_specific_feature_opcode |
1 ऑक्टेट | 0x03 [Remove IRK from the list] |
LE_IrkList_AvailableSpaces |
1 ऑक्टेट | मौजूदा कार्रवाई के बाद, आईआरएल की सूची में उपलब्ध एंट्री |
LE_RPA_offload: Clear_IRK_list_sub_Command
उप ओसीएफ़: 0x04
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
| कोई नहीं |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Event_cust_specific_feature_opcode |
1 ऑक्टेट | 0x04 [Clear IRK List] |
LE_IrkList_AvailableSpaces |
1 ऑक्टेट |
मौजूदा कार्रवाई के बाद, आईआरएल की सूची में उपलब्ध प्रविष्टियां [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
| सबकमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
LE_read_IRK_list_entry-index |
1 ऑक्टेट | आईआरके की सूची का इंडेक्स [0, max_irk_list_sz-1] |
इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.
| पैरामीटर लौटाएं | साइज़ | मकसद |
|---|---|---|
Status |
1 ऑक्टेट | कमांड पूरी होने की स्थिति |
Event_cust_specific_feature_opcode |
1 ऑक्टेट | 0x05 [Read IRK List Entry] |
LE_Read_IRK_List_entry |
1 ऑक्टेट | आईआरके का इंडेक्स, जिसे होस्ट वापस पढ़ना चाहता है (आईआरके की सूची का ज़्यादा से ज़्यादा साइज़ 32 है) |
LE_IRK |
16 ऑक्टेट | आईआरके वैल्यू |
Address_Type |
1 ऑक्टेट |
0: सार्वजनिक पता 1: रैंडम पता |
LE_Device_Address |
6 ऑक्टेट | आईआरके से जुड़ा सार्वजनिक या कोई भी पता |
LE_Resolved_Private_Address |
6 ऑक्टेट | इस आईआरके का मौजूदा हल किया गया, हल किया जा सकने वाला निजी पता |
स्निफ़ ऑफ़लोड
स्निफ़ ऑफ़लोड की सुविधा, स्निफ़ मोड मैनेजमेंट को ब्लूटूथ होस्ट स्टैक से ब्लूटूथ कंट्रोलर पर ऑफ़लोड करती है. इससे कंट्रोलर को, स्निफ़ मोड में आने/बाहर निकलने का समय मैनेज करने की अनुमति मिलती है. साथ ही, कॉन्फ़िगर किए जा सकने वाले स्निफ़ और स्निफ़ सब-रेटिंग पैरामीटर लागू करने की अनुमति मिलती है. वहीं, होस्ट के पास ब्लूटूथ प्रोफ़ाइल की गतिविधि में हुए बदलावों के आधार पर, पैरामीटर चुनने का कंट्रोल रहता है.
स्निफ़ ऑफ़लोड की स्थितियां
इस सेक्शन में, Sniff Offload फ़ंक्शन के हिसाब से, ब्लूटूथ कंट्रोलर की स्थितियों के बारे में बताया गया है. स्निफ़ ऑफ़लोड की सुविधा चालू होने के हिसाब से, ब्लूटूथ कंट्रोलर की स्थिति की पहचान करने के लिए, दो ग्लोबल स्थितियां तय की गई हैं. कनेक्शन के हिसाब से दो स्थितियां तय की गई हैं. इनसे यह पता चलता है कि जब ब्लूटूथ कंट्रोलर, स्निफ़ ऑफ़लोड चालू होने की स्थिति में होता है, तब BR/EDR कनेक्शन की स्थिति क्या होती है.
ग्लोबल स्थितियां
स्निफ़ ऑफ़लोड की सुविधा चालू होने के हिसाब से, ब्लूटूथ कंट्रोलर की स्थिति की पहचान करने के लिए, दो ग्लोबल स्थितियां तय की गई हैं.
स्निफ़ ऑफ़लोड बंद है
ब्लूटूथ कंट्रोलर को डिफ़ॉल्ट रूप से, ‘स्निफ़ ऑफ़लोड बंद है’ स्थिति में माना जाता है. यह उम्मीद की जाती है कि ब्लूटूथ कंट्रोलर, ब्लूटूथ होस्ट से जारी किए गए HCI_Sniff_Mode, HCI_Exit_Sniff_Mode, और HCI_Sniff_Subrating कमांड को हैंडल करेगा. ब्लूटूथ कंट्रोलर, ब्लूटूथ होस्ट के सेट किए गए इवेंट मास्क के मुताबिक, HCI_Mode_Change और HCI_Sniff_Subrating इवेंट को ब्लूटूथ होस्ट को भी फ़ॉरवर्ड करेगा.
स्निफ़ ऑफ़लोड चालू है
स्निफ़ ऑफ़लोड चालू करने के लिए, ‘WriteSniffOffloadEnable’ को सही तरीके से हैंडल करने के बाद, ब्लूटूथ कंट्रोलर को ‘Sniff Offload Enabled’ स्थिति में माना जाता है. इस स्थिति में, ब्लूटूथ कंट्रोलर से यह उम्मीद की जाती है कि वह HCI_Mode_Change और HCI_Sniff_Subrating इवेंट को ब्लूटूथ होस्ट पर फ़ॉरवर्ड करे. यह फ़ॉरवर्डिंग, ब्लूटूथ होस्ट और इवेंट सप्रेशन फ़्लैग के सेट किए गए इवेंट मास्क के लॉजिकल-एंड फ़ंक्शन के हिसाब से तय की जाती है.
कनेक्शन के हिसाब से
जब ब्लूटूथ कंट्रोलर ‘स्निफ़ ऑफ़लोड चालू है’ स्थिति में होता है, तब हर चालू एसीएल, यहां बताई गई दो स्थितियों में से किसी एक में हो सकता है.
Pending-Parameter State
किसी एसीएल को ‘Pending-Parameters’ स्थिति में तब माना जाता है, जब ब्लूटूथ कंट्रोलर ‘Sniff Offload Enabled’ स्थिति में हो. हालांकि, ब्लूटूथ होस्ट ने मौजूदा एसीएल के लिए, वेंडर के हिसाब से ‘WriteSniffOffloadParameters’ कमांड कम से कम एक बार जारी न की हो.
कंट्रोल शुरू हुआ
किसी एसीएल को ‘Control-Started’’ स्थिति में तब माना जाता है, जब ब्लूटूथ कंट्रोलर ‘Sniff Offload Enabled’ स्थिति में हो. साथ ही, ब्लूटूथ होस्ट ने मौजूदा एसीएल के लिए, वेंडर के हिसाब से ‘WriteSniffOffloadParameters’ कमांड को कम से कम एक बार जारी किया हो.
WriteSniffOffloadEnable
OCF: 0x310
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Enable_Sniff_Offload |
1 ऑक्टेट | 0x00 : Disable 0x01 : Enable |
Subrating_Max_Latency |
दो ऑक्टेट | ज़्यादा से ज़्यादा लेटेंसी पैरामीटर का इस्तेमाल, ज़्यादा से ज़्यादा स्निफ़ सबरेट का हिसाब लगाने के लिए किया जाएगा. यह सबरेट, रिमोट डिवाइस इस्तेमाल कर सकता है. डिफ़ॉल्ट: T*sniff* Latency = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0002 से 0xFFFE समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड |
Subrating_Min_Remote_Timeout |
दो ऑक्टेट | स्निफ़ मोड का कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल रिमोट डिवाइस कर सकता है डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE टाइम रेंज: 0 सेकंड से 40.9 सेकंड |
Subrating_Min_Local_Timeout |
दो ऑक्टेट | स्निफ़ मोड के लिए कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल लोकल डिवाइस कर सकता है. डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE समय रेंज: 0 सेकंड से 40.9 सेकंड |
Suppress_Mode_Change_Event |
1 ऑक्टेट | 0x00 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Mode_Change इवेंट की जानकारी देगा. हालांकि, यह HCI_Set_Event_Mask कमांड में सेट किए गए कॉन्फ़िगरेशन के हिसाब से होगा. 0x01 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Mode_Change इवेंट की जानकारी नहीं देगा. |
Suppress_Sniff_Subrating_Event |
1 ऑक्टेट | 0x00 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Sniff_Subrating इवेंट की जानकारी देगा. हालांकि, यह जानकारी HCI_Set_Event_Mask कमांड में सेट किए गए कॉन्फ़िगरेशन के हिसाब से दी जाएगी. 0x01 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Sniff_Subrating इवेंट की जानकारी नहीं देगा. |
WriteSniffOffloadParameters
OCF: 0x311
| कमांड पैरामीटर | साइज़ | मकसद |
|---|---|---|
Connection_Handle |
दो ऑक्टेट | 16-बिट बीआर/ईडीआर एसीएल कनेक्शन हैंडल. रेंज: 0x0000 से 0x0EFF |
Sniff_Max_Interval |
दो ऑक्टेट | –Bluetooth SIG की तय की गई रेंज, जिसका इस्तेमाल आम तौर पर स्निफ़ मोड में एंट्री के लिए किया जाता है. रेंज: 0x0002 से 0xFFFE तक; सिर्फ़ सम संख्याएं मान्य हैं ज़रूरी रेंज: 0x0006 से 0x0540 तक समय = N × 0.625 मि॰से॰ समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड –खास मामले 0x0000 : इसका इस्तेमाल “Push-Active” Sniff-Offload Mode को चुनने के लिए किया जाता है. 0x0001 : इसका इस्तेमाल “Prefer-Active” Sniff-Offload Mode को चुनने के लिए किया जाता है. |
Sniff_Min_Interval |
दो ऑक्टेट | रेंज: 0x0002 से 0xFFFE; सिर्फ़ सम संख्याएं मान्य हैं ज़रूरी रेंज: 0x0006 से 0x0540 समय = N × 0.625 मि॰से॰ समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड |
Sniff_Attempts |
दो ऑक्टेट | स्निफ़ करने की कोशिश के लिए, बेसबैंड के रिसीव स्लॉट की संख्या. लंबाई = N × 1.25 मि॰से॰ रेंज: 0x0001 से 0x7FFF समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड कंट्रोलर के लिए ज़रूरी रेंज: 1 से T*sniff* ÷ 2 |
Sniff_Timeout |
दो ऑक्टेट | स्निफ़ टाइमआउट के लिए, बेसबैंड के रिसीव स्लॉट की संख्या. Length = N × 1.25 ms Range: 0x0000 to 0x7FFF Time Range: 0 ms to 40.9 s Mandatory Range for Controller: 0 to 0x0028 |
Link_Inactivity_Timeout |
दो ऑक्टेट | टाइम आउट की वैल्यू मिलीसेकंड में. Link_Inactivity टाइमर, हर HCI-ACL लेन-देन पर शुरू/रीसेट होता है. इस टाइमर के खत्म होने पर, कंट्रोलर स्निफ़ मोड में एंट्री शुरू करेगा. |
Subrating_Max_Latency |
दो ऑक्टेट | ज़्यादा से ज़्यादा लेटेंसी पैरामीटर का इस्तेमाल, ज़्यादा से ज़्यादा स्निफ़ सबरेट का हिसाब लगाने के लिए किया जाएगा. यह सबरेट, रिमोट डिवाइस इस्तेमाल कर सकता है. डिफ़ॉल्ट: T*sniff* Latency = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0002 से 0xFFFE समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड |
Subrating_Min_Remote_Timeout |
दो ऑक्टेट | स्निफ़ मोड का कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल रिमोट डिवाइस कर सकता है डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE टाइम रेंज: 0 सेकंड से 40.9 सेकंड |
Subrating_Min_Local_Timeout |
दो ऑक्टेट | स्निफ़ मोड के लिए कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल लोकल डिवाइस कर सकता है. डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE समय रेंज: 0 सेकंड से 40.9 सेकंड |
Allow_Exit_Sniff_On_Rx |
1 ऑक्टेट | यह फ़्लैग, receive-direction HCI-ACL लेन-देन पर Sniff मोड से बाहर निकलने की सुविधा को कंट्रोल करता है. 0x00 : Do not exit sniff on Rx. 0x01 : Exit Sniff on Rx Receive-direction HCI-ACL is defined as ACL packet transmission from controller to host over HCI. |
Allow_Exit_Sniff_On_Tx |
1 ऑक्टेट | यह फ़्लैग, ट्रांसमिट-डायरेक्शन एचसीआई-एसीएल लेन-देन पर स्निफ़ मोड से बाहर निकलने की सुविधा को कंट्रोल करता है. 0x00 : Do not exit sniff on Tx. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI. |