From fc9e302aefd2e8b8b6e3e229c4dc2a5b3aaf7533 Mon Sep 17 00:00:00 2001 From: Alejandro Martinez Date: Sat, 13 Mar 2021 18:09:23 -0300 Subject: [PATCH] Remember SRM offset from last successful calibration (#3843) It should be closer to current offset than the fixed default. Users having issues with calibration can change default value adding: [srm] offset=400 to configglobal-trainmode.ini --- src/ANT/ANTChannel.cpp | 6 +++++- src/Core/Settings.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ANT/ANTChannel.cpp b/src/ANT/ANTChannel.cpp index f23832136..bfeba176e 100644 --- a/src/ANT/ANTChannel.cpp +++ b/src/ANT/ANTChannel.cpp @@ -55,7 +55,9 @@ ANTChannel::init() messages_received=0; messages_dropped=0; setId(); - srm_offset=400; // default relatively arbitrary, but matches common 'indoors' values + // retrieve srm_offset from last successful calibration, + // default relatively arbitrary, but matches common 'indoors' values + srm_offset=appsettings->value(this, SRM_OFFSET, 400).toDouble(); burstInit(); value2=value=0; status = Closed; @@ -413,6 +415,8 @@ void ANTChannel::broadcastEvent(unsigned char *ant_message) // 5 seconds have elapsed since starting calibration, so assume completed qDebug() << "ANT Sport calibration succeeded"; srm_offset = srm_offset_instant; + // persist offset value in global settings + appsettings->setValue(SRM_OFFSET, srm_offset); parent->setCalibrationZeroOffset(srm_offset); parent->setCalibrationSlope(srm_slope); parent->setCalibrationState(CALIBRATION_STATE_SUCCESS); diff --git a/src/Core/Settings.h b/src/Core/Settings.h index 29f008cb8..765423f5d 100644 --- a/src/Core/Settings.h +++ b/src/Core/Settings.h @@ -229,6 +229,7 @@ #define FORTIUS_FIRMWARE "fortius/firmware" #define FORTIUS_CALIBRATION "fortius/calibration" #define IMAGIC_FIRMWARE "imagic/firmware" +#define SRM_OFFSET "srm/offset" #define TRAIN_MULTI "train/multi" #define TRAIN_AUTOCONNECT "train/autoconnect" #define TRAIN_AUTOHIDE "train/autohide"