From 94a5c52186efdd755e4008ccc2ee5625759f3d29 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Thu, 27 Jun 2024 11:51:33 -0700 Subject: [PATCH] consoleByteArrived uses std::atomic --- firmware/console/binary/tunerstudio.cpp | 4 +--- firmware/console/console_io.cpp | 6 ------ firmware/console/console_io.h | 2 +- firmware/console/status_loop.cpp | 9 +++++++-- firmware/pch/pch.h | 2 ++ 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/firmware/console/binary/tunerstudio.cpp b/firmware/console/binary/tunerstudio.cpp index f0f0f6ce83..2353e371d3 100644 --- a/firmware/console/binary/tunerstudio.cpp +++ b/firmware/console/binary/tunerstudio.cpp @@ -496,9 +496,7 @@ void TunerstudioThread::ThreadTask() { // Until the end of time, process incoming messages. while (true) { if (tsProcessOne(channel) == 0) { - onDataArrived(true); - } else { - onDataArrived(false); + onDataArrived(); } } } diff --git a/firmware/console/console_io.cpp b/firmware/console/console_io.cpp index ab88c7d194..903ebbc678 100644 --- a/firmware/console/console_io.cpp +++ b/firmware/console/console_io.cpp @@ -44,12 +44,6 @@ #include "rusEfiFunctionalTest.h" #endif /*EFI_SIMULATOR */ -bool consoleByteArrived = false; - -void onDataArrived(bool valid) { - consoleByteArrived = valid; -} - CommandHandler console_line_callback; void startConsole(CommandHandler console_line_callback_p) { diff --git a/firmware/console/console_io.h b/firmware/console/console_io.h index 4c39f317d8..9ee0fb44bb 100644 --- a/firmware/console/console_io.h +++ b/firmware/console/console_io.h @@ -21,4 +21,4 @@ typedef void (*CommandHandler)(char *); void consoleOutputBuffer(const uint8_t *buf, int size); void startConsole(CommandHandler console_line_callback_p); -void onDataArrived(bool valid); +void onDataArrived(); diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 0c19769315..ac77a810cf 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -257,7 +257,11 @@ static bool isTriggerErrorNow() { #endif /* EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT */ } -extern bool consoleByteArrived; +static std::atomic consoleByteArrived = false; + +void onDataArrived() { + consoleByteArrived.store(true); +} class CommunicationBlinkingTask : public PeriodicTimerController { @@ -299,7 +303,8 @@ class CommunicationBlinkingTask : public PeriodicTimerController { // differentiates software firmware error from critical interrupt error with CPU halt. offTimeMs = 50; onTimeMs = 450; - } else if (consoleByteArrived) { + } else if (consoleByteArrived.exchange(false)) { + consoleByteArrived = false; offTimeMs = 100; onTimeMs = 33; #if EFI_INTERNAL_FLASH diff --git a/firmware/pch/pch.h b/firmware/pch/pch.h index ccd1b9f60c..0a7f2e8df1 100644 --- a/firmware/pch/pch.h +++ b/firmware/pch/pch.h @@ -47,3 +47,5 @@ #else #include "chprintf.h" #endif + +#include