मौजूदा एचआईडीएल वीएचएएल को एआईडीएल वीएचएएल में माइग्रेट करने के लिए, IVehicleHardware इंटरफ़ेस को लागू करने के लिए एआईडीएल के रेफ़रंस इंप्लीमेंटेशन स्ट्रक्चर का इस्तेमाल करें.
अगर मौजूदा एचआईडीएल लागू करने की प्रोसेस में भी एचआईडीएल के रेफ़रंस को लागू करने के तरीके का पालन किया जाता है, तो इसका मतलब है कि वेंडर ने VehicleHal क्लास को लागू किया है. IVehicleHardware, VehicleHal से मिलता-जुलता है.
| HIDL VHAL | एआईडीएल वीएचएएल |
|---|---|
getAllPropertyConfigs() |
VehicleHal.listProperties() के बराबर किराया |
getValues(callback, requests) |
हर अनुरोध के लिए VehicleHal.get() को कॉल कर सकता है और कॉल बैक कर सकता है.
|
dump() |
VehicleHal.dump() के बराबर किराया |
checkHealth() |
VehicleHal.get() वापस मिल सकता है |
registerPropertyChangeCallback() |
सेटिंग VehicleHal.mOnHalEvent से मिलती-जुलती |
AIDL में टाइप के अंतर
HIDL VHAL से AIDL VHAL पर माइग्रेट करते समय, इन अंतरों को ध्यान में रखें.
- HIDL,
types.halसे जनरेट किए गए सभी टाइप के लिए एक हेडर फ़ाइल (types.h) जनरेट करता है. AIDL, हर टाइप के लिए एक हेडर फ़ाइल जनरेट करता है. उदाहरण के लिए,VehiclePropValue.aidlसेVehiclePropValue.h.इसलिए, आपको उन सभी हेडर फ़ाइलों को शामिल करना होगा जिनकी आपको ज़रूरत है.
VehicleHalUtilsलाइब्रेरी में मौजूद हेल्पर फ़ाइलVehicleHalTypes.hमें, ज़्यादातर सामान्य टाइप शामिल होते हैं. types.halमें तय किए गए सभी टाइप, एआईडीएल में एक जैसे होते हैं. हालांकि, ये टाइप अलग होते हैं:SubscribeFlagsको हटा दिया गया है, क्योंकि इसका इस्तेमाल नहीं किया जाता. इसकी वजह यह है किonPropertySetको हटा दिया गया हैUserFlagsको अबUserInfo.aidlमें तय किया गया है. इसे enum के बजाय फ़्लैग के तौर पर तय किया जाना चाहिए. उपयोगकर्ता फ़्लैग फ़ील्ड एक पूर्णांक होता है, जिसमें कईUserInfo.USER_FLAG_XXXबिट-ऑर एक साथ होते हैं.VehiclePropValueमें मौजूदRawValueका नाम बदलकरRawPropValueकर दिया गया हैRawValueमें मौजूदbytesका नाम बदलकरbyteValuesकर दिया गया है
| ... के बजाय | इस्तेमाल करें |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |