Depurando el VHAL

Este artículo explica cómo obtener información de depuración mientras se desarrolla el VHAL:

  • Volcar el estado actual del VHAL.
  • Incluya el volcado del proceso VHAL en dumpstate.

Cuando ambos están habilitados, cada elemento se incluye en adb bugreport .

Además, al registrarse en Car Watchdog, se puede recuperar el estado VHAL en tiempo de ejecución si no está en buenas condiciones.

Volcar información de depuración de VHAL

Implementar depuración para IVehicle.hal

IVehicle::debug se llama cuando se lshal debug <interface> <options> . Puede volcar el estado interno de VHAL o realizar las acciones necesarias en VHAL según las opciones.

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();
}

Volcar el VHAL

Use lshal para volcar el VHAL. Se necesita el privilegio del sistema.

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

Incluir volcado de proceso HAL en dumpstate

En la versión de Android 10 QPR2, las HAL se pueden incluir en el volcado del proceso cuando se dumpstate (o bugreport).

Configuración de instalación

Configurar una política de SELinux

Agregue dump_extra_hal(hal_server_domain) en dumpstate.te . Si dumpstate.te no existe en la carpeta de políticas del vendor , cree dumpstate.te .

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

Lista de interfaces HAL

Agregue nombres de interfaz HAL a la propiedad del sistema ro.dump.hals.extra . Numerosos nombres están separados por comas. Android.mk o el makefile del producto son ubicaciones óptimas para estos elementos.

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

Volcar procesos HAL

Para capturar el statusCall del sistema, llame a adb shell dumpstate o adb bugreport . La salida contendrá el volcado de proceso de las interfaces HAL especificadas.

Habilite el perro guardián del automóvil para monitorear la salud de VHAL

El perro guardián del automóvil monitorea el estado de salud de los clientes registrados y vuelca o cancela a los clientes registrados cuando pierden su salud. Para registrar VHAL en Car Watchdog, consulte Car Watchdog .