ব্লুটুথ

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

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

অ্যান্ড্রয়েড 4.3 এবং পরবর্তীতে, অ্যান্ড্রয়েড ব্লুটুথ স্ট্যাক ব্লুটুথ লো এনার্জি (BLE) প্রয়োগ করার ক্ষমতা প্রদান করে। সম্পূর্ণরূপে BLE API-এর সুবিধা পেতে, Android Bluetooth HCI প্রয়োজনীয়তাগুলি অনুসরণ করুন৷ একটি যোগ্যতাসম্পন্ন চিপসেট সহ Android ডিভাইসগুলি ক্লাসিক ব্লুটুথ বা ক্লাসিক ব্লুটুথ এবং BLE উভয়ই প্রয়োগ করতে পারে৷ BLE পুরানো ব্লুটুথ চিপসেটের সাথে পিছনের দিকে সামঞ্জস্যপূর্ণ নয়।

অ্যান্ড্রয়েড 8.0-এ, নেটিভ ব্লুটুথ স্ট্যাকটি ব্লুটুথ 5-এর জন্য সম্পূর্ণরূপে যোগ্য। উপলব্ধ ব্লুটুথ 5 বৈশিষ্ট্যগুলি ব্যবহার করতে, ডিভাইসটিতে একটি ব্লুটুথ 5 যোগ্য চিপসেট থাকতে হবে।

অ্যান্ড্রয়েড আর্কিটেকচার

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

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

এইচআইডিএল

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

ব্লুটুথ স্ট্যাক ডেভেলপমেন্ট

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

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

Android 7.x এবং আগের আর্কিটেকচার

একটি ব্লুটুথ সিস্টেম পরিষেবা JNI এর মাধ্যমে ব্লুটুথ স্ট্যাকের সাথে এবং বাইন্ডার IPC এর মাধ্যমে অ্যাপ্লিকেশনের সাথে যোগাযোগ করে। সিস্টেম সার্ভিস ডেভেলপারদের বিভিন্ন ব্লুটুথ প্রোফাইলে অ্যাক্সেস প্রদান করে। এই চিত্রটি ব্লুটুথ স্ট্যাকের সাধারণ গঠন দেখায়:

অ্যান্ড্রয়েড ব্লুটুথ আর্কিটেকচার
চিত্র 2. Android 7.x এবং আগের ব্লুটুথ আর্কিটেকচার
অ্যাপ্লিকেশন ফ্রেমওয়ার্ক
অ্যাপ্লিকেশান ফ্রেমওয়ার্ক স্তরে অ্যাপ্লিকেশন কোড থাকে, যা ব্লুটুথ হার্ডওয়্যারের সাথে ইন্টারঅ্যাক্ট করতে android.bluetooth APIs ব্যবহার করে। অভ্যন্তরীণভাবে, এই কোডটি বাইন্ডার আইপিসি মেকানিজমের মাধ্যমে ব্লুটুথ প্রক্রিয়াকে কল করে।
ব্লুটুথ সিস্টেম পরিষেবা
ব্লুটুথ সিস্টেম পরিষেবা, packages/apps/Bluetooth এ অবস্থিত, একটি অ্যান্ড্রয়েড অ্যাপ হিসেবে প্যাকেজ করা হয় এবং অ্যান্ড্রয়েড ফ্রেমওয়ার্ক স্তরে ব্লুটুথ পরিষেবা এবং প্রোফাইলগুলি প্রয়োগ করে৷ এই অ্যাপটি JNI এর মাধ্যমে HAL স্তরে কল করে।
জেএনআই
android.bluetooth- এর সাথে যুক্ত JNI কোড packages/apps/Bluetooth/jni এ অবস্থিত। JNI কোড HAL স্তরে কল করে এবং HAL থেকে কলব্যাক গ্রহণ করে যখন নির্দিষ্ট কিছু ব্লুটুথ অপারেশন হয়, যেমন যখন ডিভাইসগুলি আবিষ্কৃত হয়।
HAL
হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ারটি স্ট্যান্ডার্ড ইন্টারফেসকে সংজ্ঞায়িত করে যা android.bluetooth API এবং ব্লুটুথ প্রক্রিয়া কল করে এবং আপনার ব্লুটুথ হার্ডওয়্যার সঠিকভাবে কাজ করার জন্য আপনাকে অবশ্যই প্রয়োগ করতে হবে। ব্লুটুথ এইচএএল-এর হেডার ফাইলটি হল hardware/libhardware/include/hardware/bluetooth.h । অতিরিক্তভাবে, সমস্ত hardware/libhardware/include/hardware/bt_*.h ফাইল পর্যালোচনা করুন।
ব্লুটুথ স্ট্যাক
আপনার জন্য ডিফল্ট ব্লুটুথ স্ট্যাক প্রদান করা হয়েছে এবং এটি system/bt তে অবস্থিত। স্ট্যাকটি জেনেরিক ব্লুটুথ HAL প্রয়োগ করে এবং এটিকে এক্সটেনশন এবং কনফিগারেশন পরিবর্তনের সাথে কাস্টমাইজ করে।
বিক্রেতা এক্সটেনশন
কাস্টম এক্সটেনশন এবং ট্রেসিংয়ের জন্য একটি HCI স্তর যোগ করতে, আপনি একটি libbt-বিক্রেতা মডিউল তৈরি করতে পারেন এবং এই উপাদানগুলি নির্দিষ্ট করতে পারেন।

HAL বাস্তবায়ন

ব্লুটুথ এইচএএল /hardware/libhardware/include/hardware/bluetooth.h এ অবস্থিত। bluetooth.h ফাইলটিতে ব্লুটুথ স্ট্যাকের জন্য মৌলিক ইন্টারফেস রয়েছে এবং আপনাকে অবশ্যই এর কার্যাবলী বাস্তবায়ন করতে হবে।

প্রোফাইল-নির্দিষ্ট ফাইলগুলি একই ডিরেক্টরিতে অবস্থিত। বিস্তারিত জানার জন্য, HAL ফাইলের রেফারেন্স দেখুন।