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

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

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

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

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

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

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

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

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

कार्यान्वयन

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