एचआईडीएल वीएचएएल माइग्रेशन गाइड

मौजूदा HIDL VHAL कार्यान्वयन को AIDL VHAL में स्थानांतरित करने के लिए, IVehicleHardware इंटरफ़ेस को लागू करने के लिए AIDL संदर्भ कार्यान्वयन संरचना का उपयोग करें।

यदि मौजूदा HIDL कार्यान्वयन भी अनुसरण करता है एचआईडीएल संदर्भ कार्यान्वयन , विक्रेता ने VehicleHal वर्ग लागू किया है। IVehicleHardware VehicleHal से काफी मिलता-जुलता है।

हिडल वीएचएएल सहायता VHAL
getAllPropertyConfigs() VehicleHal.listProperties() के समान
getValues(callback, requests) प्रत्येक अनुरोध के लिए VehicleHal.get() कॉल कर सकते हैं और कॉलबैक को कॉल कर सकते हैं।
dump() VehicleHal.dump() के समान
checkHealth() VehicleHal.get() वापस कर सकते हैं
registerPropertyChangeCallback() VehicleHal.mOnHalEvent सेट करने के समान

एआईडीएल में प्रकार के अंतर

HIDL VHAL से AIDL VHAL में माइग्रेट करते समय, इन अंतरों पर विचार करें।

  1. HIDL, types.hal से उत्पन्न सभी प्रकारों के लिए एक हेडर फ़ाइल ( types.h ) उत्पन्न करता है। एआईडीएल प्रत्येक प्रकार के लिए एक हेडर फ़ाइल तैयार करता है। उदाहरण के लिए, VehiclePropValue.h से VehiclePropValue.aidl

    परिणामस्वरूप, आपको आवश्यक प्रकारों के लिए सभी हेडर फ़ाइलें शामिल करनी होंगी। 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 में परिभाषित किया गया है और इसे एक एनम के बजाय एक ध्वज के रूप में परिभाषित किया जाना चाहिए। उपयोगकर्ता ध्वज फ़ील्ड एक पूर्णांक है जिसमें एकाधिक UserInfo.USER_FLAG_XXX बिट-या एक साथ होते हैं।
    • VehiclePropValue में RawValue नाम बदलकर RawPropValue कर दिया गया है
    • RawValue में bytes नाम बदलकर byteValues ​​कर दिया गया है