হোস্ট কন্ট্রোলার ইন্টারফেস (HCI) ব্লুটুথ কন্ট্রোলারের সাথে ইন্টার্যাক্ট করার জন্য ব্যবহার করা হয়।
এই ডকুমেন্টে ব্লুটুথ (BT) ও ব্লুটুথ লো এনার্জি (BLE) HCI সংক্রান্ত প্রয়োজনীয়তার একটি তালিকা দেওয়া আছে। নিচে বর্ণিত ফিচার সেট ব্যবহার করার জন্য হোস্ট BT স্ট্যাক ভেন্ডর এবং BT কন্ট্রোলার ভেন্ডরদের এই প্ল্যাটফর্ম সংক্রান্ত প্রয়োজনীয়তা মেনে চলতে হবে।
এই ডকুমেন্টে Bluetooth Core 5.2 স্পেসিফিকেশনকে "স্পেক" হিসেবে উল্লেখ করা হয়েছে। Bluetooth Core 5.2 স্পেসিফিকেশন Bluetooth SIG ওয়েবসাইট এবং অন্যান্য গৃহীত ডকুমেন্টে উপলভ্য।
সাধারণ ডিজাইন ওভারভিউ
চিপের ক্ষমতা ও কনফিগারেশন
ওপেন প্ল্যাটফর্ম হিসেবে, Android-এ সফ্টওয়্যার রিলিজ, OEM, ভেন্ডর এবং প্ল্যাটফর্ম ও চিপের ক্ষমতা সংক্রান্ত ম্যাট্রিক্স আছে।
পরিবর্তনশীল ল্যান্ডস্কেপ ও মাইগ্রেশন ম্যানেজ করার জন্য, BT কন্ট্রোলারদের তাদের ক্ষমতা (স্ট্যান্ডার্ড ব্লুটুথ কোর ৫.২ স্পেসিফিকেশন) প্রকাশ করার অনুমতি দেওয়ার একটি ডিজাইন ফিলোজফি এই ডকুমেন্টে বর্ণনা করা হয়েছে। কোন ফিচার চালু করতে হবে তা নির্ধারণ করতে হোস্ট BT স্ট্যাক এইসব ক্ষমতা ব্যবহার করতে পারে।
ওপেন স্ট্যান্ডার্ড কাজ করে
Android-এর একটি লক্ষ্য হল, ব্লুটুথ স্পেসিফিকেশনে অনুমোদনের পরে ওপেন স্ট্যান্ডার্ড কাজ করে। ভবিষ্যতের ব্লুটুথ স্পেসিফিকেশনে নিচে বর্ণিত কোনও ফিচার স্ট্যান্ডার্ড HCI পদ্ধতির মাধ্যমে উপলভ্য হলে, আমরা সেই পদ্ধতিকে ডিফল্ট হিসেবে সেট করার দিকে ঝুঁকব।
ভেন্ডর-নির্দিষ্ট ক্ষমতা
ভেন্ডর-নির্দিষ্ট কমান্ড: LE_Get_Vendor_Capabilities_Command
OpCode কমান্ড ফিল্ড (OCF): 0x153
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| প্রযোজ্য নয় | খালি কমান্ড প্যারামিটার তালিকা |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
max_advt_instances(বন্ধ করে দেওয়া হয়েছে) |
১টি অক্টেট |
বিজ্ঞাপন ইনস্ট্যান্সের সংখ্যা সমর্থিত। v0.98-এর পরে রিজার্ভ করা হয়েছে। Google ফিচার স্পেসিফিকেশন v0.98 এবং তার পরবর্তী ভার্সনে এই প্যারামিটারটি বাতিল করা হয়েছে এবং এর পরিবর্তে BT স্পেসিফিকেশন ভার্সন 5.0 এবং তার পরবর্তী ভার্সনে উপলভ্য LE এক্সটেন্ডেড অ্যাডভার্টাইজিং ব্যবহার করা হয়। |
offloaded_resolution_of_private-address(বন্ধ করে দেওয়া হয়েছে) |
১ অক্টেট |
RPA-এর BT চিপের ক্ষমতা। চিপে কাজ করলে, হোস্টকে এটি চালু করতে হবে। 0 = সক্ষম নয় 1 = সক্ষম v0.98-এর পরে রিজার্ভ করা হয়েছে। Google ফিচার স্পেক v0.98 এবং এর পরবর্তী যেকোনও ভার্সনে এই প্যারামিটারটি বাতিল করা হয়েছে। এর পরিবর্তে BT স্পেক ভার্সন 4.2 এবং এর পরবর্তী যেকোনও ভার্সনে উপলভ্য গোপনীয়তা ফিচার ব্যবহার করুন। |
total_scan_results_storage |
২টি অক্টেট | বাইট হিসেবে স্ক্যান ফলাফলের জন্য স্টোরেজ |
max_irk_list_sz |
১টি অক্টেট | ফার্মওয়্যারে কাজ করে এমন IRK এন্ট্রির সংখ্যা |
filtering_support |
১ অক্টেট |
কন্ট্রোলারে ফিল্টার করার সুবিধা ০ = কাজ করে না ১ = কাজ করে |
max_filter |
১টি অক্টেট | কাজ করে এমন ফিল্টারের সংখ্যা |
activity_energy_info_support |
১টি অক্টেট |
অ্যাক্টিভিটি ও এনার্জি সংক্রান্ত তথ্য রিপোর্ট করার সুবিধা 0 = সুবিধা নেই 1 = সুবিধা আছে |
version_supported |
২টি অক্টেট |
Google ফিচার স্পেসিফিকেশনের ভার্সন উল্লেখ করে byte[0] = মেজর নম্বর byte[1] = মাইনর নম্বর v1.06 byte[0] = 0x01 byte[1] = 0x06 নিম্নলিখিত ভার্সনে ফিচার যোগ করা হয়েছে: v1.06:
|
total_num_of_advt_tracked |
২টি অক্টেট |
OnLost/OnFound উদ্দেশ্যে ট্র্যাক করা বিজ্ঞাপনদাতার
মোট সংখ্যা
|
extended_scan_support |
১টি অক্টেট | এক্সটেন্ডেড স্ক্যান উইন্ডো ও ইন্টারভ্যাল সাপোর্ট করে |
debug_logging_supported |
১ অক্টেট | কন্ট্রোলার থেকে বাইনারি ডিবাগ তথ্য লগ করা যায় |
LE_address_generation_offloading_support(বন্ধ করে দেওয়া হয়েছে) |
১ অক্টেট |
০ = কাজ করে না ১ = কাজ করে v0.98-এর পরে রিজার্ভ করা হয়েছে। Google ফিচার স্পেক v0.98 এবং এর পরবর্তী যেকোনও ভার্সনে এই প্যারামিটারটি বাতিল করা হয়েছে। এর পরিবর্তে BT স্পেক ভার্সন 4.2 এবং এর পরবর্তী যেকোনও ভার্সনে উপলভ্য গোপনীয়তা ফিচার ব্যবহার করুন। |
A2DP_source_offload_capability_mask |
৪টি অক্টেট |
কোডেক ধরনের জন্য বিট মাস্ক কাজ করে বিট ০ - SBC বিট ১ - AAC বিট ২ - APTX বিট ৩ - APTX HD বিট ৪ - LDAC বিট ৫ - Opus বিট ৬-৩১ রিজার্ভ করা আছে |
bluetooth_quality_report_support |
১ অক্টেট |
ব্লুটুথ কোয়ালিটি ইভেন্ট সম্পর্কে অভিযোগ জানানোর সুবিধা কাজ করে ০ = উপযুক্ত নয় ১ = উপযুক্ত |
dynamic_audio_buffer_support |
৪টি অক্টেট |
ব্লুটুথ কন্ট্রোলারে ডায়নামিক অডিও বাফার কাজ করে কাজ করে এমন কোডেক ধরনের জন্য বিট মাস্ক বিট ০ - SBC বিট ১ - AAC বিট ২ - APTX বিট ৩ - APTX HD বিট ৪ - LDAC বিট ৫ - Opus বিট ৬-৩১ রিজার্ভ করা আছে |
a2dp_offload_v2_support |
১ অক্টেট |
ব্লুটুথ কন্ট্রোলারে A2DP অফলোড v2 কমান্ড কাজ করে (দেখুন
A2DP অফলোড শুরু করুন,
A2DP অফলোড বন্ধ করুন) ০ = কাজ করে না ১ = কাজ করে |
iso_link_feedback_support |
১টি অক্টেট |
ISO লিঙ্ক ফিডব্যাক ইভেন্ট কাজ করে 0 = কাজ করে না 1 = কাজ করে |
sniff_offload_support |
১ অক্টেট |
ব্লুটুথ কন্ট্রোলারে Sniff অফলোড কমান্ড কাজ করে ০ = কাজ করে না ১ = কাজ করে |
big_set_channel_map_classification_support |
২টি অক্টেট |
LE ব্রডকাস্ট চ্যানেল ম্যাপ ক্লাসিফিকেশন ফিচারের sub_opcode কাজ করে বিট ০ - sub_opcode 0x01 কাজ করে (LE ACL কানেকশন হ্যান্ডেল দ্বারা BIG চ্যানেল ম্যাপ সেট করুন) বিট ১-১৫ - সংরক্ষিত বিটের ভ্যালু: ০ ০ = কাজ করে না ১ = কাজ করে |
vendor_connection_handle_min |
২টি অক্টেট | ACL প্যাকেটের মাধ্যমে প্রাপ্ত HCI ভেন্ডর ইভেন্টের জন্য ভেন্ডর কানেকশন হ্যান্ডেলের ন্যূনতম ভ্যালু রিপোর্ট করুন। ACL ডেটা প্যাকেটের মাধ্যমে ভেন্ডর ইভেন্ট রিপোর্টিংয়ের জন্য মিসিং সাপোর্ট দেখাতে হ্যান্ডেল 0 ব্যবহার করা হয়। |
vendor_connection_handle_max |
২টি অক্টেট | ACL প্যাকেটের মাধ্যমে পাওয়া HCI ভেন্ডর ইভেন্টের জন্য ভেন্ডর কানেকশন হ্যান্ডেলের সর্বাধিক ভ্যালু রিপোর্ট করুন। ACL ডেটা প্যাকেটের মাধ্যমে ভেন্ডর ইভেন্ট রিপোর্টিংয়ের জন্য মিসিং সাপোর্ট দেখাতে হ্যান্ডেল 0 ব্যবহার করা হয়। |
connection_proximity_threshold_support |
১টি অক্টেট |
চিপটি কানেকশন প্রক্সিমিটি থ্রেশহোল্ডে কাজ করে কিনা ০ = কাজ করে না ১ = কাজ করে |
ব্যাচ স্ক্যানের ফলাফল
হোস্টের পাওয়ার সাশ্রয় করার জন্য, হোস্টকে কীভাবে Bluetooth LE স্ক্যান রেসপন্স ইভেন্ট বিজ্ঞপ্তি ডেলিভার করা হয় তা উন্নত করাই হল ডিজাইন সংক্রান্ত লক্ষ্য।
কন্ট্রোলার হোস্ট অ্যাপ
প্রসেসরকে ফলাফল স্ক্যান করার জন্য যত ঘন ঘন বিজ্ঞপ্তি পাঠায় তা কমিয়ে দিলে, হোস্ট অ্যাপ প্রসেসর
আরও বেশি সময় ধরে নিষ্ক্রিয়/স্লিপ মোডে থাকতে পারে। এর ফলে হোস্টে বিদ্যুৎ খরচ কমে যায়। LE_Get_Vendor_Capabilities_Command-এর
রিটার্ন প্যারামিটার total_scan_results_storage
স্ক্যান ফলাফল স্টোর করার জন্য চিপের
ক্ষমতা নির্দেশ করে।
এই ফিচারটি ব্লুটুথ কন্ট্রোলারে LE স্ক্যান ফলাফল স্টোরেজ সুবিধার ম্যানেজমেন্ট ও কনফিগারেশনের উপর ফোকাস করে। হোস্টকে পরে ডেলিভার করার জন্য কন্ট্রোলারের মাধ্যমে পাওয়া বিজ্ঞাপন ডেটা, স্ক্যান ডেটা ও মেটাডেটা সাময়িকভাবে ব্যাচ করতে স্টোরেজ ব্যবহার করা হয়।
ফার্মওয়্যারে দুই ধরনের ব্যাচিং কাজ করবে, যা একই সাথে এনগেজ করা যাবে:
- অসম্পূর্ণ। এতে নিম্নলিখিত তথ্য এলিমেন্ট থাকে: {MAC, TX Power, RSSI, টাইমস্ট্যাম্প}
- সম্পূর্ণ। নিম্নলিখিত তথ্য উপাদান থাকে: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Batch_Scan_opcode |
১ অক্টেট |
0x1 - গ্রাহক-নির্দিষ্ট ফিচার চালু করুন 0x2 - ব্যাচ স্ক্যান স্টোরেজ প্যারামিটার সেট করুন 0x3 - ব্যাচ স্ক্যান প্যারামিটার সেট করুন 0x4 - ব্যাচ স্ক্যান ফলাফল প্যারামিটার পড়ুন |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে। গ্রাহক-নির্দিষ্ট ফিচার চালু করলে স্ক্যান শুরু হয় না।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Batch_Scan_opcode |
১ অক্টেট |
0x1 - গ্রাহক-নির্দিষ্ট ফিচার চালু করুন 0x2 - ব্যাচ স্ক্যান স্টোরেজ প্যারামিটার সেট করুন 0x3 - ব্যাচ স্ক্যান প্যারামিটার সেট করুন 0x4 - ব্যাচ স্ক্যান ফলাফল প্যারামিটার পড়ুন |
LE_Batch_Scan_Command: Enable customer-specific feature
Sub OCF: 0x01
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
enable_customer_specific_feature_set |
১টি অক্টেট |
0x01 - ব্যাচ স্ক্যান ফিচার চালু করুন 0x00 - ব্যাচ স্ক্যান ফিচার বন্ধ করুন |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Batch_Scan_opcode |
১ অক্টেট |
0x1 - গ্রাহক-নির্দিষ্ট ফিচার চালু করুন 0x2 - ব্যাচ স্ক্যান স্টোরেজ প্যারামিটার সেট করুন 0x3 - ব্যাচ স্ক্যান প্যারামিটার সেট করুন 0x4 - ব্যাচ স্ক্যান ফলাফল প্যারামিটার পড়ুন |
LE_Batch_Scan_Command: ব্যাচ স্ক্যান স্টোরেজ প্যারামিটার সাবকমান্ড সেট করুন
সাব OCF: 0x02
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Batch_Scan_Full_Max |
১ অক্টেট |
সম্পূর্ণ স্টাইলের জন্য বরাদ্দ করা সর্বোচ্চ স্টোরেজ স্পেস (শতাংশ হিসেবে) [রেঞ্জ: ০-১০০] |
Batch_Scan_Truncated_Max |
১ অক্টেট |
ছোট করে দেখানো স্টাইলের জন্য বরাদ্দ করা সর্বাধিক স্টোরেজ স্পেস (শতাংশে) [রেঞ্জ: ০-১০০] |
Batch_Scan_Notify_Threshold |
১ অক্টেট |
আলাদা স্টোরেজ পুলের জন্য বিজ্ঞপ্তি লেভেল (শতাংশে) সেট-আপ করুন
[রেঞ্জ: ০-১০০] ০-তে সেট করলে বিজ্ঞপ্তি বন্ধ হয়ে যাবে। ভেন্ডর-নির্দিষ্ট HCI ইভেন্ট তৈরি করা হয়েছে (স্টোরেজ থ্রেশহোল্ড লঙ্ঘন সাবইভেন্ট) |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Batch_scan_opcode |
১ অক্টেট | 0x02 [ব্যাচ স্ক্যান প্যারামিটার সেট করুন] |
LE_Batch_Scan_Command: ব্যাচ স্ক্যান প্যারামিটার সাবকমান্ড সেট করুন
সাব OCF: 0x03
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Batch_Scan_Mode |
১টি অক্টেট |
0x00 – ব্যাচ স্ক্যান বন্ধ করা আছে 0x01 – সংক্ষিপ্ত মোড চালু করা আছে 0x02 – সম্পূর্ণ মোড চালু করা আছে 0x03 – সংক্ষিপ্ত ও সম্পূর্ণ মোড চালু করা আছে |
Duty_cycle_scan_window |
৪টি অক্টেট | ব্যাচ স্ক্যান স্ক্যান করার সময় (স্লটের সংখ্যা) |
Duty_cyle_scan_interval |
৪টি অক্টেট | ব্যাচ স্ক্যান ইন্টারভ্যাল পিরিয়ড (# of slot) |
own_address_type |
১ অক্টেট |
0x00 - পাবলিক ডিভাইস অ্যাড্রেস 0x01 - র্যান্ডম ডিভাইস অ্যাড্রেস |
Batch_scan_Discard_Rule |
১ অক্টেট |
0 - সবচেয়ে পুরনো বিজ্ঞাপন বাতিল করুন 1 - সবচেয়ে দুর্বল RSSI সহ বিজ্ঞাপন বাতিল করুন |
চালু করা থাকলে, এই সাবকমান্ড ব্যাচ স্ক্যানিং শুরু করবে। Truncated
স্ক্যানিংয়ে, ফলাফল ট্রানকেট করা ফর্ম্যাটে স্টোর করা হয় যেখানে ট্রানকেট করা স্টাইলের
অনন্য কী = {BD_ADDR, scan_interval} হয়। এর অর্থ হল প্রতিটি স্ক্যান ইন্টারভালের জন্য
শুধুমাত্র একটি BD_ADDR will রেকর্ড করা হবে। Truncated মোডের জন্য
রাখার রেকর্ডটি হল: {BD_ADDR,
Tx পাওয়ার, RSSI, টাইমস্ট্যাম্প}
সম্পূর্ণ মোড চালু করা থাকলে, অ্যাক্টিভ স্ক্যানিং ব্যবহার করা হবে এবং স্ক্যান রেসপন্স
রেকর্ড করা হবে। স্ক্যান ইন্টারভ্যাল যাই হোক না কেন, সম্পূর্ণ স্টাইলের অনন্য কী = {MAC, Ad packet},
হবে। সম্পূর্ণ মোডের জন্য যে রেকর্ড রাখতে হবে তা হল
{BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan
Response} সম্পূর্ণ স্টাইলে, একই বিজ্ঞাপন প্যাকেট, বিভিন্ন স্ক্যান ইন্টারভ্যাল জুড়ে
একাধিকবার দেখা গেলে, সেটি শুধুমাত্র একবার রেকর্ড করা হয়। তবে, সংক্ষিপ্ত
মোডে, বিভিন্ন
স্ক্যান ইন্টারভ্যাল জুড়ে BA_ADDR-এর দৃশ্যমানতা আগ্রহের বিষয় (প্রতি স্ক্যান ইন্টারভ্যালে একবার)। স্ক্যান ইন্টারভ্যালের মধ্যে
RSSI হল অনন্য বিজ্ঞাপনের সবকটি ডুপ্লিকেটের গড় ভ্যালু।
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Batch_scan_opcode |
১ অক্টেট | 0x03 [Set Batch Scan Parameters] |
LE_Batch_Scan_Command: Read batch scan results subcommand
সাব OCF: 0x04
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Batch_Scan_Data_read |
১ অক্টেট |
0x01 - Truncated মোড ডেটা 0x02 - Full মোড ডেটা |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে। হোস্ট এই কমান্ড ইস্যু করলে, কন্ট্রোলারের সব ফলাফল একটি কমান্ড সম্পূর্ণ ইভেন্টে নাও দেখাতে পারে। কমান্ড সম্পূর্ণ হওয়ার ইভেন্টে সংশ্লিষ্ট ফলাফল রেকর্ডের সংখ্যায় ০ না দেখানো পর্যন্ত হোস্ট এই কমান্ড ইস্যু করা চালিয়ে যাবে। এটি ইঙ্গিত করে যে কন্ট্রোলারের কাছে হোস্টকে যোগাযোগ করার জন্য আর কোনও রেকর্ড নেই। প্রতিটি Command Complete ইভেন্টে এক ধরনের ডেটার (সম্পূর্ণ বা সংক্ষিপ্ত) একাধিক রেকর্ড থাকতে পারে।
কন্ট্রোলার ও হোস্টের সময়ের রেফারেন্স সিঙ্ক্রোনাইজ করা হয় না। টাইমস্ট্যাম্পের
ইউনিট হল ৫০ মিলি সেকেন্ড। হোস্টের দেওয়া
Read_Batch_Scan_Results_Sub_cmd
-এর উপর ভিত্তি করে টাইমস্ট্যাম্পের ভ্যালু নির্ধারণ করা হয়। ফার্মওয়্যারে কোনও কমান্ড আসার সময় যদি
T_c হয়, তাহলে ফার্মওয়্যারে টাইমস্ট্যাম্প নেওয়ার আসল সময় হল
T_fw। রিপোর্টিং টাইম হবে:
(T_c - T_fw)। T_c এবং
T_fw ফার্মওয়্যার টাইম ডোমেনে আছে। এর ফলে হোস্ট
গণনা করতে পারেন যে ইভেন্টটি কতদিন আগে হয়েছে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Batch_scan_opcode |
১ অক্টেট | 0x03 [ব্যাচ স্ক্যান প্যারামিটার সেট করুন] |
Batch_Scan_data_read |
১ অক্টেট | ফর্ম্যাট শনাক্ত করে (ট্রাঙ্কেট করা বা সম্পূর্ণ) |
num_of_records |
১টি অক্টেট | Batch_Scan_data_read-এর রেকর্ডের সংখ্যা |
format_of_data |
ভেরিয়েবেল |
সংক্ষিপ্ত মোড: Address[0]: ৬টি অক্টেট Address_Type[0]: ১টি অক্টেট Tx_Pwr[0]: ১টি অক্টেট RSSI[0] : ১টি অক্টেট Timestamp[0]: ২টি অক্টেট [উপরের ফর্ম্যাটে একাধিক রেকর্ড ( num_of_records)]সম্পূর্ণ মোড: Address[0]: ৬টি অক্টেট Address_Type[0]: ১টি অক্টেট Tx_Pwr[0]: ১টি অক্টেট RSSI[0]: ১টি অক্টেট Timestamp[0]: ২টি অক্টেট Adv packet_len[0]: ১টি অক্টেট Adv_packet[0]: Adv_packet_len অক্টেট Scan_data_resp_len[0]: ১টি অক্টেট Scan_data_resp[0]: Scan_data_resp অক্টেট[উপরের ফর্ম্যাটে একাধিক রেকর্ড ( num_of_records)]
|
বিজ্ঞাপন প্যাকেট কন্টেন্ট ফিল্টার
কন্ট্রোলারে বিজ্ঞাপন প্যাকেট কন্টেন্ট ফিল্টার (APCF) চালু/বন্ধ/সেট-আপ করতে এটি ব্যবহার করুন। APCF কন্ট্রোলারে বিজ্ঞাপন সংক্রান্ত রিপোর্ট ফিল্টার করে, কিন্তু পিরিয়ডিক বিজ্ঞাপন ফিল্টার করে না।
LE_APCF_Command
OCF: 0x157
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_opcode |
১ অক্টেট |
0x00 - APCF চালু করুন 0x01 - APCF ফিল্টারিং প্যারামিটার সেট করুন 0x02 - APCF ব্রডকাস্টার অ্যাড্রেস 0x03 - APCF পরিষেবা UUID 0x04 - APCF পরিষেবা সলিসিটেশন UUID 0x05 - APCF লোকাল নাম 0x06 - APCF প্রস্তুতকারকের ডেটা 0x07 - APCF পরিষেবা ডেটা 0x08 - APCF ট্রান্সপোর্ট ডিসকভারি পরিষেবা 0x09 - APCF AD টাইপ ফিল্টার 0x10 ~ 0xAF - ভবিষ্যতের ব্যবহারের জন্য সংরক্ষিত 0xB0 ~ 0xDF - ভেন্ডরের জন্য সংরক্ষিত 0xE0 ~ 0xFE - ভবিষ্যতের ব্যবহারের জন্য সংরক্ষিত 0xFF - APCF এক্সটেন্ডেড ফিচার পড়ুন |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১ অক্টেট | ফেরত দেওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট |
0x00 - APCF চালু করুন 0x01 - APCF ফিল্টারিং প্যারামিটার সেট করুন 0x02 - APCF ব্রডকাস্টার অ্যাড্রেস 0x03 - APCF পরিষেবা UUID 0x04 - APCF পরিষেবা সলিসিটেশন UUID 0x05 - APCF স্থানীয় নাম 0x06 - APCF প্রস্তুতকারকের ডেটা 0x07 - APCF পরিষেবা ডেটা 0x08 - APCF ট্রান্সপোর্ট ডিসকভারি পরিষেবা 0x09 - APCF AD টাইপ ফিল্টার 0x10 ~ 0xAF - ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত 0xB0 ~ 0xDF - ভেন্ডরের জন্য সংরক্ষিত 0xE0 ~ 0xFE - ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত 0xFF - APCF এক্সটেন্ডেড ফিচার পড়ুন |
LE_APCF_Command: Enable_sub_cmd
সাব OCF: 0x00
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_enable |
১টি অক্টেট |
0x01 - APCF ফিচার চালু করুন 0x00 - APCF ফিচার বন্ধ করুন |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১টি অক্টেট | 0x0 - APCF চালু করা |
APCF_Enable |
১ অক্টেট | APCF_enable-এর মাধ্যমে চালু/বন্ধ করা সেট করা হয় |
LE_APCF_Command: set_filtering_parameters_sub_cmd
এই সাবকমান্ডটি চিপ-অন ফিল্টারিংয়ের জন্য ফিল্টার স্পেসিফিকেশন যোগ করতে বা মুছে দিতে অথবা ফিল্টার তালিকা পরিষ্কার করতে ব্যবহৃত হয়।
সাব OCF: 0x01
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১ অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - সরিয়ে দিন মুছে দিলে, সংশ্লিষ্ট ফিচার সহ নির্দিষ্ট ফিল্টার সরিয়ে দেওয়া হবে অন্যান্য টেবিলের এন্ট্রি। মুছে দিলে সব ফিল্টার ও অন্যান্য টেবিলে সংশ্লিষ্ট এন্ট্রি মুছে যাবে। |
APCF_Filter_Index |
১ অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-1) |
APCF_Feature_Selection |
২টি অক্টেট |
বেছে নেওয়া ফিচারের জন্য বিট মাস্ক: বিট ০: ব্রডকাস্ট অ্যাড্রেস ফিল্টার চালু করার জন্য সেট করা হয়েছে বিট ১: পরিষেবা ডেটা পরিবর্তন ফিল্টার চালু করার জন্য সেট করা হয়েছে বিট ২: পরিষেবা UUID চেক চালু করার জন্য সেট করা হয়েছে বিট ৩: পরিষেবা সলিসিটেশন UUID চেক চালু করার জন্য সেট করা হয়েছে বিট ৪: স্থানীয় নাম চেক চালু করার জন্য সেট করা হয়েছে বিট ৫: প্রস্তুতকারকের ডেটা চেক চালু করার জন্য সেট করা হয়েছে বিট ৬: পরিষেবা ডেটা চেক চালু করার জন্য সেট করা হয়েছে বিট ৭: ট্রান্সপোর্ট ডিসকভারি পরিষেবা চেক চালু করার জন্য সেট করা হয়েছে বিট ৮: AD টাইপ চেক চালু করার জন্য সেট করা হয়েছে |
APCF_List_Logic_Type |
২টি অক্টেট |
প্রতিটি ফিচার বেছে নেওয়ার জন্য লজিক অপারেশন (বিট পজিশন পিছু)
APCF_Feature_Selection-এ উল্লেখ করা আছে।
কোনও ফিচার চালু করা থাকলে তবেই এটি কাজ করে। বিট পজিশন ভ্যালু: ০: OR ১: AND "AND" লজিক বেছে নেওয়া হলে, কোনও ADV প্যাকেট তখনই ফিল্টার পাস করবে যদি সেটিতে তালিকার সব এন্ট্রি থাকে। "OR" লজিক বেছে নেওয়া হলে, ADV প্যাকেটে তালিকার যেকোনও এন্ট্রি থাকলে সেটি ফিল্টার পাস করবে। |
APCF_Filter_Logic_Type |
১ অক্টেট |
0x00: OR 0x01: AND মনে রাখবেন: APCF_Feature_Selection-এর প্রথম তিনটি ফিল্ডের জন্য লজিক টাইপ N/A, যা সবসময় "AND" লজিক হয়। এগুলি
শুধুমাত্র APCF_Feature_Selection-এর (Bit 3 - Bit 6) চারটি ফিল্ডের
জন্য প্রযোজ্য।
|
rssi_high_thresh |
১ অক্টেট |
[dBm-এ] সিগন্যাল RSSI-এর উচ্চ থ্রেশহোল্ডের থেকে বেশি হলে তবেই বিজ্ঞাপনদাতা দেখা গেছে বলে বিবেচনা করা হয়। অন্যথায়, ফার্মওয়্যারকে এমন আচরণ করতে হবে যেন এটি কখনও এটি দেখেনি। |
delivery_mode |
১ অক্টেট |
0x00 - immediate0x01 - on_found0x02 - batched
|
onfound_timeout |
২টি অক্টেট |
delivery_mode-এর মান on_found হলে তবেই
এটি বৈধ।[মিলি সেকেন্ডে] রিপোর্ট করার আগে ফার্মওয়্যারের অতিরিক্ত বিজ্ঞাপন সংগ্রহ করার জন্য সময়। |
onfound_timeout_cnt |
১ অক্টেট |
delivery_mode-এর মান
on_found হলে তবেই এটি বৈধ হবে।[count] onFound-এ কোনও বিজ্ঞাপন onfound_timeout সময় ধরে ফার্মওয়্যারে
থেকে গেলে, এটি কিছু বিজ্ঞাপন সংগ্রহ করবে এবং
সংখ্যা চেক করা হবে। সংখ্যাটি onfound_timeout_cnt-এর বেশি হলে, তার ঠিক পরেই OnFound
রিপোর্ট করা হয়।
|
rssi_low_thresh |
১টি অক্টেট |
delivery_mode-এর মান
on_found হলে তবেই এটি বৈধ হবে।[in dBm] বিজ্ঞাপনদাতার প্যাকেটকে দেখা হয়নি বলে বিবেচনা করা হয় যদি প্রাপ্ত প্যাকেটের RSSI, RSSI লো থ্রেশহোল্ডের উপরে না থাকে। |
onlost_timeout |
২টি অক্টেট |
delivery_mode-এর মান
on_found হলে তবেই এটি বৈধ হবে।[মিলি সেকেন্ডে] কোনও বিজ্ঞাপন খুঁজে পাওয়ার পরে, সেটি যদি lost_timeout সময় ধরে
একটানা না দেখা যায়, তাহলে সেটি সঙ্গে সঙ্গে
হারিয়ে গেছে বলে রিপোর্ট করা হবে।
|
num_of_tracking_entries |
২টি অক্টেট |
delivery_mode-এর মান
on_found হলে তবেই এটি বৈধ হবে।[count] প্রতি ফিল্টারে ট্র্যাক করার জন্য বিজ্ঞাপনদাতার মোট সংখ্যা। |
নেগেটিভ ভ্যালু দেখানোর জন্য RSSI ভ্যালুতে অবশ্যই ২-এর কমপ্লিমেন্ট ব্যবহার করতে হবে।
হোস্টকে একাধিক ফিল্টার কনফিগার করতে হবে, যেখানে
APCF_Application_Address_type 0x02-এ সেট করা থাকবে (সব
ব্রডকাস্টার অ্যাড্রেসের জন্য) যাতে বিভিন্ন ফিল্টার কম্বিনেশন ম্যানেজ করা যায়।
ফিল্টার করা, ব্যাচিং ও রিপোর্টিং হল একে অপরের সাথে সম্পর্কিত ধারণা। প্রতিটি
বিজ্ঞাপন এবং সংশ্লিষ্ট স্ক্যান রেসপন্সকে সবকটি ফিল্টারের মাধ্যমে
একটির পর একটি করে যেতে হবে। তাই, ফলাফল সংক্রান্ত অ্যাকশন
(delivery_mode) ফিল্টারিংয়ের সাথে ঘনিষ্ঠভাবে যুক্ত। ডেলিভারি
মোডগুলি হল: report_immediately,
batch এবং onFound। OnLost ভ্যালু OnFound-এর সাথে সম্পর্কিত, কারণ
OnFound হারিয়ে গেলে এটি এর পরে আসবে।
এই প্রসেসিং ফ্লোতে কনসেপচুয়াল মডেল দেখানো হয়েছে:
বিজ্ঞাপন (বা স্ক্যান রেসপন্স) ফ্রেম পাওয়া গেলে, এটি সিরিয়াল অর্ডারে সব ফিল্টারে প্রয়োগ করা হয়। এটি সম্ভব যে একটি বিজ্ঞাপন একটি ফিল্টারের উপর ভিত্তি করে অবিলম্বে রিপোর্টিং করতে পারে এবং অন্য ফিল্টার অ্যাকশনের কারণে একই বিজ্ঞাপনের ব্যাচিং করতে পারে।
RSSI লেভেল থ্রেশহোল্ড (হাই ও লো) কন্ট্রোলার কোনও বৈধ প্যাকেট পেলেও, ফিল্টার প্রসেসিংয়ের জন্য ফ্রেম কখন দেখা যাবে তা কন্ট্রোল করার ক্ষমতা দেয়। ডেলিভারি মোড অবিলম্বে বা ব্যাচ করা হিসেবে সেট করা থাকলে, কন্ট্রোলার প্রসেসিংয়ের জন্য ফ্রেমের RSSI বিবেচনা করা হয়। বিভিন্ন অ্যাপের জন্য আলাদা আলাদা রিপোর্টিং ও ব্যাচিং আচরণ প্রয়োজন। এর ফলে একাধিক অ্যাপ সরাসরি রিপোর্ট করতে এবং/অথবা ফার্মওয়্যারে ফলাফল ব্যাচ করতে পারে, একই সাথে। এর একটি উদাহরণ হল, যখন কোনও অ্যাপ থেকে ব্যাচ স্ক্যান অ্যাক্টিভ থাকে এবং পরে অন্য কোনও অ্যাপের মাধ্যমে একটি সাধারণ LE স্ক্যান ইস্যু করা হয়। ব্যাচ স্ক্যান ইস্যু করার আগে, ফ্রেমওয়ার্ক/অ্যাপ উপযুক্ত ফিল্টার সেট করে। পরে, দ্বিতীয় অ্যাপটি নিয়মিত স্ক্যান ইস্যু করলে, আগের ব্যাচিং চলতে থাকে। তবে, নিয়মিত স্ক্যান করার কারণে, এটি LE স্ক্যান কমান্ডের সাথে ধারণাগতভাবে একটি নাল ফিল্টার (আগে থেকে থাকা সব ফিল্টার সহ) যোগ করার মতো। অ্যাক্টিভ থাকলে LE স্ক্যান কমান্ড প্যারামিটার অগ্রাধিকার পায়। সাধারণ LE স্ক্যান বন্ধ করা থাকলে, কন্ট্রোলার আগের ব্যাচ স্ক্যানে ফিরে যাবে, যদি সেটি থাকে।
কনফিগার করা ফিল্টারের উপর ভিত্তি করে OnFound ডেলিভারি মোড কাজ করে। A
কম্বিনেশন যা ফিল্টারের অ্যাকশনকে সফলভাবে ট্রিগার করে, সেটি onLost-এর জন্য ট্র্যাক
করার এন্টিটি হিসেবে বিবেচিত হয়। এর সাথে সম্পর্কিত ইভেন্ট হল LE
বিজ্ঞাপন ট্র্যাকিং সাব-ইভেন্ট।
ফিল্টারের OnFound/OnLost ট্রানজিশন (চালু করা থাকলে) নিম্নলিখিত
ধরনের হবে:
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0x01 - APCF Set Filtering Parameters |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১ অক্টেট | ফিল্টার টেবিলে উপলভ্য এন্ট্রির সংখ্যা |
LE_APCF_Command: broadcast_address_sub_cmd
এই সাবকমান্ডটি কোনও বিজ্ঞাপনদাতার ঠিকানা যোগ করতে বা মুছে দিতে অথবা অন-চিপ ফিল্টারিংয়ের জন্য বিজ্ঞাপনদাতার ঠিকানা তালিকা পরিষ্কার করতে ব্যবহার করা হয়।
সাব OCF: 0x02
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১ অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছে দিন মুছুন বিকল্পটি নির্দিষ্ট ফিল্টারে নির্দিষ্ট ব্রডকাস্টার অ্যাড্রেস মুছে দেবে। মুছে দিন নির্দিষ্ট ফিল্টারে থাকা সব ব্রডকাস্টার অ্যাড্রেস মুছে দেবে। |
APCF_Filter_Index |
১ অক্টেট | ইন্ডেক্স ফিল্টার করুন (০, max_filter-1) |
APCF_Broadcaster_Address |
৬ অক্টেট | ব্রডকাস্টার অ্যাড্রেস তালিকা থেকে যোগ বা মুছে ফেলার জন্য ৬-বাইট ডিভাইস অ্যাড্রেস তালিকা |
APCF_Application_Address_type |
১টি অক্টেট |
0x00: পাবলিক 0x01: র্যান্ডম 0x02: প্রযোজ্য নয় (অ্যাড্রেসের ধরন উপেক্ষা করুন) পরিচয় অ্যাড্রেসের ধরন (0x02, 0x03) সহ বিজ্ঞাপনের রিপোর্ট ফিল্টার করতে। ঠিকানার ধরন 0x02 ও 0x03 সহ বিজ্ঞাপন রিপোর্ট পেতে, এই ফিল্ডটি 0x02 হিসেবে সেট করুন: NA (ঠিকানার ধরন উপেক্ষা করুন)। |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0x02 - APCF ব্রডকাস্টার অ্যাড্রেস |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১টি অক্টেট | ব্রডকাস্ট অ্যাড্রেস টেবিলে এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: service_uuid_sub_cmd
এই সাবকমান্ডটি কোনও পরিষেবা UUID যোগ করতে বা মুছে দিতে অথবা অন-চিপ ফিল্টারিংয়ের জন্য পরিষেবা UUID তালিকা পরিষ্কার করতে ব্যবহার করা হয়।
Sub OCF: 0x03
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১টি অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছুন মুছুন বিকল্পটি নির্দিষ্ট ফিল্টারে নির্দিষ্ট পরিষেবা UUID অ্যাড্রেস মুছে দেবে। মুছে দিলে নির্দিষ্ট ফিল্টারে থাকা সব পরিষেবা UUID মুছে যাবে। |
APCF_Filter_Index |
১টি অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
APCF_UUID |
২,৪,১৬ অক্টেট | তালিকায় যোগ করা বা তালিকা থেকে মুছে ফেলার জন্য পরিষেবা UUID (১৬-বিট, ৩২-বিট বা ১২৮-বিট)। |
APCF_UUID_MASK |
২,৪,১৬ অক্টেট |
তালিকায় যোগ করার জন্য পরিষেবা UUID মাস্ক (১৬-বিট, ৩২-বিট বা ১২৮-বিট)।
এটির দৈর্ঘ্য APCF_UUID.-এর সমান হতে হবে
|
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0x03 - APCF Service UUID |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১ অক্টেট | Service UUID টেবিলে এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: solicitation_uuid_sub_cmd
এই সাবকমান্ডটি কোনও সলিসিটেশন UUID যোগ করতে বা মুছে ফেলতে অথবা অন-চিপ ফিল্টারিংয়ের জন্য সলিসিটেশন UUID তালিকা পরিষ্কার করতে ব্যবহার করা হয়।
সাব OCF: 0x04
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১ অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছুন 'মুছুন' বিকল্প নির্দিষ্ট ফিল্টারে সলিসিটেশন UUID অ্যাড্রেস মুছে দেবে। মুছে দিলে নির্দিষ্ট ফিল্টারে থাকা সব সলিসিটেশন UUID মুছে যাবে। |
APCF_Filter_Index |
১ অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
APCF_UUID |
২,৪,১৬ অক্টেট | তালিকায় যোগ করতে বা তালিকা থেকে সরাতে সলিসিটেশন UUID (১৬-বিট, ৩২-বিট বা ১২৮-বিট) । |
APCF_UUID_MASK |
২,৪,১৬ অক্টেট |
তালিকায় যোগ করার জন্য সলিসিটেশন UUID মাস্ক (১৬-বিট, ৩২-বিট বা ১২৮-বিট)। এটির দৈর্ঘ্য APCF_UUID-এর সমান হতে হবে।
|
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১টি অক্টেট | 0x04 - APCF অনুরোধ UUID |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১টি অক্টেট | অনুরোধ UUID টেবিলে এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: local_name_sub_cmd
এই সাবকমান্ডটি কোনও স্থানীয় নামের স্ট্রিং যোগ করতে বা মুছে দিতে অথবা অন-চিপ ফিল্টারিংয়ের জন্য স্থানীয় নামের স্ট্রিং তালিকা পরিষ্কার করতে ব্যবহার করা হয়।
Sub OCF: 0x05
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১ অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছুন 'মুছুন' বিকল্পটি নির্দিষ্ট ফিল্টারে নির্দিষ্ট স্থানীয় নামের স্ট্রিং মুছে দেবে। Clear নির্দিষ্ট ফিল্টারে থাকা সব লোকাল নামের স্ট্রিং মুছে দেবে। |
APCF_Filter_Index |
১ অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
APCF_LocName_Mandata_or_SerData |
পরিবর্তনযোগ্য সাইজ |
স্থানীয় নামের জন্য অক্ষর স্ট্রিং। মনে রাখবেন:
|
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0x05 - APCF Local Name |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১ অক্টেট | স্থানীয় নামের টেবিলে এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: manf_data_sub_cmd
এই সাবকমান্ডটি প্রস্তুতকারকের ডেটা স্ট্রিং যোগ করতে বা মুছতে অথবা অন-চিপ ফিল্টারিংয়ের জন্য প্রস্তুতকারকের ডেটা স্ট্রিং তালিকা মুছে ফেলতে ব্যবহৃত হয়।
সাব OCF: 0x06
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১ অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছে দিন মুছে দিন, নির্দিষ্ট ফিল্টারে নির্দিষ্ট ম্যানুফ্যাকচারার ডেটা স্ট্রিং মুছে দেবে। মুছে দিন নির্দিষ্ট ফিল্টারে থাকা সব ম্যানুফ্যাকচারার ডেটা স্ট্রিং মুছে দেবে। |
APCF_Filter_Index |
১টি অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
APCF_LocName_Mandata_or_SerData |
পরিবর্তনশীল সাইজ |
প্রস্তুতকারকের ডেটার জন্য অক্ষর স্ট্রিং। মনে রাখবেন:
|
APCF_ManData_Mask |
পরিবর্তনযোগ্য সাইজ |
তালিকায় যোগ করার জন্য প্রস্তুতকারকের ডেটা মাস্ক। এটির দৈর্ঘ্য APCF_LocName_or_ManData_or_SerData-এর
সমান হতে হবে।
|
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0x06 - APCF প্রস্তুতকারকের ডেটা |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১ অক্টেট | প্রস্তুতকারকের ডেটা টেবিলে এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: service_data_sub_cmd
এই সাবকমান্ডটি অন-চিপ ফিল্টারিংয়ের জন্য একটি পরিষেবা ডেটা স্ট্রিং যোগ করতে বা মুছতে বা পরিষেবা ডেটা স্ট্রিং তালিকা সাফ করতে ব্যবহৃত হয়।
সাব OCF: 0x07
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১ অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছে দিন মুছে দিন নির্দিষ্ট ফিল্টারে নির্দিষ্ট পরিষেবা ডেটা স্ট্রিং মুছে দেবে। Clear নির্দিষ্ট ফিল্টারে থাকা সব পরিষেবা ডেটা স্ট্রিং মুছে দেবে। |
APCF_Filter_Index |
১টি অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
APCF_LocName_Mandata_or_SerData |
পরিবর্তনযোগ্য সাইজ |
পরিষেবা ডেটার জন্য একটি ক্যারেক্টার স্ট্রিং। মনে রাখবেন:
|
APCF_LocName_Mandata_or_SerData_Mask |
ভেরিয়েবল সাইজ |
তালিকায় যোগ করার জন্য পরিষেবা ডেটা মাস্ক। এটির দৈর্ঘ্য APCF_LocName_or_ManData_or_SerData.-এর
সমান হতে হবে
|
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0x07 - APCF সার্ভিস ডেটা |
APCF_Action |
১টি অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১টি অক্টেট | পরিষেবা ডেটা টেবিলের জন্য এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: transport_discovery_service_sub_cmd
এই সাবকমান্ডটি ট্রান্সপোর্ট ডিসকভারি সার্ভিস (TDS) ফিল্টার যোগ করতে বা মুছে দিতে অথবা অন-চিপ ফিল্টারিংয়ের জন্য TDS ফিল্টার তালিকা
পরিষ্কার করতে ব্যবহার করা হয়। এই কমান্ড কাজ করে কিনা তা চেক করতে
read_extended_features_sub_cmd ব্যবহার করুন।
সাব OCF: 0x08
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১টি অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছুন 'মুছুন' বিকল্পটি নির্দিষ্ট ফিল্টারে নির্দিষ্ট TDS ফিল্টার মুছে দেবে। 'মুছুন' বিকল্পে ক্লিক করলে নির্দিষ্ট ফিল্টারে থাকা সব TDS ফিল্টার মুছে যাবে। |
APCF_Filter_Index |
১ অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
Org_ID |
১ অক্টেট | Bluetooth SIG-এর দ্বারা সংজ্ঞায়িত সংস্থার আইডি। APCF_Action-এর মান 0x02 (পরিষ্কার) হলে উপেক্ষা করুন। |
TDS_Flags |
১টি অক্টেট | ম্যাচ করার জন্য TDS ফ্ল্যাগ। APCF_Action 0x02 (Clear) হলে উপেক্ষা করুন। |
TDS_Flags_Mask |
১ অক্টেট | TDS ফ্ল্যাগের জন্য মাস্ক। APCF_Action-এর মান 0x02 (পরিষ্কার) হলে উপেক্ষা করুন। |
Transport_Data_Length |
১ অক্টেট | Transport_Data-এর দৈর্ঘ্য। APCF_Action-এর মান 0x02 (পরিষ্কার) হলে উপেক্ষা করুন। |
Transport_Data |
পরিবর্তনযোগ্য সাইজ | Transport_Data_Length-এর ভিত্তিতে বিভিন্ন সাইজের। ট্রান্সপোর্ট ব্লক ডেটা ম্যাচ করতে হবে। APCF_Action 0x02 (Clear) হলে উপেক্ষা করুন। |
Transport_Data_Mask_Length |
১টি অক্টেট | Transport_Data_Mask-এর দৈর্ঘ্য। এই ভ্যালু Transport_Data_Length-এর সমান হতে হবে। APCF_Action-এর মান 0x02 (পরিষ্কার) হলে উপেক্ষা করুন। |
Transport_Data_Mask |
ভেরিয়েবল সাইজ | Transport_Data_Mask_Length-এর উপর ভিত্তি করে পরিবর্তনশীল সাইজ। ট্রান্সপোর্ট ব্লক ডেটার জন্য মাস্ক। Transport_Data-এর সমান দৈর্ঘ্য হতে হবে। APCF_Action-এর মান 0x02 (পরিষ্কার) হলে উপেক্ষা করুন। |
Meta_Data_Type |
১টি অক্টেট |
0x00 - ভুল 0x01 - ওয়াই-ফাই NAN হ্যাশ APCF_Action 0x02 (পরিষ্কার) হলে এড়িয়ে যান।
|
Meta_Data_Length |
১টি অক্টেট | Meta_Data-এর দৈর্ঘ্য। APCF_Action 0x02 (Clear) হলে উপেক্ষা করুন। |
Meta_Data |
পরিবর্তনযোগ্য সাইজ | Meta_Data_Length-এর ভিত্তিতে বিভিন্ন সাইজের। ম্যাচ করার জন্য মেটাডেটা। APCF_Action-এর মান 0x02 (পরিষ্কার) হলে উপেক্ষা করুন। |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0x08 - APCF Transport Discovery Service |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১টি অক্টেট | TDS ফিল্টার টেবিলে এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: ad_type_sub_cmd
এই সাবকমান্ডটি AD-এর ধরন যোগ করতে বা মুছে দিতে অথবা অন-চিপ ফিল্টারিংয়ের জন্য AD-এর ধরন
তালিকা পরিষ্কার করতে ব্যবহার করা হয়। এই কমান্ড
কাজ করে কিনা তা চেক করতে
read_extended_features_sub_cmd ব্যবহার করুন।
APCF_AD_DATA_Length-এর মান ০ হলে, AD ডেটা ও AD ডেটা মাস্কের তুলনা না করেই APCF_AD_TYPE ফিল্টার করুন।
প্রাপ্ত ADV প্যাকেটের ডেটার দৈর্ঘ্য AD_DATA_LENGTH-এর বেশি হলে, শুধুমাত্র AD ডেটার প্রথম AD_DATA_LENGTH বাইট তুলনা করুন
এবং বাকি ডেটা উপেক্ষা করুন।
Sub OCF: 0x09
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Action |
১ অক্টেট |
0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছে দিন মুছে দিন নির্দিষ্ট ফিল্টারে নির্দিষ্ট AD ধরন মুছে দেবে। মুছে দিলে নির্দিষ্ট ফিল্টারে থাকা সব ধরনের বিজ্ঞাপন মুছে যাবে। |
APCF_Filter_Index |
১ অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
APCF_AD_TYPE |
১ অক্টেট | তালিকায় যোগ করা বা তালিকা থেকে মুছে ফেলার জন্য AD-এর ধরন। উপেক্ষা করুন যখন APCF_Action হল 0x02 (পরিষ্কার করুন) |
APCF_AD_DATA_Length |
১ অক্টেট |
0x00 - মানে ডেটা কন্টেন্ট ফিল্টার করবেন নাAPCF_Action 0x02 (পরিষ্কার) হলে উপেক্ষা করুন
|
APCF_AD_DATA |
পরিবর্তনযোগ্য সাইজ |
APCF_AD_DATA_Length-এর উপর ভিত্তি করে পরিবর্তনযোগ্য সাইজের APCF_Action-এর মান 0x02 (পরিষ্কার) হলে উপেক্ষা করুন |
APCF_AD_DATA_MASK |
পরিবর্তনযোগ্য সাইজ |
পরিবর্তনশীল-সাইজ, APCF_AD_DATA_Length-এর উপর ভিত্তি করেAPCF_Action 0x02 (মুছুন) হলে উপেক্ষা করুনএটির দৈর্ঘ্য APCF_AD_DATA-এর সমান হতে হবে।
|
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১টি অক্টেট | 0x09 - APCF AD Type |
APCF_Action |
১ অক্টেট | কমান্ডের APCF_Action ইকো করা |
APCF_AvailableSpaces |
১ অক্টেট | বিজ্ঞাপনের ধরন সংক্রান্ত টেবিলে এখনও উপলভ্য ফ্রি এন্ট্রির সংখ্যা |
LE_APCF_Command: read_extended_features_sub_cmd
এই সাবকমান্ডটি বর্ধিত APCF ফিচার পড়ার জন্য ব্যবহার করা হয়।
Sub OCF: 0xFF
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| প্রযোজ্য নয় | কমান্ড প্যারামিটার খালি আছে। |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
APCF_opcode |
১ অক্টেট | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features |
২ অক্টেট |
কাজ করে এমন এক্সটেন্ডেড ফিচারের জন্য বিট মাস্ক:
বিটের ভ্যালু
|
কন্ট্রোলার অ্যাক্টিভিটি ও এনার্জি সংক্রান্ত তথ্য কমান্ড
এই তথ্যের উদ্দেশ্য হল, অ্যাপ ও ফ্রেমওয়ার্কে কী ঘটছে তার সাথে BT কন্ট্রোলার ও এর ম্যাক্রো স্টেট সহ সব কম্পোনেন্টের মোট অ্যাক্টিভিটি বিশ্লেষণ করার জন্য উচ্চতর হোস্ট সিস্টেম ফাংশন। এটি করতে, BT স্ট্যাক ও কন্ট্রোলার থেকে নিম্নলিখিত তথ্য প্রয়োজন:
- BT স্ট্যাক: কন্ট্রোলারের বর্তমান ম্যাক্রো-অপারেশনাল স্ট্যাটাস সম্পর্কে রিপোর্ট করা হচ্ছে
- ফার্মওয়্যার: সামগ্রিক অ্যাক্টিভিটি ও এনার্জি সংক্রান্ত তথ্য রিপোর্ট করা
ব্যবহারকারীর লেভেলে নির্ধারিত BT হোস্ট স্ট্যাক ম্যাক্রো স্টেট:
- আইডল: [page scan, LE advt, inquiry scan, LE scan]
- স্ক্যান: [paging/inquiry/trying to connect]
- অ্যাক্টিভ: [ACL লিঙ্ক চালু, SCO লিঙ্ক চলছে, স্নিফ মোড]
কন্ট্রোলার তার লাইফ সাইকেলে যেসব অ্যাক্টিভিটি ট্র্যাক করে সেগুলি হল Tx টাইম, Rx টাইম, আইডল টাইম এবং মোট শক্তি খরচ। হোস্ট থেকে পড়া হলে এগুলি মুছে ফেলা হয়।
LE_Get_Controller_Activity_Energy_Info
এটি ভেন্ডর-নির্দিষ্ট কমান্ড।
OCF: 0x159
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| প্রযোজ্য নয় | কমান্ড প্যারামিটার খালি |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
total_tx_time_ms |
৪টি অক্টেট | Tx পারফর্ম করার মোট সময় |
total_rx_time_ms |
৪টি অক্টেট | Rx পারফর্ম করার মোট সময় |
total_idle_time_ms |
৪টি অক্টেট | আইডল অবস্থায় মোট সময় (স্লিপ নয় এমন কম পাওয়ার স্টেট) |
total_energy_used |
৪টি অক্টেট | মোট ব্যবহৃত শক্তি [কারেন্ট (mA), ভোল্টেজ (V) ও সময় (ms)-এর গুণফল] |
LE এক্সটেন্ডেড সেট স্ক্যান প্যারামিটার কমান্ড
কন্ট্রোলারে আরও বড় স্ক্যান উইন্ডো ও ইন্টারভ্যাল চালু করতে এই কমান্ড ব্যবহার করা যেতে পারে। BT Core 5.2 স্পেসিফিকেশন অনুযায়ী, স্ক্যান উইন্ডো ও ইন্টারভ্যালের সর্বোচ্চ সীমা ১০.২৪ সেকেন্ড, যা অ্যাপের ক্ষেত্রে ১০.২৪ সেকেন্ডের বেশি স্ক্যান ইন্টারভ্যালে বাধা সৃষ্টি করে।
বেস রেফারেন্স: BT Core 5.2 স্পেসিফিকেশন, পৃষ্ঠা ২৪৯৩ (LE Set Scan প্যারামিটার কমান্ড)
OCF: 0x15A
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
LE_Ex_Scan_Type |
১ অক্টেট |
0x00 - প্যাসিভ স্ক্যানিং। কোনও SCAN_REQ প্যাকেট পাঠানো হবে না (ডিফল্ট)।0x01 - অ্যাক্টিভ স্ক্যানিং। SCAN_REQটি প্যাকেট পাঠানো হতে পারে।
|
LE_Ex_Scan_Interval |
৪টি অক্টেট |
কন্ট্রোলার তার শেষ LE স্ক্যান শুরু করার পর থেকে
পরবর্তী LE স্ক্যান শুরু করার মধ্যবর্তী সময়কে বোঝায়। রেঞ্জ: 0x0004 থেকে 0x00FFFFFF ডিফল্ট: 0x0010 (১০ মিলিসেকেন্ড) সময় = N * ০.৬২৫ মিলিসেকেন্ড সময়ের রেঞ্জ: ২.৫ মিলিসেকেন্ড থেকে ১০৪৪২.২৫ সেকেন্ড |
LE_Ex_Scan_Window |
৪টি অক্টেট |
LE স্ক্যানের সময়সীমা। LE_Scan_Window-এর মান LE_Scan_Interval-এর থেকে ছোট
বা সমান হতে হবে।
রেঞ্জ: 0x0004 থেকে 0xFFFF ডিফল্ট: 0x0010 (১০ মিলি সেকেন্ড) সময় = N * ০.৬২৫ মিলি সেকেন্ড সময়সীমা: ২.৫ মিলি সেকেন্ড থেকে ৪০.৯৫ সেকেন্ড |
Own_Address_Type |
১টি অক্টেট |
0x00 - পাবলিক ডিভাইস অ্যাড্রেস (ডিফল্ট) 0x01 - র্যান্ডম ডিভাইস অ্যাড্রেস |
LE_Ex_Scan_Filter_Policy |
0x00 - সব বিজ্ঞাপন প্যাকেট গ্রহণ করুন (ডিফল্ট)। এই ডিভাইসের জন্য নয় এমন
বিজ্ঞাপন প্যাকেট উপেক্ষা করা
হবে। 0x01 - সাদা তালিকায় নেই এমন ডিভাইস থেকে আসা বিজ্ঞাপন প্যাকেট উপেক্ষা করুন শুধুমাত্র তালিকা। এই ডিভাইসের জন্য নয় এমন নির্দেশিত বিজ্ঞাপনের প্যাকেট উপেক্ষা করা হবে। |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
কন্ট্রোলার ডিবাগ তথ্য কমান্ড পাওয়া
এই তথ্য এলিমেন্টের উদ্দেশ্য হল, পোস্ট-প্রসেসিং ও বিশ্লেষণের জন্য, বাইনারি ফর্মে, হোস্টের মাধ্যমে কন্ট্রোলার ডিবাগ তথ্য সংগ্রহ করা। এটি অন-ফিল্ড সমস্যা ডিবাগ করতে সাহায্য করে এবং বিশ্লেষণের জন্য তথ্য লগ করতে ইঞ্জিনিয়ারদের একটি টুলকিট প্রদান করে। কোনও কন্ট্রোলার তথ্য প্রদান করতে পারে যখন ইভেন্টের মাধ্যমে কোনও হোস্ট অনুরোধ করে (কন্ট্রোলার ডিবাগ তথ্য সাবইভেন্ট) অথবা কন্ট্রোলার চাইলে স্বয়ংক্রিয়ভাবে। এর ব্যবহারিক উদাহরণ হল ফার্মওয়্যারের স্ট্যাটাস সংক্রান্ত তথ্য, ক্র্যাশ ডাম্প সংক্রান্ত তথ্য, লগিং সংক্রান্ত তথ্য ইত্যাদি সম্পর্কে রিপোর্ট করা।
OCF: 0x15B
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| N/A | কমান্ড প্যারামিটারের খালি তালিকা |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
A2DP হার্ডওয়্যার অফলোড সাপোর্ট
A2DP অফলোড ফিচার, BT কন্ট্রোলারের সাথে অ্যাটাচ করা অডিও প্রসেসরে A2DP অডিও এনকোডিং প্রসেসের অফলোডকে সাপোর্ট করে। এনকোড করা অডিও ডেটা স্ট্রিম সরাসরি অডিও প্রসেসর থেকে BT কন্ট্রোলারে পাস করে, BT হোস্টের কোনও ভূমিকা থাকে না। A2DP সেশনের কনফিগারেশন ও কন্ট্রোলের জন্য BT হোস্ট এখনও দায়বদ্ধ। কমান্ডের দুটি ভার্সন উপলভ্য। Sub OCF 0x01-0x02 সহ লিগ্যাসি কমান্ড শুধুমাত্র ওপেন-সোর্স কোডেক সাপোর্ট করে। Sub-OCF 0x03-0x04 সহ ভার্সনগুলি কনফিগার করা কোডেকের ক্ষেত্রে অ্যাগনস্টিক।
OCF: 0x15D
A2DP অফলোড (লেগ্যাসি) শুরু করা
সাব OCF: 0x01
A2DP অফলোড প্রসেস কনফিগার করতে এবং A2DP স্ট্রিম শুরু করতে এই কমান্ড ব্যবহার করুন।
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Codec |
৪টি অক্টেট |
কোডেক টাইপ নির্দিষ্ট করে 0x01 - SBC 0x02 - AAC 0x04 - APTX 0x08 - APTX HD 0x10 - LDAC 0x20 - Opus |
Max_Latency |
২টি অক্টেট | সর্বাধিক অনুমোদিত লেটেন্সি (মিলিসেকেন্ডে)। শূন্য ভ্যালু ফ্ল্যাশ করার সুবিধা বন্ধ করে দেয়। |
SCMS-T_Enable |
২টি অক্টেট |
অক্টেট ০: ফ্ল্যাগ যা SCMS-T হেডার যোগ করা চালু করে।
অকটেট ১: SCMS-T হেডার চালু থাকলে তার ভ্যালু। |
Sampling_Frequency |
৪টি অক্টেট |
0x01 - 44100 Hz 0x02 - 48000 Hz 0x04 - 88200 Hz 0x08 - 96000 Hz |
Bits_Per_Sample |
১ অক্টেট |
0x01 - স্যাম্পেল পিছু ১৬ বিট 0x02 - স্যাম্পেল পিছু ২৪ বিট 0x04 - স্যাম্পেল পিছু ৩২ বিট |
Channel_Mode |
১ অক্টেট |
0x01 - Mono 0x02 - Stereo |
Encoded_Audio_Bitrate |
৪টি অক্টেট |
বিট প্রতি সেকেন্ডে এনকোড করা অডিও বিটরেট। 0x00000000 - The audio bitrate is not specified / unused. 0x00000001 - 0x00FFFFFF - এনকোড করা অডিও বিটরেট, বিট প্রতি সেকেন্ডে। 0x01000000 - 0xFFFFFFFF - রিজার্ভ করা আছে। |
Connection_Handle |
২টি অক্টেট | কনফিগার করা হচ্ছে এমন A2DP কানেকশনের কানেকশন হ্যান্ডেল |
L2CAP_Channel_ID |
২টি অক্টেট | এই A2DP কানেকশনের জন্য ব্যবহার করা হবে এমন L2CAP চ্যানেল আইডি |
L2CAP_MTU_Size |
২টি অক্টেট | এনকোড করা অডিও প্যাকেট সহ L2CAP MTU-এর সর্বাধিক সাইজ |
Codec_Information |
৩২ অক্টেট |
কোডেক-নির্দিষ্ট তথ্য।
SBC কোডেক:
A2DP v1.3-এ SBC কোডেক সম্পর্কিত নির্দিষ্ট তথ্যমূলক এলিমেন্ট দেখুন। AAC কোডেক:
A2DP v1.3-এ AAC কোডেক নির্দিষ্ট তথ্য এলিমেন্ট দেখুন LDAC কোডেক:
অক্টেট ০-৩: ভেন্ডর আইডি
অক্টেট ৪-৫: কোডেক আইডি
অকটেট ৬: বিটরেট ইন্ডেক্স:
অকটেট ৭: LDAC চ্যানেল মোড অকটেট ৮-৩১: রিজার্ভ করা আছে Opus কোডেক:
অকটেট ০-৩: ভেন্ডর আইডি
অক্টেট ৪-৫: কোডেক আইডি অকটেট ৬-৩১: সংরক্ষিত অন্যান্য সব কোডেক: অক্টেট ০-৩১: সংরক্ষিত |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Sub_Opcode |
১ অক্টেট | 0x01 - A2DP অফলোড শুরু করুন |
A2DP অফলোড শুরু করুন
সাব OCF: 0x03
A2DP অফলোড প্রসেস কনফিগার করতে এবং A2DP স্ট্রিম শুরু করতে এই কমান্ড ব্যবহার করুন।
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Connection Handle |
২টি অক্টেট | অ্যাক্টিভ HCI কানেকশনের হ্যান্ডেল |
L2CAP_Channel_ID |
২টি অক্টেট | A2DP স্ট্রিমিংয়ের জন্য খোলা L2CAP চ্যানেলের শনাক্তকারী |
Data_Path_Direction |
১ অক্টেট |
0x00 - আউটপুট (AVDTP সোর্স/মার্জ) 0x01 - ইনপুট (AVDTP সিঙ্ক/স্প্লিট) |
Peer_MTU |
২টি অক্টেট | পিয়ার নোডের সাথে আলোচনা করে L2CAP প্যাকেটের সর্বাধিক সাইজ নির্ধারণ করা হয়। |
CP_Enable_SCMS_T |
১ অক্টেট |
0x00 - SCMS-T কন্টেন্ট সুরক্ষা হেডার বন্ধ করুন 0x01 - SCMS-T কন্টেন্ট সুরক্ষা হেডার চালু করুন |
CP_Header_SCMS_T |
১ অক্টেট |
SCMS-T কন্টেন্ট সুরক্ষা হেডার চালু করা থাকলে (CP_SCMS_T_Enable
0x01 হিসেবে সেট করা থাকলে), অডিও কন্টেন্টের আগে থাকা হেডার ভ্যালুকে (A2DP, বিভাগ 3.2.1-2
দেখুন) Bluetooth Assigned Numbers, বিভাগ
6.3.2 অনুযায়ী নির্ধারণ করে।SCMS-T কন্টেন্ট সুরক্ষা চালু না থাকলে উপেক্ষা করা হয়। |
Vendor_Specific_Parameters_Length |
১ অক্টেট |
ভেন্ডর নির্দিষ্ট প্যারামিটারের দৈর্ঘ্য, ০ থেকে ১২৮-এর মধ্যে। কোনও অতিরিক্ত প্যারামিটার প্রদান করা না হলে 0 ভ্যালু ব্যবহার করা হয়। |
Vendor_Specific_Parameters |
০-১২৮ অক্টেট |
Bluetooth Audio HAL-এর দেওয়া ভেন্ডর স্পেসিফিক প্যারামিটার,
CodecParameters.vendorSpecificParameters[].
|
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Sub_Opcode |
১ অক্টেট | 0x03 - A2DP অফলোড শুরু করুন |
A2DP অফলোড বন্ধ করুন (পুরনো)
Sub OCF: 0x02
A2DP অফলোড স্ট্রিম বন্ধ করতে এই কমান্ড ব্যবহার করা হয়।
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| N/A | কমান্ড প্যারামিটার তালিকা খালি। |
এই কমান্ডের জন্য কোনও প্যারামিটার নির্দিষ্ট করা নেই।
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Sub_Opcode |
১টি অক্টেট | 0x02 - A2DP অফলোড বন্ধ করা |
A2DP অফলোড বন্ধ করুন
Sub OCF: 0x04
A2DP অফলোড স্ট্রিম বন্ধ করতে এই কমান্ড ব্যবহার করা হয়।
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Connection Handle |
২টি অক্টেট | অ্যাক্টিভ HCI কানেকশনের হ্যান্ডেল |
L2CAP_Channel_ID |
২টি অক্টেট | A2DP স্ট্রিমিংয়ের জন্য খোলা L2CAP চ্যানেলের শনাক্তকারী |
Data_Path_Direction |
১ অক্টেট |
0x00 - আউটপুট (AVDTP সোর্স/মার্জ) 0x01 - ইনপুট (AVDTP সিঙ্ক/স্প্লিট) |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Sub_Opcode |
১টি অক্টেট | 0x04 - Stop A2DP offload |
ব্লুটুথ কোয়ালিটি রিপোর্ট কমান্ড
BT কোয়ালিটি রিপোর্ট কমান্ড ফিচার, হোস্টকে ব্লুটুথ কোয়ালিটি ইভেন্ট সম্পর্কে রিপোর্ট করার জন্য ব্লুটুথ কন্ট্রোলারে মেকানিজম শুরু করে। আপনি চারটি বিকল্প চালু করতে পারবেন:
- কোয়ালিটি মনিটরিং মোড: কন্ট্রোলার হোস্টকে সময়ে সময়ে লিঙ্ক কোয়ালিটি সম্পর্কিত BQR সাব-ইভেন্ট পাঠায়।
- LSTO-এর কাছাকাছি: কানেক্ট করা BT ডিভাইস থেকে যদি লিঙ্ক সুপারভিশন টাইমআউট (LSTO) ভ্যালুর অর্ধেকের বেশি সময় ধরে কোনও প্যাকেট না পাওয়া যায়, তাহলে কন্ট্রোলার হোস্টকে একটি 'LSTO-এর কাছাকাছি' ইভেন্ট সম্পর্কে জানায়।
- A2DP অডিও কেটে কেটে যাওয়া: কন্ট্রোলার যখন কেটে কেটে যাওয়া অডিওর কারণ শনাক্ত করে, তখন কন্ট্রোলার হোস্টকে A2DP অডিও কেটে কেটে যাওয়া ইভেন্ট সম্পর্কে জানায়।
- (e)SCO ভয়েস চপি: কন্ট্রোলার যখন এমন কোনও কারণ শনাক্ত করে যার ফলে ভয়েস চপি হয়, তখন কন্ট্রোলার হোস্টকে (e)SCO ভয়েস চপি ইভেন্ট সম্পর্কে রিপোর্ট করে।
- রুট ইনফ্ল্যামেশন: HAL বা কন্ট্রোলার মারাত্মক সমস্যার সম্মুখীন হলে এবং ব্লুটুথ রিস্টার্ট করার প্রয়োজন হলে কন্ট্রোলার এই ইভেন্টটি স্ট্যাকে পাঠায়।
- LMP/LL মেসেজ ট্রেস: কন্ট্রোলার, হোস্টের সাথে হ্যান্ডশেক করার জন্য রিমোট ডিভাইসে LMP/LL মেসেজ পাঠায়।
- ব্লুটুথ মাল্টি-প্রোফাইল/কোএক্স শিডিউলিং ট্রেস: কন্ট্রোলার তার একাধিক ব্লুটুথ প্রোফাইল ম্যানেজ করা সংক্রান্ত শিডিউলিং তথ্য এবং হোস্টকে 2.4 Ghz ব্যান্ডে ওয়্যারলেস কোএক্সিস্টেন্স পাঠায়।
- কন্ট্রোলার ডিবাগ তথ্য মেকানিজম: চালু করা থাকলে, কন্ট্রোলার হোস্টকে কন্ট্রোলার ডিবাগ তথ্য সাবইভেন্টের মাধ্যমে ডিবাগ লগিং তথ্য স্বাধীনভাবে রিপোর্ট করতে পারে।
- LE অডিও চপি: কন্ট্রোলার যখন এমন কোনও কারণ শনাক্ত করে যার ফলে অডিও চপি হয়, তখন কন্ট্রোলার হোস্টকে LE অডিও চপি ইভেন্ট রিপোর্ট করে।
-
অ্যাডভান্সড RF স্ট্যাটিসটিক্স মোড: কন্ট্রোলার তার RF স্ট্যাটিসটিক্স সম্পর্কিত
তথ্য হোস্টকে জানায়, এর ফলে দুটি রিপোর্টের ব্যবহার সংক্রান্ত সম্ভাব্য পরিস্থিতি কাজ করে:
- পিরিওডিক রিপোর্ট
- ইভেন্ট ট্রিগার (স্ট্রিম শুরু/বন্ধ করা এবং লিঙ্ক কোয়ালিটি ইভেন্ট ট্রিগার)।
- কন্ট্রোলার হেলথ মনিটরিং মেকানিজম হোস্টকে স্বাস্থ্য সম্পর্কিত তথ্য প্রদান করে দু'ধরনের ইভেন্টের মাধ্যমে: পিরিয়ডিক রিপোর্ট ও ইভেন্ট-ট্রিগারড রিপোর্ট।
- ব্লুটুথ কোয়ালিটি রিপোর্ট কমান্ডের BQR_Report_Action: হোস্ট কোয়ালিটি মনিটরিং মোড, এনার্জি মনিটর মোড বা অ্যাডভান্সড RF স্ট্যাটিসটিক্স মোডের জন্য একবার কোয়েরি পেতে এই HCI কমান্ড ব্যবহার করতে পারে।
OCF: 0x15E
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
BQR_Report_Action |
১টি অক্টেট |
BQR_Quality_Event_Mask প্যারামিটারে সেট করা কোয়ালিটি ইভেন্ট সম্পর্কে রিপোর্ট যোগ করা / মুছে দেওয়া
অথবা সব মুছে দেওয়ার অ্যাকশন।
0x00 - যোগ করুন
মুছে দিলে নির্দিষ্ট কোয়ালিটি ইভেন্ট রিপোর্টিং মুছে যাবে। |
BQR_Quality_Event_Mask |
৪টি অক্টেট |
বেছে নেওয়া কোয়ালিটি ইভেন্ট রিপোর্টিংয়ের জন্য বিট মাস্ক।
বিট ০: কোয়ালিটি মনিটরিং মোড চালু করতে সেট করা হয়। |
BQR_Minimum_Report_Interval |
২টি অক্টেট |
বেছে নেওয়া কোয়ালিটি ইভেন্টের জন্য কোয়ালিটি ইভেন্ট রিপোর্টিংয়ের
ন্যূনতম সময়সীমা নির্ধারণ করুন। কন্ট্রোলার ফার্মওয়্যারকে নির্ধারিত সময়সীমার মধ্যে
পরবর্তী ইভেন্ট সম্পর্কে রিপোর্ট করা উচিত নয়। ইন্টারভ্যাল সেটিং
যোগ করা হচ্ছে এমন কোয়ালিটি ইভেন্টের জন্য
নির্দিষ্ট ও প্রাসঙ্গিক হতে হবে।
ইউনিট: মিলি সেকেন্ড |
BQR_Vendor_Specific_Quality_Event_Mask |
৪টি অক্টেট |
বেছে নেওয়া ভেন্ডর-নির্দিষ্ট কোয়ালিটি ইভেন্ট রিপোর্টিংয়ের জন্য বিট মাস্ক।BQR_Quality_Event_Mask-এর বিট ১৫ সেট করা থাকলে তবেই এই প্যারামিটার বৈধ হয়।
বিট ০ ~ ৩১: সংরক্ষিত। |
BQR_Vendor_Specific_Trace_Mask |
৪টি অক্টেট |
বেছে নেওয়া ভেন্ডর-নির্দিষ্ট ট্রেস রিপোর্টিংয়ের জন্য বিট মাস্ক।BQR_Quality_Event_Mask-এর বিট ৩১ সেট করা থাকলে তবেই এই প্যারামিটার বৈধ হয়।
বিট ০ ~ ৩১: সংরক্ষিত। |
Report_interval_multiple |
৪টি অক্টেট |
BQR_Minimum_Report_Interval-এর জন্য মাল্টিপ্লায়ার। এই ভ্যালু >= ১ হলে,
BQR রিপোর্ট ইন্টারভ্যাল BQR রিপোর্ট ইন্টারভ্যাল = BQR_ন্যূনতম_রিপোর্ট_ইন্টারভ্যাল x Report_interval_multiple ফর্ম্যাট মেনে চলে। কন্ট্রোলার ফার্মওয়্যারকে অবশ্যই নির্ধারিত সময় ইন্টারভ্যালের মধ্যে পরবর্তী ইভেন্ট সম্পর্কে রিপোর্ট করতে হবে না। ইন্টারভ্যাল সেটিং বিশেষভাবে যোগ করা কোয়ালিটি ইভেন্টের জন্য নির্দিষ্ট করা হয়।
ইউনিট: ms BQR_Report_Interval-এর সেটিং কন্ট্রোলারের ক্ষমতার চেয়ে বেশি হলে, কন্ট্রোলারকে অবশ্যই কমান্ড সম্পূর্ণ হওয়ার পরে সর্বাধিক BQR_Report_Interval
সময় দেখাতে হবে।
|
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Current_Quality_Event_Mask |
৪টি অক্টেট |
বর্তমান বিট মাস্ক সেটিং নির্দেশ করে। বিট ০: কোয়ালিটি মনিটরিং মোড চালু করা আছে। Bit 1: Approaching LSTO event reporting is enabled. বিট ২: A2DP অডিও চপি ইভেন্ট রিপোর্টিং চালু আছে। বিট ৩: (e)SCO ভয়েস চপি ইভেন্ট রিপোর্টিং চালু আছে। বিট ৪: রুট ইনফ্লেমেশন ইভেন্ট রিপোর্টিং চালু করা আছে। বিট ৫: এনার্জি মনিটরিং মোড চালু করা আছে। বিট ৬: LE অডিও চপি ইভেন্ট রিপোর্টিং চালু করা আছে। বিট ৭: কানেক্ট না হওয়ার ইভেন্ট। বিট ৮: উন্নত RF স্ট্যাটিসটিক্স মোড ইভেন্ট ট্রিগার চালু করতে সেট করা আছে। বিট ৯: উন্নত RF স্ট্যাটিসটিক্স পিরিয়ডিক রিপোর্ট চালু করার জন্য সেট করা হয়। বিট ১০: কন্ট্রোলার হেলথ মনিটরিং মেকানিজম ইভেন্ট ট্রিগার চালু করার জন্য সেট করা হয়েছে। বিট ১১: কন্ট্রোলার হেলথ মনিটরিং মেকানিজম চালু করা হয়েছে, যা মাঝে মাঝে রিপোর্ট করে। বিট ১২ ~ ১৪: সংরক্ষিত। বিট ১৫: ভেন্ডর-নির্দিষ্ট কোয়ালিটি ইভেন্ট রিপোর্টিং চালু করা আছে। বিট ১৬: LMP/LL মেসেজ ট্রেস চালু করা আছে। বিট ১৭: ব্লুটুথ মাল্টি-লিঙ্ক/কোএক্স শিডিউলিং ট্রেস চালু করা আছে। বিট ১৮: কন্ট্রোলার ডিবাগ সংক্রান্ত তথ্য পাওয়ার মেকানিজম চালু করা আছে। বিট ১৯: অফলোড ডিবাগ তথ্যের জন্য সংরক্ষিত বিট ২০: UART ইতিহাস ডাম্প ইভেন্ট ট্রিগার বিট ২১ ~ ৩০: সংরক্ষিত। বিট ৩১: ভেন্ডর-নির্দিষ্ট ট্রেস চালু করা আছে। |
Current_Vendor_Specific_Quality_Event_Mask |
৪টি অক্টেট | বর্তমান বিট মাস্ক সেটিং নির্দেশ করে। |
Current_Vendor_Specific_Trace_Mask |
৪টি অক্টেট | বর্তমান বিট মাস্ক সেটিং নির্দেশ করে। |
BQR_Report_interval |
৪টি অক্টেট | বর্তমান বিট মাস্ক সেটিং নির্দেশ করে। |
Current_Vendor_Specific_Trace_Mask |
৪টি অক্টেট |
BQR_Report_interval-এর সেটিং। এটি অবশ্যই
BQR_Minimum_Report_Interval * Report_interval_multiple বা কন্ট্রোলারের সর্বোচ্চ সাপোর্ট ইন্টারভ্যালের
মধ্যে ন্যূনতম ভ্যালু হতে হবে। |
ডায়নামিক অডিও বাফার কমান্ড
ডায়নামিক অডিও বাফার বিভিন্ন পরিস্থিতির উপর ভিত্তি করে ব্লুটুথ কন্ট্রোলারে অডিও বাফারের সাইজ পরিবর্তন করে অডিও গ্লিচিং কমায়।
OCF: 0x15F
অডিও বাফার টাইম সংক্রান্ত সুবিধা পাওয়া
সাব OCF: 0x01
ব্লুটুথ কন্ট্রোলার থেকে অডিও বাফার টাইম ক্যাপাবিলিটি পেতে এই কমান্ড ব্যবহার করুন।
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| N/A | কমান্ড প্যারামিটার তালিকার কোনও আইটেম নেই |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Dynamic_Audio_Buffer_opcode |
১টি অক্টেট | 0x01 - অডিও বাফার টাইম পান |
Audio_Codec_Type_Supported |
৪টি অক্টেট |
সাপোর্ট করা কোডেক ধরনের জন্য বিট মাস্ক বিট ০ - SBC বিট ১ - AAC বিট ২ - APTX বিট ৩ - APTX HD বিট ৪ - LDAC বিট ৫-৩১ রিজার্ভ করা আছে |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা Bit 0 কোডেক ধরনের ডিফল্ট বাফার টাইম। Bit 0 কোডেক টাইপ কাজ না করলে এই ভ্যালু ০ হতে হবে। একক: মিলি.সে. |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা বিট 0 কোডেক টাইপের
সর্বাধিক বাফার টাইম। বিট 0 কোডেক টাইপ কাজ না করলে এই ভ্যালু 0 হবে। একক: মিলি.সে. |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা বিট 0 কোডেক টাইপের ন্যূনতম বাফার টাইম। বিট 0 কোডেক টাইপ কাজ না করলে এই ভ্যালু 0 হবে। একক: মিলি.সে. |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা Bit 1 কোডেক ধরনের ডিফল্ট বাফার টাইম। Bit 1 কোডেক টাইপ কাজ না করলে এই ভ্যালু ০ হতে হবে। একক: মিলি.সে. |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা Bit 1 কোডেক ধরনের সর্বাধিক বাফার টাইম। বিট ১ কোডেক টাইপ কাজ না করলে এই ভ্যালু ০ হবে। একক: মিলি.সে. |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা Bit 1 কোডেক ধরনের ন্যূনতম বাফার টাইম। Bit 1 কোডেক টাইপ কাজ না করলে এই ভ্যালু ০ হতে হবে। একক: মিলি.সে. |
| ...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা Bit 31 কোডেক ধরনের ডিফল্ট বাফার টাইম। বিট ৩১ কোডেক টাইপ কাজ না করলে এই ভ্যালু ০ হবে। একক: মিলি.সে. |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা Bit 31 কোডেক ধরনের সর্বাধিক বাফার টাইম। বিট ৩১ কোডেক টাইপ কাজ না করলে এই ভ্যালু ০ হবে। একক: মিলি.সে. |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
২টি অক্টেট |
Audio_Codec_Type_Supported-এ উল্লেখ করা Bit 31 কোডেক ধরনের ন্যূনতম বাফার টাইম। বিট ৩১ কোডেক টাইপ কাজ না করলে এই ভ্যালু ০ হবে। ইউনিট: মিলি.সে. |
অডিও বাফার টাইম সেট করা
সাব OCF: 0x02
ব্লুটুথ কন্ট্রোলারে অডিও বাফার টাইম সেট করতে এই কমান্ড ব্যবহার করুন।
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Audio_Codec_Buffer_Time |
২টি অক্টেট |
বর্তমানে ব্যবহৃত কোডেকের জন্য অনুরোধ করা অডিও বাফার টাইম। একক: মিলি সেকেন্ড |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Dynamic_Audio_Buffer_opcode |
১ অক্টেট | 0x02 - Set audio buffer time |
Audio_Codec_Buffer_Time |
২টি অক্টেট |
ব্লুটুথ কন্ট্রোলারে বর্তমান অডিও বাফার টাইম। একক: মিলি.সে. |
কানেকশন প্রক্সিমিটি থ্রেশহোল্ড (v1.06)
LE_Add_Device_To_Filter_Accept_List_With_Proximity_Threshold_Command
ফিল্টার গ্রহণ করার তালিকায় কোনও ডিভাইস যোগ করার সময় কানেকশনের নৈকট্য থ্রেশহোল্ড (পাথ লস ও RSSI) সাপ্লাই করতে এই কমান্ড ব্যবহার করা যেতে পারে।
সিগন্যালের পাথ লস ভ্যালু পাথ লস থ্রেশহোল্ডের চেয়ে কম হলে তবেই কানেক্ট করার চেষ্টা করতে হবে।
TxPower উপলভ্য না থাকলে অথবা No Path Loss filtering ব্যবহার করা হলে, সিগন্যালে RSSI ভ্যালু নির্দিষ্ট RSSI থ্রেশহোল্ডের চেয়ে বেশি থাকলে তবেই কানেক্ট করার চেষ্টা করতে হবে।
এই কমান্ডটি ব্লুটুথ স্ট্যান্ডার্ড কমান্ড LE Add Device To Filter Accept List command-এর বিকল্প হিসেবে ব্যবহার করা যেতে পারে।
ডিভাইসটি আগে থেকেই ফিল্টার গ্রহণ করার তালিকায় থাকাকালীন এই কমান্ডটি আলাদা থ্রেশহোল্ড ভ্যালু সহ কল করা হলে, থ্রেশহোল্ড ভ্যালু অবশ্যই আপডেট করতে হবে।
বেস রেফারেন্স: BT Core 6.2 স্পেসিফিকেশন, 7.8.16 (LE Add Device To Filter Accept List কমান্ড)
এই কমান্ড ব্যবহার করা যাবে না যখন:
- কোনও বিজ্ঞাপন ফিল্টার নীতি ফিল্টার অ্যাকসেপ্ট লিস্ট ব্যবহার করে এবং বিজ্ঞাপন চালু করা থাকে,
- স্ক্যানিং ফিল্টার নীতি ফিল্টার গ্রহণ তালিকা ব্যবহার করে এবং স্ক্যানিং চালু করা আছে, অথবা
- ইনিশিয়েটর ফিল্টার নীতিতে ফিল্টার গ্রহণ করার তালিকা ব্যবহার করা হয় এবং
HCI_LE_Create_ConnectionবাHCI_LE_Extended_Create_Connectionকমান্ড পেন্ডিং থাকে।
এই কমান্ডের মাধ্যমে যোগ করা ডিভাইসটি LE Remove Device From Filter Accept List-কে ফিল্টার গ্রহণ করার তালিকা থেকে সরিয়ে দিতে হবে।
অপকোড: 0xFD66 (OCF: 0x166)
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Address_Type |
১টি অক্টেট |
0x00 - পাবলিক ডিভাইস অ্যাড্রেস 0x01 - র্যান্ডম ডিভাইস অ্যাড্রেস 0xFF - পরিচয় গোপন রেখে বিজ্ঞাপন পাঠানো ডিভাইস অন্যান্য সব ভ্যালু - ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত |
LE_Device_Address |
৬টি অক্টেট |
সর্বজনীন বা র্যান্ডম অ্যাড্রেস Address_Type 0xFF হিসেবে সেট করা থাকলে অ্যাড্রেস উপেক্ষা করা হবে। |
Connection_Path_Loss_Threshold |
১ অক্টেট |
রেঞ্জ: ০ থেকে +১০০, +১২৭ [dB-তে] ডিভাইসটি খুঁজে পাওয়ার পরে সেটির সাথে কানেকশন শুরু করার জন্য কানেকশন পাথ লস থ্রেশহোল্ডকে বোঝায় (০ থেকে +১০০)। কানেকশন শুরু করার জন্য পাথ লসের ভ্যালু কম হতে হবে। No Path Loss filtering বোঝাতে +১২৭ ভ্যালু ব্যবহার করা হয়। TxPower উপলভ্য না থাকলে বা এই ভ্যালু +১২৭ হলে, এই কমান্ডটি অবশ্যই নিচে RSSI ফিল্টারিংয়ে ফিরে যেতে হবে।
|
Connection_RSSI_Threshold |
১টি অক্টেট |
রেঞ্জ: -১২৭ থেকে +২০, +১২৭ [dBm-এ] ডিভাইস খুঁজে পাওয়ার পরে সেটির সাথে কানেকশন শুরু করার জন্য কানেকশন RSSI থ্রেশহোল্ডকে বোঝায়। (-১২৭ থেকে +২০)। কানেকশন শুরু করতে RSSI ভ্যালু আরও বেশি হতে হবে। TxPower উপলভ্য না থাকলে বা পাথ লস থ্রেশহোল্ড +১২৭ হিসেবে নির্দিষ্ট করা থাকলে RSSI ফিল্টারিং হল ফলব্যাক। No RSSI filtering বোঝাতে +১২৭ ভ্যালু ব্যবহার করা হয়।
|
পাথ লস থ্রেশহোল্ড ও RSSI থ্রেশহোল্ড, দুটিই +১২৭ হলে, এই কমান্ডকে অবশ্যই ব্লুটুথ স্ট্যান্ডার্ড LE Add Device To Filter Accept List command-এর মতো আচরণ করতে হবে।
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
HCI ইভেন্ট (ভেন্ডর-নির্দিষ্ট)
কিছু ক্ষেত্রে ভেন্ডর-নির্দিষ্ট HCI ইভেন্ট প্রয়োজন। BT Core 5.2 স্পেসিফিকেশনের পৃষ্ঠা 1897-এ চিত্র 5.4 দেখুন। ইভেন্ট প্যারামিটার ০-তে সবসময় প্রথম সাব-ইভেন্ট কোড থাকবে, যার উপর ভিত্তি করে বাকি HCI ইভেন্ট ডিকোড করা হয়।
| ইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
HCI_vendor_specific_event_code |
১টি অক্টেট | 0xFF |
sub_event_code |
১ অক্টেট | একটি সাব-ইভেন্ট কোডের সাইজ হবে ১ অক্টেট, HCI ইভেন্ট প্যাকেটে প্যারামিটার দৈর্ঘ্যের ঠিক পরের বাইট। |
স্টোরেজ থ্রেশহোল্ড লঙ্ঘন সংক্রান্ত সাব-ইভেন্ট
এই ইভেন্ট থেকে বোঝা যায় যে স্টোরেজ থ্রেশহোল্ড অতিক্রম করা হয়েছে।
Subevent code = 0x54
| সাব-ইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| কোনওটিই নয় |
LE মাল্টি-বিজ্ঞাপন স্ট্যাটাস পরিবর্তন সংক্রান্ত সাব-ইভেন্ট
এই ইভেন্ট থেকে বোঝা যায় যে কোনও বিজ্ঞাপনের ইনস্ট্যান্স তার স্ট্যাটাস পরিবর্তন করেছে। এই মুহূর্তে, এই ইভেন্টটি শুধুমাত্র কোন বিজ্ঞাপনটি নির্দেশ করতে ব্যবহৃত হয় কানেকশনের ফলে ইনস্ট্যান্স বন্ধ হয়ে গেছে।
Subevent code = 0x55
| সাবইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Advertising_instance |
১ অক্টেট |
নির্দিষ্ট বিজ্ঞাপন ইনস্ট্যান্স শনাক্ত করে সঠিক মান হল 0 থেকে max_advt_instances-1
|
State_Change_Reason |
১ অক্টেট | 0x00: কানেকশন পাওয়া গেছে |
Connection_handle |
২টি অক্টেট |
advt ইনস্ট্যান্স
বন্ধ হয়ে যাওয়ার কারণ শনাক্ত করে (ভুল হলে 0xFFFF)
|
LE বিজ্ঞাপন ট্র্যাকিং সাব-ইভেন্ট
এই ইভেন্ট থেকে বোঝা যায় যে কখন কোনও বিজ্ঞাপনদাতা পাওয়া গেছে বা হারিয়ে গেছে।
সাব ইভেন্ট কোড = 0x56
| সাবইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
APCF_Filter_Index |
১ অক্টেট | ফিল্টার ইন্ডেক্স (০, max_filter-১) |
Advertiser_State |
১ অক্টেট |
0x00: বিজ্ঞাপনদাতা পাওয়া গেছে 0x01: বিজ্ঞাপনদাতা আর নেই |
Advt_Info_Present |
১টি অক্টেট |
0x00: বিজ্ঞাপনদাতার তথ্য (Advt_Info) আছে0x01: বিজ্ঞাপনদাতার তথ্য ( Advt_Info) নেই
|
Advertiser_Address |
৬টি অক্টেট | সর্বজনীন বা র্যান্ডম ঠিকানা |
Advertiser_Address_Type |
১ অক্টেট |
0x00: পাবলিক অ্যাড্রেস 0x01: র্যান্ডম অ্যাড্রেস |
Advt_Info |
Tx_Pwr[0]: ১টি অক্টেটRSSI[0]: ১টি অক্টেটTimestamp[0]: ২টি অক্টেটAdv packet_len[0]: ১টি অক্টেটAdv_packet[0]: Adv_packet_lenটি অক্টেটScan_data_resp_len[0]: ১টি অক্টেটScan_data_resp[0]: Scan_data_respটি অক্টেট
|
কন্ট্রোলার ডিবাগ তথ্য সাব-ইভেন্ট
কোনও কন্ট্রোলার এই ইভেন্ট ব্যবহার করে হোস্টকে বাইনারি ডিবাগ সংক্রান্ত তথ্য প্রদান করে।
Subevent code = 0x57
| সাবইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
debug_block_byte_offset_start |
২টি অক্টেট | শুরু থেকে ডিবাগ ব্লক বাইট অফসেট |
last_block |
১ অক্টেট |
0x00: আরও ডিবাগ ডেটা আছে 0x01: শেষ বাইনারি ব্লক; আর কোনও ডিবাগ ডেটা নেই |
cur_pay_load_sz |
২টি অক্টেট | বর্তমান ইভেন্টে বাইনারি ব্লক সাইজ |
Debug_Data |
ভেরিয়েবেল | cur_payload_sz-এর ডিবাগ ডেটা |
LE Broadcast Channel Map Classification (v1.06)
ব্লুটুথ চ্যানেলে রেডিও নয়েজ লেভেল হল একটি গুরুত্বপূর্ণ ফ্যাক্টর যা প্যাকেট রিসেপশনের সাফল্য নির্ধারণ করে। ট্রান্সমিশন নির্ভরযোগ্যতা অপ্টিমাইজ করতে, চ্যানেল কোয়ালিটি শনাক্ত করার জন্য চ্যানেল ম্যাপ শ্রেণীবিভাগ মেকানিজম অপরিহার্য। স্ট্যান্ডার্ড LE অডিও ব্রডকাস্ট সোর্সের ক্ষেত্রে, সোর্স সাধারণত জানে না যে কোন ডিভাইস তার ব্রডকাস্ট সক্রিয়ভাবে শুনছে। তাই, BIG চ্যানেল ম্যাপ নির্ধারণ করার জন্য ব্রডকাস্ট সোর্সকে চ্যানেল কোয়ালিটির নিজস্ব মূল্যায়নের উপর নির্ভর করতে হবে। তবে, সোর্সের মাধ্যমে নির্ধারিত কোনও BIG চ্যানেল ম্যাপ, পরিবেশগত অবস্থা বা স্বতন্ত্র রিসিভারের কাছাকাছি থাকা স্থানীয় ইন্টারফেয়ারেন্স সোর্সের কারণে প্রতিটি রিসিভারের জন্য অপ্টিমাল নাও হতে পারে। কোনও ব্রডকাস্ট রিসিভার যদি ব্রডকাস্ট সোর্সকে তার চ্যানেল শ্রেণীবিভাগ সংক্রান্ত তথ্য জানাতে পারে, তাহলে সোর্স সেই অনুযায়ী তার BIG চ্যানেল ম্যাপ অ্যাডজাস্ট করতে পারবে। এটি ব্রডকাস্ট স্ট্রিম ট্রান্সমিশন এবং ইন্টারফারেন্সের বিরুদ্ধে রিসেপশনের কার্যকারিতা উল্লেখযোগ্যভাবে বাড়িয়ে তুলবে।
যেমন, পার্সোনাল অডিও শেয়ারিং (PAS) অ্যাপ্লিকেশনে, ইয়ারবাড ও ব্রডকাস্ট সোর্সের মধ্যে একটি LE ACL লিঙ্ক (স্থানীয় ব্রডকাস্ট সোর্সের সাথে সিঙ্ক করার জন্য ব্রডকাস্ট অ্যাসিস্ট্যান্ট হিসেবে কাজ করে) তৈরি করা হয়। এই আগে থেকে থাকা LE ACL কানেকশন ব্যবহার করে ইয়ারবাড থেকে (LL_CHANNEL_STATUS_IND প্যাকেটের মাধ্যমে) ব্রডকাস্ট সোর্সে চ্যানেল ক্লাসিফিকেশন সংক্রান্ত তথ্য প্রদান করা যেতে পারে। সম্প্রচার সোর্স এই তথ্য ব্যবহার করে তার BIG চ্যানেল ম্যাপ আরও উন্নত করতে পারে।
তাই, আমরা LE_BIG_Set_Channel_Map_Classification_Command-এর সংজ্ঞা দিচ্ছি। এই কমান্ডটি BIG সোর্সে চ্যানেল ম্যাপ ম্যানেজমেন্ট চালু করে, যাতে পেরিফেরাল ডিভাইস থেকে পাওয়া চ্যানেল শ্রেণীবিভাগ সংক্রান্ত তথ্য বিবেচনা করা যায়। এই কমান্ড কন্ট্রোলারের সাথে একটি নির্দিষ্ট LE ACL কানেকশন হ্যান্ডেল সেট করার অনুমতি দেবে। এই তথ্য পাওয়ার পরে, কন্ট্রোলার প্রদত্ত LE ACL কানেকশনের সাথে সম্পর্কিত চ্যানেল ক্লাসিফিকেশন ডেটার উপর ভিত্তি করে এর BIG চ্যানেল ম্যাপ নির্ধারণ করবে।
এই VSC প্রয়োগ করার অর্থ হল, BIG চ্যানেল ম্যাপ তৈরি করার সময় ব্রডকাস্ট সোর্সকে একাধিক চ্যানেল ক্লাসিফিকেশন সোর্স বিবেচনা করতে হবে। যেমন, কন্ট্রোলার কানেক্ট করা রিমোট ডিভাইসের মাধ্যমে রিপোর্ট করা "ভালো" চ্যানেল ক্লাসিফিকেশনের ইন্টারসেকশন শনাক্ত করতে পারে এবং এটি BIG চ্যানেল ম্যাপে প্রয়োগ করতে পারে। এইসব চ্যানেল শ্রেণীবিভাগ মার্জ করার নির্দিষ্ট অ্যালগরিদম প্রতিটি কন্ট্রোলার ভেন্ডরের বিবেচনার উপর ছেড়ে দেওয়া হয়, যা উদ্ভাবন এবং অপ্টিমাইজেশনের সুযোগ করে দেয়।
LE_BIG_Set_Channel_Map_Classification_Command
অপকোড: 0xFD65 (OCF: 0x165)
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Sub_opcode |
১টি অক্টেট |
0x01 - LE ACL কানেকশন হ্যান্ডেল দ্বারা BIG চ্যানেল ম্যাপ সেট করুন 0x02-0x0E - ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত |
Set_BIG_Channel_Action |
১ অক্টেট |
BD_ADDR বা LE ACL কানেকশন হ্যান্ডেল যোগ করা বা মুছে দেওয়া অথবা সব মুছে দেওয়া সংক্রান্ত অ্যাকশন। 0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছুন 0x03-0xFF - সংরক্ষিত |
BIG_Handle |
১ অক্টেট |
পেরিফেরালের চ্যানেল ক্লাসিফিকেশন দিয়ে আপডেট করার জন্য BIG হ্যান্ডেল নির্দিষ্ট করে রেঞ্জ: 0x00 থেকে 0xEF |
cmd_para[] |
ভেরিয়েবেল | পরিবর্তনযোগ্য প্যারামিটার Set_BIG_Channel_opcode-এর উপর নির্ভর করে |
LE_BIG_Set_Channel_Map_Classification_Command_by_Conn_Handle
Sub OCF: 0x01
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Sub_opcode |
১টি অক্টেট |
0x01 - LE ACL কানেকশন হ্যান্ডেল দ্বারা BIG চ্যানেল ম্যাপ সেট করুন 0x02-0x0E - ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত |
Set_BIG_Channel_Action |
১ অক্টেট |
LE ACL কানেকশন হ্যান্ডেল যোগ করা বা মুছে দেওয়া অথবা সবকটি মুছে দেওয়া সংক্রান্ত অ্যাকশন। 0x00 - যোগ করুন 0x01 - মুছুন 0x02 - মুছুন 0x03-0xFF - সংরক্ষিত |
BIG_Handle |
১টি অক্টেট |
পেরিফেরালের চ্যানেল ক্লাসিফিকেশন দিয়ে আপডেট করার জন্য BIG হ্যান্ডেল নির্দিষ্ট করে। রেঞ্জ: 0x00 থেকে 0xEF |
Number_of_LE_ACL_Connections |
১ অক্টেট |
BIG চ্যানেল ম্যাপ আপডেট করার জন্য ব্যবহার করতে হবে এমন LE ACL কানেকশনের সংখ্যা নির্দিষ্ট করে। Set_BIG_Channel_Action Clear (0x02) হলে উপেক্ষা করুন রেঞ্জ: 0x01 থেকে 0xFF |
LE_ACL_Connection_Handles |
ভেরিয়েবল (Number_of_LE_ACL_Connections * ২ অক্টেট) |
Number_of_LE_ACL_Connections-এর উপর ভিত্তি করে পরিবর্তনযোগ্য সাইজ Set_BIG_Channel_Action Clear (0x02) হলে উপেক্ষা করুন কানেকশন হ্যান্ডেল রেঞ্জ: 0x0000 থেকে 0x0EFF |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১ অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস। সব LE ACL conn_handles যোগ করা হয়ে গেলে SUCCESS রিটার্ন করে। |
Set_BIG_Channel_opcode |
১ অক্টেট | কমান্ডের Set_BIG_Channel_opcode-এর উত্তর দেওয়া |
Set_BIG_Channel_Action |
১টি অক্টেট | কমান্ডের Set_BIG_Channel_Action-এর উত্তর দেওয়া |
BIG_Handle |
১টি অক্টেট | Echo back কমান্ডের BIG_Handle |
ব্লুটুথ কোয়ালিটি রিপোর্ট সাব-ইভেন্ট
এই ইভেন্ট নিম্নলিখিতগুলির মধ্যে একটি নির্দেশ করে: ব্লুটুথ কোয়ালিটি ইভেন্ট ঘটেছে, কন্ট্রোলার LMP/LL মেসেজ ট্রেস এবং ব্লুটুথ মাল্টি-লিঙ্ক/Coex শিডিউলিং ট্রেস আপলোড করেছে অথবা কন্ট্রোলার ডিবাগ ইনফরমেশন ডেটা ডাম্প করেছে।
সাব-ইভেন্ট কোড = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, লিঙ্ক কোয়ালিটি সম্পর্কিত ইভেন্ট]
| সাব-ইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Quality_Report_Id |
১টি অক্টেট |
0x01: মনিটরিং মোডে কোয়ালিটি সংক্রান্ত রিপোর্ট। 0x02: LSTO-এর কাছাকাছি। 0x03: A2DP অডিও কেটে কেটে যাচ্ছে। 0x04: (e)SCO ভয়েস অস্পষ্ট। 0x05 ~ 0x06: রিজার্ভ করা আছে। 0x07: LE অডিও কেটে কেটে যাচ্ছে। 0x08: কানেক্ট করা যায়নি। 0x09 ~ 0xFF: সংরক্ষিত। |
Packet_Types |
১ অক্টেট |
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 |
১টি অক্টেট |
কানেকশনের জন্য ভূমিকা পালন করা। 0x00: সেন্ট্রাল 0x01: পেরিফেরাল 0x02 ~ 0xFF: রিজার্ভ করা আছে। |
TX_Power_Level |
১ অক্টেট |
নির্দিষ্ট Connection_Handle-এর জন্য বর্তমান ট্রান্সমিট পাওয়ার লেভেল।
এই ভ্যালু কন্ট্রোলারের HCI_Read_Transmit_Power_Level HCI কমান্ডের উত্তরে দেওয়া ভ্যালুর সমান হবে। |
RSSI |
১ অক্টেট |
[dBm-এ]
নির্দিষ্ট Connection_Handle-এর জন্য রিসিভ করা সিগন্যাল স্ট্রেন্থ ইন্ডিকেশন (RSSI)
ভ্যালু। |
SNR |
১ অক্টেট |
[ডেসিবেলে (dB)]
উল্লেখ করা
Connection_Handle-এর জন্য সিগন্যাল-টু-নয়েজ রেশিও (SNR) ভ্যালু। |
Unused_AFH_Channel_Count |
১টি অক্টেট |
AFH_channel_map-এ অব্যবহৃত চ্যানেলের সংখ্যা নির্দেশ করে। 0x4F ~ 0xFF: সংরক্ষিত। |
AFH_Select_Unideal_Channel_Count |
১ অক্টেট |
যেসব চ্যানেলে ইন্টারফেয়ারেন্স আছে এবং খারাপ কোয়ালিটি আছে, কিন্তু সেগুলি এখনও AFH-এর জন্য বেছে নেওয়া হয়েছে, সেগুলির সংখ্যা
এখানে দেখানো হয়। ব্লুটুথ স্পেসিফিকেশন অনুযায়ী ন্যূনতম ২০টি চ্যানেল ব্যবহার করা যায় তাই ৭৯টি চ্যানেলই ইন্টারফেয়ার করলে এবং সেগুলির কোয়ালিটি খারাপ হলেও, কন্ট্রোলারকে AFH-এর জন্য অন্তত ২০টি চ্যানেল বেছে নিতে হবে। |
LSTO |
২টি অক্টেট |
বর্তমান লিঙ্ক তত্ত্বাবধানের টাইম-আউট সেটিং। সময় = N * ০.৬২৫ মিলিসেকেন্ড সময়ের রেঞ্জ: ০.৬২৫ মিলিসেকেন্ড থেকে ৪০.৯ সেকেন্ড |
Connection_Piconet_Clock |
৪টি অক্টেট |
নির্দিষ্ট Connection_Handle-এর জন্য পিকোনেট ক্লক। এই ভ্যালু কন্ট্রোলারের দেওয়া উত্তরের সমান হবে HCI_Read_Clock HCI কমান্ডের সাথে প্যারামিটার "Which_Clock" of 0x01 (Piconet Clock). ইউনিট: N * ০.৩১২৫ মিলি সেকেন্ড (১টি ব্লুটুথ ক্লক) |
Retransmission_Count |
৪টি অক্টেট |
শেষ ইভেন্টের পর থেকে কতবার আবার ট্রান্সমিট করা হয়েছে। হোস্টকে রিপোর্ট করার পরে এই গণনা রিসেট করা হবে। |
No_RX_Count |
৪টি অক্টেট |
শেষ ইভেন্টের পর থেকে কোনও RX গণনা করা হয়নি। নির্ধারিত সময়ে কোনও প্যাকেট না পেলে এই সংখ্যাটি বেড়ে যায় অথবা প্রাপ্ত প্যাকেটটি ক্ষতিগ্রস্ত হলে। হোস্টকে জানানোর পরে এই সংখ্যা রিসেট করা হবে। |
NAK_Count |
৪টি অক্টেট |
শেষ ইভেন্টের পর থেকে NAK (নেগেটিভ অ্যাকনলেজ) সংখ্যা। হোস্টকে জানানোর পরে এই সংখ্যা রিসেট করা হবে। |
Last_TX_ACK_Timestamp |
৪টি অক্টেট |
শেষ TX ACK-এর টাইমস্ট্যাম্প। এটি
পিকোনেট সেন্ট্রালের (CLK) ব্লুটুথ ক্লকের উপর ভিত্তি করে তৈরি। ইউনিট: N * ০.৩১২৫ মিলি সেকেন্ড (১টি ব্লুটুথ ক্লক) |
Flow_Off_Count |
৪টি অক্টেট |
শেষ ইভেন্টের পর থেকে কন্ট্রোলার কতবার ফ্লো-অফ (STOP)
পায়। হোস্টকে জানানোর পরে এই সংখ্যা রিসেট করা হবে। |
Last_Flow_On_Timestamp |
৪টি অক্টেট |
শেষবার Flow-on (GO) করার টাইমস্ট্যাম্প। এটি পিকোনেট সেন্ট্রালের (CLK)
ব্লুটুথ ক্লকের উপর ভিত্তি করে তৈরি। ইউনিট: N * ০.৩১২৫ মিলি সেকেন্ড (১টি ব্লুটুথ ক্লক) |
Buffer_Overflow_Bytes |
৪টি অক্টেট |
[বাইট হিসেবে]
শেষ ইভেন্টের পর থেকে বাফার ওভারফ্লোয়ের সংখ্যা। |
Buffer_Underflow_Bytes |
৪টি অক্টেট |
[বাইট এককে]
শেষ ইভেন্টের পর থেকে বাফার আন্ডারফ্লোয়ের সংখ্যা। |
bdaddr |
৬টি অক্টেট | রিমোট ডিভাইসের ঠিকানা |
cal_failed_item_count |
১ অক্টেট | ক্যালিব্রেট করা যায়নি এমন আইটেমের সংখ্যা |
TX_Total_Packets |
৪টি অক্টেট | কতগুলি প্যাকেট পাঠানো হয়েছে। |
TX_UnAcked_Packets |
৪টি অক্টেট |
স্বীকৃতি না পাওয়া প্যাকেটের সংখ্যা। হোস্টকে জানানোর পরে এই সংখ্যা রিসেট করা হয়। |
TX_Flushed_Packets |
৪টি অক্টেট |
এর ফ্লাশ পয়েন্ট থেকে পাঠানো হয়নি এমন প্যাকেটের সংখ্যা। হোস্টকে জানানোর পরে এই সংখ্যা রিসেট করা হয়। |
TX_Last_Subevent_Packets |
৪টি অক্টেট |
CIS ইভেন্টের শেষ সাব-ইভেন্টে লিঙ্ক লেয়ার CIS ডেটা PDU ট্রান্সমিট করে এমন প্যাকেটের সংখ্যা। হোস্টকে জানানোর পরে এই সংখ্যা রিসেট করা হয়। লিঙ্কের জন্য কোনও সঠিক ভ্যালু না থাকলে, ভ্যালু শূন্য হবে। |
CRC_Error_Packets |
৪টি অক্টেট |
শেষ ইভেন্টের পর থেকে CRC সমস্যা সহ পাওয়া প্যাকেজের সংখ্যা। হোস্টকে রিপোর্ট করার পরে এই সংখ্যা রিসেট করা হয়। |
RX_Duplicate_Packets |
৪টি অক্টেট |
শেষ ইভেন্টের পর থেকে পাওয়া ডুপ্লিকেট (আবার ট্রান্সমিট করা) প্যাকেজের সংখ্যা। হোস্টকে জানানোর পরে এই সংখ্যা রিসেট করা হয়। |
RX_Unreceived_Packets |
৪টি অক্টেট |
LE READ ISO Link
Quality কমান্ডের প্যারামিটারের মতো একই সংখ্যক প্যাকেট পাওয়া যায়নি (Bluetooth কোর স্পেসিফিকেশন ভার্সন ৫.৪ দেখুন)। সংশ্লিষ্ট স্ট্রিম
হল CIS ও BIS. এই ভ্যালু বাড়ানো হলে, লিঙ্ক লেয়ার এর ফ্ল্যাশ পয়েন্ট (CIS-এ) বা এটি যে ইভেন্টের সাথে যুক্ত (BIS-এ) তার শেষে কোনও নির্দিষ্ট পেলোড পায় না (Bluetooth core Specification Version 5.4 Vol 6 Part B, Section 4.4.6.6 দেখুন)। |
Coex_Info_Mask |
২টি অক্টেট |
বিট ০ - CoexInvolvement: এই রিপোর্ট তৈরি করার সময় কোএক্স অ্যাক্টিভিটি যুক্ত আছে বলে সন্দেহ হলে, তা বোঝাতে সেট করা হয় (যেমন, A2DP Chops এবং LSTO-এর কাছাকাছি আসা)। বিট ১ - WL 2G রেডিও অ্যাক্টিভ: WLAN 2G রেডিও অ্যাক্টিভ আছে তা বোঝাতে সেট করা হয়। বিট ২ - WL 2G কানেক্ট করা আছে: WLAN 2G রেডিও অ্যাক্টিভ আছে ও কানেক্ট করা আছে তা বোঝাতে সেট করা হয়। বিট ৩ - WL 5G/6G রেডিও অ্যাক্টিভ: WLAN 5G/6G রেডিও অ্যাক্টিভ আছে তা বোঝাতে সেট করা হয়। বিট ৪-১৫ - রিজার্ভ করা আছে |
| ভেন্ডর-নির্দিষ্ট প্যারামিটার | (parameter total length - TBD) * octets | কন্ট্রোলার ভেন্ডরকে আরও ভেন্ডর-নির্দিষ্ট প্যারামিটার প্রদান করতে। |
সাব-ইভেন্ট কোড = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]
এই ইভেন্ট থেকে বোঝা যায় যে ব্লুটুথ HAL বা কন্ট্রোলারে একটি মারাত্মক সমস্যা হয়েছে এবং এই পরিস্থিতি রেকর্ড করতে ব্লুটুথ স্ট্যাকের প্রয়োজন এবং রিস্টার্ট করতে হবে। যেকোনও ক্ষেত্রে ডিবাগ তথ্য ইভেন্টের প্রথম ফ্র্যাগমেন্ট পাঠানোর আগে কন্ট্রোলারকে অবশ্যই Bluetooth স্ট্যাকে Root_Inflammation_Event পাঠাতে হবে।
Error_Code প্যারামিটারে HAL/কন্ট্রোলার থেকে রিপোর্ট করা একটি ত্রুটি কোড থাকে, এটি চিপসেট ভেন্ডর নির্দিষ্ট ত্রুটি হলে 0 থাকে। The Vendor_Specific_Error_Code-এ HAL/Controller থেকে পাওয়া চিপসেট ভেন্ডর নির্দিষ্ট সমস্যার কোড থাকে। Error_Code প্যারামিটারটি ০ না হলে, এটি ০ হিসেবে সেট করতে হবে। ০ Error_Code এবং Vendor_Specific_Error_Code প্যারামিটার দুটির মানই ০ হলে চলবে না।
| সাবইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Quality_Report_Id |
১ অক্টেট |
0x00 ~ 0x04: রিজার্ভ করা আছে। 0x05: Root inflammation. 0x06 ~ 0xFF: সংরক্ষিত। |
Error_Code |
১ অক্টেট |
0x00: চিপসেট ভেন্ডর-নির্দিষ্ট সমস্যার কোড অন্তর্ভুক্ত করা হয়েছে। 0x01 ~ 0xFF: কন্ট্রোলার কাজ করেনি। সমস্যার কোড ও বিবরণের তালিকা পেতে, Bluetooth Spec [Vol 2] Part D দেখুন। |
Vendor_Specific_Error_Code |
১ অক্টেট |
0x00: কোনও চিপসেট ভেন্ডর নির্দিষ্ট ত্রুটি কোড অন্তর্ভুক্ত করা নেই। 0x01 ~ 0xFF: চিপসেট ভেন্ডর নির্দিষ্ট সমস্যার কোড। |
| ভেন্ডর-নির্দিষ্ট প্যারামিটার | (Parameter Total Length - 4) * octets | কন্ট্রোলার ভেন্ডরকে আরও ভেন্ডর-নির্দিষ্ট প্যারামিটার প্রদান করতে। |
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 |
১ অক্টেট | 0x06: এনার্জি মনিটরিং |
Average_Current_Consumption |
২টি অক্টেট | [mA-তে] কন্ট্রোলার দ্বারা ব্যবহৃত সমস্ত অ্যাক্টিভিটির গড় কারেন্ট কনসাম্পশন |
Idle_Total_Time (স্লিপ) |
৪টি অক্টেট | [মিলি সেকেন্ডে] আইডল (কম পাওয়ার স্টেট, স্লিপ) স্টেটে মোট সময়। |
Idle_Sate_Enter_Count |
৪টি অক্টেট | কন্ট্রোলার কতবার নিষ্ক্রিয় অবস্থায় গেছে তা নির্দেশ করে। |
Active_Total_Time |
৪টি অক্টেট | [মিলি সেকেন্ডে] অ্যাক্টিভ (জিজ্ঞাসা করা, পেজিং, ACL/SCO/eSCO/BIS/CIS ট্রাফিক, যেকোনও টাস্ক প্রসেস করা) অবস্থায় মোট সময়। |
Active_State_Enter_Count |
৪টি অক্টেট | কন্ট্রোলার কতবার অ্যাক্টিভ স্টেটে প্রবেশ করে তা নির্দেশ করে। |
BR_RDR_Tx_Total_Time |
৪টি অক্টেট | [in ms] BR/EDR নির্দিষ্ট Tx(ACL/SCO/eSCO ট্রাফিকের জন্য ট্রান্সমিট করা)স্টেটে মোট সময়। |
BR_RDR_Tx_State_Enter_Count |
৪টি অক্টেট | কন্ট্রোলার কতবার BR/EDR নির্দিষ্ট Tx স্টেটে প্রবেশ করে তা নির্দেশ করে। |
BR_RDR_Tx_Average_Power_Level |
১ অক্টেট | [dBm-এ] সব BR/EDR লিঙ্কের গড় Tx পাওয়ার লেভেল |
BR_RDR_Rx_Total_Time |
৪টি অক্টেট | [in ms] Total time in the BR/EDR specific Rx (Receiving from ACL/SCO/eSCO traffic) state. |
BR_RDR_Rx_State_Enter_Count |
৪টি অক্টেট | [in ms] কন্ট্রোলার কতবার BR/EDR নির্দিষ্ট Rx স্টেটে প্রবেশ করে তা নির্দেশ করে। |
LE_Tx_Total_Time |
৪টি অক্টেট | [in ms] LE নির্দিষ্ট Tx (ACL/BIS/CIS বা LE বিজ্ঞাপন ট্রাফিকের জন্য ট্রান্সমিট করা) স্টেটে মোট সময়। |
LE_Tx_State_Enter_Count |
৪টি অক্টেট | কন্ট্রোলার কতবার BR/EDR নির্দিষ্ট Rx স্টেটে প্রবেশ করে তা নির্দেশ করে। |
LE_Tx_Average_Power_Level |
১ অক্টেট | [dBm-এ] সব LE লিঙ্কের গড় Tx পাওয়ার লেভেল। |
LE_Rx_Total_Time |
৪টি অক্টেট | [in ms] Total time in the LE specific Rx (Receiving from either ACL/BIS/CIS or LE scanning traffic) state. |
LE_Rx_State_Enter_Count |
৪টি অক্টেট | [in ms] Indicates how many times the controller enters the LE specific Rx state |
Report_Time_Duration (মোট সময়) |
৪টি অক্টেট | [মিলি সেকেন্ডে] বিদ্যুৎ সংক্রান্ত তথ্য সংগ্রহ করার মোট সময়সীমা। |
RX_Active_One_Chain_Time |
৪টি অক্টেট | [মিলি সেকেন্ডে] একটি চেনে RX অ্যাক্টিভ থাকার সময়সীমা |
RX_Active_Two_Chain_Time |
৪টি অক্টেট | [মিলি সেকেন্ডে] দুটি চেনে RX অ্যাক্টিভ থাকার সময়সীমা |
TX_iPA_Active_One_Chain_Time |
৪টি অক্টেট | [in ms] The time duration of internal TX active in one chain |
TX_iPA_Active_Two_Chain_Time |
৪টি অক্টেট | [মিলি সেকেন্ডে] দুটি চেনে ইন্টার্নাল TX অ্যাক্টিভ থাকার সময়সীমা |
TX_ePA_Active_One_Chain_Time |
৪টি অক্টেট | [মিলি সেকেন্ডে] একটি চেনে এক্সটার্নাল TX অ্যাক্টিভ থাকার সময়সীমা |
TX_ePA_Active_Two_Chain_Time |
৪টি অক্টেট | [মিলি সেকেন্ডে] দুটি চেনে এক্সটার্নাল TX অ্যাক্টিভ থাকার সময়সীমা |
BREDR_RX_Active_Scan_total_Time |
৪টি অক্টেট | [ms-এ] BR/EDR স্ক্যান RX অ্যাক্টিভ থাকার সময়সীমা (ms) |
LE_RX_Active_Scan_total_Time |
৪টি অক্টেট | [in ms] LE স্ক্যান RX অ্যাক্টিভ থাকার সময়সীমা (ms) |
সাব-ইভেন্ট কোড = 0x58 [Quality_Report_Id = 0x09~0x0A, উন্নত RF স্ট্যাটাস ইভেন্ট]
Bluetooth Advanced RF (রেডিও ফ্রিকোয়েন্সি) Stats ইভেন্ট, ব্লুটুথ কন্ট্রোলারের রেডিও আচরণ সম্পর্কে বিস্তারিত পারফর্ম্যান্স মেট্রিক প্রদান করে। দুটি উপায়ে ইভেন্ট ট্রিগার করা যেতে পারে:
- ট্রিগারের মাধ্যমে (0x09): নির্দিষ্ট কমান্ডের উত্তরে একবার রিপোর্ট পাঠানো হয়।
- মনিটরের মাধ্যমে (0x0A): কন্ট্রোলার নির্দিষ্ট সময় অন্তর রিপোর্ট পাঠায়।
ইভেন্টের প্যারামিটারগুলি মূলত প্যাকেট কাউন্টার যা নির্দিষ্ট সময়সীমার মধ্যে বিভিন্ন রেডিও আচরণ ট্র্যাক করে।
গুরুত্বপূর্ণ মেট্রিক ও তার উদ্দেশ্য
- ট্রান্সমিট পাওয়ার পরিসংখ্যান: এই কাউন্টারগুলি বিভিন্ন পাওয়ার কনফিগারেশন ব্যবহার করে পাঠানো প্যাকেট ট্র্যাক করে, ইন্টার্নাল (iPA) ও এক্সটার্নাল (ePA) পাওয়ার অ্যামপ্লিফায়ার এবং বিভিন্ন অ্যান্টেনা ডাইভার্সিটি (Div) বা বিমফর্মিং (BF) মোডের মধ্যে পার্থক্য করে। কোন পাওয়ার ও অ্যান্টেনা সেটিংস সবচেয়ে বেশি ব্যবহার করা হচ্ছে তা নির্ধারণ করতে এটি সাহায্য করে।
- সিগন্যাল পাওয়ার শক্তি নির্দেশক (RSSI) বিন: এই প্যারামিটারগুলি তাদের সিগন্যাল পাওয়ার শক্তির উপর ভিত্তি করে প্রাপ্ত প্যাকেটগুলিকে শ্রেণীবদ্ধ করে। নির্দিষ্ট RSSI রেঞ্জের (যেমন, -৯০ dBm-এর কম, -৭০ থেকে -৭৫ dBm) মধ্যে প্যাকেটের সংখ্যা প্রদান করে, রিপোর্টটি লিঙ্ক কোয়ালিটির একটি স্পষ্ট ছবি প্রদান করে। "দুর্বল" সিগন্যাল বিনে বেশি সংখ্যা (যেমন, < -90 dBm) খারাপ কানেকশন নির্দেশ করে।
- RSSI ডেল্টা: এই মেট্রিক দুটি রিসিভ অ্যান্টেনার মধ্যে সিগন্যালের শক্তির পার্থক্য পরিমাপ করে (প্রযোজ্য হলে)। কতগুলি প্যাকেটে বিভিন্ন রেঞ্জের মধ্যে RSSI ডেল্টা আছে তা কাউন্টার ট্র্যাক করে। ডেল্টার মান বেশি হলে (যেমন, >১১ dBm) তা ইন্টারফারেন্স বা কোনও ফিজিক্যাল বাধা নির্দেশ করতে পারে, কারণ একটি অ্যান্টেনা অন্যটির তুলনায় অনেক বেশি শক্তিশালী সিগন্যাল গ্রহণ করছে।
- অ্যান্টেনা পরিবর্তন ও আবার ট্রান্সমিশন: কন্ট্রোলার কত ঘনঘন অ্যান্টেনা পরিবর্তন করে এবং আবার ট্রান্সমিট করা (ReTX) প্যাকেট ট্র্যাক করে তা রিপোর্ট থেকে জানা যায়। অনেক বেশি বার আবার ট্রান্সমিট করার প্রয়োজন হলে, সেটি দুর্বল বা বিশ্বাসযোগ্য নয় এমন কানেকশনের দিকে ইঙ্গিত করে। এর জন্য প্যাকেট আবার পাঠাতে হয়।
- চ্যানেলের কোয়ালিটি: এই প্যারামিটারগুলি বিভিন্ন কমিউনিকেশন চ্যানেলের স্বাস্থ্য সম্পর্কিত একটি হাই-লেভেল সারাংশ প্রদান করে, RSSI-এর উপর ভিত্তি করে সেগুলিকে "ভালো", "ঠিক আছে", "খারাপ" বা "খুব খারাপ" হিসেবে শ্রেণীবদ্ধ করে। এটি RF এনভায়রনমেন্টের একটি তাৎক্ষণিক ওভারভিউ দেয়।
- TX বাফার কিউ: এই বিভাগে, কন্ট্রোলারের ট্রান্সমিট বাফারে অপেক্ষমান প্যাকেটের সংখ্যা মনিটর করা হয়। ACL (অ্যাসিঙ্ক্রোনাস কানেকশন-ওরিয়েন্টেড লজিক্যাল লিঙ্ক), LECONN (LE কানেকশন) এবং LEISOC (LE আইসোক্রোনাস)-এর মতো বিভিন্ন ধরনের লিঙ্কের জন্য এটি করা হয়। অত্যধিক বাফার সংখ্যা হোস্ট থেকে কন্ট্রোলারে ডেটা ফ্লো সংক্রান্ত বটleneck বা সমস্যা নির্দেশ করতে পারে।
| সাব-ইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Quality_Report_Id |
১ অক্টেট | 0x09: Advance RF Stats By Trigger 0x0A: Advance RF Stats By Monitor |
Extension_info |
১ অক্টেট | BQR ভার্সন সংক্রান্ত তথ্য। BQRv6-এর জন্য 0x01 BQRv7-এর জন্য 0x02 |
Report_Time_Period |
৪টি অক্টেট | পারফর্ম্যান্স সংক্রান্ত তথ্য সংগ্রহ করার সময়সীমা। ইউনিট: মিলি সেকেন্ড |
TX_Power_iPA_BF |
৪টি অক্টেট | iPA BF-এর প্যাকেট কাউন্টার |
TX_Power_ePA_BF |
৪টি অক্টেট | ePA BF-এর প্যাকেট কাউন্টার |
TX_Power_iPA_Div |
৪টি অক্টেট | ePA Div-এর প্যাকেট কাউন্টার |
TX_Power_ePA_Div |
৪টি অক্টেট | ePA Div-এর প্যাকেট কাউন্টার |
RSSI_chain_50 |
৪টি অক্টেট | RSSI চেনের প্যাকেট কাউন্টার > -৫০ dBm |
RSSI_chain_50_55 |
৪টি অক্টেট | -৫০ dBm ~ >-৫৫ dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_55_60 |
৪টি অক্টেট | -৫৫ dBm ~ >-৬০ dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_60_65 |
৪টি অক্টেট | -60 dBm ~ >-65 dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_65_70 |
৪টি অক্টেট | -৬৫ dBm ~ >-৭০ dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_70_75 |
৪টি অক্টেট | -৭০ dBm ~ >-৭৫ dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_75_80 |
৪টি অক্টেট | -৭৫ dBm ~ >-৮০ dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_80_85 |
৪টি অক্টেট | -৮০ dBm ~ >-৮৫ dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_85_90 |
৪টি অক্টেট | -৮৫ dBm ~ >-৯০ dBm-এর মধ্যে RSSI চেনের প্যাকেট কাউন্টার |
RSSI_chain_90 |
৪টি অক্টেট | RSSI চেনের প্যাকেট কাউন্টার < -90 dBm |
RSSI_delta_2 |
৪টি অক্টেট | RSSI ডেল্টা < ২ dBm-এর প্যাকেট কাউন্টার |
RSSI_delta_2_5 |
৪টি অক্টেট | ২ dBm ~ ৫ dBm-এর মধ্যে RSSI ডেল্টার প্যাকেট কাউন্টার |
RSSI_delta_5_8 |
৪টি অক্টেট | ৫ dBm ~ ৮ dBm-এর মধ্যে RSSI ডেল্টার প্যাকেট কাউন্টার |
RSSI_delta_8_11 |
৪টি অক্টেট | ৮ dBm ~ ১১ dBm-এর মধ্যে RSSI ডেল্টার প্যাকেট কাউন্টার |
RSSI_delta_11 |
৪টি অক্টেট | RSSI ডেল্টার প্যাকেট কাউন্টার > 11 dBm |
Antenna_Switch_Count |
৪টি অক্টেট | অ্যান্টেনা সুইচিং ইভেন্টের প্যাকেট কাউন্টার |
ReTX_iPA_BF |
৪টি অক্টেট | লেটেস্ট সময়সীমার মধ্যে ReTX_iPA_BF-এর প্যাকেট কাউন্টার |
ReTX_ePA_BF |
৪টি অক্টেট | লেটেস্ট সময়সীমার মধ্যে ReTX_ePA_BF-এর প্যাকেট কাউন্টার |
ReTX_iPA_Div |
৪টি অক্টেট | লেটেস্ট সময়সীমার মধ্যে ReTX_iPA_Div-এর প্যাকেট কাউন্টার |
ReTX_ePA_Div |
৪টি অক্টেট | লেটেস্ট সময়সীমার মধ্যে ReTX_ePA_Div-এর প্যাকেট কাউন্টার |
Channel_count_Good |
১ অক্টেট | Bin-4-এর মধ্যে RSSI থাকা চ্যানেলের সংখ্যা (>-৫০) |
Channel_count_OK |
১ অক্টেট | Bin-3 (-76~-50)-এর মধ্যে RSSI পড়ে এমন চ্যানেলের সংখ্যা |
Channel_count_Bad |
১টি অক্টেট | Bin-2 (-90~-76)-এর মধ্যে RSSI আছে এমন চ্যানেলের সংখ্যা |
Channel_count_VeryBad |
১টি অক্টেট | Bin-1-এর মধ্যে RSSI পড়ে এমন চ্যানেলের সংখ্যা (<-90) |
TX_buffer_Queue_Count |
৪টি অক্টেট | লেটেস্ট সময়সীমার মধ্যে বাফার কিউ স্ট্যাটাস-কন্ট্রোলার TX বাফারের কাউন্টার [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 |
সাব-ইভেন্ট কোড = 0x58 [Quality_Report_Id = 0x0B~0x0C, কন্ট্রোলার হেলথ মনিটরিং ইভেন্ট]
ব্লুটুথ কন্ট্রোলার হেলথ মনিটরিং ইভেন্ট কন্ট্রোলারের অপারেশনাল স্ট্যাটাসের সারসংক্ষেপ প্রদান করে। ইভেন্টটি দুটি উপায়ে ট্রিগার করা যেতে পারে:
- ট্রিগারের মাধ্যমে (0x09): নির্দিষ্ট কমান্ডের উত্তরে একবার রিপোর্ট পাঠানো হয়।
- মনিটরের মাধ্যমে (0x0A): কন্ট্রোলার নির্দিষ্ট সময় অন্তর রিপোর্ট পাঠায়।
ব্লুটুথ কন্ট্রোলার হেলথ মনিটরিং ইভেন্ট হল একটি ডায়াগনস্টিক টুল যা কন্ট্রোলারের অপারেশনাল স্ট্যাটাসের সারসংক্ষেপ প্রদান করে। এই ইভেন্ট ব্লুটুথ কোয়ালিটি রিপোর্ট (BQR) ফ্রেমওয়ার্কের অংশ এবং কানেক্টিভিটি, পাওয়ার ম্যানেজমেন্ট ও টাইমিং সংক্রান্ত সমস্যার সমাধান করার জন্য এটি ব্যবহার করা হয়। এটি এককালীন রিপোর্ট হিসেবে বা ক্রমাগত মনিটরিংয়ের সুবিধা দিতে নির্দিষ্ট সময় অন্তর পাঠানো যেতে পারে।
মূল মেট্রিক ও তার উদ্দেশ্য
- HCI প্যাকেট কাউন্টার: ইভেন্টটি হোস্ট থেকে কন্ট্রোলার এবং এর বিপরীত দিকে পাঠানো মোট প্যাকেটের সংখ্যা ট্র্যাক করে। এই কাউন্টারগুলি হোস্ট কন্ট্রোলার ইন্টারফেস (HCI) ট্রান্সপোর্টের সাথে সমস্যা ডিবাগ করার জন্য অপরিহার্য, যা সফ্টওয়্যার স্ট্যাক এবং ব্লুটুথ কন্ট্রোলার চিপের মধ্যে যোগাযোগ চ্যানেল।
- প্যাকেটের দৈর্ঘ্য: ইভেন্টটি পাঠানো এবং প্রাপ্ত শেষ HCI প্যাকেটের দৈর্ঘ্য রিপোর্ট করে। এটি ডেটা সঠিকভাবে ট্রান্সমিট করা হচ্ছে কিনা এবং সাইজ সংক্রান্ত কোনও অপ্রত্যাশিত সমস্যা নেই কিনা তা যাচাই করতে সাহায্য করে।
- ওয়েক-আপ সিগন্যাল কাউন্ট: রিপোর্টে মোট কতবার BT_Wake এবং HOST_Wake পিন অ্যাসার্ট করা হয়েছে তা দেখানো হয়। পাওয়ার ম্যানেজমেন্টের জন্য এইসব ফিজিক্যাল সিগন্যাল অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলি কম পাওয়ার স্টেট থেকে সংশ্লিষ্ট এনটিটিগুলিকে জাগিয়ে তোলার জন্য ব্যবহার করা হয়। এই সংখ্যাগুলি মনিটর করলে, অপ্রত্যাশিতভাবে জেগে ওঠা বা স্লিপ মোডে যেতে না পারার মতো বিদ্যুৎ সংক্রান্ত সমস্যা ডিবাগ করতে সাহায্য করে।
- টাইমস্ট্যাম্প: ইভেন্টটি একাধিক টাইমস্ট্যাম্প প্রদান করে, যার মধ্যে রয়েছে শেষ ওয়েইক-আপ সিগন্যাল ও শেষ HCI রিসেটের সময়। এইসব টাইমস্ট্যাম্প, সময় সংক্রান্ত সমস্যা সমাধানে সাহায্য করে এবং নির্দিষ্ট ইভেন্ট কখন ঘটেছে তার রেফারেন্স পয়েন্ট প্রদান করে।
- ওয়াচডগ টাইমার: কন্ট্রোলারের ওয়াচডগ টাইমার শেষ হতে চলেছে এমন প্রাথমিক সতর্কতা হিসেবে ইভেন্ট তৈরি করা হলে একটি নির্দিষ্ট ফ্ল্যাগ তা নির্দেশ করে। সম্ভাব্য কন্ট্রোলার ফ্রিজ বা ত্রুটির জন্য এটি একটি অত্যন্ত গুরুত্বপূর্ণ সতর্কতা।
- লিঙ্ক স্ট্যাটাস: রিপোর্টটি অ্যাক্টিভ কানেকশনের বর্তমান অবস্থা সংক্ষিপ্তভাবে দেখায়, এর মধ্যে BR/EDR, LE এবং CIS (কানেক্টেড আইসোক্রোনাস স্ট্রিম) লিঙ্কের মোট সংখ্যা অন্তর্ভুক্ত। এছাড়াও, কোনও SCO (সিঙ্ক্রোনাস কানেকশন-ওরিয়েন্টেড) লিঙ্ক অ্যাক্টিভ আছে কিনা তা দেখায়। এই তথ্য কন্ট্রোলারের বর্তমান কানেকশন লোডের একটি স্ন্যাপশট প্রদান করে।
| সাবইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Quality_Report_Id |
১ অক্টেট | 0xB~0xC 0x0B: এককালীন বা ইভেন্ট-ট্রিগার করা রিপোর্ট 0x0C: নির্দিষ্ট সময় অন্তর রিপোর্ট। |
Packet_Count_Host_to_Controller |
৪টি অক্টেট | HCI ট্রান্সপোর্টের মাধ্যমে হোস্ট থেকে কন্ট্রোলারে পাঠানো মোট প্যাকেটের সংখ্যা। HCI (যেমন, UART) সংক্রান্ত সমস্যা ডিবাগ করার উদ্দেশ্যে এই ফিল্ড ব্যবহার করা হয়। আচরণ: কন্ট্রোলার HCI রিসেট পেলে কাউন্টার রিসেট হয়ে যায়। |
Packet_Count_Controller_to_Host |
৪টি অক্টেট | হোস্টে পাঠানো HCI ইভেন্ট প্যাকেটের মোট সংখ্যা। এই ফিল্ডটি HCI (যেমন, UART) সংক্রান্ত সমস্যা ডিবাগ করার উদ্দেশ্যে ব্যবহার করা হয়। আচরণ: কন্ট্রোলার HCI রিসেট পেলে কাউন্টার রিসেট হয়ে যায়। |
Last_Packet_Length_Host_to_Controller |
২টি অক্টেট | হোস্ট UART-এ পাঠানো শেষ HCI প্যাকেটের দৈর্ঘ্য। মনে রাখবেন: HCI প্যাকেট দৈর্ঘ্য সর্বোচ্চ ২ অকটেট (HCI, ACL, SCO, ISO অন্তর্ভুক্ত) |
Last_Packet_Length_Controller_To_host |
২টি অক্টেট | হোস্ট UART থেকে পাওয়া শেষ HCI প্যাকেটের দৈর্ঘ্য। মনে রাখবেন: HCI প্যাকেট দৈর্ঘ্য সর্বোচ্চ ২ অকটেট (HCI, ACL, SCO, ISO অন্তর্ভুক্ত) |
Total_BT_Wake_Count |
৪টি অক্টেট | হোস্ট এন্টিটি দ্বারা BT_Wake পিন অ্যাসার্শনের এগ্রিগেট ট্যালি। এই ফিল্ডটি পাওয়ার-সম্পর্কিত সমস্যা ডিবাগ করার জন্য ডায়াগনস্টিক টুল হিসেবে কাজ করে। আচরণ: কন্ট্রোলার HCI রিসেট পেলে কাউন্টার রিসেট হয়। |
Total_HOST_Wake_Count |
৪টি অক্টেট | কন্ট্রোলারের মাধ্যমে শুরু করা Host_Wake পিন অ্যাসারশনের সমষ্টিগত গণনা। এই ফিল্ডটি বিদ্যুৎ সংক্রান্ত সমস্যা ডিবাগ করার জন্য ডায়াগনস্টিক টুল হিসেবে কাজ করে। আচরণ: কন্ট্রোলার HCI রিসেট পেলে কাউন্টার রিসেট হয়ে যায়। |
Last_BT_Wake_TimeStamp |
৪টি অক্টেট | হোস্ট BT_Wake পিন অ্যাসার্ট করার শেষ টাইমস্ট্যাম্প। এই ফিল্ডটি পাওয়ার সংক্রান্ত সমস্যা ডিবাগ করার উদ্দেশ্যে প্রয়োগ করা হয়েছে। |
Last_HOST_Wake_TimeStamp |
৪টি অক্টেট | কন্ট্রোলার Host_Wake পিন অ্যাসার্ট করার সময়কার সবচেয়ে সাম্প্রতিক টাইমস্ট্যাম্প। এই ফিল্ডটি বিদ্যুৎ সংক্রান্ত সমস্যা ডিবাগ করার জন্য ব্যবহার করা হয়। |
Reset_Timestamp |
৪টি অক্টেট | সবচেয়ে সাম্প্রতিক HCI রিসেট সম্পূর্ণ হওয়ার সময় নির্দেশকারী টাইমস্ট্যাম্প। সময় সংক্রান্ত সমস্যার সমাধান সহজ করার সুনির্দিষ্ট উদ্দেশ্যে এই ফিল্ড ব্যবহার করা হয়। এটি প্রাথমিক রেকর্ডিং পয়েন্ট হিসেবে কাজ করবে যার সাথে অন্যান্য সব আইটেম রেফারেন্স করা হয়। |
Current_Timestamp |
৪টি অক্টেট | এই ইভেন্টটি তৈরি হওয়ার বর্তমান সময়। এই ফিল্ডটি টাইমিংয়ের অসঙ্গতি সংক্রান্ত সমস্যার সমাধান করার উদ্দেশ্যে ব্যবহার করা হয়। এটি ট্রিগার রেকর্ডিং পয়েন্ট হিসেবে কাজ করবে যা অন্যান্য সব এলিমেন্টকে রেফারেন্স হিসেবে ব্যবহার করে। |
Is_WatchDog_Timer_About_To_Expire |
৪টি অক্টেট | এই ফ্ল্যাগটি নির্দেশ করে যে এই স্বাস্থ্য সংক্রান্ত স্ট্যাটাস ইভেন্টটি কন্ট্রোলার দ্বারা তৈরি করা হয়েছে, যা ওয়াচডগ মেয়াদ শেষ হওয়ার প্রাথমিক সতর্কতা হিসেবে কাজ করে। বর্তমান টাইমস্ট্যাম্প থেকে ঘটনটি কখন ঘটেছে তা বোঝা যায়। |
Coex_Status_Mask |
২টি অক্টেট | বিট ০ - রিজার্ভ করা |
Total_Links_BR_EDR_LE_Active |
১ অক্টেট | অ্যাক্টিভ অবস্থায় থাকা BR/EDR/LE-এর মোট লিঙ্ক সংখ্যা। |
Total_Links_BR_EDR_Sniff |
১ অক্টেট | Sniff/Idle অবস্থায় BR/EDR-এর মোট লিঙ্ক সংখ্যা। |
Total_Links_CIS |
১ অক্টেট | ISO-এর মোট লিঙ্কের সংখ্যা। |
Is_SCO_Active |
১ অক্টেট | SCO লিঙ্ক বর্তমানে চালু আছে কিনা তা চেক করার ইন্ডিকেটর। |
সাবইভেন্ট কোড = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log Dump related event]
| সাবইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Quality_Report_Id |
১ অক্টেট |
0x00 ~ 0x10: সংরক্ষিত। 0x11: LMP/LL মেসেজ ট্রেস। 0x12: ব্লুটুথ মাল্টি-লিঙ্ক/কোএক্স শিডিউলিং ট্রেস। 0x13: কন্ট্রোলার ডিবাগ তথ্য ডেটা ডাম্প। 0x14 ~ 0xFF: সংরক্ষিত। |
Connection_Handle |
২টি অক্টেট | কানেকশন হ্যান্ডেল। |
| ভেন্ডর-নির্দিষ্ট প্যারামিটার | (প্যারামিটারের মোট দৈর্ঘ্য - ৪) * অক্টেট | LMP মেসেজ ট্রেসের ভেন্ডর-নির্দিষ্ট ফর্ম্যাট, ব্লুটুথ মাল্টি-লিঙ্ক/Coex শিডিউলিং ট্রেস এবং কন্ট্রোলার ডিবাগিং ইনফরমেশন ডেটা ডাম্প। |
সাব-ইভেন্ট কোড = 0x58 [Quality_Report_Id = 0x16, LEA ব্রডকাস্ট সোর্স ইভেন্ট]
BIG Handle থেকে Timestamp প্যারামিটার কন্ট্রোলারকে ব্রডকাস্ট সোর্স সংক্রান্ত তথ্য আগে থেকেই রিপোর্ট করতে সাহায্য করে, এর মধ্যে রয়েছে এয়ারে ট্রান্সমিট করা BD_ADDR এবং বর্তমানে ব্যবহৃত BIG চ্যানেল ম্যাপ। Broadcast ID of Broadcast Receiver Subscribed থেকে RSSI পর্যন্ত প্যারামিটারগুলি সাবস্ক্রাইব করা BIG সোর্স সম্পর্কে তথ্য রিপোর্ট করার জন্য ব্রডকাস্ট রিসিভারের উদ্দেশ্যে করা হয়েছে। এই তথ্য অবশ্যই PAwR, LE ACL কানেকশন বা অন্য কোনও প্রযোজ্য পদ্ধতির মাধ্যমে ব্রডকাস্ট রিসিভার থেকে BIG সোর্সে ট্রান্সমিট করতে হবে।
| সাব-ইভেন্ট প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Quality_Report_Id |
১ অক্টেট | 0x16: LEA ব্রডকাস্ট সোর্স ইভেন্ট। |
BIG_Handle |
১ অক্টেট | হোস্টের দ্বারা বরাদ্দ করা BIG হ্যান্ডেল। |
Broadcast_Source_BD_ADDR_Type |
১টি অক্টেট | BD_ADDR ধরনের ব্রডকাস্ট সোর্স (BIG হ্যান্ডেল) এয়ারে পাঠানো হয়। |
Broadcast_Source_BD_ADDR |
৬টি অক্টেট | সম্প্রচার সোর্সের BD_ADDR (BIG হ্যান্ডেল) এয়ারে পাঠানো হয়েছে। |
BIG_Source_Prefer_Channel_Map |
৫টি অক্টেট | কন্ট্রোলারের পছন্দসই BIG চ্যানেল ম্যাপ যা চ্যানেল ক্লাসিফিকেশন শনাক্ত করে। |
BIG_Source_Used_Channel_Map |
৫টি অক্টেট | কন্ট্রোলারের মাধ্যমে ব্যবহার করা BIG চ্যানেল। |
BIG_TX_Power |
১ অক্টেট | ব্রডকাস্ট আইডিতে বর্তমানে ব্যবহৃত TX পাওয়ার। |
Timestamp |
৪টি অক্টেট |
নির্দিষ্ট BIG হ্যান্ডেলের জন্য টাইমস্ট্যাম্প (পিকোনেট ক্লক)। এই ভ্যালু, 0x01 (পিকোনেট ক্লক)-এর Which_Clock প্যারামিটার সহ HCI_Read_Clock HCI কমান্ডে কন্ট্রোলারের রেসপন্সের মতোই হবে।ইউনিট: N * 0.3125 ms (১টি ব্লুটুথ ক্লক) |
Broadcast_ID_of_Broadcast_Receiver_Subscribed |
৩টি অক্টেট |
ক্লায়েন্ট ডিভাইসের সাবস্ক্রাইব করা ব্রডকাস্ট আইডি নির্দেশ করে। ভুল ভ্যালু: 0xFFFFFF |
Broadcast_Receiver_BD_ADDR_Type |
১ অক্টেট |
ব্রডকাস্ট রিসিভারের BD_ADDR ধরন। ভুল ভ্যালু: 0xFF |
Broadcast_Receiver_BD_ADDR |
৬টি অক্টেট |
ব্রডকাস্ট রিসিভারের BD_ADDR। ভুল মান: 0x000000000000 |
Time_Duration |
৪টি অক্টেট |
পারফর্ম্যান্স সংক্রান্ত তথ্য সংগ্রহ করার সময়সীমা। ইউনিট: মিলিসেকেন্ড। ভুল মান: 0xFFFFFFFF |
BIS_Choppy_count |
৪টি অক্টেট |
BIS Choppy count: Time_Duration সহ Choppy count. ভুল মান: 0xFFFFFFFF |
PER |
৪টি অক্টেট |
Time_Duration-এর মধ্যে প্যাকেট এরর রেট (PER)। ভুল মান: 0xFFFFFFFF |
No_Sync |
৪টি অক্টেট |
RX কতবার সিঙ্ক করা হয়নি। ভুল ভ্যালু: 0xFFFFFFFF |
Receiver_Prefer_Channel_Map |
৫টি অক্টেট |
ব্রডকাস্ট রিসিভারের চ্যানেল ম্যাপ নির্দেশ করে। ভুল ভ্যালু: 0x0000000000 |
Receiver_Tx_Power |
১ অক্টেট |
সম্প্রচার রিসিভার থেকে ডেটা সহ প্যাকেট যে পাওয়ার লেভেলে ট্রান্সমিট করা হয় তা দেখায়। ভুল মান: 0xFF |
RSSI |
১টি অক্টেট |
ব্রডকাস্ট রিসিভার থেকে পাওয়া প্যাকেটগুলির RSSI। ভুল মান: 0x7F |
Reserved |
৪টি অক্টেট | রিজার্ভ করা হয়েছে |
ISO লিঙ্ক সংক্রান্ত মতামত জানানোর সাব-ইভেন্ট
সাব ইভেন্ট কোড = 0x5C
চালু করা হলে, প্রতিটি ISO ইন্টারভ্যালের সময় এই ইভেন্ট অবশ্যই জেনারেট করতে হবে।
চালু করা
HCI_LE_Setup_ISO_Data_Path স্ট্যান্ডার্ড কমান্ডে ভেন্ডর Data_Path_ID কোড
0x19 বেছে নেওয়ার মাধ্যমে অ্যাক্টিভেশন করা হয়।
HCI_Configure_Data_Path কমান্ডের সাথে Data_Path_ID-কে
0x19-এ সেট করা এবং Vendor_Specific_Config_Length-কে 0-এ সেট করা,
অবশ্যই গ্রহণ করতে হবে, এমনকি এই কমান্ড পাওয়ার পরে কন্ট্রোলারের থেকে কোনও অ্যাকশন প্রত্যাশিত না হলেও।
ডিসপ্যাচ করার সময়সীমা
ইভেন্টটি ISO ইন্টারভ্যালের (CIG বা BIG অ্যাঙ্কর পয়েন্ট) শুরু থেকে পরবর্তী ISO ইন্টারভ্যাল পর্যন্ত নির্গত হয়। কন্ট্রোলারAnchor_Point_Delay ব্যবহার করে ISO ইন্টারভ্যালের
কার্যকর শুরুর সাথে বিলম্ব নির্দেশ করে।
কন্ট্রোলার সিঙ্ক্রোনাইজেশন
ISO ইন্টারভ্যালের শুরুতে, কন্ট্রোলার কনফিগার করাISO_Interval ÷ SDU_Interval দিয়ে বর্তমান ভ্যালু ইনক্রিমেন্ট করে
StreamSN গণনা করে; প্রথম
ইন্টারভ্যালে, এটি ০ হিসেবে ইনিশিয়ালাইজ করা হয়।তারপর, ISO FIFO-তে থাকা প্রতিটি প্যাকেটের জন্য, নিম্নলিখিত বিষয় প্রযোজ্য:
-
কন্ট্রোলার দুটি ক্রমিক সংখ্যার মধ্যে মোড়ানোর পার্থক্য 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 |
২টি অক্টেট |
CIS বা BIS-এর কানেকশন হ্যান্ডেল রেঞ্জ: 0x0000 থেকে 0x0EFF |
Sequence_Number |
২টি অক্টেট |
কন্ট্রোলারের ম্যানেজ করা স্ট্রিমের ক্রমিক সংখ্যা। CIS বা BIS তৈরি করার সময় ০ হিসেবে ইনিশিয়ালাইজ করা হয় এবং ISO আইসোক্রোনাস ইন্টার্ভাল দ্বারা SDU-এর সংখ্যা দ্বারা ইনক্রিমেন্ট করা হয় প্রতিটি ISO ইন্টার্ভালে ISO_interval ÷ SDU_Interval হিসেবে সংজ্ঞায়িত করা হয়,
।
|
Anchor_Point_Delay |
২টি অক্টেট |
ইভেন্ট তৈরি এবং কার্যকর BIG বা CIG অ্যাঙ্কর পয়েন্ট বা ISO ইন্টারভ্যাল শুরু হওয়ার মধ্যে মাইক্রোসেকেন্ডে বিলম্ব।
কার্যকর অ্যাঙ্কর পয়েন্ট টাইমস্ট্যাম্প এগুলি দ্বারা সংজ্ঞায়িত করা হয়:Event generation time - Anchor_Point_Delay
রেঞ্জ: মাইক্রোসেকেন্ডে ISO ইন্টারভ্যাল |
In_Status |
২টি অক্টেট |
কন্ট্রোলার ISO বাফার স্ট্যাটাস ISO ইন্টারভ্যালের শুরুতে, SDU (Sequence_Number + i) mod 0x10000 উপলভ্য হলে, প্রতিটি বিট bi সেট করা হয়। উপলভ্য না থাকলে, SDU
Not received from the host হিসেবে চিহ্নিত করা হয়।i-এর মান ০ থেকে ISO_Interval ÷ SDU_Interval - 1 পর্যন্ত হয়।
i-এর অন্যান্য ভ্যালুর জন্য, বিট ০-তে সেট করা হয়।
|
Tx_Status |
২টি অক্টেট |
ক্রমিক সংখ্যা সহ SDU-এর সাপেক্ষে ট্রান্সমিশন স্ট্যাটাস:(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000)
mod 0x10000
প্রতিটি বিট bi সেট করা হয় যখন শনাক্ত করা SDU-এর সব PDU, এর সিকুয়েন্স নম্বর অনুযায়ী, সফলভাবে ট্রান্সমিট করা হয় এবং অ্যাকনলেজ করা হয়। i-এর মান ০ থেকে ISO_Interval ÷ SDU_Interval - 1 পর্যন্ত হয়।
i-এর অন্যান্য ভ্যালুর জন্য, বিটগুলি ০ হিসেবে সেট করা হয়।ব্রডকাস্ট গ্রুপে, ট্রান্সমিশন সবসময় স্বীকার করা উচিত। |
একাধিক বিজ্ঞাপনদাতার জন্য সহায়তা
একাধিক বিজ্ঞাপনদাতার জন্য সহায়তা প্রদান করার উদ্দেশ্যগুলি হল:
-
একাধিক বিজ্ঞাপন দেখানোর সুবিধা
(
max_advt_instances) - বিভিন্ন রেঞ্জের জন্য আলাদা আলাদা ট্রান্সমিট পাওয়ার
- আলাদা আলাদা বিজ্ঞাপন কন্টেন্ট
- প্রত্যেক বিজ্ঞাপনদাতার জন্য আলাদা আলাদা উত্তর
- প্রতিটি বিজ্ঞাপনদাতার জন্য গোপনীয়তা (ট্র্যাক করা যায় না)
- কানেক্ট করা যায়
এই স্পেসিফিকেশনকে বর্তমান স্ট্যান্ডার্ডের কাছাকাছি রাখতে, নিম্নলিখিত ভেন্ডর-নির্দিষ্ট কমান্ড প্রদান করা হয়েছে। এগুলি Bluetooth Core 4.1 স্পেসিফিকেশন থেকে নেওয়া হয়েছে।
LE_Multi_Advt_Command
OCF: 0x154
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Multi_advt_opcode |
১ অক্টেট |
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 |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Multi_advt_opcode |
১ অক্টেট |
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
বেস রেফারেন্স: Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising Parameter Command)
সাব 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 |
১ অক্টেট | কোনও ইনস্ট্যান্সের ক্ষেত্রে উপরের প্যারামিটারগুলির প্রযোজ্যতা নির্দিষ্ট করে |
Tx_power |
১টি অক্টেট |
Transmit_Power ইউনিট - dBm-এ (সাইন করা পূর্ণসংখ্যা) রেঞ্জ (-৭০ থেকে +২০) |
এই মাল্টি-বিজ্ঞাপন ইনস্ট্যান্স সেট-আপ করার সময় Own_Address প্যারামিটারটি
হোস্ট-কনফিগার করা অ্যাড্রেস হতে পারে। এটি
প্রথম বিকন ট্রান্সমিট করার সময়
সমাধানযোগ্য ব্যক্তিগত ঠিকানা থাকার সুবিধা দেয়। কানেকশন যাই হোক না কেন, কোনও ইনস্ট্যান্সে বিজ্ঞাপন
দেখানো চলতে থাকবে। হোস্ট BT স্ট্যাক, কানেকশন হওয়ার পরে,
কোনও ইনস্ট্যান্সে বিজ্ঞাপন শুরু করার জন্য কমান্ড ইস্যু করতে পারে।
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে, যেমনটি
ব্লুটুথ কোর 4.1 স্পেসিফিকেশনে উল্লেখ করা হয়েছে, উপরের কমান্ড অনুযায়ী। বিজ্ঞাপন ইনস্ট্যান্স বা Tx_Power প্যারামিটার ভুল হলে
কন্ট্রোলার একটি নন-সাকসেস (ভুল প্যারামিটার) কোড দিয়ে উত্তর দেবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Multi_advt_opcode |
১টি অক্টেট | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
বেস রেফারেন্স: ব্লুটুথ কোর 4.1 স্পেসিফিকেশন, পৃষ্ঠা ৯৬৯ (LE সেট বিজ্ঞাপন ডেটা কমান্ড)
Sub OCF: 0x02
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Advertising_Data_Length |
স্পেসিফিকেশন অনুযায়ী | স্পেসিফিকেশন অনুযায়ী |
Advertising_Data |
স্পেসিফিকেশন অনুযায়ী | স্পেসিফিকেশন অনুযায়ী |
Advertising_Instance |
১ অক্টেট | কোনও ইনস্ট্যান্সের ক্ষেত্রে উপরের প্যারামিটারগুলির প্রযোজ্যতা নির্দিষ্ট করে |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে, যেমনটি
ব্লুটুথ কোর 4.1 স্পেসিফিকেশনে উল্লেখ করা হয়েছে, উপরের কমান্ড অনুযায়ী। বিজ্ঞাপন
ইনস্ট্যান্স বা Tx_Power প্যারামিটার ভুল হলে কন্ট্রোলার
সঠিক কোড ছাড়া অন্য কোড দিয়ে উত্তর দেবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Multi_advt_opcode |
১টি অক্টেট | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
বেস রেফারেন্স: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)
Sub OCF: 0x03
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Scan_Response_Data_Length |
স্পেসিফিকেশন অনুযায়ী | স্পেসিফিকেশন অনুযায়ী |
Scan_Response_Data |
স্পেসিফিকেশন অনুযায়ী | স্পেসিফিকেশন অনুযায়ী |
Advertising_Instance |
১ অক্টেট | কোনও ইনস্ট্যান্সের ক্ষেত্রে উপরের প্যারামিটারগুলির প্রযোজ্যতা নির্দিষ্ট করে |
উপরে উল্লিখিত কমান্ড অনুযায়ী, Bluetooth Core 4.1 স্পেসিফিকেশনে
যেমন বলা আছে, এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে। বিজ্ঞাপন ইনস্ট্যান্স বা Tx_Power প্যারামিটার ভুল হলে,
কন্ট্রোলার একটি নন-সাকসেস কোড (ভুল প্যারামিটার) সহ উত্তর দেবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Multi_advt_opcode |
১ অক্টেট | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
বেস রেফারেন্স: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)
সাব OCF: 0x04
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| র্যান্ডম ঠিকানা | স্পেসিফিকেশন অনুযায়ী | স্পেসিফিকেশন অনুযায়ী |
Advertising_Instance |
১ অক্টেট | কোনও ইনস্ট্যান্সের ক্ষেত্রে উপরের প্যারামিটারগুলির প্রযোজ্যতা নির্দিষ্ট করে |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Multi_advt_opcode |
১টি অক্টেট | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
বেস রেফারেন্স: Bluetooth Core 4.1 Specification, page 971 (LE Set Advertise Enable Command in that core specification)
OCF: 0x05
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Advertising_Enable |
১টি অক্টেট | ১ ভ্যালু মানে চালু করা। অন্য যেকোনও ভ্যালু মানে হল বন্ধ করা। |
Advertising_Instance |
১ অক্টেট | কোনও ইনস্ট্যান্সের ক্ষেত্রে উপরের প্যারামিটারগুলির প্রযোজ্যতা নির্দিষ্ট করে। ইনস্ট্যান্স ০ মানে স্ট্যান্ডার্ড HCI ইনস্ট্যান্স। |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Multi_advt_opcode |
১ অক্টেট | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
প্রাইভেট অ্যাড্রেসের অফলোড করা রেজোলিউশন
এই ফিচারটি কন্ট্রোলার ফার্মওয়্যার বা হার্ডওয়্যারে একটি ব্যক্তিগত ঠিকানা সমাধান করে, যা নিম্নলিখিত সুবিধা প্রদান করে:
- প্রাইভেট অ্যাড্রেস সমাধান করার ক্ষেত্রে হোস্টের সাথে যুক্ত লেটেন্সি
- হোস্টকে না জাগিয়ে ব্যাটারি সেভ করা
LE_Set_RPA_Timeout
OCF: 0x15C
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
LE_local_IRK |
১৬ অক্টেট | র্যান্ডম সমাধানযোগ্য অ্যাড্রেস তৈরি করতে স্থানীয় ডিভাইস IRK ব্যবহার করা হয়। |
tRPA_min |
২টি অক্টেট |
সেকেন্ডে ন্যূনতম RPA জেনারেশন টাইমআউট। কন্ট্রোলারকে অবশ্যই
এই টাইম-আউটের পরে যেকোনও
বিজ্ঞাপন/স্ক্যানিং/কানেকশন ইভেন্টের জন্য নতুন সমাধানযোগ্য অ্যাড্রেস তৈরি করতে হবে। সঠিক রেঞ্জ: ৩০০-১৮০০ |
tRPA_max |
২টি অক্টেট |
RPA জেনারেশনের সর্বাধিক টাইম-আউট সেকেন্ডে। কন্ট্রোলারকে অবশ্যই
এই টাইম-আউটের আগে বা এর মধ্যে যেকোনও
বিজ্ঞাপন/স্ক্যানিং/কানেকশন ইভেন্টের জন্য নতুন সমাধানযোগ্য অ্যাড্রেস তৈরি করতে হবে। সঠিক রেঞ্জ: tRPA_min-১৮০০
|
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১ অক্টেট |
কমান্ডের স্ট্যাটাস। সাজেস্ট করা HCI স্ট্যাটাস ভ্যালু: 0x00 সম্পূর্ণ হয়েছে 0x01 অজানা কমান্ড (কাজ না করলে) 0x12 ভুল কমান্ড প্যারামিটার (কোনও প্যারামিটার নির্দিষ্ট রেঞ্জের বাইরে থাকলে) |
LE_RPA_offload_Command
OCF: 0x155
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
RPA_offload_opcode |
১টি অক্টেট |
0x1 - গ্রাহক-নির্দিষ্ট ফিচার চালু করুন 0x2 - তালিকায় IRK যোগ করুন 0x3 - তালিকা থেকে IRK সরান 0x4 - IRK তালিকা মুছে দিন 0x5 - IRK তালিকা এন্ট্রি পড়ুন |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Event_RPA_offload_opcode |
১টি অক্টেট |
0x1 - গ্রাহক-নির্দিষ্ট ফিচার চালু করুন 0x2 - তালিকায় IRK যোগ করুন 0x3 - তালিকা থেকে IRK সরান 0x4 - IRK তালিকা মুছে দিন 0x5 - IRK তালিকা এন্ট্রি পড়ুন |
LE_RPA_offload: Enable_cust_specific_sub_Command
সাব OCF: 0x01
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
enable_customer_specific_feature_set |
১ অক্টেট |
0x01 - অফলোড করা RPA ফিচার চালু করুন 0x00 - অফলোড করা RPA ফিচার বন্ধ করুন |
চিপের
ক্ষমতার উপর ভিত্তি করে হোস্টকে RPA অফলোড চালু করতে হবে। LE_Get_Vendor_Capabilities_Command দেখুন।
প্রতিটি চিপের ফার্মওয়্যারে আলাদা আলাদা max_irk_list_sz থাকতে পারে।
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Event_cust_specific_feature_opcode |
১টি অক্টেট | 0x01 [Enable customer-specific feature] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
LE_IRK |
১৬টি অক্টেট | LE IRK (1st byte LSB) |
Address_Type |
১ অক্টেট |
0: পাবলিক অ্যাড্রেস 1: র্যান্ডম অ্যাড্রেস |
LE_Device_Address |
৬টি অক্টেট | IRK-এর সাথে যুক্ত পাবলিক বা র্যান্ডম অ্যাড্রেস (১ম বাইট LSB) |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Event_cust_specific_feature_opcode |
১ অক্টেট | 0x02 [তালিকায় IRK যোগ করুন] |
LE_IrkList_AvailableSpaces |
১ অক্টেট | বর্তমান অপারেশনের পরে উপলভ্য IRL তালিকার এন্ট্রি |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
সাব OCF: 0x03
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Address_Type |
১ অক্টেট |
0: পাবলিক অ্যাড্রেস 1: র্যান্ডম অ্যাড্রেস |
LE_Device_Address |
৬টি অক্টেট | IRK-এর সাথে যুক্ত সর্বজনীন বা র্যান্ডম ঠিকানা |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Event_cust_specific_feature_opcode |
১টি অক্টেট | 0x03 [তালিকা থেকে IRK সরিয়ে দিন] |
LE_IrkList_AvailableSpaces |
১ অক্টেট | বর্তমান অপারেশনের পরে উপলভ্য IRL তালিকার এন্ট্রি |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
| কোনওটিই নয় |
এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Event_cust_specific_feature_opcode |
১টি অক্টেট | 0x04 [Clear IRK List] |
LE_IrkList_AvailableSpaces |
১ অক্টেট |
বর্তমান অপারেশনের পরে উপলভ্য IRL তালিকার এন্ট্রি [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
সাব OCF: 0x05
| সাবকমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
LE_read_IRK_list_entry-index |
১ অক্টেট | IRK তালিকার ইন্ডেক্স [0, max_irk_list_sz-1] |
এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।
| রিটার্ন প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Status |
১টি অক্টেট | কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস |
Event_cust_specific_feature_opcode |
১টি অক্টেট | 0x05 [Read IRK List Entry] |
LE_Read_IRK_List_entry |
১ অক্টেট | হোস্ট যে IRK পড়তে চায় তার ইন্ডেক্স (সর্বাধিক IRK তালিকা সাইজ হল ৩২) |
LE_IRK |
১৬টি অক্টেট | IRK ভ্যালু |
Address_Type |
১ অক্টেট |
0: পাবলিক অ্যাড্রেস 1: র্যান্ডম অ্যাড্রেস |
LE_Device_Address |
৬টি অক্টেট | IRK-এর সাথে যুক্ত সর্বজনীন বা র্যান্ডম ঠিকানা |
LE_Resolved_Private_Address |
৬টি অক্টেট | এই IRK-এর বর্তমানে সমাধান করা সমাধানযোগ্য ব্যক্তিগত ঠিকানা |
Sniff অফলোড
স্নিফ অফলোড ফিচারটি ব্লুটুথ হোস্ট স্ট্যাক থেকে ব্লুটুথ কন্ট্রোলারে স্নিফ মোড ম্যানেজমেন্ট অফলোড করে। এটি কন্ট্রোলারকে Sniff মোডে প্রবেশ/বেরিয়ে আসার সময় ম্যানেজ করতে এবং কনফিগার করা যায় এমন Sniff ও Sniff সাব-রেটিং প্যারামিটার প্রয়োগ করতে দেয়, তবে হোস্ট Bluetooth প্রোফাইল অ্যাক্টিভিটি পরিবর্তনের উপর ভিত্তি করে প্যারামিটার বেছে নেওয়ার কন্ট্রোল ধরে রাখে।
সনিফ অফলোড স্টেট
এই বিভাগে স্নিফ অফলোড ফাংশনের সাপেক্ষে ব্লুটুথ কন্ট্রোলারের মধ্যে থাকা স্ট্যাটাসকে সংজ্ঞায়িত করা হয়েছে। স্নিক অফলোড চালু করার সাথে সম্পর্কিত ব্লুটুথ কন্ট্রোলারের স্ট্যাটাস শনাক্ত করতে দুটি গ্লোবাল স্টেট নির্ধারণ করা হয়েছে। ব্লুটুথ কন্ট্রোলার স্নিফ অফলোড চালু থাকা অবস্থায় BR/EDR কানেকশনের স্ট্যাটাস শনাক্ত করার জন্য দুটি কানেকশন নির্দিষ্ট স্ট্যাটাস সংজ্ঞায়িত করা হয়েছে।
গ্লোবাল স্টেট
স্নিক অফলোড এনাবলমেন্টের সাথে সম্পর্কিত ব্লুটুথ কন্ট্রোলারের স্ট্যাটাস শনাক্ত করতে দুটি গ্লোবাল স্টেটকে সংজ্ঞায়িত করা হয়েছে।
Sniff Offload Disabled State
ডিফল্ট হিসেবে ব্লুটুথ কন্ট্রোলারকে ‘স্নিফ অফলোড বন্ধ করা আছে’ স্ট্যাটাসে আছে বলে বিবেচনা করা হয়। এটি প্রত্যাশিত যে ব্লুটুথ কন্ট্রোলার, ব্লুটুথ হোস্ট থেকে ইস্যু করা HCI_Sniff_Mode, HCI_Exit_Sniff_Mode এবং HCI_Sniff_Subrating কমান্ডগুলি হ্যান্ডেল করবে। ব্লুটুথ কন্ট্রোলারকে ব্লুটুথ হোস্টের সেট করা ইভেন্ট মাস্ক অনুযায়ী HCI_Mode_Change ও HCI_Sniff_Subrating ইভেন্টও ব্লুটুথ হোস্টে ফরওয়ার্ড করতে হবে।
Sniff Offload চালু করা আছে কিনা
একটি ব্লুটুথ কন্ট্রোলারকে 'স্নিফ অফলোড চালু করা' অবস্থায় আছে বলে মনে করা হয় যখন এটি স্নিফ অফলোড চালু করার জন্য 'WriteSniffOffloadEnable' সফলভাবে পরিচালনা করে। এই অবস্থায়, ব্লুটুথ কন্ট্রোলার, HCI_Mode_Change এবং HCI_Sniff_Subrating ইভেন্ট, ব্লুটুথ হোস্টের কাছে ফরওয়ার্ড করবে বলে আশা করা হয়। ব্লুটুথ হোস্ট এবং ইভেন্ট সাপ্রেশন ফ্ল্যাগ দ্বারা সেট করা ইভেন্ট মাস্কের লজিক্যাল-AND ফাংশন দ্বারা এটি নির্ধারিত হয়।
কানেকশন-নির্দিষ্ট স্টেট
ব্লুটুথ কন্ট্রোলার 'সনিফ অফলোড চালু করা আছে' স্টেটে থাকলে, প্রতিটি অ্যাক্টিভ ACL নিচে বর্ণিত দুটি স্টেটের মধ্যে একটিতে থাকতে পারে।
বাকি আছে-প্যারামিটার স্টেট
ব্লুটুথ কন্ট্রোলার 'স্নিফ অফলোড এনাবল' স্টেটে থাকলে, কিন্তু বর্তমান ACL-এর জন্য ব্লুটুথ হোস্টের দ্বারা অন্তত একবার 'WriteSniffOffloadParameters' ভেন্ডর স্পেসিফিক কমান্ড ইস্যু করা না হলে, ACL-কে 'পেন্ডিং-প্যারামিটার' স্টেটে আছে বলে বিবেচনা করা হয়।
কন্ট্রোল-স্টার্টেড স্টেট
ব্লুটুথ কন্ট্রোলার 'স্নিফ অফলোড চালু করা' অবস্থায় থাকলে এবং বর্তমান ACL-এর জন্য ব্লুটুথ হোস্টের মাধ্যমে অন্তত একবার 'WriteSniffOffloadParameters' ভেন্ডর নির্দিষ্ট কমান্ড ইস্যু করা হলে, ACL-কে 'কন্ট্রোল-স্টার্টেড' অবস্থায় আছে বলে বিবেচনা করা হয়।
WriteSniffOffloadEnable
OCF: 0x310
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Enable_Sniff_Offload |
১ অক্টেট | 0x00 : বন্ধ করুন 0x01 : চালু করুন |
Subrating_Max_Latency |
২টি অক্টেট | রিমোট ডিভাইস ব্যবহার করতে পারে এমন সর্বাধিক স্নিফ সাবরেট গণনা করতে সর্বাধিক লেটেন্সি প্যারামিটার ব্যবহার করা হবে। ডিফল্ট: T*sniff* লেটেন্সি = N × ০.৬২৫ ms (১টি বেসব্যান্ড স্লট) রেঞ্জ: 0x0002 থেকে 0xFFFE টাইম রেঞ্জ: ১.২৫ ms থেকে ৪০.৯ s |
Subrating_Min_Remote_Timeout |
২টি অক্টেট | রিমোট ডিভাইস ব্যবহার করতে পারে এমন ন্যূনতম স্নিক মোড টাইমআউট (T*sniff_mode_timeout*) ডিফল্ট: 0x0000 টাইমআউট = N × ০.৬২৫ মিলি সেকেন্ড (১টি বেসব্যান্ড স্লট) রেঞ্জ: 0x0000 থেকে 0xFFFE টাইম রেঞ্জ: ০ সেকেন্ড থেকে ৪০.৯ সেকেন্ড |
Subrating_Min_Local_Timeout |
২টি অক্টেট | লোকাল ডিভাইস ব্যবহার করতে পারে এমন ন্যূনতম স্নিক মোড টাইমআউট (T*sniff_mode_timeout*)। ডিফল্ট: 0x0000 টাইমআউট = N × 0.625 ms (১ বেসব্যান্ড স্লট) রেঞ্জ: 0x0000 থেকে 0xFFFE সময় রেঞ্জ: ০ সেকেন্ড থেকে ৪০.৯ সেকেন্ড |
Suppress_Mode_Change_Event |
১ অক্টেট | 0x00 : HCI_Set_Event_Mask কমান্ডে সেট করা কনফিগারেশন অনুযায়ী ব্লুটুথ কন্ট্রোলার হোস্টকে HCI Mode_Change ইভেন্ট
রিপোর্ট করবে। 0x01 : ব্লুটুথ কন্ট্রোলার হোস্টকে HCI Mode_Change ইভেন্ট রিপোর্ট করবে না। |
Suppress_Sniff_Subrating_Event |
১টি অক্টেট | 0x00 : ব্লুটুথ কন্ট্রোলার HCI_Set_Event_Mask কমান্ডে সেট করা কনফিগারেশন অনুযায়ী
হোস্টকে HCI Sniff_Subrating ইভেন্ট সম্পর্কে রিপোর্ট করবে। 0x01 : ব্লুটুথ কন্ট্রোলার হোস্টকে HCI Sniff_Subrating ইভেন্ট সম্পর্কে রিপোর্ট করবে না। |
WriteSniffOffloadParameters
OCF: 0x311
| কমান্ড প্যারামিটার | আকার | উদ্দেশ্য |
|---|---|---|
Connection_Handle |
২টি অক্টেট | ১৬-বিট BR/EDR ACL কানেকশন হ্যান্ডেল। রেঞ্জ: 0x0000 থেকে 0x0EFF |
Sniff_Max_Interval |
২টি অক্টেট | –Bluetooth SIG-এর নির্ধারিত রেঞ্জ, সাধারণত স্নুপ মোডে প্রবেশের জন্য ব্যবহার করা হয়। রেঞ্জ: 0x0002 থেকে 0xFFFE; শুধুমাত্র জোড় সংখ্যা বৈধ বাধ্যতামূলক রেঞ্জ: 0x0006 থেকে 0x0540 সময় = N × 0.625 ms সময়ের রেঞ্জ: 1.25 ms থেকে 40.9 s –বিশেষ কেস 0x0000 : “Push-Active” বেছে নিতে ব্যবহৃত হয় Sniff-Offload মোড। 0x0001 : "প্রেফার-অ্যাক্টিভ" স্নিফ-অফলোড মোড বেছে নিতে ব্যবহার করা হয়। |
Sniff_Min_Interval |
২টি অক্টেট | রেঞ্জ: 0x0002 থেকে 0xFFFE; শুধুমাত্র জোড় সংখ্যাই সঠিক বাধ্যতামূলক রেঞ্জ: 0x0006 থেকে 0x0540 সময় = N × 0.625 ms সময়সীমা: 1.25 ms থেকে 40.9 s |
Sniff_Attempts |
২টি অক্টেট | স্নিক অ্যাটেম্পটের জন্য বেসব্যান্ড রিসিভ স্লটের সংখ্যা। দৈর্ঘ্য = N × ১.২৫ মিলি সেকেন্ড রেঞ্জ: 0x0001 থেকে 0x7FFF সময়সীমা: ১.২৫ মিলি সেকেন্ড থেকে ৪০.৯ সেকেন্ড কন্ট্রোলারের জন্য বাধ্যতামূলক রেঞ্জ: ১ থেকে T*sniff* ÷ ২ |
Sniff_Timeout |
২টি অক্টেট | স্নিক টাইমআউটের জন্য বেসব্যান্ড রিসিভ স্লটের সংখ্যা। দৈর্ঘ্য = N × ১.২৫ মিলি সেকেন্ড রেঞ্জ: 0x0000 থেকে 0x7FFF সময়সীমা: ০ মিলি সেকেন্ড থেকে ৪০.৯ সেকেন্ড কন্ট্রোলারের জন্য বাধ্যতামূলক রেঞ্জ: ০ থেকে 0x0028 |
Link_Inactivity_Timeout |
২টি অক্টেট | মিলিসেকেন্ডে টাইমআউট ভ্যালু। প্রতিটি HCI-ACL ট্রানজ্যাকশনে Link_Inactivity Timer শুরু/রিসেট করা হয়েছে। এই টাইমারের মেয়াদ শেষ হয়ে গেলে, কন্ট্রোলার স্নিফ মোডে এন্ট্রি শুরু করবে। |
Subrating_Max_Latency |
২টি অক্টেট | রিমোট ডিভাইস ব্যবহার করতে পারে এমন সর্বাধিক স্নিফ সাবরেট গণনা করতে সর্বাধিক লেটেন্সি প্যারামিটার ব্যবহার করা হবে। ডিফল্ট: T*sniff* লেটেন্সি = N × ০.৬২৫ ms (১টি বেসব্যান্ড স্লট) রেঞ্জ: 0x0002 থেকে 0xFFFE টাইম রেঞ্জ: ১.২৫ ms থেকে ৪০.৯ s |
Subrating_Min_Remote_Timeout |
২টি অক্টেট | রিমোট ডিভাইস ব্যবহার করতে পারে এমন ন্যূনতম স্নিক মোড টাইমআউট (T*sniff_mode_timeout*) ডিফল্ট: 0x0000 টাইমআউট = N × ০.৬২৫ মিলি সেকেন্ড (১টি বেসব্যান্ড স্লট) রেঞ্জ: 0x0000 থেকে 0xFFFE টাইম রেঞ্জ: ০ সেকেন্ড থেকে ৪০.৯ সেকেন্ড |
Subrating_Min_Local_Timeout |
২টি অক্টেট | লোকাল ডিভাইস ব্যবহার করতে পারে এমন ন্যূনতম স্নিক মোড টাইমআউট (T*sniff_mode_timeout*)। ডিফল্ট: 0x0000 টাইমআউট = N × 0.625 ms (১ বেসব্যান্ড স্লট) রেঞ্জ: 0x0000 থেকে 0xFFFE সময় রেঞ্জ: ০ সেকেন্ড থেকে ৪০.৯ সেকেন্ড |
Allow_Exit_Sniff_On_Rx |
১ অক্টেট | HCI-ACL ট্রানজ্যাকশন রিসিভ করার সময় Sniff মোড থেকে বেরিয়ে আসার কন্ট্রোল করার জন্য ফ্ল্যাগ। 0x00 : Do not exit sniff on Rx. 0x01 : Rx রিসিভ-ডিরেকশনে স্নিফ থেকে বেরিয়ে আসুন HCI-ACL-কে ACL হিসেবে সংজ্ঞায়িত করা হয়েছে HCI-এর মাধ্যমে কন্ট্রোলার থেকে হোস্টে প্যাকেট ট্রান্সমিশন। |
Allow_Exit_Sniff_On_Tx |
১টি অক্টেট | ট্রান্সমিট-ডাইরেকশন HCI-ACL ট্রানজ্যাকশনে Sniff মোড থেকে বেরিয়ে আসার কন্ট্রোল করার জন্য ফ্ল্যাগ। 0x00 : Tx-এ সনিফ করবেন না। 0x01 : Tx ট্রান্সমিট-ডিরেকশনে এক্সিট স্নিফ HCI-ACL-কে HCI-এর মাধ্যমে হোস্ট থেকে কন্ট্রোলারে ACL প্যাকেট ট্রান্সমিশন হিসেবে সংজ্ঞায়িত করা হয়। |