From 306b2d99b28a2306217cbdaa82608cd6a781b282 Mon Sep 17 00:00:00 2001 From: Ivor Hewitt Date: Wed, 22 Jan 2025 17:41:24 +0000 Subject: [PATCH] Remember coretemp quality state between messages, reset temp to zero if not set (#4602) Part of #4207 --- src/ANT/ANTChannel.cpp | 1 - src/ANT/ANTMessage.cpp | 5 ++++- src/Train/RealtimeData.cpp | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ANT/ANTChannel.cpp b/src/ANT/ANTChannel.cpp index c1eec76ef..eda13de31 100644 --- a/src/ANT/ANTChannel.cpp +++ b/src/ANT/ANTChannel.cpp @@ -904,7 +904,6 @@ void ANTChannel::broadcastEvent(unsigned char *ant_message) case CHANNEL_TYPE_CORETEMP: { - // Quality alternates messages so will need to remember last quality message // only use core temp if data is 'good' or better (just use >0 for now) if ( antMessage.coreTemp > 0 ) { diff --git a/src/ANT/ANTMessage.cpp b/src/ANT/ANTMessage.cpp index d0eed5848..3731ddd26 100644 --- a/src/ANT/ANTMessage.cpp +++ b/src/ANT/ANTMessage.cpp @@ -621,12 +621,15 @@ ANTMessage::ANTMessage(ANT *parent, const unsigned char *message) { case ANTChannel::CHANNEL_TYPE_CORETEMP: { + static int tmpQual=0; switch (data_page) { case 0: - tempQual = (message[6]&0x3); + // Quality only on intermittent messages so need to remember last quality message + tmpQual = (message[6]&0x3); break; case 1: + tempQual = tmpQual; uint16_t val=(message[7]+((message[8] & 0xf0)<<4)); if (val>0 && val != 0x800) skinTemp = val/20.0; diff --git a/src/Train/RealtimeData.cpp b/src/Train/RealtimeData.cpp index 3e7070907..68090f53b 100644 --- a/src/Train/RealtimeData.cpp +++ b/src/Train/RealtimeData.cpp @@ -45,6 +45,7 @@ RealtimeData::RealtimeData() trainerConfigRequired = false; trainerBrakeFault = false; memset(spinScan, 0, 24); + temp = 0.0; } void RealtimeData::setName(char *name) @@ -530,7 +531,7 @@ double RealtimeData::value(DataSeries series) const case Temp: return temp; break; - + case CoreTemp: return coreTemp; break;