पहले से मौजूद HAL मॉड्यूल को HIDL HAL मॉड्यूल में अपडेट किया जा सकता है. इसके लिए,
hardware/libhardware/include/hardware
में हेडर.
c2hal का इस्तेमाल करें
कॉन्टेंट बनाने
c2hal
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
यह टूल, ज़्यादातर कन्वर्ज़न का काम खुद करता है. इससे, मैन्युअल तरीके से किए जाने वाले ज़्यादातर काम कम हो जाते हैं
बदलाव. उदाहरण के लिए, एनएफ़सी के लिए HIDL .hal
फ़ाइल जनरेट करने के लिए
एचएएल:
make c2hal
c2hal -r android.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport -p android.hardware.nfc@1.0 hardware/libhardware/include/hardware/nfc.h
ये निर्देश, hardware/interfaces/nfc/1.0/
में फ़ाइलें जोड़ते हैं. दौड़ना
$ANDROID_BUILD_TOP
में दिखाए गए hardware/interfaces/update-makefiles.sh
डायरेक्ट्री में ज़रूरी मेकफ़ाइल को एचएएल में भी जोड़ दिया जाता है. यहां से, ये काम किए जा सकते हैं
HAL को पूरी तरह से बदलने के लिए, उसमें मैन्युअल तरीके से बदलाव कर सकते हैं.
सी2हेल एक्टिविटी
c2hal
चलाने पर, हेडर फ़ाइल का पूरा कॉन्टेंट ट्रांसफ़र हो जाता है
.hal
फ़ाइलों में.
c2hal
ऐसे स्ट्रक्चर की पहचान करता है जिनमें फ़ंक्शन पॉइंटर होते हैं
उपलब्ध कराई गई हेडर फ़ाइल और हर स्ट्रक्चर को एक अलग इंटरफ़ेस फ़ाइल में बदल देता है.
उदाहरण के लिए, alloc_device_t
को
IAllocDevice
एचएएल मॉड्यूल (फ़ाइल में
IAllocDevice.hal
).
अन्य सभी तरह के डेटा को types.hal
फ़ाइल में कॉपी किया जाता है.
पाउंड-डिफ़िन्स को ईनम में ले जाया जाता है और ऐसे आइटम जो HIDL का हिस्सा नहीं हैं या नहीं
कन्वर्टेबल (जैसे, स्टैटिक फ़ंक्शन से जुड़े एलान) को टिप्पणियों में कॉपी किया जाता है
"NOTE
" टेक्स्ट से मार्क किया गया है.
मैन्युअल तरीके से की जा रही गतिविधियां
c2hal
टूल को यह नहीं पता कि मिलने पर क्या करें
कुछ कंस्ट्रक्ट से. उदाहरण के लिए, HIDL में रॉ पॉइंटर का कोई कॉन्सेप्ट नहीं है; की वजह से
जब c2hal
को हेडर फ़ाइलों में कोई पॉइंटर मिलता है, तो वह ऐसा नहीं करता
पता है कि पॉइंटर की व्याख्या किसी सरणी के रूप में की जानी चाहिए या उसके संदर्भ के रूप में
कोई दूसरा ऑब्जेक्ट. शून्य पॉइंटर भी इसी तरह से ओपेक होते हैं.
के दौरान int reserved[7]
जैसे फ़ील्ड को मैन्युअल रूप से निकाल दिया जाना चाहिए
HIDL पर स्विच करना होगा. रिटर्न वैल्यू के नाम जैसे आइटम
उसमें कुछ ज़्यादा बेहतर बदलाव किया गया हो; उदाहरण के लिए, रिटर्न को कन्वर्ट करना
अपने-आप जनरेट हुए एनएफ़सी में write
जैसे तरीकों का पैरामीटर
int32_t write_ret
से Status status
(जहां
Status
एक नया ईनम है, जिसमें एनएफ़सी की संभावित स्थितियां हैं).
एचएएल को लागू करना
अपने एचएएल को दिखाने के लिए .hal
फ़ाइलें बनाने के बाद, आपको
को ऐसी मेकफ़ाइल (मेक या सूंग) जनरेट करनी होगी जो Google की
C++ और Java (जब तक कि HAL किसी ऐसी सुविधा का इस्तेमाल नहीं करता जो Java में काम न करती हो). कॉन्टेंट बनाने
./hardware/interfaces/update-makefiles.sh
स्क्रिप्ट अपने-आप
hardware/interfaces
में मौजूद एचएएल के लिए मेकफ़ाइल जनरेट करना
(अन्य जगहों पर एचएएल के लिए, बस स्क्रिप्ट को अपडेट करें).
जब मेकफ़ाइल अप-टू-डेट हो, तो आप हेडर फ़ाइलें जनरेट करने के लिए और लागू करने के तरीके. जनरेट किए गए इंटरफ़ेस को लागू करने से जुड़ी जानकारी के लिए, यहां देखें HIDL C++ (C++ के लिए लागू करना) या HIDL Java (Java को लागू करने के लिए).