From 9610e7d48ea349f854c44e505b3fa0578fca0db9 Mon Sep 17 00:00:00 2001 From: technyon Date: Sat, 15 Jun 2024 07:04:13 +0200 Subject: [PATCH] use atomic types for shared variables in onResult --- src/NukiBle.cpp | 6 +++++- src/NukiBle.h | 7 ++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/NukiBle.cpp b/src/NukiBle.cpp index 1a3b3302..12f94e71 100644 --- a/src/NukiBle.cpp +++ b/src/NukiBle.cpp @@ -40,7 +40,11 @@ NukiBle::NukiBle(const std::string& deviceName, deviceServiceUUID(deviceServiceUUID), gdioUUID(gdioUUID), userDataUUID(userDataUUID), - preferencesId(preferencedId) { + preferencesId(preferencedId) +{ + rssi = 0; + lastReceivedBeaconTs = 0; + lastHeartbeat = 0; } NukiBle::~NukiBle() { diff --git a/src/NukiBle.h b/src/NukiBle.h index 4a451e6e..3d1f7a70 100644 --- a/src/NukiBle.h +++ b/src/NukiBle.h @@ -18,6 +18,7 @@ #include #include #include +#include #include "sodium/crypto_secretbox.h" #define GENERAL_TIMEOUT 3000 @@ -363,7 +364,7 @@ class NukiBle : public BLEClientCallbacks, public BleScanner::Subscriber { Nuki::CommandState nukiCommandState = Nuki::CommandState::Idle; uint32_t timeNow = 0; - uint32_t lastHeartbeat = 0; + std::atomic_uint lastHeartbeat; BleScanner::Publisher* bleScanner = nullptr; bool isPaired = false; @@ -388,8 +389,8 @@ class NukiBle : public BLEClientCallbacks, public BleScanner::Subscriber { bool keypadCodeCountReceived = false; uint16_t logEntryCount = 0; bool loggingEnabled = false; - int rssi = 0; - unsigned long lastReceivedBeaconTs = 0; + std::atomic_int rssi; + std::atomic_ulong lastReceivedBeaconTs; std::list listOfKeyPadEntries; std::list listOfAuthorizationEntries; AuthorizationIdType authorizationIdType = AuthorizationIdType::Bridge;