Men-debug VHAL

Artikel ini menjelaskan cara mendapatkan informasi debug saat mengembangkan VHAL:

  • Buang status VHAL saat ini.
  • Sertakan dump proses VHAL di dumpstate.

Saat keduanya diaktifkan, setiap item disertakan dalam adb bugreport .

Selain itu, dengan mendaftar ke car watchdog , status VHAL runtime dapat diambil jika tidak dalam kondisi baik.

Buang info debug VHAL

Terapkan debug untuk IVehicle.hal

IVehicle::debug dipanggil saat lshal debug <interface> <options> dipanggil. Anda dapat membuang status internal VHAL atau mengambil tindakan yang diperlukan ke VHAL berdasarkan opsi.

Return<void> VehicleHal::debug(const hidl_handle& handle, const hidl_vec<hidl_string>& options) {
    if (handle.getNativeHandle() == nullptr || handle->numFds < 1) {
        ALOGE("Invalid parameters passed to debug()");
        return Void();
    }

    int fd = handle->data[0];

    // Process options
    if (options.size() == 0) {
        dump_VHAL_state(fd);
        return Void();
    }
    std::string option = options[0];
    if (EqualsIgnoreCase(option, "--help")) {
        print_out_help(fd);
    } else if (EqualsIgnoreCase(option, "--whateveroption")) {
        do_whatever_needed(fd, option);
    } else {
        dprintf(fd, "Invalid option: %s\n", option.c_str());
    }

    return Void();
}

Buang VHAL

Gunakan lshal untuk membuang VHAL. Hak istimewa sistem diperlukan.

shell$ adb shell lshal debug android.hardware.automotive.vehicle@2.0::IVehicle

Sertakan dump proses HAL di dumpstate

Dalam rilis Android 10 QPR2, HAL dapat disertakan dalam dump proses saat status dump (atau dumpstate bug) dimulai.

Konfigurasi konfigurasi

Konfigurasikan kebijakan SELinux

Tambahkan dump_extra_hal(hal_server_domain) di dumpstate.te . Jika dumpstate.te tidak ada di folder sepolicy vendor , buat dumpstate.te .

shell$ cat dumpstate.te
dump_extra_hal(hal_vendor_special_control)
dump_extra_hal(hal_vendor_display_power)

Daftar antarmuka HAL

Tambahkan nama antarmuka HAL ke properti sistem ro.dump.hals.extra . Banyak nama yang dipisahkan dengan koma. Android.mk atau makefile produk adalah lokasi optimal untuk item ini.

shell$ % cat vendor_product.mk
PRODUCT_PROPERTY_OVERRIDES += \
ro.dump.hals.extra=vendor.company.hardware.special.control@1.0::ISpecialControl,vendor.company.hardware.power.displaypower@1.0::IDisplayPower

Buang proses HAL

Untuk menangkap sistem statusCall , panggil adb shell dumpstate atau adb bugreport . Output akan berisi proses dump dari antarmuka HAL yang ditentukan.

Aktifkan pengawas mobil untuk memantau kesehatan VHAL

Pengawas mobil memantau status kesehatan klien terdaftar dan membuang atau menghentikan klien terdaftar ketika mereka menjadi tidak sehat. Untuk mendaftarkan VHAL ke car watchdog, lihat Car Watchdog .