एचसीआई से जुड़ी ज़रूरी शर्तें

होस्ट कंट्रोलर इंटरफ़ेस (एचसीआई) का इस्तेमाल, ब्लूटूथ कंट्रोलर के साथ इंटरैक्ट करने के लिए किया जाता है.

इस दस्तावेज़ में, ब्लूटूथ (बीटी) और ब्लूटूथ स्मार्ट (बीएलई) एचसीआई की ज़रूरी शर्तों की सूची दी गई है. इसका मकसद, होस्ट बीटी स्टैक वेंडर और बीटी कंट्रोलर वेंडर को प्लैटफ़ॉर्म से जुड़ी इन ज़रूरी शर्तों का पालन करने के लिए कहना है, ताकि वे नीचे बताई गई सुविधाओं का इस्तेमाल कर सकें.

इस दस्तावेज़ में, 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 ऑक्टेट बीटी चिप की मदद से RPA की क्षमता.
अगर चिप में यह सुविधा काम करती है, तो होस्ट को इसे चालू करना होगा.
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] = मेजर नंबर
byte[1] = माइनर नंबर

v1.05
byte[0] = 0x01
byte[1] = 0x05

इन वर्शन में नई सुविधाएं जोड़ी गई हैं:
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
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-31 रिज़र्व हैं
bluetooth_quality_report_support 1 ऑक्टेट ब्लूटूथ की क्वालिटी से जुड़े इवेंट की रिपोर्टिंग की सुविधा काम करती है
0 = सुविधा उपलब्ध नहीं है
1 = सुविधा उपलब्ध है
dynamic_audio_buffer_support 4 ऑक्टेट ब्लूटूथ कंट्रोलर में डाइनैमिक ऑडियो बफ़र की सुविधा काम करती है
सपोर्ट किए गए कोडेक टाइप के लिए बिट मास्क
बिट 0 - SBC
बिट 1 - AAC
बिट 2 - APTX
बिट 3 - APTX HD
बिट 4 - LDAC
बिट 5-31 रिज़र्व हैं
a2dp_offload_v2_support 1 ऑक्टेट ब्लूटूथ कंट्रोलर में A2DP offload v2 कमांड काम करती हैं (देखें Start A2DP offload, Stop A2DP offload)
0 = काम नहीं करती
1 = काम करती हैं
iso_link_feedback_support 1 ऑक्टेट आईएसओ लिंक के बारे में सुझाव/राय देने या शिकायत करने से जुड़े इवेंट
के साथ काम करता है 0 = काम नहीं करता
1 = काम करता है
sniff_offload_support 1 ऑक्टेट ब्लूटूथ कंट्रोलर में Sniff Offload कमांड काम करती हैं
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 4 ऑक्टेट बैच स्कैन करने में लगने वाला समय (स्लॉट की संख्या)
Duty_cyle_scan_interval 4 ऑक्टेट बैच स्कैन इंटरवल की अवधि (स्लॉट की संख्या)
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 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout दो ऑक्टेट यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.
[मिलीसेकंड में]
फ़र्मवेयर को रिपोर्टिंग से पहले, कुछ समय के लिए रुककर अन्य विज्ञापन इकट्ठा करने में लगने वाला समय.
onfound_timeout_cnt 1 ऑक्टेट यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.
[count]
अगर onFound में मौजूद कोई विज्ञापन onfound_timeout अवधि तक फ़र्मवेयर में बना रहता है, तो यह कुछ विज्ञापन इकट्ठा करेगा और गिनती की जांच की जाएगी. अगर यह संख्या 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 स्कैन कमांड पैरामीटर चालू होने पर, उन्हें प्राथमिकता दी जाती है. जब सामान्य एलई स्कैन बंद होता है, तो कंट्रोलर पिछले बैच स्कैन पर वापस चला जाएगा. हालांकि, ऐसा तब होगा, जब वह स्कैन मौजूद हो.

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 पर सेट करें: लागू नहीं (पते के टाइप को अनदेखा करें).

इस निर्देश के लिए, 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 से, चुने गए फ़िल्टर में मौजूद अनुरोध का यूयूआईडी पता मिट जाएगा.
'हटाएं' विकल्प चुनने पर, चुने गए फ़िल्टर में मौजूद सभी यूयूआईडी हट जाएंगे.
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

इस सब-कमांड का इस्तेमाल, स्थानीय नाम वाली स्ट्रिंग को जोड़ने या मिटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर मौजूद फ़िल्टर के लिए स्थानीय नाम वाली स्ट्रिंग की सूची को मिटाने के लिए भी किया जाता है.

उप ओसीएफ़: 0x05

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - जोड़ें
0x01 - मिटाएं
0x02 - हटाएं
मिटाएं, चुने गए फ़िल्टर में बताए गए स्थानीय नाम की स्ट्रिंग को मिटा देगा.
Clear से, तय किए गए फ़िल्टर में मौजूद स्थानीय नाम की सभी स्ट्रिंग हट जाएंगी.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_LocName_Mandata_or_SerData वैरिएंट का साइज़ स्थानीय नाम के लिए वर्ण स्ट्रिंग.

ध्यान दें:
  • फ़िलहाल, स्थानीय नाम की स्ट्रिंग में ज़्यादा से ज़्यादा 29 वर्ण हो सकते हैं
  • जब कार्रवाई "हटाएं" (0x2) होती है, तब यह लागू नहीं होती

इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
APCF_opcode 1 ऑक्टेट 0x05 - APCF लोकल नेम
APCF_Action 1 ऑक्टेट बोले गए निर्देश को दोहराना APCF_Action
APCF_AvailableSpaces 1 ऑक्टेट स्थानीय नाम टेबल में अब भी उपलब्ध मुफ़्त एंट्री की संख्या

LE_APCF_Command: manf_data_sub_cmd

इस सबकमांड का इस्तेमाल, मैन्युफ़ैक्चरर डेटा स्ट्रिंग को जोड़ने या मिटाने के लिए किया जाता है. इसके अलावा, इसका इस्तेमाल चिप पर फ़िल्टर करने के लिए, मैन्युफ़ैक्चरर डेटा स्ट्रिंग की सूची को मिटाने के लिए भी किया जाता है.

सब ओसीएफ़: 0x06

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete से, फ़िल्टर में मौजूद, मैन्युफ़ैक्चरर के डेटा की तय स्ट्रिंग मिट जाएगी.
Clear से, तय किए गए फ़िल्टर में मौजूद मैन्युफ़ैक्चरर के डेटा की सभी स्ट्रिंग मिट जाएंगी.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_LocName_Mandata_or_SerData वैरिएंट का साइज़ निर्माता के डेटा के लिए वर्ण स्ट्रिंग.

ध्यान दें:
  • फ़िलहाल, स्थानीय नाम की स्ट्रिंग में ज़्यादा से ज़्यादा 29 वर्ण हो सकते हैं
  • जब कार्रवाई "हटाएं" (0x2) होती है, तब यह लागू नहीं होती
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 - जोड़ें
0x01 - मिटाएं
0x02 - हटाएं
मिटाएं, चुने गए फ़िल्टर में सेवा के लिए तय की गई डेटा स्ट्रिंग को मिटा देगा.
Clear विकल्प चुनने पर, चुने गए फ़िल्टर में मौजूद सेवा से जुड़ी सभी डेटा स्ट्रिंग मिट जाएंगी.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_LocName_Mandata_or_SerData वैरिएंट का साइज़ सेवा से जुड़े डेटा के लिए वर्ण स्ट्रिंग.

ध्यान दें:
  • फ़िलहाल, स्थानीय नाम की स्ट्रिंग में ज़्यादा से ज़्यादा 29 वर्ण हो सकते हैं
  • जब कार्रवाई "हटाएं" (0x2) होती है, तब यह लागू नहीं होती
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: 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 (Clear)
हो, तब इसे अनदेखा करें इसकी लंबाई 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 ऑक्टेट

एक्सटेंडेड सुविधाओं के लिए बिट मास्क:

  • बिट 0: ट्रांसपोर्ट डिस्कवरी सेवा के फ़िल्टर की सुविधा
  • बिट 1: विज्ञापन के टाइप के हिसाब से फ़िल्टर करने की सुविधा
  • बिट 2 से ~15: आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया

बिट की वैल्यू

  • 0 = उपलब्ध नहीं है
  • 1 = काम करता है

कंट्रोलर की गतिविधि और ऊर्जा की जानकारी देने वाला कमांड

इस जानकारी का मकसद, होस्ट सिस्टम के फ़ंक्शन को बेहतर बनाना है. इससे सभी कॉम्पोनेंट की गतिविधियों का विश्लेषण किया जा सकता है. इनमें बीटी कंट्रोलर और उसकी मैक्रो स्थिति शामिल है. साथ ही, यह भी पता लगाया जा सकता है कि ऐप्लिकेशन और फ़्रेमवर्क में क्या हो रहा है. इसके लिए, बीटी स्टैक और कंट्रोलर से यह जानकारी चाहिए:

  • BT स्टैक: कंट्रोलर की मौजूदा मैक्रो-ऑपरेशनल स्थिति की रिपोर्ट करना
  • फ़र्मवेयर: गतिविधि और ऊर्जा की कुल जानकारी की रिपोर्टिंग

उपयोगकर्ता के लेवल पर तय की गई, बीटी होस्ट स्टैक मैक्रो की स्थितियां:

  • प्रयोग में नहीं है: [पेज स्कैन, एलई विज्ञापन, पूछताछ स्कैन, एलई स्कैन]
  • स्कैन करें: [paging/inquiry/trying to connect]
  • चालू है: [एसीएल लिंक चालू है, एससीओ लिंक जारी है, स्निफ़ मोड]

कंट्रोलर अपनी पूरी लाइफ़साइकल में इन गतिविधियों को ट्रैक करता है: डेटा भेजने में लगा समय, डेटा पाने में लगा समय, कुछ समय से इस्तेमाल में न होने का समय, और कुल ऊर्जा की खपत. इन्हें होस्ट से पढ़ने पर मिटा दिया जाता है.

LE_Get_Controller_Activity_Energy_Info

यह वेंडर के हिसाब से तय की गई कमांड है.

OCF: 0x159

सबकमांड पैरामीटर साइज़ मकसद
NA कमांड के पैरामीटर खाली हैं

इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
total_tx_time_ms 4 ऑक्टेट Tx को पूरा करने में लगा कुल समय
total_rx_time_ms 4 ऑक्टेट Rx करने में लगा कुल समय
total_idle_time_ms 4 ऑक्टेट स्लीप मोड में बिताया गया कुल समय (कम पावर वाले स्लीप मोड में नहीं)
total_energy_used 4 ऑक्टेट इस्तेमाल की गई कुल ऊर्जा [विद्युत धारा (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 - Active scanning. SCAN_REQ पैकेट भेजे जा सकते हैं.
LE_Ex_Scan_Interval 4 ऑक्टेट इसे उस समय अंतराल के तौर पर तय किया जाता है जब कंट्रोलर ने आखिरी बार LE स्कैन शुरू किया था और जब उसने अगला LE स्कैन शुरू किया था.
रेंज: 0x0004 से 0x00FFFFFF
डिफ़ॉल्ट: 0x0010 (10 मि॰से॰)
समय = N * 0.625 मि॰से॰
समय की रेंज: 2.5 मि॰से॰ से 10442.25 सेकंड
LE_Ex_Scan_Window 4 ऑक्टेट एलई स्कैन की अवधि. 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 - Accept all advertisement packets (default). इस डिवाइस के लिए डायरेक्ट किए गए विज्ञापन वाले पैकेट को अनदेखा किया जाएगा.
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 सेशन को कॉन्फ़िगर करने और कंट्रोल करने के लिए ज़िम्मेदार है. कमांड के दो वर्शन उपलब्ध हैं. Sub OCF 0x01-0x02 वाली लेगसी कमांड, सिर्फ़ ओपन-सोर्स कोडेक के साथ काम करती हैं. Sub-OCF 0x03-0x04 वाले वर्शन, कॉन्फ़िगर किए गए कोडेक के हिसाब से काम नहीं करते.

OCF: 0x15D

A2DP ऑफ़लोड (लेगसी) शुरू करें

Sub OCF: 0x01

इस कमांड का इस्तेमाल, A2DP ऑफ़लोड प्रोसेस को कॉन्फ़िगर करने और A2DP स्ट्रीम शुरू करने, दोनों के लिए किया जाता है.

कमांड पैरामीटर साइज़ मकसद
Codec 4 ऑक्टेट कोडेक टाइप की जानकारी देता है
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency दो ऑक्टेट ज़्यादा से ज़्यादा इंतज़ार का समय (मि॰से॰ में). शून्य वैल्यू होने पर, फ़्लश करने की सुविधा बंद हो जाती है.
SCMS-T_Enable दो ऑक्टेट ऑक्टेट 0: यह फ़्लैग, SCMS-T हेडर जोड़ने की सुविधा चालू करता है.
  • 0x00 - SCMS-T हेडर शामिल नहीं है.
  • 0x01 - SCMS-T हेडर शामिल है.

ऑक्टेट 1: SCMS-T हेडर के लिए वैल्यू. यह तब लागू होती है, जब SCMS-T हेडर चालू हो.

Sampling_Frequency 4 ऑक्टेट 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 4 ऑक्टेट कोड में बदले गए ऑडियो का बिटरेट, बिट प्रति सेकंड में.
0x00000000 - ऑडियो बिटरेट की जानकारी नहीं दी गई है / इसका इस्तेमाल नहीं किया गया है.
0x00000001 - 0x00FFFFFF - एन्कोड किए गए ऑडियो का बिटरेट, बिट प्रति सेकंड में.
0x01000000 - 0xFFFFFFFF - Reserved.
Connection_Handle दो ऑक्टेट कॉन्फ़िगर किया जा रहा A2DP कनेक्शन का कनेक्शन हैंडल
L2CAP_Channel_ID दो ऑक्टेट इस A2DP कनेक्शन के लिए इस्तेमाल किया जाने वाला L2CAP चैनल आईडी
L2CAP_MTU_Size दो ऑक्टेट एन्कोड किए गए ऑडियो पैकेट वाले L2CAP MTU का ज़्यादा से ज़्यादा साइज़
Codec_Information 32 ऑक्टेट कोडेक से जुड़ी जानकारी.

SBC कोडेक:

A2DP v1.3 में, एसबीसी कोडेक से जुड़ी जानकारी वाले एलिमेंट देखें.
ऑक्टेट 0: ब्लॉक की लंबाई | सबबैंड | असाइन करने का तरीका
ऑक्टेट 1: बिटपूल की कम से कम वैल्यू
ऑक्टेट 2: बिटपूल की ज़्यादा से ज़्यादा वैल्यू
ऑक्टेट 3: सैंपलिंग फ़्रीक्वेंसी | चैनल मोड
ऑक्टेट 4-31: आरक्षित

AAC कोडेक:

A2DP v1.3 में, एएसी कोडेक से जुड़ी जानकारी वाले एलिमेंट देखें
ऑक्टेट 0: ऑब्जेक्ट टाइप
ऑक्टेट 1; b7: वीबीआर
ऑक्टेट 2-31: आरक्षित

एलडीएसी कोडेक:

ऑक्टेट 0-3: वेंडर आईडी
0x0000012D

ऑक्टेट 4-5: कोडेक आईडी
0x00AA - LDAC
अन्य सभी वैल्यू आरक्षित हैं

ऑक्टेट 6: बिटरेट इंडेक्स:
0x00 - ज़्यादा
0x01 - मीडियम
0x02 - कम
0x03 - 0x7E - रिज़र्व किया गया
0x7F - एबीआर (अडैप्टिव बिट रेट)
0x80 - 0xFF - रिज़र्व किया गया

ऑक्टेट 7: LDAC चैनल मोड
0x01 - स्टीरियो
0x02 - ड्यूअल
0x04 - मोनो
अन्य रिज़र्व किए गए हैं

ऑक्टेट 8-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 कॉन्टेंट सुरक्षा की सुविधा चालू न होने पर, इसे अनदेखा किया जाता है.
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 इवेंट की सूचना देता है.
  • एडवांस आरएफ़ स्टैट्स मोड: कंट्रोलर, होस्ट को आरएफ़ स्टैट्स से जुड़ी जानकारी देता है. इसमें रिपोर्ट के इस्तेमाल के दो उदाहरण दिए गए हैं:
    • समय-समय पर मिलने वाली रिपोर्ट
    • इवेंट ट्रिगर (स्ट्रीम शुरू/बंद करना और लिंक क्वालिटी इवेंट ट्रिगर).
  • कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने वाला सिस्टम, होस्ट को परफ़ॉर्मेंस से जुड़ी जानकारी देता है. इसके लिए, दो तरह के इवेंट का इस्तेमाल किया जाता है: समय-समय पर मिलने वाली रिपोर्ट और इवेंट ट्रिगर होने पर मिलने वाली रिपोर्ट.
  • Bluetooth Quality Report Command का BQR_Report_Action: होस्ट इस एचसीआई कमांड का इस्तेमाल, क्वालिटी मॉनिटरिंग मोड, एनर्जी मॉनिटर मोड या अडवांस आरएफ़ स्टैट्स मोड के लिए एक बार की क्वेरी पाने के लिए कर सकता है.

OCF: 0x15E

कमांड पैरामीटर साइज़ मकसद
BQR_Report_Action 1 ऑक्टेट BQR_Quality_Event_Mask पैरामीटर में सेट किए गए क्वालिटी इवेंट की रिपोर्टिंग को जोड़ने / मिटाने या सभी को मिटाने की कार्रवाई.

0x00 - Add
0x01 - Delete
0x02 - Clear
0x03 - One time query

मिटाएं पर क्लिक करने से, क्वालिटी से जुड़े किसी इवेंट की रिपोर्टिंग मिट जाएगी.
Clear से, क्वालिटी इवेंट की सभी रिपोर्टिंग मिट जाएगी (BQR_Quality_Event_Mask पैरामीटर को अनदेखा किया जा सकता है).

BQR_Quality_Event_Mask 4 ऑक्टेट चुने गए क्वालिटी इवेंट की रिपोर्टिंग के लिए बिट मास्क.

बिट 0: क्वालिटी मॉनिटरिंग मोड चालू करने के लिए सेट करें.
बिट 1: ACL/(e)SCO/ISO के लिए, Approaching LSTO इवेंट को चालू करने के लिए सेट किया गया है.
बिट 2: इसे A2DP ऑडियो चॉपी इवेंट को चालू करने के लिए सेट किया जाता है.
Bit 3: Set to enable (e)SCO Voice Choppy event.
चौथा बिट: इसे सेट करने पर, रूट में सूजन होने का इवेंट चालू हो जाता है.
बिट 5: इसे एनर्जी मॉनिटरिंग मोड चालू करने के लिए सेट किया जाता है.
छठा बिट: LE Audio के रुक-रुककर चलने वाले इवेंट को चालू करने के लिए सेट किया गया है.
Bit 7: Set to enable connect fail event.
बिट 8: इसे सेट करने पर, Advance RF Stats मोड के इवेंट ट्रिगर को चालू किया जा सकता है.
बिट 9: इस बिट को सेट करके, ऐडवांस आरएफ़ स्टैटिस्टिक्स की समय-समय पर मिलने वाली रिपोर्ट की सुविधा चालू की जाती है.
बिट 10: कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने की सुविधा के लिए, इवेंट ट्रिगर चालू करने के लिए सेट किया गया है. (BQRv7 में जोड़ा गया)
बिट 11: इसे सेट करने पर, कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने की सुविधा चालू हो जाती है. इससे समय-समय पर रिपोर्ट मिलती है. (BQRv7 में जोड़ा गया)
बिट 12 ~ 14: रिज़र्व किया गया.
बिट 15: इसे वेंडर के हिसाब से क्वालिटी इवेंट चालू करने के लिए सेट किया जाता है.
बिट 16: इसे एलएमपी/एलएल मैसेज ट्रेस की सुविधा चालू करने के लिए सेट किया जाता है.
बिट 17: इसे ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूल करने की ट्रेसिंग चालू करने के लिए सेट किया जाता है.
बिट 18: इसे कंट्रोलर की डीबग जानकारी देने वाले सिस्टम को चालू करने के लिए सेट किया जाता है.
बिट 19: इसे डीबग करने की जानकारी को ऑफ़लोड करने के लिए रिज़र्व किया गया है.
Bit 20: UART History Dump Event trigger. (BQRv7 में जोड़ा गया)
बिट 21 से 30: रिज़र्व किया गया.
बिट 31: वेंडर के हिसाब से ट्रेसिंग की सुविधा चालू करने के लिए सेट किया गया है.

BQR_Minimum_Report_Interval दो ऑक्टेट चुने गए क्वालिटी इवेंट के लिए, क्वालिटी इवेंट की रिपोर्टिंग का कम से कम समय अंतराल तय करें. कंट्रोलर फ़र्मवेयर को तय किए गए समय अंतराल के अंदर, अगले इवेंट की जानकारी नहीं देनी चाहिए. इंटरवल सेटिंग, जोड़े जा रहे क्वालिटी इवेंट के हिसाब से होनी चाहिए.

यूनिट: मिलीसेकंड
डिफ़ॉल्ट: 0 (इंटरवल के लिए कोई सीमा नहीं.)
रेंज: 0 ~ 65535 मि॰से॰

BQR_Vendor_Specific_Quality_Event_Mask 4 ऑक्टेट चुने गए वेंडर के हिसाब से क्वालिटी इवेंट की रिपोर्टिंग के लिए बिट मास्क.
यह पैरामीटर सिर्फ़ तब मान्य होता है, जब BQR_Quality_Event_Mask का बिट 15 सेट किया गया हो.

बिट 0 से 31: रिज़र्व किया गया.

BQR_Vendor_Specific_Trace_Mask 4 ऑक्टेट चुने गए वेंडर के हिसाब से ट्रेस रिपोर्टिंग के लिए बिट मास्क.
यह पैरामीटर सिर्फ़ तब मान्य होता है, जब BQR_Quality_Event_Mask का 31वां बिट सेट किया गया हो.

बिट 0 से 31: रिज़र्व किया गया.

Report_interval_multiple 4 ऑक्टेट BQR_Minimum_Report_Interval के लिए मल्टीप्लायर. जब यह वैल्यू >= 1 होती है, तो BQR रिपोर्ट इंटरवल, इस फ़ॉर्मैट में होता है
BQR रिपोर्ट इंटरवल = BQR_Minimum_Report_Interval x Report_interval_multiple.
कंट्रोलर फ़र्मवेयर को, तय किए गए समय अंतराल के अंदर अगले इवेंट की जानकारी नहीं देनी चाहिए. इंटरवल सेटिंग, जोड़े गए क्वालिटी इवेंट के लिए खास तौर पर तय की जाती है.

यूनिट: मिलीसेकंड
डिफ़ॉल्ट: 1
रेंज: 0 ~ 4294967295 (0: is equal set to 1)

ध्यान दें: अगर BQR_Report_Interval की सेटिंग, कंट्रोलर की क्षमता से ज़्यादा है, तो कंट्रोलर को कमांड पूरी होने पर, ज़्यादा से ज़्यादा BQR_Report_Interval समय दिखाना होगा.

इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Current_Quality_Event_Mask 4 ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
बिट 0: क्वालिटी मॉनिटरिंग मोड चालू है.
बिट 1: एलएसटीओ इवेंट की रिपोर्टिंग की सुविधा चालू है.
बिट 2: A2DP ऑडियो चॉपी इवेंट की रिपोर्टिंग चालू है.
तीसरा बिट: (e)SCO वॉइस चॉपी इवेंट की रिपोर्टिंग चालू है.
चौथा बिट: रूट में सूजन की जानकारी रिपोर्ट करने की सुविधा चालू है.
बिट 5: एनर्जी मॉनिटरिंग मोड चालू है.
बिट 6: 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 4 ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
Current_Vendor_Specific_Trace_Mask 4 ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
BQR_Report_interval 4 ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
Current_Vendor_Specific_Trace_Mask 4 ऑक्टेट 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 4 ऑक्टेट सपोर्ट किए गए कोडेक टाइप के लिए बिट मास्क
बिट 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 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 1 कोडेक टाइप का ज़्यादा से ज़्यादा बफ़र समय.
अगर 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 दो ऑक्टेट ब्लूटूथ कंट्रोलर में मौजूद ऑडियो बफ़र का मौजूदा समय.
यूनिट: मि॰से॰

एचसीआई इवेंट (वेंडर के हिसाब से)

कुछ मामलों में, वेंडर के हिसाब से एचसीआई इवेंट की ज़रूरत होती है. 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 advertisement tracking subevent

इस इवेंट से पता चलता है कि विज्ञापन देने वाला व्यक्ति या कंपनी कब मिली या कब खो गई.

उप-इवेंट कोड = 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 का डीबग डेटा

ब्लूटूथ क्वालिटी रिपोर्ट का सब-इवेंट

इस इवेंट से इनमें से किसी एक के बारे में पता चलता है: ब्लूटूथ क्वालिटी इवेंट हुआ है, कंट्रोलर ने एलएमपी/एलएल मैसेज ट्रेस और ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस अपलोड किया है या कंट्रोलर ने डीबग जानकारी का डेटा डंप किया है.

सबइवेंट पैरामीटर साइज़ मकसद
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) वैल्यू.
यह वैल्यू, रिसीवर के सिग्नल की स्ट्रेंथ की ऐब्सलूट वैल्यू होनी चाहिए.
रेंज: -127 से +20

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 4 ऑक्टेट Connection_Handle के लिए पिकोनेट क्लॉक.
यह वैल्यू, HCI_Read_Clock HCI कमांड का जवाब देने वाले कंट्रोलर की वैल्यू के बराबर होनी चाहिए. इस कमांड में, "Which_Clock" पैरामीटर की वैल्यू 0x01 (पिकोनेट क्लॉक) होती है.
यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक)
Retransmission_Count 4 ऑक्टेट पिछले इवेंट के बाद से, फिर से ब्रॉडकास्ट किए जाने की संख्या.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी.
No_RX_Count 4 ऑक्टेट पिछले इवेंट के बाद से कोई RX काउंट नहीं है.
यह संख्या तब बढ़ती है, जब तय किए गए समय पर कोई पैकेट नहीं मिलता या मिला हुआ पैकेट खराब होता है.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी.
NAK_Count 4 ऑक्टेट पिछले इवेंट के बाद से, NAK (नेगेटिव एकनॉलेज) की संख्या.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी.
Last_TX_ACK_Timestamp 4 ऑक्टेट TX ACK के पिछले टाइमस्टैंप की जानकारी. यह पिकोनेट सेंट्रल (सीएलके) के ब्लूटूथ क्लॉक पर आधारित होता है.
यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक)
Flow_Off_Count 4 ऑक्टेट पिछले इवेंट के बाद से, कंट्रोलर को Flow-off (STOP) कितनी बार मिला.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी.
Last_Flow_On_Timestamp 4 ऑक्टेट पिछली बार फ़्लो-ऑन (GO) का टाइमस्टैंप. यह पिकोनेट सेंट्रल (सीएलके) के ब्लूटूथ क्लॉक पर आधारित होता है.
यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक)
Buffer_Overflow_Bytes 4 ऑक्टेट [बाइट में]

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

Buffer_Underflow_Bytes 4 ऑक्टेट [बाइट में]

पिछले इवेंट के बाद से, बफ़र अंडरफ़्लो की संख्या.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाएगी.

bdaddr 6 ऑक्टेट रिमोट डिवाइस का पता
cal_failed_item_count 1 ऑक्टेट कैलिब्रेशन की प्रोसेस पूरी न कर पाने वाले आइटम की संख्या
TX_Total_Packets 4 ऑक्टेट भेजे गए पैकेट की संख्या.
TX_UnAcked_Packets 4 ऑक्टेट ऐसे पैकेट की संख्या जिन्हें स्वीकार नहीं किया गया है.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
TX_Flushed_Packets 4 ऑक्टेट उन पैकेट की संख्या जिन्हें फ़्लश पॉइंट से नहीं भेजा जाता है.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
TX_Last_Subevent_Packets 4 ऑक्टेट यह CIS इवेंट के आखिरी सबइवेंट में, CIS डेटा PDU को ट्रांसमिट करने वाले लिंक लेयर के पैकेट की संख्या होती है.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
अगर लिंक के लिए कोई मान्य वैल्यू नहीं है, तो वैल्यू शून्य होती है.
CRC_Error_Packets 4 ऑक्टेट पिछले इवेंट के बाद से, सीआरसी गड़बड़ी वाले मिले पैकेज की संख्या.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
RX_Duplicate_Packets 4 ऑक्टेट पिछले इवेंट के बाद से, डुप्लीकेट (फिर से ट्रांसमिट किए गए) पैकेज की संख्या.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
RX_Unreceived_Packets 4 ऑक्टेट नहीं मिले पैकेट की संख्या, LE READ ISO Link Quality कमांड के पैरामीटर के बराबर होती है. इसके बारे में जानने के लिए, Bluetooth core Specification Version 5.4 देखें. इससे जुड़ी स्ट्रीम, सीआईएस और बीआईएस हैं.
इस वैल्यू के बढ़ने पर, लिंक लेयर को फ़्लश पॉइंट (सीआईएस पर) या उससे जुड़े इवेंट के आखिर में (बीआईएस पर; ब्लूटूथ कोर स्पेसिफ़िकेशन वर्शन 5.4 वॉल्यूम 6 पार्ट बी, सेक्शन 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 रेडियो चालू है और कनेक्ट किया गया है.
तीसरा बिट - WL 5G/6G रेडियो चालू है: इसे सेट करके यह दिखाया जाता है कि WLAN 5G/6G रेडियो चालू है.
बिट 4-15 - रिज़र्व किए गए हैं
वेंडर के हिसाब से पैरामीटर (पैरामीटर की कुल लंबाई - टीबीडी) * ऑक्टेट इस कुकी का इस्तेमाल, कंट्रोलर वेंडर को वेंडर के हिसाब से ज़्यादा पैरामीटर पाने के लिए करना चाहिए.

सबइवेंट कोड = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

इस इवेंट से पता चलता है कि ब्लूटूथ एचएएल या कंट्रोलर में कोई गंभीर गड़बड़ी हुई है. इस स्थिति को रिकॉर्ड करने और रीस्टार्ट करने के लिए, ब्लूटूथ स्टैक की ज़रूरत होती है. कंट्रोलर को किसी भी मामले में, डीबग जानकारी वाले इवेंट का पहला फ़्रैगमेंट भेजने से पहले, Bluetooth स्टैक को 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, Energy monitor event]

इस इवेंट से, किसी तय समय में ब्लूटूथ कंट्रोलर की बैटरी की खपत और उसकी चालू/बंद होने की स्थिति के बारे में स्नैपशॉट मिलता है. इस इवेंट से डेवलपर और इंजीनियर को यह समझने में मदद मिलती है कि कंट्रोलर, बैटरी को कैसे मैनेज करता है. साथ ही, यह भी पता चलता है कि किन गतिविधियों में सबसे ज़्यादा बैटरी खर्च होती है. इसके अलावा, बैटरी से जुड़ी समस्याओं को हल करने में भी मदद मिलती है.

रिपोर्ट में मौजूद पैरामीटर, मुख्य मेट्रिक को ट्रैक करते हैं. इनमें ये शामिल हैं:

  • औसत मौजूदा खपत: कंट्रोलर की ओर से इस्तेमाल की गई कुल मौजूदा खपत.
  • अलग-अलग स्थितियों में बिताया गया समय: कंट्रोलर ने निष्क्रिय (स्लीप/कम पावर) स्थिति में कुल कितना समय (मिलीसेकंड में) बिताया और चालू स्थिति में कितना समय बिताया. चालू स्थिति में कंट्रोलर कनेक्ट होता है, डेटा ट्रांसमिट करता है या डेटा पाता है.
  • स्टेट ट्रांज़िशन की संख्या: इससे पता चलता है कि कंट्रोलर, आइडल और ऐक्टिव स्टेट के बीच कितनी बार स्विच करता है.
  • रेडियो की खास स्थितियों में बिताया गया समय: 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 (स्लीप) 4 ऑक्टेट [मिलीसेकंड में] कुछ समय से इस्तेमाल में नहीं है (कम पावर मोड, स्लीप मोड) की स्थिति में बिताया गया कुल समय.
Idle_Sate_Enter_Count 4 ऑक्टेट इससे पता चलता है कि कंट्रोलर कितनी बार निष्क्रिय स्थिति में जाता है.
Active_Total_Time 4 ऑक्टेट [मिलीसेकंड में] ऐक्टिव (जानकारी पाना, पेजिंग, ACL/SCO/eSCO/BIS/CIS ट्रैफ़िक, किसी भी टास्क को प्रोसेस करना) स्थिति में बिताया गया कुल समय.
Active_State_Enter_Count 4 ऑक्टेट इससे पता चलता है कि कंट्रोलर कितनी बार चालू हुआ.
BR_RDR_Tx_Total_Time 4 ऑक्टेट [मिलीसेकंड में] बीआर/ईडीआर के लिए, Tx(एसीएल/एससीओ/ईएससीओ ट्रैफ़िक के लिए ट्रांसमिट करना) स्थिति में कुल समय.
BR_RDR_Tx_State_Enter_Count 4 ऑक्टेट इससे पता चलता है कि कंट्रोलर, बीआर/ईडीआर के लिए तय की गई टीएक्स स्टेट में कितनी बार गया.
BR_RDR_Tx_Average_Power_Level 1 ऑक्टेट [dBm में] सभी BR/EDR लिंक के लिए, औसत Tx पावर लेवल
BR_RDR_Rx_Total_Time 4 ऑक्टेट [मिलीसेकंड में] बीआर/ईडीआर के लिए, खास तौर पर Rx (एसीएल/एससीओ/ईएससीओ ट्रैफ़िक से डेटा पाना) स्थिति में बिताया गया कुल समय.
BR_RDR_Rx_State_Enter_Count 4 ऑक्टेट [मिलीसेकंड में] इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Rx स्थिति में कितनी बार आता है.
LE_Tx_Total_Time 4 ऑक्टेट [in ms] LE specific Tx (Transmitting for either ACL/BIS/CIS or LE advertising traffic) state में बिताया गया कुल समय.
LE_Tx_State_Enter_Count 4 ऑक्टेट इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Rx स्थिति में कितनी बार आता है.
LE_Tx_Average_Power_Level 1 ऑक्टेट [in dBm] सभी LE लिंक का औसत Tx पावर लेवल.
LE_Rx_Total_Time 4 ऑक्टेट [मिलीसेकंड में] एलई स्पेसिफ़िक आरएक्स (एसीएल/बीआईएस/सीआईएस या एलई स्कैनिंग ट्रैफ़िक से डेटा पाना) स्टेट में बिताया गया कुल समय.
LE_Rx_State_Enter_Count 4 ऑक्टेट [मिलीसेकंड में] इससे पता चलता है कि कंट्रोलर, LE स्पेसिफ़िक Rx स्टेट में कितनी बार जाता है
Report_Time_Duration (कुल समय) 4 ऑक्टेट [मिलीसेकंड में] बैटरी से जुड़ी जानकारी इकट्ठा करने में लगा कुल समय.
RX_Active_One_Chain_Time 4 ऑक्टेट [मिलीसेकंड में] एक चेन में RX के चालू रहने की अवधि
RX_Active_Two_Chain_Time 4 ऑक्टेट [मिलीसेकंड में] दो चेन में RX के चालू रहने की अवधि
TX_iPA_Active_One_Chain_Time 4 ऑक्टेट [मिलीसेकंड में] एक चेन में सक्रिय इंटरनल TX की अवधि
TX_iPA_Active_Two_Chain_Time 4 ऑक्टेट [मिलीसेकंड में] दो चेन में सक्रिय इंटरनल टीएक्स की अवधि
TX_ePA_Active_One_Chain_Time 4 ऑक्टेट [मिलीसेकंड में] एक चेन में चालू बाहरी टीएक्स की समयावधि
TX_ePA_Active_Two_Chain_Time 4 ऑक्टेट [मिलीसेकंड में] दो चेन में बाहरी TX के चालू रहने की अवधि
BREDR_RX_Active_Scan_total_Time 4 ऑक्टेट [in ms] बीआर/ईडीआर स्कैन के दौरान, डेटा पाने में लगने वाला समय (मिलीसेकंड)
LE_RX_Active_Scan_total_Time 4 ऑक्टेट [मिलीसेकंड में] एलई स्कैन के दौरान, डेटा पाने में लगने वाला समय (मिलीसेकंड में)

Subevent code = 0x58 [Quality_Report_Id = 0x09~0x0A, Advanced RF stats event]

Bluetooth Advanced RF (रेडियो फ़्रीक्वेंसी) Stats इवेंट से, ब्लूटूथ कंट्रोलर के रेडियो बिहेवियर के बारे में परफ़ॉर्मेंस की ज़्यादा जानकारी मिलती है. इवेंट को दो तरीकों से ट्रिगर किया जा सकता है:

  • ट्रिगर के हिसाब से (0x09): किसी खास कमांड के जवाब में, एक बार रिपोर्ट भेजी जाती है.
  • मॉनिटर (0x0A) के हिसाब से: कंट्रोलर, तय किए गए इंटरवल पर रिपोर्ट भेजता है.

इवेंट के पैरामीटर, असल में पैकेट काउंटर होते हैं. ये तय की गई समयावधि में, रेडियो से जुड़ी अलग-अलग गतिविधियों को ट्रैक करते हैं.

मुख्य मेट्रिक और उनका मकसद
  • पावर के आंकड़े ट्रांसमिट करना: ये काउंटर, अलग-अलग पावर कॉन्फ़िगरेशन का इस्तेमाल करके भेजे गए पैकेट को ट्रैक करते हैं. ये इंटरनल (iPA) और एक्सटर्नल (ePA) पावर ऐम्प्लीफ़ायर के साथ-साथ अलग-अलग ऐंटीना डाइवर्सिटी (Div) या बीमफ़ॉर्मिंग (BF) मोड के बीच अंतर करते हैं. इससे यह पता लगाने में मदद मिलती है कि पावर और ऐंटीना की किन सेटिंग का इस्तेमाल सबसे ज़्यादा किया जा रहा है.
  • सिग्नल क्षमता के संकेतक (आरएसएसआई) बिन: ये पैरामीटर, सिग्नल क्षमता के आधार पर मिले हुए पैकेट को कैटगरी में बांटते हैं. इस रिपोर्ट में, आरएसएसआई की खास रेंज (जैसे, -90 dBm से कम, -70 से -75 dBm) में मौजूद पैकेट की संख्या दी जाती है. इससे लिंक की क्वालिटी के बारे में साफ़ तौर पर पता चलता है. "कमज़ोर" सिग्नल बिन में ज़्यादा संख्या (उदाहरण के लिए, < -90 dBm) से पता चलता है कि कनेक्शन खराब है.
  • आरएसएसआई डेल्टा: यह मेट्रिक, सिग्नल की क्षमता में अंतर को मेज़र करती है. यह अंतर, सिग्नल पाने वाले दो ऐंटेना के बीच होता है. हालांकि, यह अंतर तब मेज़र किया जाता है, जब दो ऐंटेना का इस्तेमाल किया जा रहा हो. काउंटर से यह पता चलता है कि कितने पैकेट में अलग-अलग रेंज के हिसाब से आरएसएसआई डेल्टा <0x0 बड़ा डेल्टा (जैसे, >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 4 ऑक्टेट परफ़ॉर्मेंस की जानकारी इकट्ठा करने की समयावधि. यूनिट: मि॰से॰
TX_Power_iPA_BF 4 ऑक्टेट iPA BF का पैकेट काउंटर
TX_Power_ePA_BF 4 ऑक्टेट ePA BF का पैकेट काउंटर
TX_Power_iPA_Div 4 ऑक्टेट ईपीए डिवीज़न का पैकेट काउंटर
TX_Power_ePA_Div 4 ऑक्टेट ईपीए डिवीज़न का पैकेट काउंटर
RSSI_chain_50 4 ऑक्टेट RSSI चेन का पैकेट काउंटर > -50 dBm
RSSI_chain_50_55 4 ऑक्टेट -50 dBm ~ >-55 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_55_60 4 ऑक्टेट -55 dBm ~ >-60 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_60_65 4 ऑक्टेट -60 dBm ~ >-65 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_65_70 4 ऑक्टेट -65 dBm ~ >-70 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_70_75 4 ऑक्टेट -70 dBm ~ >-75 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_75_80 4 ऑक्टेट -75 dBm ~ >-80 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_80_85 4 ऑक्टेट -80 dBm ~ >-85 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_85_90 4 ऑक्टेट -85 dBm ~ >-90 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_90 4 ऑक्टेट RSSI चेन का पैकेट काउंटर < -90 dBm
RSSI_delta_2 4 ऑक्टेट RSSI डेल्टा < 2 dBm का पैकेट काउंटर
RSSI_delta_2_5 4 ऑक्टेट 2 dBm से 5 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर
RSSI_delta_5_8 4 ऑक्टेट 5 dBm ~ 8 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर
RSSI_delta_8_11 4 ऑक्टेट 8 dBm से 11 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर
RSSI_delta_11 4 ऑक्टेट RSSI डेल्टा > 11 dBm का पैकेट काउंटर
Antenna_Switch_Count 4 ऑक्टेट ऐंटिना स्विच करने से जुड़े इवेंट का पैकेट काउंटर
ReTX_iPA_BF 4 ऑक्टेट हाल ही की समयावधि में ReTX_iPA_BF का पैकेट काउंटर
ReTX_ePA_BF 4 ऑक्टेट सबसे हाल की समयावधि में ReTX_ePA_BF का पैकेट काउंटर
ReTX_iPA_Div 4 ऑक्टेट हाल ही की समयावधि में, ReTX_iPA_Div का पैकेट काउंटर
ReTX_ePA_Div 4 ऑक्टेट हाल ही की समयावधि में, 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 4 ऑक्टेट बफ़र क्यू की स्थिति का काउंटर- कंट्रोलर टीएक्स बफ़र, हाल ही के समय में [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, Controller Health Monitoring event]

ब्लूटूथ कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने वाला इवेंट, कंट्रोलर की चालू स्थिति के बारे में खास जानकारी देता है. इवेंट को दो तरीकों से ट्रिगर किया जा सकता है:

  • ट्रिगर के हिसाब से (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 ऑक्टेट होस्ट को भेजे गए एचसीआई इवेंट पैकेट की कुल संख्या. इस फ़ील्ड का इस्तेमाल, एचसीआई को डीबग करने के लिए किया जाता है. जैसे, यूएआरटी) से जुड़ी समस्याएं. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं.
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 ऑक्टेट चालू स्थिति में मौजूद बीआर/ईडीआर/एलई के लिंक की कुल संख्या.
Total_Links_BR_EDR_Sniff 1 ऑक्टेट स्निफ़/आइडल स्थिति में BR/EDR के लिंक की कुल संख्या.
Total_Links_CIS 1 ऑक्टेट आईएसओ के लिंक की कुल संख्या.
Is_SCO_Active 1 ऑक्टेट इस इंडिकेटर से यह पता चलता है कि क्या फ़िलहाल एससीओ लिंक चालू है.
सबइवेंट पैरामीटर साइज़ मकसद
Quality_Report_Id 1 ऑक्टेट 0x00 ~ 0x10: रिज़र्व किया गया.
0x11: एलएमपी/एलएल मैसेज ट्रेस.
0x12: ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस.
0x13: कंट्रोलर की डीबग जानकारी का डेटा डंप.
0x14 ~ 0xFF: रिज़र्व किया गया.
Connection_Handle दो ऑक्टेट कनेक्शन हैंडल.
वेंडर के हिसाब से पैरामीटर (पैरामीटर की कुल लंबाई - 4) * ऑक्टेट एलएमपी मैसेज ट्रेस, ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस, और कंट्रोलर की डीबग जानकारी के डेटा डंप का वेंडर के हिसाब से फ़ॉर्मैट.

सब इवेंट कोड = 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 दो ऑक्टेट इवेंट जनरेट होने और असरदार बीआईजी या सीआईजी ऐंकर पॉइंट या आईएसओ इंटरवल के शुरू होने के बीच का समय, माइक्रोसेकंड में. ऐंकर पॉइंट का टाइमस्टैंप, इससे तय होता है:
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_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Multi_advt_opcode 1 ऑक्टेट 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

बुनियादी रेफ़रंस: ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन, पेज 964 (एलई सेट विज्ञापन पैरामीटर कमांड)

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

Sub OCF: 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

उप ओसीएफ़: 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

स्निफ़ ऑफ़लोड सुविधा, स्निफ़ मोड मैनेजमेंट को ब्लूटूथ होस्ट स्टैक से ब्लूटूथ कंट्रोलर पर ऑफ़लोड करती है. इससे कंट्रोलर को स्निफ़ मोड में आने/बाहर निकलने का समय मैनेज करने की अनुमति मिलती है. साथ ही, कॉन्फ़िगर किए जा सकने वाले स्निफ़ और स्निफ़ सब-रेटिंग पैरामीटर लागू करने की अनुमति मिलती है. वहीं, होस्ट के पास ब्लूटूथ प्रोफ़ाइल की गतिविधि में हुए बदलावों के आधार पर पैरामीटर चुनने का कंट्रोल रहता है.

Sniff Offload States

इस सेक्शन में, Sniff Offload फ़ंक्शन के हिसाब से, ब्लूटूथ कंट्रोलर की स्थितियों के बारे में बताया गया है. ब्लूटूथ कंट्रोलर की स्थिति का पता लगाने के लिए, दो ग्लोबल स्टेट तय की गई हैं. ये ग्लोबल स्टेट, स्निफ़ ऑफ़लोड की सुविधा चालू होने के हिसाब से तय की गई हैं. कनेक्शन से जुड़ी दो खास स्थितियां तय की गई हैं. इनसे यह पता चलता है कि जब ब्लूटूथ कंट्रोलर, स्निफ़ ऑफ़लोड की सुविधा चालू होने की स्थिति में होता है, तब BR/EDR कनेक्शन की स्थिति क्या होती है.

ग्लोबल स्टेट

स्निफ़ ऑफ़लोड की सुविधा चालू करने के लिए, ब्लूटूथ कंट्रोलर की स्थिति की पहचान करने के लिए दो ग्लोबल स्थितियां तय की गई हैं.

Sniff Offload Disabled State

ब्लूटूथ कंट्रोलर को डिफ़ॉल्ट रूप से, ‘स्निफ़ ऑफ़लोड की सुविधा बंद है’ स्थिति में माना जाता है. यह उम्मीद की जाती है कि ब्लूटूथ कंट्रोलर, ब्लूटूथ होस्ट से जारी किए गए HCI_Sniff_Mode, HCI_Exit_Sniff_Mode, और HCI_Sniff_Subrating कमांड को हैंडल करेगा. ब्लूटूथ कंट्रोलर, ब्लूटूथ होस्ट को HCI_Mode_Change और HCI_Sniff_Subrating इवेंट भी भेजेगा. ये इवेंट, ब्लूटूथ होस्ट की ओर से सेट किए गए इवेंट मास्क के हिसाब से भेजे जाएंगे.

Sniff Offload Enabled State

ब्लूटूथ कंट्रोलर को ‘Sniff Offload Enabled’ मोड में तब माना जाता है, जब वह Sniff Offload को चालू करने के लिए, ‘WriteSniffOffloadEnable’ को सही तरीके से हैंडल कर लेता है. इस स्थिति में, ब्लूटूथ कंट्रोलर से यह उम्मीद की जाती है कि वह HCI_Mode_Change और HCI_Sniff_Subrating इवेंट को ब्लूटूथ होस्ट पर फ़ॉरवर्ड करे. ऐसा ब्लूटूथ होस्ट और इवेंट सप्रेशन फ़्लैग के सेट किए गए इवेंट मास्क के लॉजिकल-एंड फ़ंक्शन के हिसाब से किया जाता है.

कनेक्शन के हिसाब से स्टेटस

जब ब्लूटूथ कंट्रोलर ‘Sniff Offload Enabled’ स्थिति में होता है, तब हर चालू ACL, यहां बताई गई दो स्थितियों में से किसी एक में हो सकता है.

पैरामीटर की मंज़ूरी बाकी है

किसी एसीएल को ‘Pending-Parameters’ स्थिति में तब माना जाता है, जब ब्लूटूथ कंट्रोलर ‘Sniff Offload Enabled’ स्थिति में हो. हालांकि, ब्लूटूथ होस्ट ने मौजूदा एसीएल के लिए, वेंडर के हिसाब से तय की गई ‘WriteSniffOffloadParameters’ कमांड को कम से कम एक बार जारी न किया हो.

Control-Started State

किसी एसीएल को ‘Control-Started’’ स्थिति में तब माना जाता है, जब ब्लूटूथ कंट्रोलर ‘Sniff Offload Enabled’ स्थिति में हो. साथ ही, ब्लूटूथ होस्ट ने मौजूदा एसीएल के लिए, वेंडर के हिसाब से ‘WriteSniffOffloadParameters’ कमांड को कम से कम एक बार जारी किया हो.

WriteSniffOffloadEnable

OCF: 0x310

कमांड पैरामीटर साइज़ मकसद
Enable_Sniff_Offload 1 ऑक्टेट 0x00 : बंद करें
0x01 : चालू करें
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 मोड को चुनने के लिए किया जाता है. 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 दो ऑक्टेट स्निफ़ टाइमआउट के लिए, बेसबैंड के रिसीव स्लॉट की संख्या. लंबाई = N × 1.25 मि॰से॰ रेंज: 0x0000 से 0x7FFF समय की रेंज: 0 मि॰से॰ से 40.9 सेकंड कंट्रोलर के लिए ज़रूरी रेंज: 0 से 0x0028
Link_Inactivity_Timeout दो ऑक्टेट टाइम आउट की वैल्यू मिलीसेकंड में. हर एचसीआई-एसीएल लेन-देन पर, Link_Inactivity टाइमर शुरू/रीसेट हो जाता है. इस टाइमर के खत्म होने पर, कंट्रोलर स्निफ़ मोड में एंट्री शुरू करेगा.
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 ऑक्टेट यह फ़्लैग, रिसीव-डायरेक्शन एचसीआई-एसीएल लेन-देन पर स्निफ़ मोड से बाहर निकलने की सुविधा को कंट्रोल करता है. 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 : Tx पर स्निफ़िंग बंद न करें. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI.