हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल), एक तरह की ऐब्स्ट्रैक्शन लेयर है. इसमें हार्डवेयर वेंडर के लिए, स्टैंडर्ड इंटरफ़ेस होता है. एचएएल की मदद से, हार्डवेयर के वेंडर, डिवाइस के हिसाब से बनी सुविधाओं को लागू कर सकते हैं. ऐसा करने पर, हार्डवेयर के ऊपरी लेयर में मौजूद कोड पर कोई असर नहीं पड़ता और न ही उसमें बदलाव होता है.
ज़रूरी शर्तें
दस्तावेज़ के इस सेक्शन में इस्तेमाल हुए शब्दों की परिभाषाएं यहां दी गई हैं:
- Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (AIDL)
- Java जैसी भाषा, जिसका इस्तेमाल इंटरफ़ेस को इस तरह से तय करने के लिए किया जाता है कि वह इस्तेमाल की जा रही प्रोग्रामिंग भाषा से अलग हो. एआईडीएल की मदद से, एचएएल क्लाइंट और एचएएल सेवाओं के बीच कम्यूनिकेशन किया जा सकता है.
- बाइंडर वाला एचएएल
- ऐसा एचएएल जो बाइंडर इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) कॉल का इस्तेमाल करके, अन्य प्रोसेस के साथ कम्यूनिकेट करता है. बाइंडर वाले एचएएल, उनका इस्तेमाल करने वाले क्लाइंट से अलग प्रोसेस में चलते हैं. बाइंड किए गए एचएएल, सेवा मैनेजर के साथ रजिस्टर किए जाते हैं, ताकि क्लाइंट उनकी सुविधाओं को ऐक्सेस कर सकें. Android 8 और उसके बाद के वर्शन के लिए लिखे गए एचएएल, बाइंडर किए जाते हैं.
- HAL क्लाइंट
- HAL सेवा को ऐक्सेस करने वाली प्रोसेस.
- HAL इंटरफ़ेस
- यह एक सामान्य इंटरफ़ेस है, जिसका इस्तेमाल HAL क्लाइंट और सेवा, दोनों के बीच कम्यूनिकेट करने के लिए करते हैं.
- एचएएल की सेवा
हार्डवेयर के हिसाब से कोड, जैसे कि आपके डिवाइस के कैमरे से जुड़ा कोड. आपको वेंडर पार्टीशन में टारगेट की गई रिलीज़ के लिए, काम करने वाले मैट्रिक्स में बताए गए सभी ज़रूरी एचएएल लागू करने होंगे. कंपैटिबिलिटी मैट्रिक के बारे में ज़्यादा जानने के लिए, कंपैटिबिलिटी मैट्रिक लेख पढ़ें.
अपने हार्डवेयर की खास सुविधाओं के साथ काम करने के लिए, नया एचएएल इंटरफ़ेस बनाया जा सकता है या एचएएल के इंटरफ़ेस को बड़ा किया जा सकता है.
- हार्डवेयर इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एचआईडीएल)
इंटरफ़ेस को इस तरह से तय करने के लिए इस्तेमाल की जाने वाली भाषा, जो इस्तेमाल की जा रही प्रोग्रामिंग भाषा से अलग हो. HIDL, HAL क्लाइंट और HAL सेवाओं के बीच कम्यूनिकेशन की सुविधा देता है.
- एक ही प्रोसेस (एसपी) एचएएल
रैप किए गए एचएएल का सीमित सेट. सेट में सदस्यता को Google कंट्रोल करता है. एसपी एचएएल में ये शामिल हैं:
- Stable C mapper 5 HAL
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (Android सिस्टम से दिया जाता है, हमेशा रैप किया जाता है)
- android.hardware.renderscript@1.0
- Wrapped HAL
Android 8 से पहले बनाई गई HAL सेवा, जिसे Android 8 और उसके बाद के वर्शन के साथ काम करने के लिए, AIDL या HIDL रैपर में रैप किया गया है.
आगे क्या करना है?
- HAL सेवा लागू करने का तरीका जानने के लिए, HAL के लिए एआईडीएल लेख पढ़ें.
- मौजूदा एचएएल बनाने या उसे बड़ा करने का तरीका जानने के लिए, अटैच किए गए एक्सटेंडेड इंटरफ़ेस देखें.