Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r35179cc5895f6b7b9b1f8338754836898514a14e -r0c66a3534801f2ba380e95b732e05b7cfee21772 --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 35179cc5895f6b7b9b1f8338754836898514a14e) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 0c66a3534801f2ba380e95b732e05b7cfee21772) @@ -1,6 +1,6 @@ /************************************************************************** * -* Copyright (c) 2020-2022 Diality Inc. - All Rights Reserved. +* Copyright (c) 2020-2023 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. @@ -21,6 +21,7 @@ #include "LoadCell.h" #include "MessageSupport.h" #include "NVDataMgmt.h" +#include "OperationModes.h" #include "PersistentAlarm.h" #include "SystemCommMessages.h" #include "TaskPriority.h" @@ -51,7 +52,8 @@ #define EMPTY_RESERVOIR_WEIGHT_GRAMS 1600.0F ///< Reservoirs empty weight in grams. #define MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_FIRST_TARE_GRAMS 300.0F ///< Max allowed extra weight before first tare in grams. #define MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS 60.0F ///< Max allowed extra weight before tare in grams. -#define LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS 60.0F ///< Load cell primary and backup maximum allowed weight drift in grams. +#define LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS 80.0F ///< Load cell primary and backup maximum allowed weight drift in grams. +#define LOAD_CELL_PRIMARY_BACKUP_MAX_HEAT_DRIFT_GRAMS 200.0F ///< Load cell primary and backup maximum allowed weight drift in grams for heat disinfect mode. #define DATA_PUBLISH_COUNTER_START_COUNT 0 ///< Data publish counter start count. #define LOAD_CELL_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Load cell FPGA error timeout in milliseconds. #define LOAD_CELL_FPGA_SIGN_BIT 0x800000 ///< Load cell FPGA sign bit. @@ -512,8 +514,15 @@ F32 drift = 0.0; F32 loadCellADrift = 0.0; F32 loadCellBDrift = 0.0; + F32 maxDrift = LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS; BOOL isDriftOutOfRange = FALSE; + // Increase max drift limit if in heat disinfect mode + if ( DG_MODE_HEAT == getCurrentOperationMode() ) + { + maxDrift = LOAD_CELL_PRIMARY_BACKUP_MAX_HEAT_DRIFT_GRAMS; + } + // Test is valid after load cells are tared if ( isLoadCellTared( LOAD_CELL_RESERVOIR_1_PRIMARY ) && isLoadCellTared( LOAD_CELL_RESERVOIR_1_BACKUP ) ) { @@ -526,8 +535,7 @@ getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_2_BACKUP ) ); } - if ( ( loadCellADrift > LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS ) || - ( loadCellBDrift > LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS ) ) + if ( ( loadCellADrift > maxDrift ) || ( loadCellBDrift > maxDrift ) ) { isDriftOutOfRange = TRUE; }