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

Commit 244e794f authored by Kai's avatar Kai
Browse files

Check timestamp before updating the value

Check timestamp before updating property value.
Use timestamp in generating fake property event.

Bug: 134963097
Test: end to end test in VehcileHal_test
Change-Id: I60f8c0eb3a19db2c165469bb45b3b80b39388b37
parent 25ac507b
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -50,13 +50,19 @@ bool VehiclePropertyStore::writeValue(const VehiclePropValue& propValue,
    VehiclePropValue* valueToUpdate = const_cast<VehiclePropValue*>(getValueOrNullLocked(recId));
    if (valueToUpdate == nullptr) {
        mPropertyValues.insert({ recId, propValue });
    } else {
        return true;
    }

    // propValue is outdated and drops it.
    if (valueToUpdate->timestamp > propValue.timestamp) {
        return false;
    }
    // update the propertyValue.
    valueToUpdate->timestamp = propValue.timestamp;
    valueToUpdate->value = propValue.value;
    if (updateStatus) {
        valueToUpdate->status = propValue.status;
    }
    }
    return true;
}

+1 −1
Original line number Diff line number Diff line
@@ -455,7 +455,7 @@ void EmulatedVehicleHal::onFakeValueGenerated(const VehiclePropValue& value) {

    VehiclePropValuePtr updatedPropValue = getValuePool()->obtain(value);
    if (updatedPropValue) {
        updatedPropValue->timestamp = elapsedRealtimeNano();
        updatedPropValue->timestamp = value.timestamp;
        updatedPropValue->status = VehiclePropertyStatus::AVAILABLE;
        mPropStore->writeValue(*updatedPropValue, shouldUpdateStatus);
        auto changeMode = mPropStore->getConfigOrDie(value.prop)->changeMode;