Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffb22ec9 authored by Huihong Luo's avatar Huihong Luo Committed by Android (Google) Code Review
Browse files

Merge "Don't send brightness to car service inside Emulator"

parents e648f7ce 5d463fda
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -15,8 +15,9 @@
 */
#define LOG_TAG "DefaultVehicleHal_v2_0"

#include <android/log.h>
#include <android-base/macros.h>
#include <android/log.h>
#include <sys/system_properties.h>

#include "EmulatedVehicleHal.h"
#include "JsonFakeValueGenerator.h"
@@ -186,6 +187,14 @@ StatusCode EmulatedVehicleHal::set(const VehiclePropValue& propValue) {
        return StatusCode::NOT_AVAILABLE;
    }

    if (mInEmulator && propValue.prop == toInt(VehicleProperty::DISPLAY_BRIGHTNESS)) {
        // Emulator does not support remote brightness control, b/139959479
        // do not send it down so that it does not bring unnecessary property change event
        // return other error code, such NOT_AVAILABLE, causes Emulator to be freezing
        // TODO: return StatusCode::NOT_AVAILABLE once the above issue is fixed
        return StatusCode::OK;
    }

    /**
     * After checking all conditions, such as the property is available, a real vhal will
     * sent the events to Car ECU to take actions.
@@ -211,6 +220,17 @@ static bool isDiagnosticProperty(VehiclePropConfig propConfig) {
    return false;
}

// determine if it's running inside Android Emulator
static bool isInEmulator() {
    char propValue[PROP_VALUE_MAX];
    bool isEmulator = (__system_property_get("ro.kernel.qemu", propValue) != 0);
    if (!isEmulator) {
        isEmulator = (__system_property_get("ro.hardware", propValue) != 0) &&
                     (!strcmp(propValue, "ranchu") || !strcmp(propValue, "goldfish"));
    }
    return isEmulator;
}

// Parse supported properties list and generate vector of property values to hold current values.
void EmulatedVehicleHal::onCreate() {
    static constexpr bool shouldUpdateStatus = true;
@@ -261,6 +281,8 @@ void EmulatedVehicleHal::onCreate() {
    }
    initObd2LiveFrame(*mPropStore->getConfigOrDie(OBD2_LIVE_FRAME));
    initObd2FreezeFrame(*mPropStore->getConfigOrDie(OBD2_FREEZE_FRAME));
    mInEmulator = isInEmulator();
    ALOGD("mInEmulator=%s", mInEmulator ? "true" : "false");
}

std::vector<VehiclePropConfig> EmulatedVehicleHal::listProperties()  {
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ private:
    std::unordered_set<int32_t> mHvacPowerProps;
    RecurrentTimer mRecurrentTimer;
    VehicleHalClient* mVehicleClient;
    bool mInEmulator;
};

}  // impl