হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) হলো এক ধরনের অ্যাবস্ট্রাকশন লেয়ার, যার একটি স্ট্যান্ডার্ড ইন্টারফেস থাকে যা হার্ডওয়্যার ভেন্ডররা ইমপ্লিমেন্ট করতে পারে। একটি HAL হার্ডওয়্যার ভেন্ডরদের উচ্চ-স্তরের লেয়ারের কোডকে প্রভাবিত বা পরিবর্তন না করেই নিম্ন-স্তরের, ডিভাইস-নির্দিষ্ট ফিচারগুলো ইমপ্লিমেন্ট করার সুযোগ দেয়।
প্রয়োজনীয় শর্তাবলী
ডকুমেন্টেশনের এই অংশে ব্যবহৃত পরিভাষাগুলোর সংজ্ঞা নিচে দেওয়া হলো:
- অ্যান্ড্রয়েড ইন্টারফেস সংজ্ঞা ভাষা (AIDL)
- একটি জাভা-সদৃশ ভাষা যা ব্যবহৃত প্রোগ্রামিং ভাষার ওপর নির্ভর না করে ইন্টারফেস সংজ্ঞায়িত করতে ব্যবহৃত হয়। AIDL, HAL ক্লায়েন্ট এবং HAL পরিষেবাগুলির মধ্যে যোগাযোগের সুযোগ করে দেয়।
- বাইন্ডারাইজড এইচএএল
- একটি HAL যা বাইন্ডার ইন্টার-প্রসেস কমিউনিকেশন (IPC) কল ব্যবহার করে অন্যান্য প্রসেসের সাথে যোগাযোগ করে। বাইন্ডারাইজড HAL-গুলো ব্যবহারকারী ক্লায়েন্ট থেকে একটি পৃথক প্রসেসে চলে। বাইন্ডারাইজড HAL-গুলো একটি সার্ভিস ম্যানেজারের সাথে নিবন্ধিত থাকে, যাতে ক্লায়েন্টরা এর সক্ষমতাগুলো অ্যাক্সেস করতে পারে। অ্যান্ড্রয়েড ৮ এবং তার পরবর্তী সংস্করণগুলোর জন্য লেখা HAL-গুলো বাইন্ডারাইজড হয়।
- এইচএএল ক্লায়েন্ট
- যে প্রসেসটি HAL সার্ভিস অ্যাক্সেস করে।
- HAL ইন্টারফেস
- HAL ক্লায়েন্ট এবং পরিষেবা উভয়ের যোগাযোগের জন্য ব্যবহৃত সাধারণ ইন্টারফেস।
- এইচএএল পরিষেবা
হার্ডওয়্যার-নির্দিষ্ট কোড, যেমন যে কোড আপনার নির্দিষ্ট ডিভাইসের ক্যামেরার সাথে যোগাযোগ করে। আপনার ভেন্ডর পার্টিশনে আপনি যে রিলিজটি টার্গেট করছেন, তার জন্য কম্প্যাটিবিলিটি ম্যাট্রিক্সে তালিকাভুক্ত সমস্ত প্রয়োজনীয় HAL আপনাকে অবশ্যই ইমপ্লিমেন্ট করতে হবে। কম্প্যাটিবিলিটি ম্যাট্রিক্স সম্পর্কে আরও তথ্যের জন্য, কম্প্যাটিবিলিটি ম্যাট্রিক্স দেখুন।
আপনার হার্ডওয়্যারের অনন্য সক্ষমতা সমর্থন করার জন্য আপনি একটি নতুন HAL ইন্টারফেস তৈরি করতে পারেন, অথবা কোনো HAL-এর ইন্টারফেস সম্প্রসারণ করতে পারেন।
- হার্ডওয়্যার ইন্টারফেস সংজ্ঞা ভাষা (HIDL)
এমন একটি ভাষা যা ব্যবহৃত প্রোগ্রামিং ভাষার ওপর নির্ভর না করে ইন্টারফেস সংজ্ঞায়িত করতে ব্যবহৃত হয়। HIDL, HAL ক্লায়েন্ট এবং HAL পরিষেবাগুলির মধ্যে যোগাযোগ সক্ষম করে।
- একই প্রক্রিয়া (SP) HAL
র্যাপড HAL-এর একটি সীমিত সেট। এই সেটের সদস্যপদ গুগল দ্বারা নিয়ন্ত্রিত হয়। SP HAL-গুলোর মধ্যে রয়েছে:
- স্থিতিশীল সি ম্যাপার ৫ এইচএএল
- ওপেনজিএল
- ভলকান
- android.hidl.memory@1.0 (অ্যান্ড্রয়েড সিস্টেম দ্বারা সরবরাহকৃত, সর্বদা মোড়ানো)
- android.hardware.renderscript@1.0
- মোড়ানো এইচএএল
একটি HAL সার্ভিস যা অ্যান্ড্রয়েড ৮-এর আগে তৈরি করা হয়েছিল, কিন্তু অ্যান্ড্রয়েড ৮ এবং তার পরবর্তী সংস্করণগুলোর সাথে কাজ করার জন্য এটিকে একটি AIDL বা HIDL র্যাপারে আবদ্ধ করা হয়েছে।
এরপর কী?
- একটি HAL পরিষেবা কীভাবে বাস্তবায়ন করতে হয় তা জানতে, AIDL for HALs দেখুন।
- কীভাবে একটি বিদ্যমান HAL তৈরি বা সম্প্রসারণ করতে হয় তা জানতে, ‘সংযুক্ত বর্ধিত ইন্টারফেস’ (Attached extended interfaces) অংশটি দেখুন।