diff --git a/automotive/vehicle/2.0/default/common/src/VehiclePropertyStore.cpp b/automotive/vehicle/2.0/default/common/src/VehiclePropertyStore.cpp index 94ace455cc..24b777c75f 100644 --- a/automotive/vehicle/2.0/default/common/src/VehiclePropertyStore.cpp +++ b/automotive/vehicle/2.0/default/common/src/VehiclePropertyStore.cpp @@ -50,12 +50,18 @@ bool VehiclePropertyStore::writeValue(const VehiclePropValue& propValue, VehiclePropValue* valueToUpdate = const_cast(getValueOrNullLocked(recId)); if (valueToUpdate == nullptr) { mPropertyValues.insert({ recId, propValue }); - } else { - valueToUpdate->timestamp = propValue.timestamp; - valueToUpdate->value = propValue.value; - if (updateStatus) { - valueToUpdate->status = propValue.status; - } + 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; } diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp b/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp index ba81a521a0..b4f1f07323 100644 --- a/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp +++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp @@ -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;