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

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

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

इस दस्तावेज़ में, Bluetooth Core 5.2 Specification को "स्पेसिफ़िकेशन" के तौर पर बताया गया है. Bluetooth Core 5.2 स्पेसिफ़िकेशन, Bluetooth SIG की वेबसाइट पर उपलब्ध है. साथ ही, इस पर अन्य दस्तावेज़ भी उपलब्ध हैं.

डिज़ाइन की खास जानकारी

चिप की सुविधाएं और कॉन्फ़िगरेशन

Android एक ओपन प्लैटफ़ॉर्म है. इसमें सॉफ़्टवेयर रिलीज़, ओईएम, वेंडर, और प्लैटफ़ॉर्म और चिप की क्षमताओं का मैट्रिक्स होता है.

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

ओपन स्टैंडर्ड के साथ काम करना

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

वेंडर के हिसाब से उपलब्ध सुविधाएं

वेंडर के हिसाब से निर्देश: LE_Get_Vendor_Capabilities_Command

ऑपकोड कमांड फ़ील्ड (ओसीएफ़): 0x153

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

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
max_advt_instances
(अब काम नहीं करता)
1 ऑक्टेट विज्ञापन के जितने इंस्टेंस इस्तेमाल किए जा सकते हैं उनकी संख्या.

v0.98 के बाद के वर्शन के लिए रिज़र्व किया गया.
Google की सुविधा के स्पेसिफ़िकेशन v0.98 और इसके बाद के वर्शन में, इस पैरामीटर का इस्तेमाल नहीं किया जा सकता. इसके बजाय, BT स्पेसिफ़िकेशन के 5.0 और इसके बाद के वर्शन में उपलब्ध LE Extended Advertising का इस्तेमाल किया जा सकता है.
offloaded_resolution_of_private-address
(अब काम नहीं करता)
1 ऑक्टेट बीटी चिप की मदद से आरपीए को कंट्रोल करने की सुविधा.
अगर चिप में यह सुविधा काम करती है, तो होस्ट को इसे चालू करना होगा.
0 = सुविधा उपलब्ध नहीं है
1 = सुविधा उपलब्ध है

v0.98 के बाद के वर्शन के लिए रिज़र्व किया गया है.
Google की सुविधा के स्पेसिफ़िकेशन v0.98 और इसके बाद के वर्शन में, इस पैरामीटर का इस्तेमाल नहीं किया जा सकता. इसके बजाय, BT स्पेसिफ़िकेशन के 4.2 और इसके बाद के वर्शन में उपलब्ध निजता से जुड़ी सुविधा का इस्तेमाल किया जा सकता है.
total_scan_results_storage दो ऑक्टेट स्कैन के नतीजों के लिए स्टोरेज, बाइट में
max_irk_list_sz 1 ऑक्टेट फ़र्मवेयर में काम करने वाली आईआरके एंट्री की संख्या
filtering_support 1 ऑक्टेट कंट्रोलर में फ़िल्टर करने की सुविधा
0 = उपलब्ध नहीं है
1 = उपलब्ध है
max_filter 1 ऑक्टेट इस्तेमाल किए जा सकने वाले फ़िल्टर की संख्या
activity_energy_info_support 1 ऑक्टेट गतिविधि और ऊर्जा की जानकारी की रिपोर्टिंग की सुविधा
0 = उपलब्ध नहीं है
1 = उपलब्ध है
version_supported दो ऑक्टेट Google की सुविधा के साथ काम करने वाले वर्शन के बारे में बताता है
byte[0] = Major number
byte[1] = Minor number

v1.06
byte[0] = 0x01
byte[1] = 0x06

इन वर्शन में जोड़ी गई सुविधाएं:
v1.06:
  • big_set_channel_map_classification_support
  • vendor_connection_handle_min
  • vendor_connection_handle_max
  • connection_proximity_threshold_support
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 - Opus
बिट 6-31 रिज़र्व हैं
bluetooth_quality_report_support 1 ऑक्टेट ब्लूटूथ की क्वालिटी से जुड़े इवेंट की रिपोर्टिंग की सुविधा काम करती है
0 = काम नहीं करती
1 = काम करती है
dynamic_audio_buffer_support चार ऑक्टेट ब्लूटूथ कंट्रोलर में डाइनैमिक ऑडियो बफ़र की सुविधा काम करती है
सपोर्ट किए गए कोडेक टाइप के लिए बिट मास्क
बिट 0 - SBC
बिट 1 - AAC
बिट 2 - APTX
बिट 3 - APTX HD
बिट 4 - LDAC
बिट 5 - Opus
बिट 6 से 31 तक के बिट रिज़र्व किए गए हैं
a2dp_offload_v2_support 1 ऑक्टेट ब्लूटूथ कंट्रोलर में A2DP ऑफ़लोड v2 निर्देश काम करते हैं (देखें Start A2DP offload, Stop A2DP offload)
0 = मौजूद नहीं
1 = काम करते हैं
iso_link_feedback_support 1 ऑक्टेट आईएसओ लिंक के बारे में सुझाव/राय देने या शिकायत करने से जुड़े इवेंट
के साथ काम करता है 0 = काम नहीं करता
1 = काम करता है
sniff_offload_support 1 ऑक्टेट ब्लूटूथ कंट्रोलर में Sniff Offload कमांड काम करती हैं
0 = काम नहीं करती
1 = काम करती हैं
big_set_channel_map_classification_support दो ऑक्टेट LE ब्रॉडकास्ट चैनल मैप क्लासिफ़िकेशन सुविधा के sub_opcode के साथ काम करता है
बिट 0 - sub_opcode 0x01 (LE ACL कनेक्शन हैंडल के ज़रिए BIG चैनल मैप सेट करें) के साथ काम करता है
बिट 1-15 - रिज़र्व किया गया
बिट की वैल्यू: 0
0 = मौजूद नहीं
1 = काम करता है
vendor_connection_handle_min दो ऑक्टेट यह कुकी, एसीएल पैकेट पर मिले एचसीआई वेंडर इवेंट के लिए, वेंडर कनेक्शन हैंडल की कम से कम वैल्यू की रिपोर्ट करती है. हैंडल 0 का इस्तेमाल, एसीएल डेटा पैकेट पर वेंडर इवेंट रिपोर्टिंग के लिए सहायता उपलब्ध न होने की जानकारी देने के लिए किया जाता है.
vendor_connection_handle_max दो ऑक्टेट यह कुकी, एसीएल पैकेट के ज़रिए मिले एचसीआई वेंडर इवेंट के लिए, वेंडर कनेक्शन हैंडल की ज़्यादा से ज़्यादा वैल्यू की रिपोर्ट करती है. हैंडल 0 का इस्तेमाल, एसीएल डेटा पैकेट पर वेंडर इवेंट रिपोर्टिंग के लिए सहायता उपलब्ध न होने की जानकारी देने के लिए किया जाता है.
connection_proximity_threshold_support 1 ऑक्टेट चिप में कनेक्शन प्रॉक्सिमिटी थ्रेशोल्ड
की सुविधा काम करती है या नहीं 0 = काम नहीं करती
1 = काम करती है

बैच स्कैन के नतीजे

इस डिज़ाइन का मकसद, होस्ट को Bluetooth LE स्कैन रिस्पॉन्स इवेंट की सूचनाएं बेहतर तरीके से देना है, ताकि होस्ट में बैटरी की बचत हो सके.

कंट्रोलर, होस्ट ऐप्लिकेशन प्रोसेसर को स्कैन के नतीजे भेजने की फ़्रीक्वेंसी कम कर देता है. इससे होस्ट ऐप्लिकेशन प्रोसेसर, ज़्यादा समय तक कुछ समय से इस्तेमाल में नहीं है/स्लीप मोड में रह सकता है. इससे होस्ट में बिजली की खपत कम हो जाती है. LE_Get_Vendor_Capabilities_Command के total_scan_results_storage पैरामीटर से पता चलता है कि स्कैन के नतीजों को सेव करने के लिए, चिप में कितनी जगह है.

इस सुविधा का मकसद, ब्लूटूथ कंट्रोलर में LE स्कैन के नतीजों को सेव करने की सुविधा को मैनेज और कॉन्फ़िगर करना है. इस स्टोरेज का इस्तेमाल, विज्ञापन के डेटा और स्कैन किए गए डेटा को कुछ समय के लिए बैच करने के लिए किया जाता है. साथ ही, इसका इस्तेमाल ऐसे मेटाडेटा को बैच करने के लिए भी किया जाता है जिसे कंट्रोलर को होस्ट को बाद में डिलीवर करना होता है.

फ़र्मवेयर में दो तरह की बैचिंग की सुविधा होनी चाहिए, जिन्हें एक साथ चालू किया जा सकता है:

  • काटा गया. इसमें ये जानकारी वाले एलिमेंट शामिल होते हैं: {MAC, TX Power, RSSI, Timestamp}
  • पूरी जानकारी. इसमें ये जानकारी वाले एलिमेंट शामिल होते हैं: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

कमांड पैरामीटर साइज़ मकसद
Batch_Scan_opcode 1 ऑक्टेट 0x1 - Enable customer-specific feature
0x2 - Set Batch Scan Storage parameters
0x3 - Set Batch Scan parameters
0x4 - Read Batch Scan Result parameters

इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा. ग्राहक के हिसाब से सुविधा चालू करने पर, स्कैन शुरू नहीं होता.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Batch_Scan_opcode 1 ऑक्टेट 0x1 - Enable customer-specific feature
0x2 - Set Batch Scan Storage parameters
0x3 - Set Batch Scan parameters
0x4 - Read Batch Scan Result parameters

LE_Batch_Scan_Command: Enable customer-specific feature

Sub OCF: 0x01

सबकमांड पैरामीटर साइज़ मकसद
enable_customer_specific_feature_set 1 ऑक्टेट 0x01 - बैच स्कैन करने की सुविधा चालू करें
0x00 - बैच स्कैन करने की सुविधा बंद करें

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Batch_Scan_opcode 1 ऑक्टेट 0x1 - Enable customer-specific feature
0x2 - Set Batch Scan Storage parameters
0x3 - Set Batch Scan parameters
0x4 - Read Batch Scan Result parameters

LE_Batch_Scan_Command: Set batch scan storage parameter subcommand

Sub OCF: 0x02

सबकमांड पैरामीटर साइज़ मकसद
Batch_Scan_Full_Max 1 ऑक्टेट फ़ुल स्टाइल के लिए, ज़्यादा से ज़्यादा स्टोरेज स्पेस (प्रतिशत में)
[रेंज: 0-100]
Batch_Scan_Truncated_Max 1 ऑक्टेट ट्रंकेट किए गए स्टाइल को असाइन किया गया ज़्यादा से ज़्यादा स्टोरेज स्पेस (प्रतिशत में)
[रेंज: 0 से 100]
Batch_Scan_Notify_Threshold 1 ऑक्टेट हर स्टोरेज पूल के लिए सूचना का लेवल (प्रतिशत में) सेट अप करें
[रेंज: 0-100]
इस सेटिंग को 0 पर सेट करने से सूचनाएं पाने की सुविधा बंद हो जाएगी. वेंडर के हिसाब से एचसीआई इवेंट जनरेट होता है (स्टोरेज थ्रेशोल्ड उल्लंघन वाला सब-इवेंट)

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Batch_scan_opcode 1 ऑक्टेट 0x02 [Set Batch Scan parameters]

LE_Batch_Scan_Command: Set batch scan parameter subcommand

सब ओसीएफ़: 0x03

सबकमांड पैरामीटर साइज़ मकसद
Batch_Scan_Mode 1 ऑक्टेट 0x00 – बैच स्कैन की सुविधा बंद है
0x01 – ट्रंकेटेड मोड चालू है
0x02 – फ़ुल मोड चालू है
0x03 – ट्रंकेटेड और फ़ुल मोड चालू हैं
Duty_cycle_scan_window चार ऑक्टेट बैच स्कैन में लगा समय (स्लॉट की संख्या)
Duty_cyle_scan_interval चार ऑक्टेट बैच स्कैन इंटरवल की अवधि (स्लॉट की संख्या)
own_address_type 1 ऑक्टेट 0x00 - सार्वजनिक डिवाइस का पता
0x01 - डिवाइस का रैंडम पता
Batch_scan_Discard_Rule 1 ऑक्टेट 0 - सबसे पुराना विज्ञापन हटाएं
1 - सबसे कम आरएसएसआई वाला विज्ञापन हटाएं

अगर बैच स्कैनिंग की सुविधा चालू है, तो यह सब-कमांड बैच स्कैनिंग शुरू कर देगी. ट्रंकेटेड स्कैनिंग में, नतीजों को ट्रंकेटेड फ़ॉर्म में सेव किया जाता है. इसमें ट्रंकेटेड स्टाइल के लिए यूनीक कुंजी = {BD_ADDR, scan_interval} होती है. इसका मतलब है कि हर स्कैन इंटरवल के लिए, सिर्फ़ एक BD_ADDR will रिकॉर्ड किया जाएगा. ट्रंकेटेड मोड के लिए, यह रिकॉर्ड सेव किया जाता है: {BD_ADDR, Tx Power, RSSI, Timestamp}

फ़ुल मोड चालू होने पर, ऐक्टिव स्कैनिंग का इस्तेमाल किया जाएगा. साथ ही, स्कैन के जवाब रिकॉर्ड किए जाएंगे. फ़ुल स्टाइल की यूनीक कुंजी = {एमएसी, विज्ञापन पैकेट}, स्कैन इंटरवल से कोई फ़र्क़ नहीं पड़ता. फ़ुल मोड के लिए, यह रिकॉर्ड सेव किया जाता है: {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. फ़ुल स्टाइल में, एक ही विज्ञापन पैकेट को अलग-अलग स्कैन इंटरवल में कई बार देखने पर, उसे सिर्फ़ एक बार रिकॉर्ड किया जाता है. हालांकि, ट्रंकेटेड मोड में, अलग-अलग स्कैन इंटरवल में � की विज़िबिलिटी अहम होती है (हर स्कैन इंटरवल में एक बार).BA_ADDR आरएसएसआई, स्कैन इंटरवल में किसी यूनीक विज्ञापन के सभी डुप्लीकेट की औसत वैल्यू होती है.

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Batch_scan_opcode 1 ऑक्टेट 0x03 [Set Batch Scan Parameters]

LE_Batch_Scan_Command: Read batch scan results subcommand

उप ओसीएफ़: 0x04

सबकमांड पैरामीटर साइज़ मकसद
Batch_Scan_Data_read 1 ऑक्टेट 0x01 - ट्रंकेटेड मोड का डेटा
0x02 - फ़ुल मोड का डेटा

इस निर्देश के लिए, Command Complete इवेंट जनरेट होगा. जब होस्ट यह निर्देश देता है, तो कंट्रोलर में मौजूद सभी नतीजे, एक निर्देश पूरा होने वाले इवेंट में शामिल नहीं किए जा सकते. होस्ट इस कमांड को तब तक जारी करता रहेगा, जब तक कि Command Complete इवेंट में मौजूद नतीजे, रिकॉर्ड की संख्या में 0 न दिखाएं. इससे पता चलता है कि कंट्रोलर के पास होस्ट को भेजने के लिए कोई और रिकॉर्ड नहीं है. हर Command Complete इवेंट में, सिर्फ़ एक तरह के डेटा के कई रिकॉर्ड हो सकते हैं. जैसे, पूरा डेटा या काटा गया डेटा.

कंट्रोलर और होस्ट के समय के रेफ़रंस सिंक नहीं किए गए हैं. टाइमस्टैंप की यूनिट 50 मि॰से॰ है. टाइमस्टैंप की वैल्यू, इस बात पर निर्भर करती है कि होस्ट ने Read_Batch_Scan_Results_Sub_cmd कब दिया है. अगर फ़र्मवेयर में कमांड के पहुंचने का समय T_c है, तो फ़र्मवेयर में टाइमस्टैंप लिए जाने का असल समय T_fw है. रिपोर्टिंग का समय यह होगा: (T_c - T_fw). T_c और T_fw , फ़र्मवेयर के टाइम डोमेन में हैं. इससे होस्ट को यह पता चलता है कि इवेंट कब हुआ था.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Batch_scan_opcode 1 ऑक्टेट 0x03 [Set Batch Scan parameters]
Batch_Scan_data_read 1 ऑक्टेट इससे फ़ॉर्मैट (काटा गया या पूरा) की पहचान होती है
num_of_records 1 ऑक्टेट Batch_Scan_data_read के रिकॉर्ड की संख्या
format_of_data वैरिएबल ट्रंकेटेड मोड:
Address[0]: 6 octets
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0] : 1 octet
Timestamp[0]: 2 octets
[multiple records (num_of_records) with above format]

फ़ुल मोड:
Address[0]: 6 octets
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0]: 1 octet
Timestamp[0]: 2 octets
Adv packet_len[0]: 1 octet
Adv_packet[0]: Adv_packet_len octets
Scan_data_resp_len[0]: 1 octet
Scan_data_resp[0]: Scan_data_resp octets
[multiple records with above format (num_of_records)]

विज्ञापन पैकेट के कॉन्टेंट को फ़िल्टर करने की सुविधा

इसका इस्तेमाल, कंट्रोलर में Advertising Packet Content Filter (APCF) को चालू/बंद/सेटअप करने के लिए करें. APCF, कंट्रोलर में विज्ञापन की रिपोर्ट को फ़िल्टर करता है. हालांकि, यह समय-समय पर दिखाए जाने वाले विज्ञापनों को फ़िल्टर नहीं करता.

LE_APCF_Command

OCF: 0x157

कमांड पैरामीटर साइज़ मकसद
APCF_opcode 1 ऑक्टेट 0x00 - APCF चालू करें
0x01 - APCF फ़िल्टर करने के पैरामीटर सेट करें
0x02 - APCF ब्रॉडकास्टर का पता
0x03 - APCF सर्विस यूयूआईडी
0x04 - APCF सर्विस सॉलिसिटेशन यूयूआईडी
0x05 - APCF लोकल नेम
0x06 - APCF मैन्युफ़ैक्चरर डेटा
0x07 - APCF सर्विस डेटा
0x08 - APCF ट्रांसपोर्ट डिस्कवरी सर्विस
0x09 - APCF विज्ञापन टाइप फ़िल्टर
0x10 ~ 0xAF - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है
0xB0 ~ 0xDF - वेंडर के लिए सुरक्षित रखा गया है
0xE0 ~ 0xFE - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है
0xFF - APCF की एक्सटेंडेड सुविधाएं पढ़ें

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट सामान लौटाने की स्थिति
APCF_opcode 1 ऑक्टेट 0x00 - APCF चालू करें
0x01 - APCF फ़िल्टर करने के पैरामीटर सेट करें
0x02 - APCF ब्रॉडकास्टर का पता
0x03 - APCF सर्विस यूयूआईडी
0x04 - APCF सर्विस सॉलिसिटेशन यूयूआईडी
0x05 - APCF लोकल नेम
0x06 - APCF मैन्युफ़ैक्चरर डेटा
0x07 - APCF सर्विस डेटा
0x08 - APCF ट्रांसपोर्ट डिस्कवरी सर्विस
0x09 - APCF विज्ञापन टाइप फ़िल्टर
0x10 ~ 0xAF - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है
0xB0 ~ 0xDF - वेंडर के लिए सुरक्षित रखा गया है
0xE0 ~ 0xFE - आने वाले समय में इस्तेमाल के लिए सुरक्षित रखा गया है
0xFF - APCF की एक्सटेंडेड सुविधाएं पढ़ें

LE_APCF_Command: Enable_sub_cmd

सब ओसीएफ़: 0x00

सबकमांड पैरामीटर साइज़ मकसद
APCF_enable 1 ऑक्टेट 0x01 - APCF सुविधा चालू करें
0x00 - APCF सुविधा बंद करें

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
APCF_opcode 1 ऑक्टेट 0x0 - APCF Enable
APCF_Enable 1 ऑक्टेट चालू/बंद करने की सेटिंग APCF_enable के ज़रिए सेट की जाती है

LE_APCF_Command: set_filtering_parameters_sub_cmd

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

Sub OCF: 0x01

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete से, खास फ़िल्टर और उससे जुड़ी सुविधा की एंट्री को अन्य टेबल से हटा दिया जाएगा.
'हटाएं' पर क्लिक करने से, सभी फ़िल्टर और उनसे जुड़ी एंट्री अन्य टेबल से हट जाएंगी.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_Feature_Selection दो ऑक्टेट चुनी गई सुविधाओं के लिए बिट मास्क:
बिट 0: ब्रॉडकास्ट पते के फ़िल्टर को चालू करने के लिए सेट किया गया है
बिट 1: सेवा के डेटा में बदलाव के फ़िल्टर को चालू करने के लिए सेट किया गया है
बिट 2: सेवा के यूयूआईडी की जांच को चालू करने के लिए सेट किया गया है
बिट 3: सेवा के अनुरोध के यूयूआईडी की जांच को चालू करने के लिए सेट किया गया है
बिट 4: लोकल नेम की जांच को चालू करने के लिए सेट किया गया है
बिट 5: मैन्युफ़ैक्चरर के डेटा की जांच को चालू करने के लिए सेट किया गया है
बिट 6: सेवा के डेटा की जांच को चालू करने के लिए सेट किया गया है
बिट 7: ट्रांसपोर्ट डिस्कवरी सेवा की जांच को चालू करने के लिए सेट किया गया है
बिट 8: विज्ञापन टाइप की जांच को चालू करने के लिए सेट किया गया है
APCF_List_Logic_Type दो ऑक्टेट APCF_Feature_Selection में बताई गई हर सुविधा के चुनाव के लिए लॉजिक ऑपरेशन (हर बिट के हिसाब से).
यह सिर्फ़ तब मान्य होता है, जब कोई सुविधा चालू हो.
बिट की पोज़िशन की वैल्यू:
0: OR
1: AND
अगर "AND" लॉजिक चुना जाता है, तो ADV पैकेट सिर्फ़ तब फ़िल्टर पास करेगा, जब उसमें सूची की सभी एंट्री शामिल हों.
अगर "OR" लॉजिक चुना जाता है, तो कोई ADV पैकेट फ़िल्टर तब पास करेगा, जब उसमें सूची में मौजूद कोई भी एंट्री शामिल हो.
APCF_Filter_Logic_Type 1 ऑक्टेट 0x00: OR
0x01: AND
ध्यान दें: APCF_Feature_Selection के पहले तीन फ़ील्ड के लिए, लॉजिक टाइप लागू नहीं होता. यह हमेशा "AND" लॉजिक होता है. ये सिर्फ़ APCF_Feature_Selection के चार फ़ील्ड (बिट 3 से बिट 6) पर लागू होते हैं.
rssi_high_thresh 1 ऑक्टेट [in dBm]
विज्ञापन देने वाले व्यक्ति या कंपनी को सिर्फ़ तब देखा गया माना जाता है, जब सिग्नल, आरएसएसआई के ज़्यादा थ्रेशोल्ड से ज़्यादा हो. अगर ऐसा नहीं होता है, तो फ़र्मवेयर को इस तरह काम करना चाहिए कि उसे कभी यह जानकारी मिली ही न हो.
delivery_mode 1 ऑक्टेट 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout दो ऑक्टेट यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.
[मिलीसेकंड में]
फ़र्मवेयर को रिपोर्टिंग से पहले, कुछ समय के लिए रुकने और अतिरिक्त विज्ञापन इकट्ठा करने में लगने वाला समय.
onfound_timeout_cnt 1 ऑक्टेट यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.
[count]
अगर कोई विज्ञापन onfound_timeout अवधि तक फ़र्मवेयर में बना रहता है, तो यह कुछ विज्ञापन इकट्ठा करेगा और गिनती की जांच की जाएगी.onFound अगर यह संख्या onfound_timeout_cnt से ज़्यादा होती है, तो इसकी सूचना OnFound तुरंत दी जाती है.
rssi_low_thresh 1 ऑक्टेट यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.
[in dBm]
विज्ञापन देने वाले व्यक्ति या कंपनी के पैकेट को तब तक नहीं देखा गया माना जाता है, जब तक कि मिले हुए पैकेट का आरएसएसआई, आरएसएसआई के निचले थ्रेशोल्ड से ऊपर न हो.
onlost_timeout दो ऑक्टेट यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.
[मिलीसेकंड में]
अगर कोई विज्ञापन, खोजे जाने के बाद lost_timeout अवधि तक लगातार नहीं दिखता है, तो उसे तुरंत खोया हुआ विज्ञापन माना जाएगा.
num_of_tracking_entries दो ऑक्टेट यह सिर्फ़ तब मान्य होता है, जब delivery_mode on_found हो.
[count]
हर फ़िल्टर के हिसाब से, ट्रैक किए जाने वाले विज्ञापन देने वाले लोगों या कंपनियों की कुल संख्या.

नेगेटिव वैल्यू दिखाने के लिए, आरएसएसआई वैल्यू में 2's कॉम्प्लिमेंट का इस्तेमाल करना ज़रूरी है.

होस्ट, अलग-अलग फ़िल्टर कॉम्बिनेशन को मैनेज करने के लिए, कई फ़िल्टर कॉन्फ़िगर कर सकता है. इसके लिए, उसे APCF_Application_Address_type को 0x02 पर सेट करना होगा (सभी ब्रॉडकास्टर पतों के लिए).

फ़िल्टर करना, बैच बनाना, और रिपोर्टिंग, एक-दूसरे से जुड़े कॉन्सेप्ट हैं. हर विज्ञापन और उससे जुड़ी स्कैन प्रतिक्रिया को एक के बाद एक, सभी फ़िल्टर से गुज़रना होगा. इसलिए, नतीजे के तौर पर मिलने वाली कार्रवाइयां (delivery_mode), फ़िल्टर करने से जुड़ी होती हैं. डिलीवरी के मोड ये हैं: report_immediately, batch, और onFound. OnLost की वैल्यू, OnFound से इस तरह जुड़ी होती है कि अगर OnFound खो जाता है, तो OnLost की वैल्यू का इस्तेमाल किया जाएगा.

इस प्रोसेसिंग फ़्लो में, कॉन्सेप्ट मॉडल दिखाया गया है:

जब कोई विज्ञापन (या स्कैन रिस्पॉन्स) फ़्रेम मिलता है, तो उसे क्रम से सभी फ़िल्टर पर लागू किया जाता है. ऐसा हो सकता है कि कोई विज्ञापन, एक फ़िल्टर के आधार पर तुरंत रिपोर्टिंग कर सके. वहीं, किसी दूसरे फ़िल्टर की वजह से, उसी विज्ञापन की रिपोर्टिंग बैच में की जाए.

आरएसआईआई लेवल थ्रेशोल्ड (ज़्यादा और कम) से यह कंट्रोल किया जा सकता है कि फ़िल्टर प्रोसेसिंग के लिए फ़्रेम कब दिखेगा. भले ही, कंट्रोलर को मान्य पैकेट मिला हो. अगर डिलीवरी मोड को तुरंत या बैच में सेट किया गया है, तो कंट्रोलर प्रोसेसिंग के लिए फ़्रेम के आरएसएसआई पर विचार किया जाता है. अलग-अलग ऐप्लिकेशन के लिए, रिपोर्टिंग और बैचिंग के अलग-अलग तरीके की ज़रूरत होती है. इससे एक साथ कई ऐप्लिकेशन, फ़र्मवेयर में सीधे तौर पर रिपोर्टिंग कर सकते हैं और/या नतीजों को बैच कर सकते हैं. उदाहरण के लिए, किसी एक ऐप्लिकेशन से बैच स्कैन चालू है और बाद में किसी दूसरे ऐप्लिकेशन से सामान्य एलई स्कैन जारी किया जाता है. बैच स्कैन जारी करने से पहले, फ़्रेमवर्क/ऐप्लिकेशन सही फ़िल्टर सेट करता है. इसके बाद, जब दूसरा ऐप्लिकेशन नियमित स्कैन करता है, तब बैचिंग की पिछली प्रोसेस जारी रहती है. हालांकि, नियमित स्कैन की वजह से, यह LE स्कैन कमांड के साथ-साथ, सभी मौजूदा फ़िल्टर के साथ-साथ एक नल फ़िल्टर जोड़ने जैसा है. LE स्कैन कमांड पैरामीटर चालू होने पर, उन्हें प्राथमिकता दी जाती है. LE स्कैन की सुविधा बंद होने पर, कंट्रोलर पिछले बैच स्कैन पर वापस चला जाएगा. हालांकि, ऐसा तब होगा, जब वह स्कैन मौजूद हो.

OnFound डिलीवरी मोड, कॉन्फ़िगर किए गए फ़िल्टर पर आधारित होता है. फ़िल्टर के ऐक्शन को ट्रिगर करने वाले कॉम्बिनेशन को, onLost के लिए ट्रैक की जाने वाली इकाई माना जाता है. इससे जुड़ा इवेंट, LE Advt ट्रैकिंग सब-इवेंट है.

अगर फ़िल्टर चालू है, तो OnFound/OnLost के लिए ट्रांज़िशन इस तरह दिखेगा:

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

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

LE_APCF_Command: broadcast_address_sub_cmd

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

Sub OCF: 0x02

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete से, ब्रॉडकास्टर का वह पता मिट जाएगा जिसे फ़िल्टर में चुना गया है.
Clear से, तय किए गए फ़िल्टर में ब्रॉडकास्टर के सभी पते हट जाएंगे.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_Broadcaster_Address 6 ऑक्टेट ब्रॉडकास्टर के पते की सूची में जोड़ने या उससे हटाने के लिए, छह बाइट का डिवाइस पता
APCF_Application_Address_type 1 ऑक्टेट 0x00: सार्वजनिक
0x01: रैंडम
0x02: लागू नहीं (पते के टाइप को अनदेखा करें)
पहचान के पते के टाइप (0x02, 0x03) के हिसाब से विज्ञापन रिपोर्ट फ़िल्टर करने के लिए. अगर आपको पते के टाइप 0x02 और 0x03 वाली विज्ञापन रिपोर्ट चाहिए, तो इस फ़ील्ड को 0x02 पर सेट करें: NA (पते के टाइप को अनदेखा करें).

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

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

LE_APCF_Command: service_uuid_sub_cmd

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

सब ओसीएफ़: 0x03

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - जोड़ें
0x01 - मिटाएं
0x02 - हटाएं
मिटाएं, चुने गए फ़िल्टर में दिए गए सेवा के यूयूआईडी पते को मिटा देगा.
Clear से, चुने गए फ़िल्टर में मौजूद सभी सेवा UUID मिट जाएंगे.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_UUID 2,4,16 ऑक्टेट सूची में जोड़ने या उससे हटाने के लिए, सर्विस यूयूआईडी (16-बिट, 32-बिट या 128-बिट).
APCF_UUID_MASK 2,4,16 ऑक्टेट सूची में जोड़ने के लिए, सेवा का यूयूआईडी मास्क (16-बिट, 32-बिट या 128-बिट). इसकी लंबाई APCF_UUID. के बराबर होनी चाहिए

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

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

LE_APCF_Command: solicitation_uuid_sub_cmd

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

उप ओसीएफ़: 0x04

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete से, चुने गए फ़िल्टर में मौजूद अनुरोध का यूयूआईडी पता मिट जाएगा.
Clear से, चुने गए फ़िल्टर में मौजूद सभी यूयूआईडी मिट जाएंगे.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_UUID 2,4,16 ऑक्टेट सूची में जोड़ने या उससे मिटाने के लिए, अनुरोध का यूयूआईडी (16-बिट, 32-बिट या 128-बिट).
APCF_UUID_MASK 2,4,16 ऑक्टेट सूची में जोड़ने के लिए, अनुरोध का यूयूआईडी मास्क (16-बिट, 32-बिट या 128-बिट). इसकी लंबाई APCF_UUID एट्रिब्यूट की वैल्यू के बराबर होनी चाहिए.

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

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

LE_APCF_Command: local_name_sub_cmd

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

Sub OCF: 0x05

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

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

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

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

LE_APCF_Command: manf_data_sub_cmd

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

सब ओसीएफ़: 0x06

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

ध्यान दें:
  • फ़िलहाल, स्थानीय नाम की स्ट्रिंग में ज़्यादा से ज़्यादा 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 - Add
0x01 - Delete
0x02 - Clear
Delete से, चुने गए फ़िल्टर में सेवा के लिए तय की गई डेटा स्ट्रिंग मिट जाएगी.
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: transport_discovery_service_sub_cmd

इस सबकमांड का इस्तेमाल, ट्रांसपोर्ट डिस्कवरी सर्विस (टीडीएस) फ़िल्टर को जोड़ने या हटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर फ़िल्टर करने के लिए टीडीएस फ़िल्टर की सूची को मिटाने के लिए भी किया जाता है. read_extended_features_sub_cmd का इस्तेमाल करके देखें कि यह निर्देश काम करता है या नहीं.

OCF का उप-समूह: 0x08

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete से, चुने गए फ़िल्टर में मौजूद TDS फ़िल्टर मिट जाएगा.
Clear से, तय किए गए फ़िल्टर में मौजूद सभी टीडीएस फ़िल्टर हट जाएंगे.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
Org_ID 1 ऑक्टेट Bluetooth SIG ने यह संगठन आईडी तय किया है. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
TDS_Flags 1 ऑक्टेट मैच करने के लिए, टीडीएस फ़्लैग. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
TDS_Flags_Mask 1 ऑक्टेट टीडीएस फ़्लैग के लिए मास्क. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
Transport_Data_Length 1 ऑक्टेट Transport_Data की लंबाई. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
Transport_Data वैरिएबल साइज़ Transport_Data_Length के आधार पर, अलग-अलग साइज़ में उपलब्ध है. मिलान करने के लिए, ट्रांसपोर्ट ब्लॉक का डेटा. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
Transport_Data_Mask_Length 1 ऑक्टेट Transport_Data_Mask की लंबाई. यह वैल्यू Transport_Data_Length के बराबर होनी चाहिए. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
Transport_Data_Mask वैरिएबल साइज़ Transport_Data_Mask_Length के आधार पर, अलग-अलग साइज़ में उपलब्ध है. ट्रांसपोर्ट ब्लॉक के डेटा के लिए मास्क. इसकी लंबाई Transport_Data के बराबर होनी चाहिए. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
Meta_Data_Type 1 ऑक्टेट 0x00 - अमान्य
0x01 - वाई-फ़ाई एनएएन हैश
अगर APCF_Action की वैल्यू 0x02 (साफ़) है, तो इसे अनदेखा करें.
Meta_Data_Length 1 ऑक्टेट Meta_Data की लंबाई. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.
Meta_Data वैरिएबल साइज़ Meta_Data_Length के आधार पर, अलग-अलग साइज़ में उपलब्ध है. मैच करने के लिए मेटाडेटा. जब APCF_Action 0x02 (साफ़) हो, तो इस पर ध्यान न दें.

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

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

LE_APCF_Command: ad_type_sub_cmd

इस सबकमांड का इस्तेमाल, विज्ञापन टाइप को जोड़ने या हटाने के लिए किया जाता है. इसका इस्तेमाल, चिप पर फ़िल्टर करने के लिए विज्ञापन टाइप की सूची को मिटाने के लिए भी किया जाता है. read_extended_features_sub_cmd का इस्तेमाल करके देखें कि यह निर्देश काम करता है या नहीं.
अगर APCF_AD_DATA_Length की वैल्यू 0 है, तो विज्ञापन के डेटा और विज्ञापन के डेटा मास्क की तुलना किए बिना, APCF_AD_TYPE को फ़िल्टर करें. अगर मिले हुए ADV पैकेट के डेटा की लंबाई AD_DATA_LENGTH से ज़्यादा है, तो AD डेटा के सिर्फ़ पहले AD_DATA_LENGTH बाइट की तुलना करें और बाकी डेटा को अनदेखा करें.

उप ओसीएफ़: 0x09

सबकमांड पैरामीटर साइज़ मकसद
APCF_Action 1 ऑक्टेट 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete से, चुने गए फ़िल्टर में मौजूद एआईडी टाइप मिट जाएगा.
'हटाएं' विकल्प चुनने पर, चुने गए फ़िल्टर में मौजूद सभी विज्ञापन टाइप हट जाएंगे.
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
APCF_AD_TYPE 1 ऑक्टेट सूची में जोड़ने या सूची से हटाने के लिए, विज्ञापन का टाइप. APCF_Action 0x02 (Clear) होने पर अनदेखा करें
APCF_AD_DATA_Length 1 ऑक्टेट 0x00 - इसका मतलब है कि डेटा कॉन्टेंट को फ़िल्टर न करें
जब APCF_Action 0x02 (हटाएं) हो, तब इसे अनदेखा करें
APCF_AD_DATA वैरिएबल साइज़ APCF_AD_DATA_Length
के आधार पर अलग-अलग साइज़ APCF_Action की वैल्यू 0x02 (साफ़) होने पर अनदेखा करें
APCF_AD_DATA_MASK वैरिएबल साइज़ APCF_AD_DATA_Length
के आधार पर अलग-अलग साइज़ का होता है जब APCF_Action 0x02 (साफ़)
हो, तब इसे अनदेखा करें इसकी लंबाई APCF_AD_DATA के बराबर होनी चाहिए.

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

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

LE_APCF_Command: read_extended_features_sub_cmd

इस सब-कमांड का इस्तेमाल, APCF की एक्सटेंडेट सुविधाओं को पढ़ने के लिए किया जाता है.

सब ओसीएफ़: 0xFF

सबकमांड पैरामीटर साइज़ मकसद
लागू नहीं कमांड पैरामीटर खाली है.

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
APCF_opcode 1 ऑक्टेट 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 ऑक्टेट

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

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

बिट की वैल्यू

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

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

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

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

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

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

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

LE_Get_Controller_Activity_Energy_Info

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

OCF: 0x159

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

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
total_tx_time_ms चार ऑक्टेट Tx को पूरा करने में लगा कुल समय
total_rx_time_ms चार ऑक्टेट Rx को पूरा करने में लगा कुल समय
total_idle_time_ms चार ऑक्टेट स्लीप मोड में न होने पर, कम पावर मोड में बिताया गया कुल समय
total_energy_used चार ऑक्टेट इस्तेमाल की गई कुल ऊर्जा [विद्युत धारा (mA), वोल्टेज (V), और समय (ms) का गुणनफल]

LE extended set scan parameters कमांड

इस कमांड का इस्तेमाल, कंट्रोलर में स्कैन विंडो और इंटरवल को बड़ा करने के लिए किया जा सकता है. BT Core 5.2 स्पेसिफ़िकेशन के मुताबिक, स्कैन विंडो और इंटरवल की ऊपरी सीमा 10.24 सेकंड होती है. इससे ऐप्लिकेशन के लिए, 10.24 सेकंड से ज़्यादा के स्कैन इंटरवल में रुकावट आती है.

बेस रेफ़रंस: BT Core 5.2 स्पेसिफ़िकेशन, पेज 2493 (LE Set Scan Parameters Command)

OCF: 0x15A

कमांड पैरामीटर साइज़ मकसद
LE_Ex_Scan_Type 1 ऑक्टेट 0x00 - पैसिव स्कैनिंग. कोई SCAN_REQ पैकेट नहीं भेजा जाएगा (डिफ़ॉल्ट).
0x01 - स्कैनिंग चालू है. SCAN_REQ पैकेट भेजे जा सकते हैं.
LE_Ex_Scan_Interval चार ऑक्टेट इसे उस समय अंतराल के तौर पर तय किया जाता है जब कंट्रोलर ने अपना आखिरी एलई स्कैन शुरू किया था और जब उसने अगला एलई स्कैन शुरू किया था.
रेंज: 0x0004 से 0x00FFFFFF
डिफ़ॉल्ट: 0x0010 (10 मि॰से॰)
समय = N * 0.625 मि॰से॰
समय की रेंज: 2.5 मि॰से॰ से 10442.25 सेकंड
LE_Ex_Scan_Window चार ऑक्टेट एलई स्कैन की अवधि. LE_Scan_Window की वैल्यू, LE_Scan_Interval से कम या इसके बराबर होनी चाहिए.
रेंज: 0x0004 से 0xFFFF
डिफ़ॉल्ट: 0x0010 (10 मि॰से॰)
समय = N * 0.625 मि॰से॰
समय की रेंज: 2.5 मि॰से॰ से 40.95 सेकंड
Own_Address_Type 1 ऑक्टेट 0x00 - सार्वजनिक डिवाइस का पता (डिफ़ॉल्ट)
0x01 - डिवाइस का रैंडम पता
LE_Ex_Scan_Filter_Policy 0x00 - सभी विज्ञापन पैकेट स्वीकार करें (डिफ़ॉल्ट). इस डिवाइस के लिए डायरेक्ट किए गए ऐसे विज्ञापन पैकेट अनदेखा कर दिए जाएंगे जिनमें इस डिवाइस का पता नहीं दिया गया है.
0x01 - Ignore advertisement packets from devices not in the White List Only list. विज्ञापन के ऐसे पैकेट जो इस डिवाइस के लिए नहीं हैं उन्हें अनदेखा कर दिया जाएगा.

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति

कंट्रोलर की डीबग जानकारी पाने का निर्देश

इस जानकारी एलिमेंट का मकसद, होस्ट को कंट्रोलर डीबग करने की जानकारी देना है. यह जानकारी बाइनरी फ़ॉर्म में होती है, ताकि पोस्ट-प्रोसेसिंग और विश्लेषण किया जा सके. इससे फ़ील्ड में आने वाली समस्याओं को डीबग करने में मदद मिलती है. साथ ही, इंजीनियरों को विश्लेषण के लिए जानकारी लॉग करने का टूलकिट मिलता है. जब होस्ट, इवेंट (Controller Debug Info subevent) के ज़रिए अनुरोध करता है, तब कंट्रोलर जानकारी दे सकता है. इसके अलावा, कंट्रोलर जब चाहे, तब भी जानकारी दे सकता है. उदाहरण के लिए, इसका इस्तेमाल इन कामों के लिए किया जा सकता है: फ़र्मवेयर की स्थिति की जानकारी, क्रैश डंप की जानकारी, लॉगिंग की जानकारी वगैरह की रिपोर्ट करना.

OCF: 0x15B

कमांड पैरामीटर साइज़ मकसद
लागू नहीं कमांड पैरामीटर की खाली सूची

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति

A2DP हार्डवेयर ऑफ़लोड की सुविधा

A2DP ऑफ़लोड की सुविधा, A2DP ऑडियो एन्कोडिंग की प्रोसेस को बीटी कंट्रोलर से जुड़े ऑडियो प्रोसेसर पर ऑफ़लोड करने की सुविधा देती है. एन्कोड की गई ऑडियो डेटा स्ट्रीम, सीधे तौर पर ऑडियो प्रोसेसर से बीटी कंट्रोलर तक जाती है. इसमें बीटी होस्ट शामिल नहीं होता. BT होस्ट अब भी A2DP सेशन को कॉन्फ़िगर करने और कंट्रोल करने के लिए ज़िम्मेदार है. कमांड के दो वर्शन उपलब्ध हैं. लेगसी कमांड में, सिर्फ़ ओपन-सोर्स कोडेक इस्तेमाल किए जा सकते हैं. इनमें सब ओसीएफ़ 0x01-0x02 शामिल हैं. Sub-OCF 0x03-0x04 वाले वर्शन, कॉन्फ़िगर किए गए कोडेक के हिसाब से काम करते हैं.

OCF: 0x15D

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

Sub OCF: 0x01

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

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

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

Sampling_Frequency चार ऑक्टेट 0x01 - 44100 हर्ट्ज़
0x02 - 48000 हर्ट्ज़
0x04 - 88200 हर्ट्ज़
0x08 - 96000 हर्ट्ज़
Bits_Per_Sample 1 ऑक्टेट 0x01 - 16 बिट प्रति सैंपल
0x02 - 24 बिट प्रति सैंपल
0x04 - 32 बिट प्रति सैंपल
Channel_Mode 1 ऑक्टेट 0x01 - मोनो
0x02 - स्टीरियो
Encoded_Audio_Bitrate चार ऑक्टेट कोड में बदले गए ऑडियो का बिटरेट, बिट प्रति सेकंड में.
0x00000000 - ऑडियो बिटरेट की जानकारी नहीं दी गई है / इसका इस्तेमाल नहीं किया गया है.
0x00000001 - 0x00FFFFFF - एन्कोड किए गए ऑडियो का बिटरेट, बिट प्रति सेकंड में.
0x01000000 - 0xFFFFFFFF - रिज़र्व किया गया.
Connection_Handle दो ऑक्टेट कॉन्फ़िगर किए जा रहे A2DP कनेक्शन का कनेक्शन हैंडल
L2CAP_Channel_ID दो ऑक्टेट इस A2DP कनेक्शन के लिए इस्तेमाल किया जाने वाला L2CAP चैनल आईडी
L2CAP_MTU_Size दो ऑक्टेट एन्कोड किए गए ऑडियो पैकेट वाले L2CAP MTU का ज़्यादा से ज़्यादा साइज़
Codec_Information 32 ऑक्टेट कोडेक से जुड़ी जानकारी.

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

A2DP v1.3 में, एसबीसी कोडेक से जुड़ी खास जानकारी वाले एलिमेंट देखें.
ऑक्टेट 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: एलडीएसी चैनल मोड
0x01 - स्टीरियो
0x02 - ड्यूअल
0x04 - मोनो
अन्य को रिज़र्व किया गया है

ऑक्टेट 8-31: सुरक्षित रखा गया है

Opus कोडेक:

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

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

ऑक्टेट 6-31: सुरक्षित रखा गया है

अन्य सभी कोडेक:

ऑक्टेट 0 से 31: सुरक्षित रखा गया है

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Sub_Opcode 1 ऑक्टेट 0x01 - Start A2DP offload

A2DP ऑफ़लोड शुरू करें

सब ओसीएफ़: 0x03

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

कमांड पैरामीटर साइज़ मकसद
Connection Handle दो ऑक्टेट चालू एचसीआई कनेक्शन का हैंडल
L2CAP_Channel_ID दो ऑक्टेट A2DP स्ट्रीमिंग के लिए खोले गए L2CAP चैनल का आइडेंटिफ़ायर
Data_Path_Direction 1 ऑक्टेट 0x00 - आउटपुट (AVDTP सोर्स/मर्ज)
0x01 - इनपुट (AVDTP सिंक/स्प्लिट)
Peer_MTU दो ऑक्टेट L2CAP पैकेट का ज़्यादा से ज़्यादा साइज़, जिसे पीयर के साथ नेगोशिएट किया गया है.
CP_Enable_SCMS_T 1 ऑक्टेट 0x00 - SCMS-T Content Protection Header बंद करें
0x01 - SCMS-T Content Protection Header चालू करें
CP_Header_SCMS_T 1 ऑक्टेट SCMS-T Content Protection Header चालू होने पर (CP_SCMS_T_Enable 0x01 पर सेट होने पर), यह ऑडियो कॉन्टेंट से पहले आने वाले हेडर की वैल्यू तय करता है. यह वैल्यू, Bluetooth Assigned Numbers के सेक्शन 6.3.2 में बताई गई है. ज़्यादा जानकारी के लिए, A2DP के सेक्शन 3.2.1-2 पर जाएं.
SCMS-T Content protection की सुविधा चालू न होने पर, इसे अनदेखा कर दिया जाता है.
Vendor_Specific_Parameters_Length 1 ऑक्टेट वेंडर के हिसाब से तय किए गए पैरामीटर की लंबाई, 0 से 128 के बीच होनी चाहिए.
जब कोई अतिरिक्त पैरामीटर नहीं दिया जाता है, तब वैल्यू 0 का इस्तेमाल किया जाता है.
Vendor_Specific_Parameters 0-128 ऑक्टेट वेंडर के खास पैरामीटर, जो Bluetooth Audio HAL से मिले हैं, CodecParameters.vendorSpecificParameters[].

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Sub_Opcode 1 ऑक्टेट 0x03 - Start A2DP offload

A2DP ऑफ़लोड (लेगसी) बंद करें

Sub OCF: 0x02

इस कमांड का इस्तेमाल, A2DP ऑफलोड स्ट्रीम को रोकने के लिए किया जाता है.

कमांड पैरामीटर साइज़ मकसद
लागू नहीं कमांड पैरामीटर की सूची खाली है.

इस कमांड के लिए कोई पैरामीटर तय नहीं किया गया है.

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Sub_Opcode 1 ऑक्टेट 0x02 - Stop A2DP offload

A2DP ऑफ़लोड बंद करें

उप ओसीएफ़: 0x04

इस कमांड का इस्तेमाल, A2DP ऑफलोड स्ट्रीम को रोकने के लिए किया जाता है.

कमांड पैरामीटर साइज़ मकसद
Connection Handle दो ऑक्टेट चालू एचसीआई कनेक्शन का हैंडल
L2CAP_Channel_ID दो ऑक्टेट A2DP स्ट्रीमिंग के लिए खोले गए L2CAP चैनल का आइडेंटिफ़ायर
Data_Path_Direction 1 ऑक्टेट 0x00 - आउटपुट (AVDTP सोर्स/मर्ज)
0x01 - इनपुट (AVDTP सिंक/स्प्लिट)

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Sub_Opcode 1 ऑक्टेट 0x04 - Stop A2DP offload

ब्लूटूथ की क्वालिटी से जुड़ी शिकायत की रिपोर्ट भेजने का निर्देश

BT Quality Report कमांड की सुविधा, ब्लूटूथ कंट्रोलर में एक ऐसा मेकेनिज़्म शुरू करती है जो होस्ट को ब्लूटूथ क्वालिटी इवेंट की रिपोर्ट भेजता है. इन चार विकल्पों को चालू किया जा सकता है:

  • क्वालिटी मॉनिटरिंग मोड: कंट्रोलर, समय-समय पर होस्ट को लिंक की क्वालिटी से जुड़ा BQR सबइवेंट भेजता है.
  • एलएसटीओ के करीब पहुंचना: अगर कनेक्ट किए गए बीटी डिवाइस से, लिंक सुपरविज़न टाइमआउट (एलएसटीओ) की वैल्यू के आधे से ज़्यादा समय तक कोई पैकेट नहीं मिलता है, तो कंट्रोलर, होस्ट को एलएसटीओ के करीब पहुंचने वाले इवेंट की सूचना देता है.
  • A2DP ऑडियो रुक-रुककर चलना: जब कंट्रोलर को ऐसे फ़ैक्टर का पता चलता है जिनकी वजह से ऑडियो रुक-रुककर चलता है, तो कंट्रोलर होस्ट को A2DP ऑडियो रुक-रुककर चलने वाले इवेंट की जानकारी देता है.
  • (e)SCO Voice Choppy: जब कंट्रोलर को ऐसे फ़ैक्टर का पता चलता है जिनकी वजह से आवाज़ ठीक से नहीं सुनाई देती, तब कंट्रोलर होस्ट को (e)SCO Voice Choppy इवेंट की सूचना देता है.
  • रूट इन्फ़्लेमेशन: इस इवेंट को कंट्रोलर, स्टैक को तब भेजता है, जब HAL या कंट्रोलर को कोई गंभीर गड़बड़ी मिलती है और उसे ब्लूटूथ को रीस्टार्ट करने की ज़रूरत होती है.
  • एलएमपी/एलएल मैसेज ट्रेस: कंट्रोलर, रिमोट डिवाइस के साथ एलएमपी/एलएल मैसेज हैंडशेकिंग को होस्ट को भेजता है.
  • ब्लूटूथ मल्टी-प्रोफ़ाइल/कोएक्स शेड्यूलिंग ट्रेस: कंट्रोलर, होस्ट को 2.4 Ghz बैंड में कई ब्लूटूथ प्रोफ़ाइलों और वायरलेस कोएक्सिस्टेंस को मैनेज करने से जुड़ी शेड्यूलिंग की जानकारी भेजता है.
  • कंट्रोलर की डीबग जानकारी का तरीका: इस सुविधा के चालू होने पर, कंट्रोलर होस्ट को कंट्रोलर की डीबग जानकारी वाले सब-इवेंट के ज़रिए, डीबग लॉगिंग की जानकारी अपने-आप भेज सकता है.
  • LE Audio Choppy: जब कंट्रोलर को ऐसी समस्याओं का पता चलता है जिनकी वजह से ऑडियो रुक-रुककर आता है, तो कंट्रोलर होस्ट को LE Audio Choppy इवेंट की सूचना देता है.
  • एडवांस आरएफ़ स्टैटिस्टिक्स मोड: कंट्रोलर, होस्ट को आरएफ़ स्टैटिस्टिक्स से जुड़ी जानकारी देता है. इसमें रिपोर्ट के इस्तेमाल के दो उदाहरण शामिल हैं:
    • समय-समय पर मिलने वाली रिपोर्ट
    • इवेंट ट्रिगर (स्ट्रीम शुरू/बंद करना और लिंक क्वालिटी इवेंट ट्रिगर करना).
  • नियंत्रक की सेहत की निगरानी करने वाला सिस्टम, होस्ट को सेहत से जुड़ी जानकारी देता है. यह जानकारी दो तरह के इवेंट के ज़रिए मिलती है: समय-समय पर मिलने वाली रिपोर्ट और इवेंट ट्रिगर होने पर मिलने वाली रिपोर्ट.
  • ब्लूटूथ क्वालिटी रिपोर्ट कमांड का BQR_Report_Action: होस्ट इस एचसीआई कमांड का इस्तेमाल, क्वालिटी मॉनिटरिंग मोड, एनर्जी मॉनिटर मोड या अडवांस आरएफ़ स्टैट्स मोड के लिए एक बार की क्वेरी पाने के लिए कर सकता है.

OCF: 0x15E

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

0x00 - जोड़ें
0x01 - मिटाएं
0x02 - हटाएं
0x03 - एक बार की क्वेरी

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

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

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

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

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

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

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

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

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

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

यूनिट: मिलीसेकंड
डिफ़ॉल्ट: 1
सीमा: 0 ~ 4294967295 (0: इसे 1 के बराबर सेट किया जाता है)

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

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Current_Quality_Event_Mask चार ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
बिट 0: क्वालिटी मॉनिटरिंग मोड चालू है.
बिट 1: एलएसटीओ इवेंट की रिपोर्टिंग की सुविधा चालू है.
बिट 2: A2DP ऑडियो के रुक-रुककर चलने की समस्या की रिपोर्टिंग चालू है.
तीसरा बिट: (e)SCO वॉइस चॉपी इवेंट की रिपोर्टिंग चालू है.
चौथा बिट: रूट में सूजन की जानकारी रिपोर्ट करने की सुविधा चालू है.
बिट 5: एनर्जी मॉनिटरिंग मोड चालू है.
छठा बिट: LE Audio के रुक-रुक कर चलने वाले इवेंट की रिपोर्टिंग चालू है.
बिट 7: कनेक्ट नहीं हो सका इवेंट.
बिट 8: इसे सेट करने पर, Advance RF Stats मोड इवेंट ट्रिगर चालू हो जाता है.
बिट 9: इसे सेट करने पर, ऐडवांस आरएफ़ के आंकड़े समय-समय पर रिपोर्ट किए जाते हैं.
बिट 10: कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने की सुविधा के लिए, इवेंट ट्रिगर चालू करने पर सेट होता है.
बिट 11: इसे चालू पर सेट करने पर, कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने की सुविधा समय-समय पर रिपोर्ट करती है.
बिट 12 ~ 14: आरक्षित.
बिट 15: वेंडर के हिसाब से क्वालिटी इवेंट की रिपोर्टिंग चालू है.
बिट 16: एलएमपी/एलएल मैसेज ट्रेस करने की सुविधा चालू है.
बिट 17: ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस चालू है.
बिट 18: कंट्रोलर की डीबग जानकारी देने वाला सिस्टम चालू है.
बिट 19: ऑफ़लोड डीबग की जानकारी के लिए रिज़र्व किया गया है
बिट 20: यूएआरटी हिस्ट्री डंप इवेंट ट्रिगर
बिट 21 से 30: रिज़र्व किया गया है.
बिट 31: वेंडर के हिसाब से ट्रेस करने की सुविधा चालू है.
Current_Vendor_Specific_Quality_Event_Mask चार ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
Current_Vendor_Specific_Trace_Mask चार ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
BQR_Report_interval चार ऑक्टेट इससे मौजूदा बिट मास्क सेटिंग के बारे में पता चलता है.
Current_Vendor_Specific_Trace_Mask चार ऑक्टेट BQR_Report_interval की सेटिंग. यह वैल्यू, BQR_Minimum_Report_Interval * Report_interval_multiple या कंट्रोलर के ज़्यादा से ज़्यादा सपोर्ट इंटरवल के बीच की कम से कम वैल्यू होनी चाहिए.

डाइनैमिक ऑडियो बफ़र कमांड

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

OCF: 0x15F

ऑडियो के बफ़र होने में लगने वाले समय की जानकारी पाने की सुविधा

Sub OCF: 0x01

इस निर्देश का इस्तेमाल करके, ब्लूटूथ कंट्रोलर से ऑडियो बफ़र टाइम की सुविधा पाएं.

कमांड पैरामीटर साइज़ मकसद
लागू नहीं कमांड पैरामीटर की सूची खाली है

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Dynamic_Audio_Buffer_opcode 1 ऑक्टेट 0x01 - Get audio buffer time
Audio_Codec_Type_Supported चार ऑक्टेट सपोर्ट किए गए कोडेक टाइप के लिए बिट मास्क
बिट 0 - एसबीसी
बिट 1 - एएसी
बिट 2 - एपीटीएक्स
बिट 3 - एपीटीएक्स एचडी
बिट 4 - एलडीएसी
बिट 5-31 रिज़र्व हैं
Audio_Codec_Buffer_Default_Time_For_Bit_0 दो ऑक्टेट Audio_Codec_Type_Supported में बताया गया, Bit 0 कोडेक टाइप का डिफ़ॉल्ट बफ़र टाइम.
अगर बिट 0 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी.
यूनिट: मि॰से॰
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 0 कोडेक टाइप का ज़्यादा से ज़्यादा बफ़र समय.
अगर बिट 0 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी.
यूनिट: मि॰से॰
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 0 कोडेक टाइप के लिए, कम से कम बफ़र समय.
अगर बिट 0 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी.
यूनिट: मि॰से॰
Audio_Codec_Buffer_Default_Time_For_Bit_1 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 1 कोडेक टाइप का डिफ़ॉल्ट बफ़र टाइम.
अगर Bit 1 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी.
यूनिट: मि॰से॰
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 दो ऑक्टेट Bit 1 कोडेक टाइप के लिए ज़्यादा से ज़्यादा बफ़र समय, जो Audio_Codec_Type_Supported में बताया गया है.
अगर Bit 1 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी.
यूनिट: मि॰से॰
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 1 कोडेक टाइप के लिए, कम से कम बफ़र समय.
अगर Bit 1 कोडेक टाइप मौजूद नहीं है, तो यह वैल्यू 0 होगी.
यूनिट: मि॰से॰
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 31 कोडेक टाइप का डिफ़ॉल्ट बफ़र टाइम.
अगर बिट 31 कोडेक टाइप मौजूद नहीं है, तो इस वैल्यू को 0 पर सेट करें.
यूनिट: मि॰से॰
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 31 कोडेक टाइप का ज़्यादा से ज़्यादा बफ़र समय.
अगर बिट 31 कोडेक टाइप मौजूद नहीं है, तो इस वैल्यू को 0 पर सेट करें.
यूनिट: मि॰से॰
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 दो ऑक्टेट Audio_Codec_Type_Supported में बताए गए Bit 31 कोडेक टाइप का कम से कम बफ़र समय.
अगर बिट 31 कोडेक टाइप मौजूद नहीं है, तो इस वैल्यू को 0 पर सेट करें.
यूनिट: मि॰से॰

ऑडियो बफ़र होने में लगने वाला समय सेट करना

Sub OCF: 0x02

इस कमांड का इस्तेमाल, ब्लूटूथ कंट्रोलर के लिए ऑडियो बफ़र टाइम सेट करने के लिए करें.

कमांड पैरामीटर साइज़ मकसद
Audio_Codec_Buffer_Time दो ऑक्टेट मौजूदा कोडेक के लिए, ऑडियो बफ़र करने का अनुरोध किया गया समय.
इकाई: मिलीसेकंड

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Dynamic_Audio_Buffer_opcode 1 ऑक्टेट 0x02 - ऑडियो बफ़र टाइम सेट करना
Audio_Codec_Buffer_Time दो ऑक्टेट ब्लूटूथ कंट्रोलर में मौजूदा ऑडियो बफ़र का समय.
यूनिट: मि॰से॰

कनेक्शन प्रॉक्सिमिटी थ्रेशोल्ड (v1.06)

LE_Add_Device_To_Filter_Accept_List_With_Proximity_Threshold_Command

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

कनेक्शन सिर्फ़ तब होना चाहिए, जब सिग्नल में पाथ लॉस की वैल्यू, पाथ लॉस थ्रेशोल्ड से कम हो.

अगर TxPower उपलब्ध नहीं है या No Path Loss filtering का इस्तेमाल किया गया है, तो कनेक्शन सिर्फ़ तब बनाया जाना चाहिए, जब सिग्नल की आरएसएसआई वैल्यू, तय की गई आरएसएसआई थ्रेशोल्ड से ज़्यादा हो.

इस निर्देश का इस्तेमाल, ब्लूटूथ के स्टैंडर्ड निर्देश LE Add Device To Filter Accept List command के विकल्प के तौर पर किया जा सकता है.

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

मूल रेफ़रंस: बीटी कोर 6.2 स्पेसिफ़िकेशन, 7.8.16 (एलई ऐड डिवाइस टू फ़िल्टर ऐक्सेप्ट लिस्ट कमांड)

इस कमांड का इस्तेमाल इन स्थितियों में नहीं किया जाना चाहिए:

  • विज्ञापन दिखाने के लिए फ़िल्टर करने से जुड़ी कोई नीति, फ़िल्टर स्वीकार करने की सूची का इस्तेमाल करती है और विज्ञापन दिखाने की सुविधा चालू है,
  • स्कैनिंग फ़िल्टर की नीति, फ़िल्टर स्वीकार करने की सूची का इस्तेमाल करती है और स्कैनिंग की सुविधा चालू है या
  • इनीशिएटर फ़िल्टर करने की नीति, फ़िल्टर स्वीकार करने की सूची का इस्तेमाल करती है और HCI_LE_Create_Connection या HCI_LE_Extended_Create_Connection कमांड लंबित है.

LE Remove Device From Filter Accept List को उस डिवाइस को फ़िल्टर स्वीकार करने वाली सूची से हटाना होगा जिसे इस कमांड से जोड़ा गया था.

ऑपकोड: 0xFD66 (OCF: 0x166)

कमांड पैरामीटर साइज़ मकसद
Address_Type 1 ऑक्टेट 0x00 - सार्वजनिक डिवाइस का पता
0x01 - रैंडम डिवाइस का पता
0xFF - ऐसे डिवाइस जो पहचान छिपाकर विज्ञापन भेजते हैं
अन्य सभी वैल्यू - आने वाले समय में इस्तेमाल के लिए रिज़र्व की गई हैं
LE_Device_Address 6 ऑक्टेट सार्वजनिक या कोई भी पता
Address_Type को 0xFF पर सेट करने पर, पते को अनदेखा कर दिया जाएगा.
Connection_Path_Loss_Threshold 1 ऑक्टेट रेंज: 0 से +100, +127 [dB में]
यह कनेक्शन के पाथ लॉस थ्रेशोल्ड को दिखाता है. इससे डिवाइस के मिलने पर, उससे कनेक्शन शुरू किया जा सकता है (0 से +100). कनेक्शन शुरू करने के लिए, पाथ लॉस की वैल्यू कम होनी चाहिए. No Path Loss filtering को दिखाने के लिए, वैल्यू +127 का इस्तेमाल किया जाता है. जब TxPower उपलब्ध न हो या यह वैल्यू +127 हो, तो इस कमांड को नीचे दिए गए आरएसएसआई फ़िल्टरिंग पर वापस जाना चाहिए.
Connection_RSSI_Threshold 1 ऑक्टेट रेंज: -127 से +20, +127 [dBm में]
इससे कनेक्शन के आरएसएसआई थ्रेशोल्ड का पता चलता है. इससे यह तय होता है कि डिवाइस का पता चलने पर, उससे कनेक्शन शुरू करना है या नहीं. (-127 से +20). कनेक्शन शुरू करने के लिए, आरएसएसआई वैल्यू ज़्यादा होनी चाहिए. अगर TxPower उपलब्ध नहीं है या पाथ लॉस थ्रेशोल्ड को +127 पर सेट किया गया है, तो आरएसएसआई फ़िल्टरिंग का इस्तेमाल किया जाता है. No RSSI filtering को दिखाने के लिए, वैल्यू +127 का इस्तेमाल किया जाता है.

जब पाथ लॉस थ्रेशोल्ड और आरएसएसआई थ्रेशोल्ड, दोनों +127 हों, तो इस कमांड को ब्लूटूथ स्टैंडर्ड LE Add Device To Filter Accept List command की तरह काम करना चाहिए.

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति

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

कुछ मामलों में, वेंडर के हिसाब से एचसीआई इवेंट की ज़रूरत होती है. BT Core 5.2 स्पेसिफ़िकेशन के पेज 1897 पर मौजूद, इमेज 5.4 देखें. इवेंट पैरामीटर 0 में हमेशा पहला सब-इवेंट कोड शामिल होगा. इसके आधार पर, बाकी एचसीआई इवेंट को डिकोड किया जाता है.

इवेंट पैरामीटर साइज़ मकसद
HCI_vendor_specific_event_code 1 ऑक्टेट 0xFF
sub_event_code 1 ऑक्टेट सबेवेंट कोड का साइज़ एक ऑक्टेट होगा. यह एचसीआई इवेंट पैकेट में पैरामीटर की लंबाई के ठीक बाद वाला बाइट होता है.

स्टोरेज की तय सीमा से ज़्यादा इस्तेमाल होने पर दिखने वाला सबइवेंट

इस इवेंट से पता चलता है कि स्टोरेज थ्रेशोल्ड का उल्लंघन हुआ है.

Subevent code = 0x54

सबइवेंट पैरामीटर साइज़ मकसद
कोई नहीं

LE multi-advertising state change subevent

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

Subevent code = 0x55

सबइवेंट पैरामीटर साइज़ मकसद
Advertising_instance 1 ऑक्टेट विज्ञापन के किसी इंस्टेंस की पहचान करता है
मान्य वैल्यू 0 से लेकर max_advt_instances-1 तक होती हैं
State_Change_Reason 1 ऑक्टेट 0x00: कनेक्शन मिला
Connection_handle दो ऑक्टेट उस कनेक्शन की पहचान करता है जिसकी वजह से advt इंस्टेंस बंद हो गया (अमान्य होने पर 0xFFFF)

विज्ञापन की ट्रैकिंग का LE सब-इवेंट

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

सब इवेंट कोड = 0x56

सब-इवेंट पैरामीटर साइज़ मकसद
APCF_Filter_Index 1 ऑक्टेट फ़िल्टर इंडेक्स (0, max_filter-1)
Advertiser_State 1 ऑक्टेट 0x00: विज्ञापन देने वाला व्यक्ति या कंपनी मिली
0x01: विज्ञापन देने वाला व्यक्ति या कंपनी नहीं मिली
Advt_Info_Present 1 ऑक्टेट 0x00: विज्ञापन देने वाले व्यक्ति या कंपनी की जानकारी (Advt_Info) मौजूद है
0x01: विज्ञापन देने वाले व्यक्ति या कंपनी की जानकारी (Advt_Info) मौजूद नहीं है
Advertiser_Address 6 ऑक्टेट सार्वजनिक या कोई भी पता
Advertiser_Address_Type 1 ऑक्टेट 0x00: सार्वजनिक पता
0x01: रैंडम पता
Advt_Info Tx_Pwr[0]: 1 ऑक्टेट
RSSI[0]: 1 ऑक्टेट
Timestamp[0]: 2 ऑक्टेट
Adv packet_len[0]: 1 ऑक्टेट
Adv_packet[0]: Adv_packet_len ऑक्टेट
Scan_data_resp_len[0]: 1 ऑक्टेट
Scan_data_resp[0]: Scan_data_resp ऑक्टेट

कंट्रोलर की डीबग जानकारी वाला सब-इवेंट

इस इवेंट का इस्तेमाल कंट्रोलर, होस्ट को बाइनरी डीबग जानकारी देने के लिए करता है.

Subevent code = 0x57

सब-इवेंट पैरामीटर साइज़ मकसद
debug_block_byte_offset_start दो ऑक्टेट शुरुआत से ब्लॉक बाइट ऑफ़सेट डीबग करें
last_block 1 ऑक्टेट 0x00: ज़्यादा डीबग डेटा मौजूद है
0x01: आखिरी बाइनरी ब्लॉक; अब कोई डीबग डेटा नहीं है
cur_pay_load_sz दो ऑक्टेट मौजूदा इवेंट में बाइनरी ब्लॉक का साइज़
Debug_Data वैरिएबल cur_payload_sz का डीबग डेटा

LE ब्रॉडकास्ट चैनल मैप क्लासिफ़िकेशन (v1.06)

ब्लूटूथ चैनलों पर रेडियो नॉइज़ लेवल, पैकेट रिसेप्शन की सफलता तय करने वाला एक अहम फ़ैक्टर है. ट्रांसमिशन की विश्वसनीयता को ऑप्टिमाइज़ करने के लिए, चैनल मैप क्लासिफ़िकेशन मेकेनिज़्म ज़रूरी है. इससे चैनल की क्वालिटी का पता चलता है. LE Audio ब्रॉडकास्ट सोर्स के स्टैंडर्ड तरीके में, सोर्स को आम तौर पर यह पता नहीं होता कि कौनसे डिवाइस, ब्रॉडकास्ट को सुन रहे हैं. इसलिए, ब्रॉडकास्ट सोर्स को चैनल की क्वालिटी के अपने आकलन पर ही भरोसा करना चाहिए, ताकि वह बीआईजी चैनल मैप तय कर सके. हालांकि, सिर्फ़ सोर्स के आधार पर तय किया गया बीआईजी चैनल मैप, हर रिसीवर के लिए सबसे अच्छा नहीं हो सकता. ऐसा इसलिए, क्योंकि अलग-अलग जगहों पर पर्यावरण की स्थितियां अलग-अलग होती हैं. इसके अलावा, हर रिसीवर के आस-पास स्थानीय तौर पर सिग्नल में रुकावट डालने वाले सोर्स मौजूद हो सकते हैं. अगर ब्रॉडकास्ट रिसीवर, ब्रॉडकास्ट सोर्स को चैनल के क्लासिफ़िकेशन की जानकारी दे सकता है, तो सोर्स अपने बीआईजी चैनल मैप को उसके हिसाब से अडजस्ट कर सकता है. इससे ब्रॉडकास्ट स्ट्रीम के ट्रांसमिशन और रिसेप्शन को बेहतर बनाने में मदद मिलेगी. साथ ही, इससे ब्रॉडकास्ट स्ट्रीम में होने वाली रुकावटों को कम किया जा सकेगा.

उदाहरण के लिए, निजी ऑडियो शेयर करने (पीएएस) की सुविधा वाले ऐप्लिकेशन में, ईयरबड और ब्रॉडकास्ट सोर्स के बीच एक LE ACL लिंक (ब्रॉडकास्ट असिस्टेंट के तौर पर काम करता है, ताकि यह अपने लोकल ब्रॉडकास्ट सोर्स के साथ सिंक हो सके) बनाया जाता है. इस मौजूदा एलई एसीएल कनेक्शन का इस्तेमाल, ब्रॉडकास्ट सोर्स को ईयरबड (LL_CHANNEL_STATUS_IND पैकेट के ज़रिए) से चैनल के क्लासिफ़िकेशन की जानकारी देने के लिए किया जा सकता है. इसके बाद, ब्रॉडकास्ट सोर्स इस जानकारी का इस्तेमाल करके, अपने बीआईजी चैनल मैप को बेहतर बना सकता है.

इसलिए, हम LE_BIG_Set_Channel_Map_Classification_Command को तय कर रहे हैं. इस कमांड से, BIG सोर्स में चैनल मैप मैनेजमेंट की सुविधा चालू हो जाती है. इससे, पेरिफ़रल डिवाइसों से मिली चैनल क्लासिफ़िकेशन की जानकारी को ध्यान में रखा जाता है. इस कमांड की मदद से, कंट्रोलर को कोई खास एलई एसीएल कनेक्शन हैंडल सेट करने की अनुमति मिलेगी. यह जानकारी मिलने के बाद कंट्रोलर, दिए गए एलई एसीएल कनेक्शन से जुड़े चैनल क्लासिफ़िकेशन डेटा के आधार पर, अपने बीआईजी चैनल मैप का पता लगाएगा.

इस वीएससी को लागू करने के लिए, ब्रॉडकास्ट सोर्स को यह ज़रूरी है कि वह बीआईजी चैनल मैप बनाते समय, चैनल के वर्गीकरण के कई सोर्स को ध्यान में रखे. उदाहरण के लिए, कंट्रोलर, कनेक्ट किए गए रिमोट डिवाइसों से मिली "अच्छी" चैनल क्लासिफ़िकेशन की जानकारी के इंटरसेक्शन का पता लगा सकता है. साथ ही, इसे BIG चैनल मैप पर लागू कर सकता है. इन चैनल क्लासिफ़िकेशन को मर्ज करने के लिए, खास एल्गोरिदम का इस्तेमाल करने का फ़ैसला हर कंट्रोलर वेंडर पर निर्भर करता है. इससे इनोवेशन और ऑप्टिमाइज़ेशन को बढ़ावा मिलता है.

LE_BIG_Set_Channel_Map_Classification_Command

Opcode: 0xFD65 (OCF: 0x165)

कमांड पैरामीटर साइज़ मकसद
Sub_opcode 1 ऑक्टेट 0x01 - LE ACL कनेक्शन हैंडल के ज़रिए, BIG चैनल मैप सेट करें
0x02-0x0E - आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया
Set_BIG_Channel_Action 1 ऑक्टेट BD_ADDR या LE ACL कनेक्शन हैंडल जोड़ने या मिटाने या सभी को हटाने की कार्रवाई.
0x00 - जोड़ें
0x01 - मिटाएं
0x02 - हटाएं
0x03-0xFF - आरक्षित
BIG_Handle 1 ऑक्टेट यह पेरीफ़ेरल के चैनल क्लासिफ़िकेशन के साथ अपडेट करने के लिए, BIG हैंडल तय करता है
रेंज: 0x00 से 0xEF
cmd_para[] वैरिएबल वैरिएबल पैरामीटर, Set_BIG_Channel_opcode पर निर्भर करते हैं

LE_BIG_Set_Channel_Map_Classification_Command_by_Conn_Handle

Sub OCF: 0x01

कमांड पैरामीटर साइज़ मकसद
Sub_opcode 1 ऑक्टेट 0x01 - LE ACL कनेक्शन हैंडल के ज़रिए, BIG चैनल मैप सेट करें
0x02-0x0E - आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया
Set_BIG_Channel_Action 1 ऑक्टेट एलई एसीएल कनेक्शन हैंडल जोड़ने, मिटाने या सभी को हटाने की कार्रवाई.
0x00 - जोड़ें
0x01 - मिटाएं
0x02 - हटाएं
0x03-0xFF - आरक्षित
BIG_Handle 1 ऑक्टेट इससे उस बीआईजी हैंडल का पता चलता है जिसे पेरिफ़ेरल के चैनल क्लासिफ़िकेशन के साथ अपडेट करना है.
रेंज: 0x00 से 0xEF
Number_of_LE_ACL_Connections 1 ऑक्टेट इससे पता चलता है कि BIG चैनल मैप को अपडेट करने के लिए, LE ACL कनेक्शन की कितनी संख्या का इस्तेमाल करना है.
Set_BIG_Channel_Action साफ़ होने पर अनदेखा करें (0x02)
रेंज: 0x01 से 0xFF
LE_ACL_Connection_Handles वैरिएबल (Number_of_LE_ACL_Connections * 2 ऑक्टेट) वैरिएबल साइज़, Number_of_LE_ACL_Connections
पर आधारित Set_BIG_Channel_Action के Clear (0x02) होने पर अनदेखा करें
कनेक्शन हैंडल की रेंज: 0x0000 से 0x0EFF

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति. सभी LE ACL conn_handles जोड़ने के बाद, SUCCESS दिखाता है.
Set_BIG_Channel_opcode 1 ऑक्टेट Echo back command's Set_BIG_Channel_opcode
Set_BIG_Channel_Action 1 ऑक्टेट Echo back command's Set_BIG_Channel_Action
BIG_Handle 1 ऑक्टेट Echo back command's BIG_Handle

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

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

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

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

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

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

bdaddr 6 ऑक्टेट रिमोट डिवाइस का पता
cal_failed_item_count 1 ऑक्टेट कैलिब्रेशन की प्रोसेस पूरी न होने की वजह से अस्वीकार किए गए आइटम की संख्या
TX_Total_Packets चार ऑक्टेट भेजे गए पैकेट की संख्या.
TX_UnAcked_Packets चार ऑक्टेट ऐसे पैकेट की संख्या जिन्हें स्वीकार नहीं किया गया है.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
TX_Flushed_Packets चार ऑक्टेट उन पैकेट की संख्या जिन्हें फ़्लश पॉइंट से नहीं भेजा जाता है.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
TX_Last_Subevent_Packets चार ऑक्टेट यह CIS इवेंट के आखिरी सबइवेंट में, CIS डेटा PDU को ट्रांसमिट करने वाले लिंक लेयर के पैकेट की संख्या होती है.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
अगर लिंक के लिए कोई मान्य वैल्यू नहीं है, तो वैल्यू शून्य होती है.
CRC_Error_Packets चार ऑक्टेट पिछले इवेंट के बाद से, सीआरसी गड़बड़ी वाले मिले पैकेज की संख्या.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
RX_Duplicate_Packets चार ऑक्टेट पिछले इवेंट के बाद से, डुप्लीकेट (फिर से ट्रांसमिट किए गए) पैकेज की संख्या.
होस्ट को शिकायत करने के बाद, यह संख्या रीसेट हो जाती है.
RX_Unreceived_Packets चार ऑक्टेट नहीं मिले पैकेट की संख्या, LE READ ISO Link Quality कमांड के पैरामीटर के बराबर होती है. इसके बारे में जानने के लिए, Bluetooth core Specification Version 5.4 देखें. इससे जुड़ी स्ट्रीम, सीआईएस और बीआईएस हैं.
इस वैल्यू के बढ़ने पर, लिंक लेयर को फ़्लश पॉइंट (सीआईएस पर) या उससे जुड़े इवेंट के आखिर में (बीआईएस पर) कोई खास पेलोड नहीं मिलता है. इसके बारे में ज़्यादा जानने के लिए, Bluetooth core Specification Version 5.4 Vol 6 Part B, Section 4.4.6.6 देखें.
Coex_Info_Mask दो ऑक्टेट बिट 0 - CoexInvolvement: इस रिपोर्ट के जनरेट होने पर, यह सेट किया जाता है. इससे पता चलता है कि कोएक्स गतिविधियों के शामिल होने का शक है. उदाहरण के लिए, A2DP Chops और Approaching LSTO.
Bit 1 - WL 2G Radio Active: Set to indicate WLAN 2G Radio is active.
बिट 2 - WL 2G Connected: यह सेट किया जाता है, ताकि यह पता चल सके कि WLAN 2G रेडियो चालू है और कनेक्ट किया गया है.
बिट 3 - WL 5G/6G रेडियो चालू है: इसे सेट करके यह दिखाया जाता है कि WLAN 5G/6G रेडियो चालू है.
बिट 4-15 - रिज़र्व की गई हैं
वेंडर के हिसाब से पैरामीटर (पैरामीटर की कुल लंबाई - टीबीडी) * ऑक्टेट इससे कंट्रोलर वेंडर को, वेंडर के हिसाब से ज़्यादा पैरामीटर मिलते हैं.

Subevent code = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

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

Error_Code पैरामीटर में, HAL/Controller से रिपोर्ट किया गया गड़बड़ी कोड होता है. अगर यह चिपसेट वेंडर से जुड़ी कोई गड़बड़ी है, तो इसकी वैल्यू 0 होती है. Vendor_Specific_Error_Code में, HAL/Controller से मिला चिपसेट वेंडर का गड़बड़ी वाला कोड होता है. अगर Error_Code पैरामीटर की वैल्यू 0 नहीं है, तो इसे 0 के तौर पर सेट किया जाना चाहिए. Error_Code और Vendor_Specific_Error_Code, दोनों पैरामीटर की वैल्यू 0 नहीं होनी चाहिए.

सबइवेंट पैरामीटर साइज़ मकसद
Quality_Report_Id 1 ऑक्टेट 0x00 ~ 0x04: रिज़र्व किया गया.
0x05: रूट में सूजन.
0x06 ~ 0xFF: आरक्षित.
Error_Code 1 ऑक्टेट 0x00: इसमें चिपसेट वेंडर का गड़बड़ी वाला कोड शामिल होता है.
0x01 ~ 0xFF: कंट्रोलर में कोई गड़बड़ी हुई. गड़बड़ी के कोड और उनके बारे में जानकारी की सूची देखने के लिए, Bluetooth Spec [Vol 2] Part D, Error Codes देखें.
Vendor_Specific_Error_Code 1 ऑक्टेट 0x00: इसमें चिपसेट वेंडर के हिसाब से गड़बड़ी का कोई कोड शामिल नहीं है.
0x01 ~ 0xFF: चिपसेट वेंडर के हिसाब से तय किया गया गड़बड़ी का कोड.
वेंडर के हिसाब से पैरामीटर (पैरामीटर की कुल लंबाई - 4) * ऑक्टेट इससे कंट्रोलर वेंडर को, वेंडर के हिसाब से ज़्यादा पैरामीटर मिलते हैं.

Subevent code = 0x58 [Quality_Report_Id = 0x06, एनर्जी मॉनिटर इवेंट]

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

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

  • औसत करंट खपत: कंट्रोलर द्वारा इस्तेमाल किया गया कुल करंट.
  • अलग-अलग स्थितियों में बिताया गया समय: कंट्रोलर ने निष्क्रिय (स्लीप/कम पावर) स्थिति में कुल कितना समय (मिलीसेकंड में) बिताया और चालू स्थिति में कितना समय बिताया. चालू स्थिति में कंट्रोलर कनेक्ट होता है, डेटा ट्रांसमिट करता है या डेटा रिसीव करता है.
  • स्टेट ट्रांज़िशन की संख्या: इससे पता चलता है कि कंट्रोलर, आइडल और ऐक्टिव स्टेट के बीच कितनी बार स्विच करता है.
  • रेडियो की अलग-अलग स्थितियों में बिताया गया समय: BR/EDR (ब्लूटूथ क्लासिक) और LE (ब्लूटूथ लो एनर्जी) लिंक, दोनों के लिए ट्रांसमिट (Tx) और रिसीव (Rx) करने में बिताए गए समय के लिए अलग-अलग मेट्रिक.
  • ट्रांसमिट पावर लेवल का औसत: BR/EDR और LE लिंक पर ट्रांसमिशन के लिए इस्तेमाल की गई औसत पावर (dBm में).
  • चेन की गतिविधि के बारे में ज़्यादा जानकारी: चालू ट्रांसमिट या रिसीव चेन के साथ बिताए गए समय की रिपोर्ट. इसमें एक चेन और दो चेन के ऑपरेशन के साथ-साथ, इंटरनल (iPA) और एक्सटर्नल (ePA) पावर ऐम्प्लीफ़ायर के बीच अंतर बताया जाता है.
  • स्कैन करने में लगा समय: कंट्रोलर को BR/EDR और LE डिवाइसों को स्कैन करने में लगा समय.

इन पैरामीटर की जांच करके, इंजीनियर कंट्रोलर की पावर एफिशिएंसी के बारे में अहम जानकारी पा सकते हैं. साथ ही, उसकी परफ़ॉर्मेंस को ऑप्टिमाइज़ कर सकते हैं.

सबइवेंट पैरामीटर साइज़ मकसद
Quality_Report_Id 1 ऑक्टेट 0x06: एनर्जी मॉनिटरिंग
Average_Current_Consumption दो ऑक्टेट [mA में] कंट्रोलर की ओर से इस्तेमाल की गई सभी गतिविधियों के लिए, मौजूदा खपत का औसत
Idle_Total_Time (स्लीप) चार ऑक्टेट [मिलीसेकंड में] कुछ समय से इस्तेमाल में नहीं है (कम पावर मोड, स्लीप मोड) की स्थिति में बिताया गया कुल समय.
Idle_Sate_Enter_Count चार ऑक्टेट इससे पता चलता है कि कंट्रोलर कितनी बार निष्क्रिय स्थिति में जाता है.
Active_Total_Time चार ऑक्टेट [मिलीसेकंड में] चालू स्थिति में कुल समय. जैसे, पूछताछ करना, पेजिंग करना, ACL/SCO/eSCO/BIS/CIS ट्रैफ़िक, किसी टास्क को प्रोसेस करना.
Active_State_Enter_Count चार ऑक्टेट इससे पता चलता है कि कंट्रोलर कितनी बार चालू हुआ.
BR_RDR_Tx_Total_Time चार ऑक्टेट [मिलीसेकंड में] बीआर/ईडीआर के लिए, Tx(ट्रांसमिटिंग फ़ॉर एसीएल/एससीओ/ईएससीओ ट्रैफ़िक)स्टेट में कुल समय.
BR_RDR_Tx_State_Enter_Count चार ऑक्टेट इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Tx स्टेट में कितनी बार गया.
BR_RDR_Tx_Average_Power_Level 1 ऑक्टेट [dBm में] सभी BR/EDR लिंक का औसत Tx पावर लेवल
BR_RDR_Rx_Total_Time चार ऑक्टेट [मिलीसेकंड में] बीआर/ईडीआर के लिए, खास तौर पर Rx (एसीएल/एससीओ/ईएससीओ ट्रैफ़िक से डेटा पाना) स्थिति में बिताया गया कुल समय.
BR_RDR_Rx_State_Enter_Count चार ऑक्टेट [मिलीसेकंड में] इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Rx स्थिति में कितनी बार आता है.
LE_Tx_Total_Time चार ऑक्टेट [मिलीसेकंड में] LE स्पेसिफ़िक Tx (ACL/BIS/CIS या LE विज्ञापन ट्रैफ़िक के लिए ट्रांसमिट करना) स्थिति में कुल समय.
LE_Tx_State_Enter_Count चार ऑक्टेट इससे पता चलता है कि कंट्रोलर, BR/EDR के लिए तय की गई Rx स्थिति में कितनी बार आता है.
LE_Tx_Average_Power_Level 1 ऑक्टेट [in dBm] सभी LE लिंक का औसत Tx पावर लेवल.
LE_Rx_Total_Time चार ऑक्टेट [मिलीसेकंड में] LE के लिए खास तौर पर बनाए गए Rx (ACL/BIS/CIS या LE स्कैनिंग ट्रैफ़िक से डेटा पाना) मोड में बिताया गया कुल समय.
LE_Rx_State_Enter_Count चार ऑक्टेट [मिलीसेकंड में] इससे पता चलता है कि कंट्रोलर, LE स्पेसिफ़िक Rx स्टेट में कितनी बार जाता है
Report_Time_Duration (कुल समय) चार ऑक्टेट [मिलीसेकंड में] बैटरी से जुड़ी जानकारी इकट्ठा करने में लगा कुल समय.
RX_Active_One_Chain_Time चार ऑक्टेट [मिलीसेकंड में] एक चेन में RX के चालू रहने की अवधि
RX_Active_Two_Chain_Time चार ऑक्टेट [मिलीसेकंड में] दो चेन में RX के चालू रहने की अवधि
TX_iPA_Active_One_Chain_Time चार ऑक्टेट [मिलीसेकंड में] एक चेन में चालू इंटरनल टीएक्स की अवधि
TX_iPA_Active_Two_Chain_Time चार ऑक्टेट [मिलीसेकंड में] दो चेन में इंटरनल टीएक्स के चालू रहने की अवधि
TX_ePA_Active_One_Chain_Time चार ऑक्टेट [मिलीसेकंड में] एक चेन में बाहरी टीएक्स के चालू रहने की अवधि
TX_ePA_Active_Two_Chain_Time चार ऑक्टेट [मिलीसेकंड में] दो चेन में बाहरी TX के चालू रहने की अवधि
BREDR_RX_Active_Scan_total_Time चार ऑक्टेट [मिलीसेकंड में] बीआर/ईडीआर स्कैन के दौरान, डेटा पाने के लिए डिवाइस के चालू रहने की समयावधि (मिलीसेकंड में)
LE_RX_Active_Scan_total_Time चार ऑक्टेट [मिलीसेकंड में] एलई स्कैन आरएक्स ऐक्टिव टाइम पर समय अवधि (मिलीसेकंड)

Subevent code = 0x58 [Quality_Report_Id = 0x09~0x0A, ऐडवांस रेडियो फ़्रीक्वेंसी स्टैट्स इवेंट]

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

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

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

मुख्य मेट्रिक और उनका मकसद
  • पावर के आंकड़े ट्रांसमिट करना: ये काउंटर, अलग-अलग पावर कॉन्फ़िगरेशन का इस्तेमाल करके भेजे गए पैकेट को ट्रैक करते हैं. साथ ही, इंटरनल (iPA) और एक्सटर्नल (ePA) पावर ऐम्प्लिफ़ायर के साथ-साथ अलग-अलग ऐंटीना डाइवर्सिटी (Div) या बीमफ़ॉर्मिंग (BF) मोड के बीच अंतर करते हैं. इससे यह पता लगाने में मदद मिलती है कि पावर और ऐंटीना की किन सेटिंग का इस्तेमाल सबसे ज़्यादा किया जा रहा है.
  • सिग्नल क्षमता का संकेतक (आरएसएसआई) बिन: ये पैरामीटर, सिग्नल क्षमता के आधार पर मिले हुए पैकेट को कैटगरी में बांटते हैं. इस रिपोर्ट में, आरएसएसआई की खास रेंज (जैसे, -90 dBm से कम, -70 से -75 dBm) में मौजूद पैकेट की संख्या दी जाती है. इससे लिंक की क्वालिटी के बारे में साफ़ तौर पर पता चलता है. "कमज़ोर" सिग्नल बिन (उदाहरण के लिए, < -90 dBm) में ज़्यादा संख्या होने का मतलब है कि कनेक्शन खराब है.
  • आरएसएसआई डेल्टा: यह मेट्रिक, सिग्नल की क्षमता में अंतर को मेज़र करती है. यह अंतर, सिग्नल पाने वाले दो ऐंटेना के बीच होता है. हालांकि, यह अंतर तब ही मेज़र किया जाता है, जब यह लागू होता है. काउंटर ट्रैक करते हैं कि कितने पैकेट में अलग-अलग रेंज में आरएसएसआई डेल्टा है. डेल्टा का बड़ा अंतर (उदाहरण के लिए, >11 dBm) इंटरफ़ेरंस या किसी रुकावट की वजह से हो सकता है. ऐसा इसलिए, क्योंकि एक ऐंटेना को दूसरे ऐंटेना के मुकाबले ज़्यादा मज़बूत सिग्नल मिल रहा है.
  • ऐंटेना स्विच करना और फिर से ट्रांसमिट करना: इस रिपोर्ट से पता चलता है कि कंट्रोलर कितनी बार ऐंटेना स्विच करता है. साथ ही, यह रिपोर्ट फिर से ट्रांसमिट किए गए (ReTX) पैकेट को ट्रैक करती है. डेटा को बार-बार ट्रांसफ़र करने से पता चलता है कि कनेक्शन कमज़ोर है या भरोसेमंद नहीं है. इसलिए, पैकेट को फिर से भेजना पड़ता है.
  • चैनल की क्वालिटी: ये पैरामीटर, अलग-अलग कम्यूनिकेशन चैनलों की परफ़ॉर्मेंस के बारे में खास जानकारी देते हैं. साथ ही, आरएसएसआई के आधार पर उन्हें "अच्छी," "ठीक है," "खराब," या "बहुत खराब" के तौर पर कैटगरी में बांटते हैं. इससे आरएफ़ एनवायरमेंट के बारे में तुरंत खास जानकारी मिलती है.
  • TX बफ़र क्यू: यह सेक्शन, कंट्रोलर के ट्रांसमिट बफ़र में इंतज़ार कर रहे पैकेट की संख्या पर नज़र रखता है. यह संख्या, अलग-अलग तरह के लिंक के लिए होती है. जैसे, ACL (एसिंक्रोनस कनेक्शन-ओरिएंटेड लॉजिकल लिंक), LECONN (एलई कनेक्शन), और LEISOC (एलई आइसक्रोनस). बफ़र की संख्या ज़्यादा होने से, बॉटलनेक या होस्ट से कंट्रोलर तक डेटा फ़्लो होने में समस्या आ सकती है.
सबइवेंट पैरामीटर साइज़ मकसद
Quality_Report_Id 1 ऑक्टेट 0x09: Advance RF Stats By Trigger
0x0A: Advance RF Stats By Monitor
Extension_info 1 ऑक्टेट BQR के वर्शन की जानकारी.
BQRv6 के लिए 0x01
BQRv7 के लिए 0x02
Report_Time_Period चार ऑक्टेट परफ़ॉर्मेंस की जानकारी इकट्ठा करने की समयावधि. यूनिट: मि॰से॰
TX_Power_iPA_BF चार ऑक्टेट iPA BF का पैकेट काउंटर
TX_Power_ePA_BF चार ऑक्टेट ePA BF का पैकेट काउंटर
TX_Power_iPA_Div चार ऑक्टेट ईपीए डिव का पैकेट काउंटर
TX_Power_ePA_Div चार ऑक्टेट ईपीए डिव का पैकेट काउंटर
RSSI_chain_50 चार ऑक्टेट RSSI चेन का पैकेट काउंटर > -50 dBm
RSSI_chain_50_55 चार ऑक्टेट -50 dBm ~ >-55 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_55_60 चार ऑक्टेट -55 dBm ~ >-60 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_60_65 चार ऑक्टेट -60 dBm ~ >-65 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_65_70 चार ऑक्टेट -65 dBm ~ >-70 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_70_75 चार ऑक्टेट -70 dBm ~ >-75 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_75_80 चार ऑक्टेट -75 dBm ~ >-80 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_80_85 चार ऑक्टेट -80 dBm ~ >-85 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_85_90 चार ऑक्टेट -85 dBm ~ >-90 dBm के बीच आरएसएसआई चेन का पैकेट काउंटर
RSSI_chain_90 चार ऑक्टेट आरएसएसआई चेन < -90 डीबीएम का पैकेट काउंटर
RSSI_delta_2 चार ऑक्टेट RSSI डेल्टा < 2 dBm का पैकेट काउंटर
RSSI_delta_2_5 चार ऑक्टेट 2 dBm से 5 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर
RSSI_delta_5_8 चार ऑक्टेट 5 dBm से 8 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर
RSSI_delta_8_11 चार ऑक्टेट 8 dBm से 11 dBm के बीच आरएसएसआई डेल्टा का पैकेट काउंटर
RSSI_delta_11 चार ऑक्टेट आरएसएसआई डेल्टा > 11 dBm का पैकेट काउंटर
Antenna_Switch_Count चार ऑक्टेट ऐंटिना स्विच करने वाले इवेंट का पैकेट काउंटर
ReTX_iPA_BF चार ऑक्टेट हाल ही की समयावधि में ReTX_iPA_BF का पैकेट काउंटर
ReTX_ePA_BF चार ऑक्टेट सबसे हाल की समयावधि में ReTX_ePA_BF का पैकेट काउंटर
ReTX_iPA_Div चार ऑक्टेट हाल ही की समयावधि में, ReTX_iPA_Div का पैकेट काउंटर
ReTX_ePA_Div चार ऑक्टेट हाल ही की समयावधि में, ReTX_ePA_Div का पैकेट काउंटर
Channel_count_Good 1 ऑक्टेट उन चैनलों की संख्या जिनका आरएसएसआई, बिन-1 (<-90) में आता है
Channel_count_OK 1 ऑक्टेट उन चैनलों की संख्या जिनका आरएसएसआई, बिन-2 (-90~-76) के बीच है
Channel_count_Bad 1 ऑक्टेट उन चैनलों की संख्या जिनका आरएसएसआई, बिन-3 (-76~-50) के बीच है
Channel_count_VeryBad 1 ऑक्टेट उन चैनलों की संख्या जिनका आरएसएसआई, बिन-4 (>-50) में आता है
TX_buffer_Queue_Count चार ऑक्टेट बफ़र क्यू की स्थिति का काउंटर- कंट्रोलर टीएक्स बफ़र, हाल ही की समयावधि में [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd

Subevent code = 0x58 [Quality_Report_Id = 0x0B~0x0C, कंट्रोलर हेल्थ मॉनिटरिंग इवेंट]

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

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

ब्लूटूथ कंट्रोलर की परफ़ॉर्मेंस पर नज़र रखने वाला इवेंट, गड़बड़ी की जानकारी देने वाला एक टूल है. इससे कंट्रोलर के काम करने की स्थिति के बारे में खास जानकारी मिलती है. यह इवेंट, ब्लूटूथ क्वालिटी रिपोर्ट (बीक्यूआर) फ़्रेमवर्क का हिस्सा है. इसका इस्तेमाल कनेक्टिविटी, पावर मैनेजमेंट, और टाइमिंग से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है. इसे एक बार की रिपोर्ट के तौर पर भेजा जा सकता है. इसके अलावा, इसे समय-समय पर भी भेजा जा सकता है, ताकि लगातार निगरानी की जा सके.

मुख्य मेट्रिक और उनका मकसद
  • एचसीआई पैकेट काउंटर: यह इवेंट, होस्ट से कंट्रोलर और इसके उलट भेजे गए पैकेट की कुल संख्या को ट्रैक करता है. ये काउंटर, होस्ट कंट्रोलर इंटरफ़ेस (एचसीआई) ट्रांसपोर्ट से जुड़ी समस्याओं को डीबग करने के लिए ज़रूरी हैं. एचसीआई ट्रांसपोर्ट, सॉफ़्टवेयर स्टैक और ब्लूटूथ कंट्रोलर चिप के बीच कम्यूनिकेशन चैनल होता है.
  • पैकेट की लंबाई: यह इवेंट, भेजे गए और पाए गए आखिरी एचसीआई पैकेट की लंबाई की जानकारी देता है. इससे यह पुष्टि करने में मदद मिलती है कि डेटा सही तरीके से ट्रांसमिट किया जा रहा है और साइज़ से जुड़ी कोई अनचाही समस्या नहीं है.
  • वेक-अप सिग्नल की संख्या: रिपोर्ट में, BT_Wake और HOST_Wake पिन के असर्ट किए जाने की कुल संख्या शामिल होती है. ये फ़िज़िकल सिग्नल, पावर मैनेजमेंट के लिए बहुत ज़रूरी होते हैं. इनका इस्तेमाल, संबंधित इकाइयों को कम पावर वाली स्थितियों से जगाने के लिए किया जाता है. इन संख्याओं पर नज़र रखने से, बैटरी से जुड़ी समस्याओं को ठीक करने में मदद मिलती है. जैसे, डिवाइस के अपने-आप चालू होने या स्लीप मोड में न जाने की समस्याएं.
  • टाइमस्टैंप: इस इवेंट में कई टाइमस्टैंप शामिल होते हैं. इनमें, आखिरी बार वेक-अप सिग्नल मिलने और आखिरी बार एचसीआई रीसेट होने का समय शामिल है. इन टाइमस्टैंप से, समय से जुड़ी समस्याओं को हल करने में मदद मिलती है. साथ ही, इनसे यह पता चलता है कि कुछ इवेंट कब हुए थे.
  • वॉचडॉग टाइमर: कोई खास फ़्लैग यह दिखाता है कि इवेंट को इस शुरुआती चेतावनी के तौर पर जनरेट किया गया था कि कंट्रोलर का वॉचडॉग टाइमर खत्म होने वाला है. यह कंट्रोलर के फ़्रीज़ होने या ठीक से काम न करने की गंभीर चेतावनी है.
  • लिंक की स्थिति: रिपोर्ट में, चालू कनेक्शन की मौजूदा स्थिति के बारे में खास जानकारी दी जाती है. इसमें BR/EDR, LE, और CIS (कनेक्टेड आइसोक्रोनस स्ट्रीम) लिंक की कुल संख्या शामिल होती है. इससे यह भी पता चलता है कि कोई एससीओ (सिंक्रोनस कनेक्शन-ओरिएंटेड) लिंक चालू है या नहीं. इस जानकारी से, कंट्रोलर के मौजूदा कनेक्शन लोड की खास जानकारी मिलती है.
सबइवेंट पैरामीटर साइज़ मकसद
Quality_Report_Id 1 ऑक्टेट 0xB~0xC
0x0B: एक बार या इवेंट ट्रिगर होने पर रिपोर्ट
0x0C: समय-समय पर रिपोर्ट.
Packet_Count_Host_to_Controller 4 ऑक्टेट एचसीआई ट्रांसपोर्ट के ज़रिए, होस्ट से कंट्रोलर को भेजे गए पैकेट की कुल संख्या. इस फ़ील्ड का इस्तेमाल, एचसीआई (उदाहरण के लिए, UART) से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं.
Packet_Count_Controller_to_Host 4 ऑक्टेट होस्ट को भेजे गए एचसीआई इवेंट पैकेट की कुल संख्या. इस फ़ील्ड का इस्तेमाल, एचसीआई (जैसे, UART) से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं.
Last_Packet_Length_Host_to_Controller 2 ऑक्टेट होस्ट यूएआरटी को भेजे गए आखिरी एचसीआई पैकेट की लंबाई. ध्यान दें: एचसीआई पैकेट की लंबाई ज़्यादा से ज़्यादा 2 ऑक्टेट (इसमें एचसीआई, एसीएल, एससीओ, आईएसओ शामिल हैं)
Last_Packet_Length_Controller_To_host 2 ऑक्टेट होस्ट यूएआरटी से मिला, एचसीआई का पिछला पैकेट. ध्यान दें: एचसीआई पैकेट की लंबाई ज़्यादा से ज़्यादा 2 ऑक्टेट होनी चाहिए. इसमें एचसीआई, एसीएल, एससीओ, आईएसओ शामिल हैं
Total_BT_Wake_Count 4 ऑक्टेट होस्ट इकाई के हिसाब से, BT_Wake पिन असर्शन की कुल संख्या. यह फ़ील्ड, बिजली से जुड़ी समस्याओं को डीबग करने के लिए, डाइग्नोस्टिक्स टूल के तौर पर काम करता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं.
Total_HOST_Wake_Count 4 ऑक्टेट कंट्रोलर की ओर से शुरू किए गए Host_Wake पिन असर्शन का कुल हिसाब. यह फ़ील्ड, बिजली से जुड़ी समस्याओं को डीबग करने के लिए, डाइग्नोस्टिक्स टूल के तौर पर काम करता है. व्यवहार: कंट्रोलर को एचसीआई रीसेट मिलने पर, काउंटर रीसेट हो जाते हैं.
Last_BT_Wake_TimeStamp 4 ऑक्टेट वह आखिरी टाइमस्टैंप, जब होस्ट ने BT_Wake पिन की पुष्टि की थी.इस फ़ील्ड को पावर से जुड़ी समस्याओं को डीबग करने के लिए लागू किया गया है.
Last_HOST_Wake_TimeStamp 4 ऑक्टेट यह सबसे नया टाइमस्टैंप होता है. इससे पता चलता है कि कंट्रोलर ने Host_Wake पिन को कब चालू किया था. इस फ़ील्ड का इस्तेमाल, बैटरी से जुड़ी समस्याओं को डीबग करने के लिए किया जाता है.
Reset_Timestamp 4 ऑक्टेट इस टाइमस्टैंप से पता चलता है कि एचसीआई को सबसे हाल ही में कब रीसेट किया गया था. इस फ़ील्ड का इस्तेमाल, समय से जुड़ी समस्याओं को हल करने के लिए किया जाता है. इसे शुरुआती रिकॉर्डिंग पॉइंट के तौर पर इस्तेमाल किया जाना चाहिए. इसके आधार पर, अन्य सभी आइटम का रेफ़रंस दिया जाता है.
Current_Timestamp 4 ऑक्टेट यह इवेंट जनरेट होने का मौजूदा समय. इस फ़ील्ड का इस्तेमाल, समय में होने वाली गड़बड़ियों को ठीक करने के लिए किया जाता है. इसे ट्रिगर रिकॉर्डिंग पॉइंट के तौर पर इस्तेमाल किया जाना चाहिए. साथ ही, अन्य सभी एलिमेंट को इसे रेफ़रंस करना चाहिए.
Is_WatchDog_Timer_About_To_Expire 4 ऑक्टेट इस फ़्लैग से पता चलता है कि सेहत की स्थिति से जुड़ा यह इवेंट, कंट्रोलर ने जनरेट किया है. ऐसा इसलिए किया गया है, ताकि वॉच डॉग के खत्म होने की सूचना पहले से दी जा सके. मौजूदा टाइमस्टैंप से, घटना के होने का समय पता चलता है.
Coex_Status_Mask 2 ऑक्टेट बिट 0 - रिज़र्व किया गया
Total_Links_BR_EDR_LE_Active 1 ऑक्टेट चालू स्थिति में मौजूद BR/EDR/LE के लिंक की कुल संख्या.
Total_Links_BR_EDR_Sniff 1 ऑक्टेट स्निफ़/आइडल स्थिति में BR/EDR के लिंक की कुल संख्या.
Total_Links_CIS 1 ऑक्टेट आईएसओ के लिंक की कुल संख्या.
Is_SCO_Active 1 ऑक्टेट इस इंडिकेटर से यह पता चलता है कि क्या फ़िलहाल एससीओ लिंक चालू है.
सबइवेंट पैरामीटर साइज़ मकसद
Quality_Report_Id 1 ऑक्टेट 0x00 ~ 0x10: रिज़र्व किया गया.
0x11: एलएमपी/एलएल मैसेज ट्रेस.
0x12: ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस.
0x13: कंट्रोलर की डीबग जानकारी का डेटा डंप.
0x14 ~ 0xFF: बुक किया गया.
Connection_Handle दो ऑक्टेट कनेक्शन हैंडल.
वेंडर के हिसाब से पैरामीटर (पैरामीटर की कुल लंबाई - 4) * ऑक्टेट एलएमपी मैसेज ट्रेस, ब्लूटूथ मल्टी-लिंक/कोएक्स शेड्यूलिंग ट्रेस, और कंट्रोलर की डीबग जानकारी के डेटा डंप का वेंडर के हिसाब से फ़ॉर्मैट.

Subevent code = 0x58 [Quality_Report_Id = 0x16, LEA ब्रॉडकास्ट सोर्स इवेंट]

BIG Handle से Timestamp पैरामीटर की मदद से कंट्रोलर, ब्रॉडकास्ट सोर्स की जानकारी को पहले से ही रिपोर्ट कर सकता है. इसमें, एयरवेव पर ट्रांसमिट किया गया BD_ADDR और फ़िलहाल इस्तेमाल किया जा रहा BIG चैनल मैप शामिल है. Broadcast ID of Broadcast Receiver Subscribed से लेकर RSSI तक के पैरामीटर, ब्रॉडकास्ट रिसीवर के लिए हैं. इनकी मदद से, सदस्यता लिए गए BIG सोर्स के बारे में जानकारी दी जाती है. यह जानकारी, ब्रॉडकास्ट रिसीवर से BIG सोर्स को PAwR, LE ACL कनेक्शन या लागू होने वाले किसी अन्य तरीके से भेजी जानी चाहिए.

सबइवेंट पैरामीटर साइज़ मकसद
Quality_Report_Id 1 ऑक्टेट 0x16: LEA ब्रॉडकास्ट सोर्स इवेंट.
BIG_Handle 1 ऑक्टेट होस्ट की ओर से असाइन किया गया BIG हैंडल.
Broadcast_Source_BD_ADDR_Type 1 ऑक्टेट ब्रॉडकास्ट सोर्स (बड़ा हैंडल) का BD_ADDR टाइप, जिसे एयर पर भेजा गया है.
Broadcast_Source_BD_ADDR 6 ऑक्टेट ब्रॉडकास्ट सोर्स (BIG हैंडल) का BD_ADDR, जिसे एयर पर भेजा गया है.
BIG_Source_Prefer_Channel_Map पांच ऑक्टेट यह बीआईजी चैनल मैप है. इसे कंट्रोलर प्राथमिकता देता है और चैनल क्लासिफ़िकेशन की सुविधा इसे पहचानती है.
BIG_Source_Used_Channel_Map पांच ऑक्टेट कंट्रोलर के ज़रिए इस्तेमाल किया जाने वाला BIG चैनल.
BIG_TX_Power 1 ऑक्टेट ब्रॉडकास्ट आईडी में इस्तेमाल की जा रही मौजूदा टीएक्स पावर.
Timestamp चार ऑक्टेट इस कुकी में, तय किए गए बड़े हैंडल के लिए टाइमस्टैंप (पिकोनट क्लॉक) होता है. यह वैल्यू, HCI_Read_Clock एचसीआई कमांड का जवाब देने वाले कंट्रोलर की वैल्यू के बराबर होनी चाहिए. इस कमांड में, 0x01 (पिकोनेट क्लॉक) का Which_Clock पैरामीटर होता है.
यूनिट: N * 0.3125 मि॰से॰ (1 ब्लूटूथ क्लॉक)
Broadcast_ID_of_Broadcast_Receiver_Subscribed तीन ऑक्टेट इससे क्लाइंट डिवाइस के लिए सदस्यता लिए गए ब्रॉडकास्ट आईडी का पता चलता है.
अमान्य वैल्यू: 0xFFFFFF
Broadcast_Receiver_BD_ADDR_Type 1 ऑक्टेट ब्रॉडकास्ट रिसीवर का BD_ADDR टाइप.
अमान्य वैल्यू: 0xFF
Broadcast_Receiver_BD_ADDR 6 ऑक्टेट ब्रॉडकास्ट रिसीवर का BD_ADDR.
अमान्य वैल्यू: 0x000000000000
Time_Duration चार ऑक्टेट परफ़ॉर्मेंस की जानकारी इकट्ठा करने की समयावधि.
यूनिट: मि॰से॰
अमान्य वैल्यू: 0xFFFFFFFF
BIS_Choppy_count चार ऑक्टेट BIS Choppy count: Choppy count with Time_Duration.
अमान्य वैल्यू: 0xFFFFFFFF
PER चार ऑक्टेट Time_Duration के दौरान पैकेट में गड़बड़ी की दर (पीईआर).
अमान्य वैल्यू: 0xFFFFFFFF
No_Sync चार ऑक्टेट RX के सिंक न होने की संख्या.
अमान्य वैल्यू: 0xFFFFFFFF
Receiver_Prefer_Channel_Map पांच ऑक्टेट यह ब्रॉडकास्ट रिसीवर के चैनल मैप के बारे में बताता है.
अमान्य वैल्यू: 0x0000000000
Receiver_Tx_Power 1 ऑक्टेट इससे ब्रॉडकास्ट रिसीवर से डेटा ट्रांसमिट करने वाले पैकेट के पावर लेवल का पता चलता है.
अमान्य वैल्यू: 0xFF
RSSI 1 ऑक्टेट ब्रॉडकास्ट रिसीवर से मिले पैकेट का आरएसएसआई.
अमान्य वैल्यू: 0x7F
Reserved चार ऑक्टेट बुक किया हुआ

सब इवेंट कोड = 0x5C

चालू होने पर, इस इवेंट को हर आईएसओ इंटरवल के दौरान जनरेट किया जाना ज़रूरी है.

रणनीति लागू करने का तरीका
HCI_LE_Setup_ISO_Data_Path स्टैंडर्ड कमांड में वेंडर Data_Path_ID कोड 0x19 को चुनकर, इसे चालू किया जाता है. HCI_Configure_Data_Path कमांड के साथ Data_Path_ID को 0x19 पर और Vendor_Specific_Config_Length को 0 पर सेट करने पर, इस कमांड को स्वीकार करना ज़रूरी है. भले ही, इस कमांड को पाने के बाद कंट्रोलर को कोई कार्रवाई न करनी हो.
डिस्पैच करने का समय
यह इवेंट, आईएसओ इंटरवल (सीआईजी या बीआईजी ऐंकर पॉइंट) की शुरुआत से लेकर अगले आईएसओ इंटरवल तक ट्रिगर होता है. कंट्रोलर, Anchor_Point_Delay का इस्तेमाल करके आईएसओ इंटरवल के असरदार तरीके से शुरू होने में हुई देरी के बारे में बताता है.
कंट्रोलर सिंक करना
आईएसओ इंटरवल की शुरुआत में, कंट्रोलर StreamSN का हिसाब लगाता है. इसके लिए, वह मौजूदा वैल्यू में कॉन्फ़िगर किया गया ISO_Interval ÷ SDU_Interval जोड़ता है. पहले इंटरवल में, इसे 0 पर सेट किया जाता है.
इसके बाद, आईएसओ फ़िफ़ो में मौजूद हर पैकेट पर ये बातें लागू होती हैं:
  • कंट्रोलर, दो क्रम संख्याओं के बीच रैपिंग का अंतर SNdiff इस तरह से कैलकुलेट करता है:
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • जब (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    पैकेट को फिर से ट्रांसमिट करने की विंडो में हो. इसे पिछले इंटरवल में ट्रांसमिशन के लिए शेड्यूल किया गया था और अब इसे फिर से ट्रांसमिट किया जा सकता है. अगर ऐसा नहीं है (इसे ट्रांसमिशन के लिए शेड्यूल नहीं किया गया है), तो इसे देर से मिला के तौर पर मार्क किया जाता है. इसकी जानकारी होस्ट को In_Status का इस्तेमाल करके दी जानी चाहिए. ऐसे पैकेट को खारिज किया जा सकता है या ट्रांसमिशन के लिए शेड्यूल किया जा सकता है. यह विकल्प, लागू करने वाले व्यक्ति पर निर्भर करता है.
  • या जब SNdiff < ISO_Interval ÷ SDU_Interval:
    इस इवेंट से फ़्लश टाइमआउट होने तक, पैकेट को ट्रांसमिशन के लिए शेड्यूल किया जाता है.
  • या जब SNdiff >= ISO_Interval ÷ SDU_Interval और SNdiff <= Max_Forward_Buffers:
    पैकेट आने वाले समय में है; इसे बाद के इवेंट के साथ ट्रांसमिट किया जाएगा. पैकेट क्रम से भेजे जाते हैं. इसलिए, यह शर्त इस इंटरवल के लिए पैकेट की खोज को खत्म कर देती है.
    होस्ट की ओर से इस्तेमाल किए गए बफ़र की जानकारी कंट्रोलर को नहीं दी जाती. हालांकि, यह Max_Forward_Buffers = 16 तक सीमित होती है.
  • इसके अलावा, अगर ऊपर दी गई कोई भी शर्त पूरी नहीं होती है, तो भी ऐसा हो सकता है:
    पैकेट को खारिज कर दिया गया हो, फ़्लश करने की समयसीमा खत्म हो गई हो या गलत फ़ॉर्मैट वाला पैकेट मिला हो.

सबइवेंट पैरामीटर साइज़ मकसद
Connection_Handle दो ऑक्टेट सीआईएस या बीआईएस का कनेक्शन हैंडल
रेंज: 0x0000 से 0x0EFF
Sequence_Number दो ऑक्टेट स्ट्रीम का क्रम संख्या, जिसे कंट्रोलर मैनेज करता है.

CIS या BIS बनाने पर, इसे 0 पर सेट किया जाता है. साथ ही, हर आईएसओ इंटरवल पर एसडीयू की संख्या के हिसाब से इसे बढ़ाया जाता है. आईएसओ आइसोक्रोनस इंटरवल को ISO_interval ÷ SDU_Interval के तौर पर तय किया जाता है.
Anchor_Point_Delay दो ऑक्टेट इवेंट जनरेट होने और असरदार BIG या CIG ऐंकर पॉइंट या आईएसओ इंटरवल के शुरू होने के बीच का समय, माइक्रोसेकंड में. ऐंकर पॉइंट का टाइमस्टैंप, इन बातों से तय होता है:
Event generation time - Anchor_Point_Delay

रेंज: 0 से लेकर आईएसओ इंटरवल तक (माइक्रोसेकंड में)
In_Status दो ऑक्टेट कंट्रोलर आईएसओ बफ़र की स्थिति

आईएसओ इंटरवल की शुरुआत में, हर बिट bi को तब सेट किया जाता है, जब एसडीयू (Sequence_Number + i) mod 0x10000 उपलब्ध हो. उपलब्ध न होने पर, एसडीयू को Not received from the host के तौर पर मार्क किया जाता है.

वैल्यू i की सीमा 0 से ISO_Interval ÷ SDU_Interval - 1 तक होती है. i की अन्य वैल्यू के लिए, बिट 0 पर सेट होती हैं.
Tx_Status दो ऑक्टेट क्रम संख्या वाले एसडीयू के हिसाब से ट्रांसमिशन का स्टेटस:
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

हर बिट bi तब सेट होती है, जब पहचाने गए एसडीयू के सभी पीडीयू, उसके क्रम संख्या के हिसाब से ट्रांसमिट हो जाते हैं और उनकी पुष्टि हो जाती है.

वैल्यू i की सीमा 0 से ISO_Interval ÷ SDU_Interval - 1 तक होती है. i की अन्य वैल्यू के लिए, बिट 0 पर सेट होती हैं.
ब्रॉडकास्ट ग्रुप में, ट्रांसमिशन की पुष्टि हमेशा की जानी चाहिए.

विज्ञापन देने वाले कई लोगों या कंपनियों के लिए सहायता

विज्ञापन देने वाले कई लोगों या कंपनियों के लिए उपलब्ध इस सुविधा के ये मकसद हैं:

  • एक से ज़्यादा विज्ञापन दिखाने की सुविधा (max_advt_instances)
  • अलग-अलग ट्रांसमिट पावर, ताकि अलग-अलग रेंज की अनुमति दी जा सके
  • विज्ञापन का अलग-अलग कॉन्टेंट
  • विज्ञापन देने वाले हर व्यक्ति या कंपनी के लिए अलग-अलग जवाब
  • विज्ञापन देने वाले हर व्यक्ति या कंपनी के लिए निजता (ट्रैक नहीं किया जा सकता)
  • कनेक्ट किया जा सकता है

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

LE_Multi_Advt_Command

OCF: 0x154

कमांड पैरामीटर साइज़ मकसद
Multi_advt_opcode 1 ऑक्टेट 0x01 - Set_Advt_Param_Multi_Sub_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 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

सबकमांड पैरामीटर साइज़ मकसद
Advertising_Interval_Min हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Interval_Max हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Type हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Own_Address_Type हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Own_Address हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Direct_Address_Type हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Direct_Address हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Channel_Map हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Adverstising_Filter_Policy हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Instance 1 ऑक्टेट यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं
Tx_power 1 ऑक्टेट Transmit_Power
Unit - in dBm (signed integer)
Range (-70 to +20)

Own_Address पैरामीटर, इस मल्टी-विज्ञापन इंस्टेंस को सेट अप करते समय, होस्ट के लिए कॉन्फ़िगर किया गया पता हो सकता है. इससे पहले बीकन के ट्रांसमिट होने के समय, हल किया जा सकने वाला निजी पता मिलता है. कनेक्शन की स्थिति चाहे जो भी हो, इंस्टेंस पर विज्ञापन दिखते रहेंगे. कनेक्शन के बाद, होस्ट बीटी स्टैक किसी इंस्टेंस पर विज्ञापन दिखाना शुरू करने का निर्देश दे सकता है.

ऊपर दी गई कमांड के मुताबिक, इस कमांड के लिए Command Complete इवेंट जनरेट होगा. इसके बारे में, Bluetooth Core 4.1 Specification में बताया गया है. अगर विज्ञापन इंस्टेंस या Tx_Power पैरामीटर अमान्य हैं, तो कंट्रोलर, अमान्य पैरामीटर वाला कोड भेजेगा.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Multi_advt_opcode 1 ऑक्टेट 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

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

Sub OCF: 0x02

सबकमांड पैरामीटर साइज़ मकसद
Advertising_Data_Length हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Data हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Instance 1 ऑक्टेट यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं

ऊपर दी गई कमांड के मुताबिक, इस कमांड के लिए Command Complete इवेंट जनरेट होगा. इसके बारे में, Bluetooth Core 4.1 Specification में बताया गया है. अगर विज्ञापन इंस्टेंस या Tx_Power पैरामीटर अमान्य हैं, तो कंट्रोलर, नॉन-सक्सेस कोड के साथ जवाब देगा.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Multi_advt_opcode 1 ऑक्टेट 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

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

सब ओसीएफ़: 0x03

सबकमांड पैरामीटर साइज़ मकसद
Scan_Response_Data_Length हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Scan_Response_Data हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Instance 1 ऑक्टेट यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं

ऊपर दी गई कमांड के मुताबिक, इस कमांड के लिए Command Complete इवेंट जनरेट होगा. इसके बारे में, Bluetooth Core 4.1 Specification में बताया गया है. अगर विज्ञापन इंस्टेंस या Tx_Power पैरामीटर अमान्य हैं, तो कंट्रोलर, अमान्य पैरामीटर के साथ जवाब देगा.

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Multi_advt_opcode 1 ऑक्टेट 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

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

उप ओसीएफ़: 0x04

सबकमांड पैरामीटर साइज़ मकसद
रैंडम पता हर खास जानकारी के हिसाब से हर खास जानकारी के हिसाब से
Advertising_Instance 1 ऑक्टेट यह बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Multi_advt_opcode 1 ऑक्टेट 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

बेस रेफ़रंस: ब्लूटूथ कोर 4.1 स्पेसिफ़िकेशन, पेज 971 (LE Set Advertise Enable Command in that core specification)

OCF: 0x05

सबकमांड पैरामीटर साइज़ मकसद
Advertising_Enable 1 ऑक्टेट वैल्यू 1 का मतलब है कि सुविधा चालू है. किसी अन्य वैल्यू का मतलब है कि सुविधा बंद है.
Advertising_Instance 1 ऑक्टेट यह पैरामीटर बताता है कि ऊपर दिए गए पैरामीटर, किसी इंस्टेंस पर लागू होते हैं या नहीं. इंस्टेंस 0 का मतलब है कि यह एक स्टैंडर्ड एचसीआई इंस्टेंस है.

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Multi_advt_opcode 1 ऑक्टेट 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

निजी पते के समाधान को ऑफ़लोड किया गया

यह सुविधा, कंट्रोलर के फ़र्मवेयर या हार्डवेयर में मौजूद निजी पते की समस्या को ठीक करती है. इससे ये फ़ायदे मिलते हैं:

  • निजी पते को हल करने में होस्ट को लगने वाला समय
  • होस्ट को जगाए बिना बिजली बचाना

LE_Set_RPA_Timeout

OCF: 0x15C

कमांड पैरामीटर साइज़ मकसद
LE_local_IRK 16 ऑक्टेट डिवाइस का वह आईआरके जिसका इस्तेमाल, रैंडम रिज़ॉल्व किए जा सकने वाले पते जनरेट करने के लिए किया गया था.
tRPA_min दो ऑक्टेट सेकंड में, आरपीए जनरेट होने का कम से कम टाइम आउट. कंट्रोलर को इस टाइमआउट के बाद, विज्ञापन दिखाने/स्कैन करने/कनेक्ट करने से जुड़े किसी भी इवेंट के लिए, हल किए जा सकने वाले नए पते जनरेट करने होंगे.
मान्य रेंज: 300 से 1800
tRPA_max दो ऑक्टेट आरपीए जनरेशन के लिए ज़्यादा से ज़्यादा टाइम आउट, सेकंड में. कंट्रोलर को इस टाइमआउट से पहले या इसके दौरान, विज्ञापन दिखाने/स्कैन करने/कनेक्ट करने से जुड़े किसी भी इवेंट के लिए, हल किए जा सकने वाले नए पते जनरेट करने होंगे.
मान्य रेंज: tRPA_min-1800
पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड की स्थिति.

एचसीआई स्टेटस की सुझाई गई वैल्यू:
0x00 Success
0x01 Unknown command (if not supported)
0x12 Invalid command parameters (if any parameters are outside the given range)

LE_RPA_offload_Command

OCF: 0x155

कमांड पैरामीटर साइज़ मकसद
RPA_offload_opcode 1 ऑक्टेट 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Event_RPA_offload_opcode 1 ऑक्टेट 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

सबकमांड पैरामीटर साइज़ मकसद
enable_customer_specific_feature_set 1 ऑक्टेट 0x01 - Enable offloaded RPA feature
0x00 - Disable offloaded RPA feature

चिप की क्षमता के आधार पर, होस्ट को आरपीए ऑफ़लोड की सुविधा चालू करनी होगी. LE_Get_Vendor_Capabilities_Command पर जाएं. हर चिप में फ़र्मवेयर का अलग-अलग max_irk_list_sz हो सकता है.

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Event_cust_specific_feature_opcode 1 ऑक्टेट 0x01 [Enable customer-specific feature]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

सबकमांड पैरामीटर साइज़ मकसद
LE_IRK 16 ऑक्टेट LE IRK (1st byte LSB)
Address_Type 1 ऑक्टेट 0: सार्वजनिक पता
1: रैंडम पता
LE_Device_Address 6 ऑक्टेट आईआरके (पहला बाइट एलएसबी) से जुड़ा सार्वजनिक या रैंडम पता

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Event_cust_specific_feature_opcode 1 ऑक्टेट 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 ऑक्टेट मौजूदा कार्रवाई के बाद, आईआरएल की सूची में उपलब्ध एंट्री

LE_RPA_offload: Remove_IRK_to_list_sub_Command

सब ओसीएफ़: 0x03

सबकमांड पैरामीटर साइज़ मकसद
Address_Type 1 ऑक्टेट 0: सार्वजनिक पता
1: रैंडम पता
LE_Device_Address 6 ऑक्टेट आईआरके से जुड़ा कोई सार्वजनिक या रैंडम पता

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Event_cust_specific_feature_opcode 1 ऑक्टेट 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 ऑक्टेट मौजूदा कार्रवाई के बाद, आईआरएल की सूची में उपलब्ध एंट्री

LE_RPA_offload: Clear_IRK_list_sub_Command

उप ओसीएफ़: 0x04

सबकमांड पैरामीटर साइज़ मकसद
कोई नहीं

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Event_cust_specific_feature_opcode 1 ऑक्टेट 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 ऑक्टेट मौजूदा कार्रवाई के बाद, आईआरएल की सूची में उपलब्ध प्रविष्टियां [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

सबकमांड पैरामीटर साइज़ मकसद
LE_read_IRK_list_entry-index 1 ऑक्टेट आईआरके की सूची का इंडेक्स [0, max_irk_list_sz-1]

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

पैरामीटर लौटाएं साइज़ मकसद
Status 1 ऑक्टेट कमांड पूरी होने की स्थिति
Event_cust_specific_feature_opcode 1 ऑक्टेट 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 ऑक्टेट आईआरके का इंडेक्स, जिसे होस्ट वापस पढ़ना चाहता है (आईआरके की सूची का ज़्यादा से ज़्यादा साइज़ 32 है)
LE_IRK 16 ऑक्टेट आईआरके वैल्यू
Address_Type 1 ऑक्टेट 0: सार्वजनिक पता
1: रैंडम पता
LE_Device_Address 6 ऑक्टेट आईआरके से जुड़ा सार्वजनिक या कोई भी पता
LE_Resolved_Private_Address 6 ऑक्टेट इस आईआरके का मौजूदा हल किया गया, हल किया जा सकने वाला निजी पता

स्निफ़ ऑफ़लोड

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

स्निफ़ ऑफ़लोड की स्थितियां

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

ग्लोबल स्थितियां

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

स्निफ़ ऑफ़लोड बंद है

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

स्निफ़ ऑफ़लोड चालू है

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

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

जब ब्लूटूथ कंट्रोलर ‘स्निफ़ ऑफ़लोड चालू है’ स्थिति में होता है, तब हर चालू एसीएल, यहां बताई गई दो स्थितियों में से किसी एक में हो सकता है.

Pending-Parameter State

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

कंट्रोल शुरू हुआ

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

WriteSniffOffloadEnable

OCF: 0x310

कमांड पैरामीटर साइज़ मकसद
Enable_Sniff_Offload 1 ऑक्टेट 0x00 : Disable
0x01 : Enable
Subrating_Max_Latency दो ऑक्टेट ज़्यादा से ज़्यादा लेटेंसी पैरामीटर का इस्तेमाल, ज़्यादा से ज़्यादा स्निफ़ सबरेट का हिसाब लगाने के लिए किया जाएगा. यह सबरेट, रिमोट डिवाइस इस्तेमाल कर सकता है. डिफ़ॉल्ट: T*sniff* Latency = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0002 से 0xFFFE समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड
Subrating_Min_Remote_Timeout दो ऑक्टेट स्निफ़ मोड का कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल रिमोट डिवाइस कर सकता है डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE टाइम रेंज: 0 सेकंड से 40.9 सेकंड
Subrating_Min_Local_Timeout दो ऑक्टेट स्निफ़ मोड के लिए कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल लोकल डिवाइस कर सकता है. डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE समय रेंज: 0 सेकंड से 40.9 सेकंड
Suppress_Mode_Change_Event 1 ऑक्टेट 0x00 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Mode_Change इवेंट की जानकारी देगा. हालांकि, यह HCI_Set_Event_Mask कमांड में सेट किए गए कॉन्फ़िगरेशन के हिसाब से होगा.
0x01 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Mode_Change इवेंट की जानकारी नहीं देगा.
Suppress_Sniff_Subrating_Event 1 ऑक्टेट 0x00 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Sniff_Subrating इवेंट की जानकारी देगा. हालांकि, यह जानकारी HCI_Set_Event_Mask कमांड में सेट किए गए कॉन्फ़िगरेशन के हिसाब से दी जाएगी.
0x01 : ब्लूटूथ कंट्रोलर, होस्ट को HCI Sniff_Subrating इवेंट की जानकारी नहीं देगा.

WriteSniffOffloadParameters

OCF: 0x311

कमांड पैरामीटर साइज़ मकसद
Connection_Handle दो ऑक्टेट 16-बिट बीआर/ईडीआर एसीएल कनेक्शन हैंडल. रेंज: 0x0000 से 0x0EFF
Sniff_Max_Interval दो ऑक्टेट –Bluetooth SIG की तय की गई रेंज, जिसका इस्तेमाल आम तौर पर स्निफ़ मोड में एंट्री के लिए किया जाता है. रेंज: 0x0002 से 0xFFFE तक; सिर्फ़ सम संख्याएं मान्य हैं ज़रूरी रेंज: 0x0006 से 0x0540 तक समय = N × 0.625 मि॰से॰ समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड –खास मामले 0x0000 : इसका इस्तेमाल “Push-Active” Sniff-Offload Mode को चुनने के लिए किया जाता है. 0x0001 : इसका इस्तेमाल “Prefer-Active” Sniff-Offload Mode को चुनने के लिए किया जाता है.
Sniff_Min_Interval दो ऑक्टेट रेंज: 0x0002 से 0xFFFE; सिर्फ़ सम संख्याएं मान्य हैं ज़रूरी रेंज: 0x0006 से 0x0540 समय = N × 0.625 मि॰से॰ समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड
Sniff_Attempts दो ऑक्टेट स्निफ़ करने की कोशिश के लिए, बेसबैंड के रिसीव स्लॉट की संख्या. लंबाई = N × 1.25 मि॰से॰ रेंज: 0x0001 से 0x7FFF समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड कंट्रोलर के लिए ज़रूरी रेंज: 1 से T*sniff* ÷ 2
Sniff_Timeout दो ऑक्टेट स्निफ़ टाइमआउट के लिए, बेसबैंड के रिसीव स्लॉट की संख्या. Length = N × 1.25 ms Range: 0x0000 to 0x7FFF Time Range: 0 ms to 40.9 s Mandatory Range for Controller: 0 to 0x0028
Link_Inactivity_Timeout दो ऑक्टेट टाइम आउट की वैल्यू मिलीसेकंड में. Link_Inactivity टाइमर, हर HCI-ACL लेन-देन पर शुरू/रीसेट होता है. इस टाइमर के खत्म होने पर, कंट्रोलर स्निफ़ मोड में एंट्री शुरू करेगा.
Subrating_Max_Latency दो ऑक्टेट ज़्यादा से ज़्यादा लेटेंसी पैरामीटर का इस्तेमाल, ज़्यादा से ज़्यादा स्निफ़ सबरेट का हिसाब लगाने के लिए किया जाएगा. यह सबरेट, रिमोट डिवाइस इस्तेमाल कर सकता है. डिफ़ॉल्ट: T*sniff* Latency = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0002 से 0xFFFE समय की रेंज: 1.25 मि॰से॰ से 40.9 सेकंड
Subrating_Min_Remote_Timeout दो ऑक्टेट स्निफ़ मोड का कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल रिमोट डिवाइस कर सकता है डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE टाइम रेंज: 0 सेकंड से 40.9 सेकंड
Subrating_Min_Local_Timeout दो ऑक्टेट स्निफ़ मोड के लिए कम से कम टाइम आउट (T*sniff_mode_timeout*), जिसका इस्तेमाल लोकल डिवाइस कर सकता है. डिफ़ॉल्ट: 0x0000 टाइम आउट = N × 0.625 मि॰से॰ (1 बेसबैंड स्लॉट) रेंज: 0x0000 से 0xFFFE समय रेंज: 0 सेकंड से 40.9 सेकंड
Allow_Exit_Sniff_On_Rx 1 ऑक्टेट यह फ़्लैग, receive-direction HCI-ACL लेन-देन पर Sniff मोड से बाहर निकलने की सुविधा को कंट्रोल करता है. 0x00 : Do not exit sniff on Rx. 0x01 : Exit Sniff on Rx Receive-direction HCI-ACL is defined as ACL packet transmission from controller to host over HCI.
Allow_Exit_Sniff_On_Tx 1 ऑक्टेट यह फ़्लैग, ट्रांसमिट-डायरेक्शन एचसीआई-एसीएल लेन-देन पर स्निफ़ मोड से बाहर निकलने की सुविधा को कंट्रोल करता है. 0x00 : Do not exit sniff on Tx. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI.