ইউএসবি এইচএএল বাস্তবায়ন করা হচ্ছে

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

অ্যান্ড্রয়েড 8.0 রিলিজ ভাল কনফিগারেশন এবং কোড নির্ভরযোগ্যতার জন্য USB কমান্ডগুলির পরিচালনাকে init স্ক্রিপ্টের বাইরে এবং একটি নেটিভ USB ডেমনে নিয়ে যায়। গ্যাজেট ফাংশন কনফিগারেশনের জন্য, init স্ক্রিপ্ট (সম্পত্তি ট্রিগার) ডিভাইস-নির্দিষ্ট গ্যাজেট ক্রিয়াকলাপ সম্পাদন করতে ব্যবহৃত হয়।

পূর্ববর্তী রিলিজে, এই ডিভাইস-নির্দিষ্ট কনফিগারেশনগুলি ডিভাইস-নির্দিষ্ট init স্ক্রিপ্টের মাধ্যমে অর্জন করা হয়েছিল (প্রপার্টি ট্রিগার ব্যবহার করে)। একটি হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) ডিজাইনে যাওয়ার ফলে অনেক ক্লিনার বাস্তবায়ন হয় যা এই সমস্যার সমাধান করে:

  1. কার্নেল sysfs নোডগুলিতে লেখার মতো অপারেশনগুলি ব্যর্থ হতে পারে তবে প্রপার্টি ট্রিগার সেট করে এমন ফ্রেমওয়ার্ক কোডে প্রচার করা যাবে না। ফলস্বরূপ, ফ্রেমওয়ার্কগুলি ভুলভাবে অনুমান করে যে অপারেশনগুলি সফল হয়েছে যদিও তারা নীরবে ব্যর্থ হয়েছে।
  2. init স্ক্রিপ্টে সীমিত সংখ্যক ক্রিয়াকলাপ চালানো যেতে পারে।

Android 12 রিলিজ নেটওয়ার্ক কন্ট্রোল মডেল (NCM) এবং API কলগুলির জন্য USB গ্যাজেট HAL সমর্থন যোগ করে যা HAL সংস্করণ নম্বর এবং USB গতি উভয়ই প্রদান করে। USB HAL-এর মাধ্যমে উপলব্ধ API কল সম্পর্কে আরও তথ্যের জন্য, android.hardware.usb প্যাকেজ সারাংশ দেখুন।

HAL এবং Treble

ডিভাইস-নির্দিষ্ট init স্ক্রিপ্টগুলি ডিভাইস-নির্দিষ্ট USB ক্রিয়াকলাপ সম্পাদনের জন্য HAL স্তরগুলির প্রতিস্থাপন হিসাবে ব্যবহৃত হয়েছিল। USB (ADB-এর মাধ্যমে) ডিবাগিং সিস্টেম সমস্যাগুলির জন্য একটি প্রাথমিক ইন্টারফেস। ইউএসবি কনফিগারেশন সঞ্চালনের জন্য একটি নেটিভ ডেমন থাকা ফ্রেমওয়ার্ক কোডের উপর নির্ভরতা দূর করে তাই ফ্রেমওয়ার্ক ক্র্যাশ করলেও ইউএসবি চালু হওয়া উচিত।

অ্যান্ড্রয়েড 8.0-এ প্রবর্তিত ট্রেবল মডেলের অধীনে, সমস্ত এইচএএল সিস্টেম পরিষেবাগুলি থেকে বিচ্ছিন্ন এবং তাদের নিজস্ব স্থানীয় ডেমনগুলিতে চালানো প্রয়োজন৷ এটি একটি এক্সক্লুসিভ ইউএসবি ডেমনের প্রয়োজনীয়তা দূর করে কারণ HAL স্তরটি একটি USB ডেমনের মতো সুন্দরভাবে দ্বিগুণ হয়।

ডিফল্ট HAL বাস্তবায়ন সমস্ত প্রাক-Android 8.0 ডিভাইসের যত্ন নেয়। অতএব, প্রি-অ্যান্ড্রয়েড 8.0 ডিভাইসগুলির জন্য কোনও ডিভাইস-নির্দিষ্ট কাজ হবে না। Android 8.0 HAL ইন্টারফেস ব্যবহার করে USB পোর্টের অবস্থা জানতে এবং ডেটা রোল এবং পাওয়ার রোল সোয়াপ করতে।

বাস্তবায়ন

Android 8.0 এ লঞ্চ হওয়া প্রতিটি ডিভাইসে নতুন USB HAL ইন্টারফেস প্রয়োগ করতে হবে। ডিফল্ট বাস্তবায়ন প্রি-Android 8.0 ডিভাইসের যত্ন নেওয়া উচিত। টাইপ-সি পোর্ট স্ট্যাটাস রিপোর্ট করতে ডিভাইসটি dual_role_usb ক্লাস ব্যবহার করলে ডিফল্ট বাস্তবায়ন যথেষ্ট। সিস্টেমে typc-c নোডগুলির মালিকানা স্থানান্তর করতে ডিভাইস-নির্দিষ্ট USB স্ক্রিপ্টগুলিতে তুচ্ছ পরিবর্তনের প্রয়োজন হতে পারে।