ব্লুটুথ

অ্যান্ড্রয়েড ব্লুটুথ এইচএএল আইকন

অ্যান্ড্রয়েড একটি ডিফল্ট ব্লুটুথ স্ট্যাক প্রদান করে যা ক্লাসিক ব্লুটুথ এবং ব্লুটুথ লো এনার্জি (বিএলই) উভয়কেই সমর্থন করে। ব্লুটুথ ব্যবহার করে, অ্যান্ড্রয়েড ডিভাইসগুলো কাছাকাছি থাকা ব্লুটুথ ডিভাইসগুলোর সাথে ডেটা আদান-প্রদানের জন্য পার্সোনাল এরিয়া নেটওয়ার্ক (পিএআর) তৈরি করতে পারে।

অ্যান্ড্রয়েড ৪.৩ এবং এর পরবর্তী সংস্করণগুলিতে, অ্যান্ড্রয়েড ব্লুটুথ স্ট্যাক BLE বাস্তবায়নের সুবিধা প্রদান করে। BLE API-গুলি সম্পূর্ণরূপে ব্যবহার করার জন্য, অ্যান্ড্রয়েড ব্লুটুথ HCI রিকোয়ারমেন্টস অনুসরণ করুন। উপযুক্ত চিপসেটযুক্ত অ্যান্ড্রয়েড ডিভাইসগুলি ক্লাসিক ব্লুটুথ অথবা ক্লাসিক ব্লুটুথ এবং BLE উভয়ই বাস্তবায়ন করতে পারে। BLE পুরোনো ব্লুটুথ চিপসেটগুলির সাথে ব্যাকওয়ার্ড কম্প্যাটিবল নয়।

অ্যান্ড্রয়েড ৮.০-তে ব্লুটুথ স্ট্যাকটি ব্লুটুথ ৫-এর জন্য সম্পূর্ণরূপে উপযুক্ত। ব্লুটুথ ৫-এর উপলব্ধ ফিচারগুলো ব্যবহার করার জন্য ডিভাইসটিতে একটি ব্লুটুথ ৫-উপযোগী চিপসেট থাকা প্রয়োজন।

অ্যান্ড্রয়েড স্থাপত্য

একটি ব্লুটুথ অ্যাপ বাইন্ডারের মাধ্যমে ব্লুটুথ প্রসেসের সাথে যোগাযোগ করে। ব্লুটুথ প্রসেসটি ব্লুটুথ স্ট্যাকের সাথে যোগাযোগের জন্য জাভা নেটিভ ইন্টারফেস (JNI) ব্যবহার করে এবং ডেভেলপারদের বিভিন্ন ব্লুটুথ প্রোফাইলে অ্যাক্সেস প্রদান করে। এই ডায়াগ্রামটি ব্লুটুথ স্ট্যাকের সাধারণ কাঠামো দেখায়:

অ্যান্ড্রয়েড ব্লুটুথ স্ট্যাকের স্তরগুলো দেখানো ডায়াগ্রাম।

চিত্র ১. অ্যান্ড্রয়েড ব্লুটুথ স্থাপত্য।

অ্যাপ ফ্রেমওয়ার্ক
অ্যাপ ফ্রেমওয়ার্ক স্তরে অ্যাপ কোড থাকে, যা ব্লুটুথ হার্ডওয়্যারের সাথে যোগাযোগ করার জন্য android.bluetooth API ব্যবহার করে। অভ্যন্তরীণভাবে, এই কোডটি Binder IPC মেকানিজমের মাধ্যমে ব্লুটুথ প্রসেসকে কল করে।
ব্লুটুথ অ্যাপ
packages/modules/Bluetooth/android/app এ অবস্থিত ব্লুটুথ অ্যাপটি একটি অ্যান্ড্রয়েড অ্যাপ হিসেবে প্যাকেজ করা হয়েছে এবং এটি অ্যান্ড্রয়েড ফ্রেমওয়ার্ক লেয়ারে ব্লুটুথ প্রোফাইলগুলো বাস্তবায়ন করে। এই অ্যাপটি JNI-এর মাধ্যমে ব্লুটুথ স্ট্যাকে কল করে।
জেএনআই
android.bluetooth এর সাথে সম্পর্কিত JNI কোডটি packages/modules/Bluetooth/android/app/jni তে অবস্থিত। নির্দিষ্ট কিছু ব্লুটুথ অপারেশন সংঘটিত হলে, যেমন ডিভাইস আবিষ্কৃত হলে, এই JNI কোডটি ব্লুটুথ স্ট্যাককে কল করে।
ব্লুটুথ স্ট্যাক
ডিফল্ট ব্লুটুথ স্ট্যাকটি AOSP-তে সরবরাহ করা থাকে এবং এটি packages/modules/Bluetooth/system ফোল্ডারে অবস্থিত। এই স্ট্যাকটি জেনেরিক ব্লুটুথ HAL বাস্তবায়ন করে এবং এক্সটেনশন ও কনফিগারেশন পরিবর্তনের মাধ্যমে এটিকে কাস্টমাইজ করে।
বিক্রেতা বাস্তবায়ন
ভেন্ডর ডিভাইসগুলো HAL ইন্টারফেস ডেফিনিশন ল্যাঙ্গুয়েজ (HIDL) ব্যবহার করে ব্লুটুথ স্ট্যাকের সাথে যোগাযোগ করে।

এইচআইডিএল

HIDL ব্লুটুথ স্ট্যাক এবং ভেন্ডর ইমপ্লিমেন্টেশনের মধ্যেকার ইন্টারফেসকে সংজ্ঞায়িত করে। ব্লুটুথ HIDL ফাইলগুলো জেনারেট করার জন্য, ব্লুটুথ ইন্টারফেস ফাইলগুলো HIDL জেনারেশন টুলে পাস করুন। ইন্টারফেস ফাইলগুলো hardware/interfaces/bluetooth ফোল্ডারে অবস্থিত।

ব্লুটুথ স্ট্যাক উন্নয়ন

অ্যান্ড্রয়েড ব্লুটুথ স্ট্যাক একটি সম্পূর্ণ যোগ্যতাসম্পন্ন ব্লুটুথ স্ট্যাক। এর যোগ্যতার তালিকাটি ব্লুটুথ এসআইজি (Bluetooth SIG) ওয়েবসাইটে QDID 169365- এর অধীনে রয়েছে (এর জন্য সাইন-ইন করতে হবে)।

ব্লুটুথের মূল স্ট্যাকটি packages/modules/Bluetooth ফোল্ডারে থাকে। এর উন্নয়ন AOSP-তে করা হয় এবং এতে অবদান সাদরে গৃহীত হয়।