Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

লিগ্যাসি এইচএলএস

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

চিত্র 1. এইচএল উপাদান

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

এইচএএলএসের একটি অনুমানযোগ্য কাঠামো রয়েছে তা গ্যারান্টি হিসাবে, প্রতিটি হার্ডওয়্যার-নির্দিষ্ট এইচএল ইন্টারফেসের hardware/libhardware/include/hardware/hardware.h । এ সংজ্ঞায়িত বৈশিষ্ট্য hardware/libhardware/include/hardware/hardware.h । এই ইন্টারফেসটি অ্যান্ড্রয়েড সিস্টেমকে আপনার এইচএএল মডিউলগুলির সঠিক সংস্করণগুলি একটি সামঞ্জস্যপূর্ণ উপায়ে লোড করতে দেয়। একটি এইচএএল ইন্টারফেস দুটি উপাদান সমন্বিত: মডিউল এবং ডিভাইস।

এইচএএল মডিউলগুলি

একটি মডিউল আপনার প্যাকেজড এইচএল প্রয়োগকরণের প্রতিনিধিত্ব করে, যা একটি ভাগ করা লাইব্রেরি ( .so file ) হিসাবে সঞ্চিত রয়েছে। hardware/libhardware/include/hardware/hardware.h হেডার ফাইলটি একটি স্ট্রাক্ট ( hw_module_t ) সংজ্ঞায়িত করে যা মডিউলের প্রতিনিধিত্ব করে এবং মডিউলটির সংস্করণ, নাম এবং মডিউলটির লেখক হিসাবে উপস্থিত থাকে। অ্যান্ড্রয়েড এইচএএল মডিউলটি সঠিকভাবে খুঁজে পেতে এবং লোড করতে এই মেটাটাটা ব্যবহার করে।

উপরন্তু, hw_module_t struct হয় অন্য struct, একটি পয়েন্টার রয়েছে hw_module_methods_t , যে মডিউলের জন্য একটি খোলা ফাংশন একটি পয়েন্টার রয়েছে। এই ওপেন ফাংশনটি সেই হার্ডওয়্যারটির সাথে যোগাযোগের সূচনা করতে ব্যবহৃত হয় যার জন্য এইচএল বিমূর্ততা হিসাবে পরিবেশন করে। প্রতিটি হার্ডওয়্যার-নির্দিষ্ট এইচএল সাধারণত জেনেরিক hw_module_t স্ট্রাক্টটিকে সেই নির্দিষ্ট হার্ডওয়ারের অতিরিক্ত তথ্যের সাথে প্রসারিত করে। উদাহরণ হিসেবে বলা যায়, ক্যামেরা করতো HAL এ, camera_module_t struct একটি রয়েছে hw_module_t অন্যান্য ক্যামেরা-নির্দিষ্ট ফাংশন পয়েন্টার সহ struct হয়:

typedef struct camera_module {
    hw_module_t common;
    int (*get_number_of_cameras)(void);
    int (*get_camera_info)(int camera_id, struct camera_info *info);
} camera_module_t;

আপনি যখন এইচএএল বাস্তবায়ন করেন এবং মডিউল স্ট্রাক্ট তৈরি করেন, আপনাকে অবশ্যই এটির নাম HAL_MODULE_INFO_SYM । নেক্সাস 9 অডিও এইচএএল থেকে উদাহরণ:

struct audio_module HAL_MODULE_INFO_SYM = {
    .common = {
        .tag = HARDWARE_MODULE_TAG,
        .module_api_version = AUDIO_MODULE_API_VERSION_0_1,
        .hal_api_version = HARDWARE_HAL_API_VERSION,
        .id = AUDIO_HARDWARE_MODULE_ID,
        .name = "NVIDIA Tegra Audio HAL",
        .author = "The Android Open Source Project",
        .methods = &hal_module_methods,
    },
};

এইচএল ডিভাইস

একটি ডিভাইস আপনার পণ্যের হার্ডওয়্যার বিমূর্ত করে। উদাহরণস্বরূপ, একটি অডিও মডিউলটিতে একটি প্রাথমিক অডিও ডিভাইস, একটি ইউএসবি অডিও ডিভাইস, বা একটি ব্লুটুথ এ 2 জিডি অডিও ডিভাইস থাকতে পারে।

একটি ডিভাইস hw_device_t স্ট্রাক্ট দ্বারা প্রতিনিধিত্ব করা হয়। মডিউলের মতো, প্রতিটি ধরণের ডিভাইস জেনেরিক hw_device_t এর একটি বিশদ সংস্করণ সংজ্ঞায়িত করে যাতে হার্ডওয়্যারের নির্দিষ্ট বৈশিষ্ট্যগুলির জন্য ফাংশন পয়েন্টার রয়েছে। উদাহরণস্বরূপ, audio_hw_device_t স্ট্রাক্ট ধরণের অডিও ডিভাইস ক্রিয়াকলাপগুলিতে ফাংশন পয়েন্টার রয়েছে:

struct audio_hw_device {
    struct hw_device_t common;

    /**
     * used by audio flinger to enumerate what devices are supported by
     * each audio_hw_device implementation.
     *
     * Return value is a bitmask of 1 or more values of audio_devices_t
     */
    uint32_t (*get_supported_devices)(const struct audio_hw_device *dev);
  ...
};
typedef struct audio_hw_device audio_hw_device_t;

এই মানক বৈশিষ্ট্যগুলি ছাড়াও, প্রতিটি হার্ডওয়্যার-নির্দিষ্ট এইচএল ইন্টারফেস তার নিজস্ব বৈশিষ্ট্য এবং প্রয়োজনীয়তাগুলির আরও সংজ্ঞা দিতে পারে। বিশদগুলির জন্য, এইচএএল রেফারেন্স ডকুমেন্টেশনগুলি পাশাপাশি প্রতিটি এইচএল এর স্বতন্ত্র নির্দেশাবলী দেখুন।

বিল্ডিং এইচএল মডিউলগুলি

এইচএল বাস্তবায়নগুলি মডিউলগুলিতে ( .so ) ফাইলগুলিতে অন্তর্নির্মিত হয় এবং উপযুক্ত হলে অ্যান্ড্রয়েডের দ্বারা গতিশীলভাবে সংযুক্ত থাকে। আপনার প্রতিটি এইচএল বাস্তবায়নের জন্য Android.mk ফাইল তৈরি করে Android.mk আপনার উত্স ফাইলগুলিকে নির্দেশ করে আপনি আপনার মডিউলগুলি তৈরি করতে পারেন। সাধারণভাবে, আপনার ভাগ করা লাইব্রেরিগুলির একটি নির্দিষ্ট ফর্ম্যাটে নামকরণ করা উচিত যাতে সেগুলি পাওয়া যায় এবং সঠিকভাবে লোড করা যায়। নামকরণের স্কিমটি মডিউল থেকে মডিউল পর্যন্ত কিছুটা পরিবর্তিত হয়, তবে এর সাধারণ প্যাটার্নগুলি অনুসরণ করে: <module_type>.<device_name>