HIDL VHAL माइग्रेशन गाइड

मौजूदा एचआईडीएल वीएचएएल को एआईडीएल वीएचएएल में माइग्रेट करने के लिए, 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 पर माइग्रेट करते समय, इन अंतरों को ध्यान में रखें.

  1. HIDL, types.hal से जनरेट किए गए सभी टाइप के लिए एक हेडर फ़ाइल (types.h) जनरेट करता है. AIDL, हर टाइप के लिए एक हेडर फ़ाइल जनरेट करता है. उदाहरण के लिए, VehiclePropValue.aidl से VehiclePropValue.h.

    इसलिए, आपको उन सभी हेडर फ़ाइलों को शामिल करना होगा जिनकी आपको ज़रूरत है. VehicleHalUtils लाइब्रेरी में मौजूद हेल्पर फ़ाइल VehicleHalTypes.h में, ज़्यादातर सामान्य टाइप शामिल होते हैं.

  2. ... के बजाय इस्तेमाल करें
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. types.hal में तय किए गए सभी टाइप, एआईडीएल में एक जैसे होते हैं. हालांकि, ये टाइप अलग होते हैं:
    • SubscribeFlags को हटा दिया गया है, क्योंकि इसका इस्तेमाल नहीं किया जाता. इसकी वजह यह है कि onPropertySet को हटा दिया गया है
    • UserFlags को अब UserInfo.aidl में तय किया गया है. इसे enum के बजाय फ़्लैग के तौर पर तय किया जाना चाहिए. उपयोगकर्ता फ़्लैग फ़ील्ड एक पूर्णांक होता है, जिसमें कई UserInfo.USER_FLAG_XXX बिट-ऑर एक साथ होते हैं.
    • VehiclePropValue में मौजूद RawValue का नाम बदलकर RawPropValue कर दिया गया है
    • RawValue में मौजूद bytes का नाम बदलकर byteValues कर दिया गया है