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