यूएसबी एचएएल का कार्यान्वयन

एंड्रॉइड 8.0 रिलीज़ बेहतर कॉन्फ़िगरेशन और कोड विश्वसनीयता के लिए यूएसबी कमांड को init स्क्रिप्ट से बाहर और मूल यूएसबी डेमॉन में ले जाता है। गैजेट फ़ंक्शन कॉन्फ़िगरेशन के लिए, डिवाइस-विशिष्ट गैजेट संचालन करने के लिए init स्क्रिप्ट (प्रॉपर्टी ट्रिगर) का उपयोग किया जाता है।

पिछले रिलीज़ में, ये डिवाइस-विशिष्ट कॉन्फ़िगरेशन डिवाइस-विशिष्ट init स्क्रिप्ट (प्रॉपर्टी ट्रिगर्स का उपयोग करके) के माध्यम से प्राप्त किए गए थे। हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) डिज़ाइन में जाने से अधिक स्वच्छ कार्यान्वयन होता है जो इन समस्याओं को हल करता है:

  1. कर्नेल sysfs नोड्स को लिखने जैसे ऑपरेशन विफल हो सकते हैं लेकिन प्रॉपर्टी ट्रिगर सेट करने वाले फ्रेमवर्क कोड पर वापस प्रचारित नहीं किए जा सकते हैं। परिणामस्वरूप, फ्रेमवर्क गलत तरीके से मान लेता है कि ऑपरेशन सफल हो गए हैं, भले ही वे चुपचाप विफल रहे हों।
  2. init स्क्रिप्ट में सीमित संख्या में ऑपरेशन होते हैं जिन्हें निष्पादित किया जा सकता है।

एंड्रॉइड 12 रिलीज़ नेटवर्क कंट्रोल मॉडल (एनसीएम) और एपीआई कॉल के लिए यूएसबी गैजेट एचएएल समर्थन जोड़ता है जो एचएएल संस्करण संख्या और यूएसबी स्पीड दोनों लौटाता है। यूएसबी एचएएल के माध्यम से उपलब्ध एपीआई कॉल पर अधिक जानकारी के लिए, android.hardware.usb पैकेज सारांश देखें।

एचएएल और ट्रेबल

डिवाइस-विशिष्ट यूएसबी ऑपरेशन करने के लिए एचएएल परतों के प्रतिस्थापन के रूप में डिवाइस-विशिष्ट init स्क्रिप्ट का उपयोग किया गया था। यूएसबी (एडीबी के माध्यम से) सिस्टम समस्याओं को डीबग करने के लिए एक प्राथमिक इंटरफ़ेस है। यूएसबी कॉन्फ़िगरेशन करने के लिए एक देशी डेमॉन होने से फ्रेमवर्क कोड पर निर्भरता खत्म हो जाती है, इसलिए भले ही फ्रेमवर्क क्रैश हो जाए, यूएसबी चालू रहना चाहिए।

एंड्रॉइड 8.0 में पेश किए गए ट्रेबल मॉडल के तहत, सभी एचएएल को सिस्टम सेवाओं से अलग कर दिया गया है और उन्हें अपने स्वयं के मूल डेमॉन में चलाने की आवश्यकता है। इससे एक विशेष USB डेमॉन की आवश्यकता समाप्त हो जाती है क्योंकि HAL परत USB डेमॉन के रूप में अच्छी तरह से दोगुनी हो जाती है।

डिफ़ॉल्ट एचएएल कार्यान्वयन सभी पूर्व-एंड्रॉइड 8.0 उपकरणों का ख्याल रखता है। इसलिए, एंड्रॉइड 8.0 से पहले के डिवाइस के लिए कोई डिवाइस-विशिष्ट कार्य नहीं होगा। एंड्रॉइड 8.0 यूएसबी पोर्ट की स्थिति पूछने और डेटा रोल और पावर रोल स्वैप करने के लिए एचएएल इंटरफ़ेस का उपयोग करता है।

कार्यान्वयन

एंड्रॉइड 8.0 पर लॉन्च होने वाले प्रत्येक डिवाइस पर नए यूएसबी एचएएल इंटरफ़ेस को लागू करने की आवश्यकता है। डिफ़ॉल्ट कार्यान्वयन को पूर्व-एंड्रॉइड 8.0 उपकरणों का ध्यान रखना चाहिए। यदि डिवाइस टाइप-सी पोर्ट स्थिति की रिपोर्ट करने के लिए dual_role_usb क्लास का उपयोग करता है तो डिफ़ॉल्ट कार्यान्वयन पर्याप्त है। टाइपसी-सी नोड्स के स्वामित्व को सिस्टम में स्थानांतरित करने के लिए डिवाइस-विशिष्ट यूएसबी स्क्रिप्ट में मामूली बदलाव की आवश्यकता हो सकती है।