HCI সংক্রান্ত প্রয়োজনীয়তা

হোস্ট কন্ট্রোলার ইন্টারফেস (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:
  • big_set_channel_map_classification_support
  • vendor_connection_handle_min
  • vendor_connection_handle_max
  • connection_proximity_threshold_support
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
total_num_of_advt_tracked ২টি অক্টেট OnLost/OnFound উদ্দেশ্যে ট্র্যাক করা বিজ্ঞাপনদাতার মোট সংখ্যা
extended_scan_support ১টি অক্টেট এক্সটেন্ডেড স্ক্যান উইন্ডো ও ইন্টারভ্যাল সাপোর্ট করে
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 - immediate
0x01 - on_found
0x02 - 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 পরিবর্তনযোগ্য সাইজ স্থানীয় নামের জন্য অক্ষর স্ট্রিং।

মনে রাখবেন:
  • বর্তমানে, স্থানীয় নামের স্ট্রিংয়ে সর্বাধিক অক্ষরের সংখ্যা হল ২৯
  • অ্যাকশন "পরিষ্কার করুন" (0x2) হলে প্রযোজ্য নয়

এই কমান্ডের জন্য একটি কমান্ড সম্পূর্ণ ইভেন্ট তৈরি করা হবে।

রিটার্ন প্যারামিটার আকার উদ্দেশ্য
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 পরিবর্তনশীল সাইজ প্রস্তুতকারকের ডেটার জন্য অক্ষর স্ট্রিং।

মনে রাখবেন:
  • বর্তমানে, স্থানীয় নামের স্ট্রিংয়ে সর্বাধিক অক্ষরের সংখ্যা হল ২৯
  • অ্যাকশন "পরিষ্কার করুন" (0x2) হলে প্রযোজ্য নয়
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 পরিবর্তনযোগ্য সাইজ পরিষেবা ডেটার জন্য একটি ক্যারেক্টার স্ট্রিং।

মনে রাখবেন:
  • বর্তমানে, স্থানীয় নামের স্ট্রিংয়ে সর্বাধিক অক্ষরের সংখ্যা হল ২৯
  • অ্যাকশন "পরিষ্কার করুন" (0x2) হলে প্রযোজ্য নয়
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 ২ অক্টেট

কাজ করে এমন এক্সটেন্ডেড ফিচারের জন্য বিট মাস্ক:

  • বিট ০: ট্রান্সপোর্ট ডিসকভারি পরিষেবা ফিল্টার কাজ করে
  • বিট ১: বিজ্ঞাপন ফিল্টার করার ধরন কাজ করে
  • বিট ২ ~১৫: ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত

বিটের ভ্যালু

  • 0 = কাজ করে না
  • ১ = কাজ করে

কন্ট্রোলার অ্যাক্টিভিটি ও এনার্জি সংক্রান্ত তথ্য কমান্ড

এই তথ্যের উদ্দেশ্য হল, অ্যাপ ও ফ্রেমওয়ার্কে কী ঘটছে তার সাথে 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 হেডার যোগ করা চালু করে।
  • 0x00 - SCMS-T হেডার অন্তর্ভুক্ত করা হয়নি।
  • 0x01 - 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 কোডেক নির্দিষ্ট তথ্য এলিমেন্ট দেখুন
অক্টেট 0: অবজেক্টের ধরন
অক্টেট 1; b7: VBR
অক্টেট 2-31: রিজার্ভ করা আছে

LDAC কোডেক:

অক্টেট ০-৩: ভেন্ডর আইডি
0x0000012D

অক্টেট ৪-৫: কোডেক আইডি
0x00AA - LDAC
অন্য সব মান রিজার্ভ করা আছে

অকটেট ৬: বিটরেট ইন্ডেক্স:
0x00 - হাই
0x01 - মিড
0x02 - লো
0x03 - 0x7E - রিজার্ভ করা আছে
0x7F - ABR (অ্যাডাপ্টিভ বিট রেট)
0x80 - 0xFF - রিজার্ভ করা আছে

অকটেট ৭: LDAC চ্যানেল মোড
0x01 - স্টেরিও
0x02 - ডুয়াল
0x04 - মনো
অন্যান্য রিজার্ভ করা আছে

অকটেট ৮-৩১: রিজার্ভ করা আছে

Opus কোডেক:

অকটেট ০-৩: ভেন্ডর আইডি
0x000000E0

অক্টেট ৪-৫: কোডেক আইডি
0x0001 - 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 - যোগ করুন
0x01 - মুছুন
0x02 - মুছে দিন
0x03 - একবারের কোয়েরি

মুছে দিলে নির্দিষ্ট কোয়ালিটি ইভেন্ট রিপোর্টিং মুছে যাবে।
Clear সব কোয়ালিটি ইভেন্ট রিপোর্টিং মুছে দেবে (BQR_Quality_Event_Mask প্যারামিটার উপেক্ষা করা যেতে পারে)।

BQR_Quality_Event_Mask ৪টি অক্টেট বেছে নেওয়া কোয়ালিটি ইভেন্ট রিপোর্টিংয়ের জন্য বিট মাস্ক।

বিট ০: কোয়ালিটি মনিটরিং মোড চালু করতে সেট করা হয়।
বিট ১: LSTO ইভেন্ট (ACL/(e)SCO/ISO-এর জন্য) অ্যাপ্রোচ করার সুবিধা চালু করতে সেট করা আছে।
বিট ২: A2DP অডিও চপি ইভেন্ট চালু করতে সেট করা আছে।
বিট ৩: eSCO ভয়েস চপি ইভেন্ট চালু করতে সেট করা আছে।
বিট ৪: মূল ইনফ্লেমেশন ইভেন্ট চালু করতে সেট করা আছে।
বিট ৫: এনার্জি মনিটরিং মোড চালু করতে সেট করা আছে।
বিট ৬: LE অডিও চপি ইভেন্ট চালু করতে সেট করা আছে।
বিট ৭: কানেক্ট করতে না পারার ইভেন্ট চালু করার জন্য সেট করা হয়েছে।
বিট ৮: উন্নত RF স্ট্যাটিসটিক্স মোড ইভেন্ট ট্রিগার চালু করতে সেট করা আছে।
বিট ৯: অ্যাডভান্সড RF স্ট্যাটিসটিক্সের পিরিয়ডিক রিপোর্ট চালু করার জন্য সেট করা আছে।
বিট ১০: কন্ট্রোলার হেলথ মনিটরিং মেকানিজম ইভেন্ট ট্রিগার চালু করতে সেট করা আছে। (BQRv7-এ যোগ করা হয়েছে)
বিট ১১: কন্ট্রোলার হেলথ মনিটরিং মেকানিজম চালু করতে সেট করা হয়েছে যা মাঝে মাঝে রিপোর্ট করে। (BQRv7-এ যোগ করা হয়েছে)
বিট ১২ ~ ১৪: রিজার্ভ করা আছে।
বিট ১৫: ভেন্ডর-নির্দিষ্ট কোয়ালিটি ইভেন্ট চালু করতে সেট করা হয়।
বিট ১৬: LMP/LL মেসেজ ট্রেস চালু করতে সেট করা আছে।
বিট ১৭: ব্লুটুথ মাল্টি-লিঙ্ক/কোএক্স শিডিউলিং ট্রেস চালু করতে সেট করা আছে।
বিট ১৮: কন্ট্রোলার ডিবাগ সংক্রান্ত তথ্য মেকানিজম চালু করতে সেট করা আছে।
বিট ১৯: অফলোড ডিবাগ তথ্যের জন্য রিজার্ভ করা।
বিট ২০: UART ইতিহাস ডাম্প ইভেন্ট ট্রিগার। (BQRv7-এ যোগ করা হয়েছে)
বিট ২১ ~ ৩০: সংরক্ষিত।
বিট ৩১: ভেন্ডর-নির্দিষ্ট ট্রেস চালু করার জন্য সেট করা হয়েছে।

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 শিডিউলিং ট্রেস আপলোড করেছে অথবা কন্ট্রোলার ডিবাগ ইনফরমেশন ডেটা ডাম্প করেছে।

সাব-ইভেন্ট প্যারামিটার আকার উদ্দেশ্য
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) ভ্যালু।
কন্ট্রোলারকে লিঙ্কের ব্যবহার করা সব চ্যানেলের গড় 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 লিঙ্ক বর্তমানে চালু আছে কিনা তা চেক করার ইন্ডিকেটর।
সাবইভেন্ট প্যারামিটার আকার উদ্দেশ্য
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 ৪টি অক্টেট রিজার্ভ করা হয়েছে

সাব ইভেন্ট কোড = 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_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

এই কমান্ডের জন্য একটি Command Complete ইভেন্ট তৈরি করা হবে।

রিটার্ন প্যারামিটার আকার উদ্দেশ্য
Status ১টি অক্টেট কমান্ড সম্পূর্ণ হওয়ার স্ট্যাটাস
Multi_advt_opcode ১ অক্টেট 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

বেস রেফারেন্স: 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 প্যাকেট ট্রান্সমিশন হিসেবে সংজ্ঞায়িত করা হয়।