From 894a0630837cb53e6a5c799b7cad68feab618e13 Mon Sep 17 00:00:00 2001 From: Carsten Schmiemann Date: Fri, 27 May 2022 23:07:28 +0200 Subject: [PATCH] Original project changes: Location: fix concurrency between park position update & check --- OVMS.V3/components/ovms_location/src/ovms_location.cpp | 4 ++++ OVMS.V3/components/ovms_location/src/ovms_location.h | 1 + 2 files changed, 5 insertions(+) diff --git a/OVMS.V3/components/ovms_location/src/ovms_location.cpp b/OVMS.V3/components/ovms_location/src/ovms_location.cpp index 923d2d0..860834b 100644 --- a/OVMS.V3/components/ovms_location/src/ovms_location.cpp +++ b/OVMS.V3/components/ovms_location/src/ovms_location.cpp @@ -752,6 +752,8 @@ void OvmsLocations::UpdatedVehicleOn(OvmsMetric* metric) void OvmsLocations::UpdateParkPosition() { + OvmsRecMutexLock lock(&m_park_lock); + bool caron = StdMetrics.ms_v_env_on->AsBool(); if (caron) { @@ -843,6 +845,8 @@ void OvmsLocations::CheckTheft() { static int last_dist = 0; + OvmsRecMutexLock lock(&m_park_lock); + if ((m_park_latitude == 0) && (m_park_longitude == 0)) return; if (StandardMetrics.ms_v_env_on->AsBool()) return; diff --git a/OVMS.V3/components/ovms_location/src/ovms_location.h b/OVMS.V3/components/ovms_location/src/ovms_location.h index 249822a..de00537 100644 --- a/OVMS.V3/components/ovms_location/src/ovms_location.h +++ b/OVMS.V3/components/ovms_location/src/ovms_location.h @@ -104,6 +104,7 @@ class OvmsLocations float m_park_longitude; float m_park_distance; bool m_park_invalid; + OvmsRecMutex m_park_lock; uint32_t m_last_alarm; LocationMap m_locations;