Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -rffef40f212d885498157395a1a3375542747a603 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision ffef40f212d885498157395a1a3375542747a603) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file BloodFlow.c +* @file BloodFlow.c * -* @author (last) Sean Nash -* @date (last) 13-Oct-2020 +* @author (last) Sean Nash +* @date (last) 13-Aug-2021 * -* @author (original) Sean Nash -* @date (original) 07-Nov-2019 +* @author (original) Sean Nash +* @date (original) 07-Nov-2019 * ***************************************************************************/ @@ -1023,7 +1023,9 @@ if ( lastBloodPumpDirectionCount != dirErrorCnt ) { lastBloodPumpDirectionCount = dirErrorCnt; +#ifndef DISABLE_PUMP_DIRECTION_CHECKS SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PUMP_DIRECTION_STATUS_ERROR, (U32)HD_PUMP_BLOOD_PUMP ) +#endif } #endif bpMCDir = ( getMeasuredBloodPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE ); Index: firmware/App/Controllers/BloodFlow.h =================================================================== diff -u -r8cebc7f282f403c99f712d422454c15414b6fc73 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/BloodFlow.h (.../BloodFlow.h) (revision 8cebc7f282f403c99f712d422454c15414b6fc73) +++ firmware/App/Controllers/BloodFlow.h (.../BloodFlow.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file BloodFlow.h +* @file BloodFlow.h * -* @author (last) Sean Nash -* @date (last) 26-Aug-2020 +* @author (last) Sean Nash +* @date (last) 13-Aug-2021 * -* @author (original) Sean Nash -* @date (original) 07-Nov-2019 +* @author (original) Sean Nash +* @date (original) 07-Nov-2019 * ***************************************************************************/ Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -rd39ef6232e746a4f2d425135208602670fae60bd -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision d39ef6232e746a4f2d425135208602670fae60bd) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file DGInterface.c +* @file DGInterface.c * -* @author (last) Sean Nash -* @date (last) 24-Sep-2020 +* @author (last) Quang Nguyen +* @date (last) 24-Aug-2021 * -* @author (original) Sean -* @date (original) 08-Apr-2020 +* @author (original) Sean +* @date (original) 08-Apr-2020 * ***************************************************************************/ @@ -23,6 +23,7 @@ #include "ModeTreatment.h" #include "ModeTreatmentParams.h" #include "OperationModes.h" +#include "PersistentAlarm.h" #include "SystemCommMessages.h" #include "Timers.h" @@ -33,15 +34,22 @@ // ********** private definitions ********** -#define START_DG_CMD TRUE ///< Parameter for DG start/stop command function. True = start. -#define STOP_DG_CMD FALSE ///< Parameter for DG start/stop command function. False = stop. +#define START_DG_CMD TRUE ///< Parameter for DG start/stop command function. True = start. +#define STOP_DG_CMD FALSE ///< Parameter for DG start/stop command function. False = stop. -#define RESERVOIR_SETTLE_TIME_MS 5000 ///< Time (in ms) allotted for reservoir to settle (after fill, before drain). +#define RESERVOIR_SETTLE_TIME_MS 5000 ///< Time (in ms) allotted for reservoir to settle (after fill, before drain). -#define MAX_RESERVOIR_VOLUME_ML 1950.0 ///< Maximum reservoir volume. Switch reservoirs if active reservoir exceeds this volume. +#define MAX_RESERVOIR_VOLUME_ML 1950.0 ///< Maximum reservoir volume. Switch reservoirs if active reservoir exceeds this volume. -#define SIZE_OF_LARGE_LOAD_CELL_AVG 32 ///< Large load cell moving average has 32 samples. +#define SIZE_OF_LARGE_LOAD_CELL_AVG 32 ///< Large load cell moving average has 32 samples. +#define DIALYSATE_TEMP_PERSISTENCE_PERIOD ( 3 * MS_PER_SECOND ) ///< Persistence period for dialysate temperature alarm. + +#define DIALYSATE_TEMP_RECOVERY_TOLERANCE_C 2.0 ///< Dialysate temperature recovery tolerance in degree C. +#define DIALYSATE_TEMP_TOLERANCE_C 4.0 ///< Dialysate temperature tolerance in degree C. +#define DIALYSATE_TEMP_HIGH_LIMIT_C 42.0 ///< Dialysate high temperature limit in degree C. +#define DIALYSATE_TEMP_LOW_LIMIT_C 33.0 ///< Dialysate low temperature limit in degree C. + /// States of the treatment reservoir management state machine. typedef enum TreatmentReservoirMgmt_States { @@ -158,6 +166,9 @@ lgLoadCellReadingsIdx = 0; lgLoadCellReadingsTotal[ DG_RESERVOIR_1 ] = 0.0; lgLoadCellReadingsTotal[ DG_RESERVOIR_2 ] = 0.0; + + initPersistentAlarm( ALARM_ID_DIALYSATE_TEMPERATURE_HIGH, DIALYSATE_TEMP_PERSISTENCE_PERIOD, DIALYSATE_TEMP_PERSISTENCE_PERIOD ); + initPersistentAlarm( ALARM_ID_DIALYSATE_TEMPERATURE_LOW, DIALYSATE_TEMP_PERSISTENCE_PERIOD, DIALYSATE_TEMP_PERSISTENCE_PERIOD ); } /*********************************************************************//** @@ -485,18 +496,6 @@ /*********************************************************************//** * @brief - * The getDialysateTemperature function gets the latest dialysate temperature. - * @details Inputs: dgDialysateTemp - * @details Outputs: none - * @return the current dialysate temperature - *************************************************************************/ -F32 getDialysateTemperature( void ) -{ - return dgDialysateTemp; -} - -/*********************************************************************//** - * @brief * The getDGDisinfectsStates function returns the DG disinfects readings. * @details Inputs: none * @details Outputs: disinfectsStatus @@ -509,6 +508,18 @@ /*********************************************************************//** * @brief + * The getDialysateTemperature function gets the latest dialysate temperature. + * @details Inputs: dgDialysateTemp + * @details Outputs: none + * @return the current dialysate temperature + *************************************************************************/ +F32 getDialysateTemperature( void ) +{ + return dgDialysateTemp; +} + +/*********************************************************************//** + * @brief * The getReservoirWeight function gets the load cell weight of a given reservoir. * @details Inputs: loadCellWeightInGrams[] * @details Outputs: none @@ -1023,6 +1034,47 @@ /*********************************************************************//** * @brief + * The checkDialysateTemperature function checks the dialysate temperature + * reported by DG and alarm if temperature is out of range. + * @details Inputs: dgTrimmerTempSet, dgDialysateTemp, dgRedundantDialysateTemp + * @details Outputs: alarm if dialysate temperature is out of accepted range + * @return none + *************************************************************************/ +void checkDialysateTemperature( void ) +{ + BOOL const dialysateHighTemp = ( ( ( dgDialysateTemp - dgTrimmerTempSet ) > DIALYSATE_TEMP_TOLERANCE_C ) || + ( dgDialysateTemp > DIALYSATE_TEMP_HIGH_LIMIT_C ) ); + + BOOL const dialysateLowTemp = ( ( ( dgTrimmerTempSet - dgDialysateTemp ) > DIALYSATE_TEMP_TOLERANCE_C ) || + ( dgDialysateTemp < DIALYSATE_TEMP_LOW_LIMIT_C ) ); + + BOOL const dialysateTempRecovered = fabs( dgDialysateTemp - dgTrimmerTempSet ) < DIALYSATE_TEMP_RECOVERY_TOLERANCE_C ? TRUE : FALSE; + +#ifndef DISABLE_DIALYSATE_TEMP_CHECK + if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_DIALYSATE_TEMPERATURE_HIGH, dialysateHighTemp ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DIALYSATE_TEMPERATURE_HIGH, dgTrimmerTempSet, dgDialysateTemp ); + } + + if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_DIALYSATE_TEMPERATURE_LOW, dialysateLowTemp ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DIALYSATE_TEMPERATURE_LOW, dgTrimmerTempSet, dgDialysateTemp ); + } + + if ( TRUE == isPersistentAlarmConditionCleared( ALARM_ID_DIALYSATE_TEMPERATURE_HIGH, dialysateHighTemp ) ) + { + clearAlarmCondition( ALARM_ID_DIALYSATE_TEMPERATURE_HIGH ); + } + + if ( TRUE == isPersistentAlarmConditionCleared( ALARM_ID_DIALYSATE_TEMPERATURE_LOW, dialysateTempRecovered ) ) + { + clearAlarmCondition( ALARM_ID_DIALYSATE_TEMPERATURE_LOW ); + } +#endif +} + +/*********************************************************************//** + * @brief * The checkDGRestart function checks to see if DG has restarted after started * by HD and triggers appropriate alarm. * @details Inputs: dgStarted Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -rd39ef6232e746a4f2d425135208602670fae60bd -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision d39ef6232e746a4f2d425135208602670fae60bd) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file DGInterface.h +* @file DGInterface.h * -* @author (last) Sean Nash -* @date (last) 05-Oct-2020 +* @author (last) Quang Nguyen +* @date (last) 09-Aug-2021 * -* @author (original) Sean -* @date (original) 08-Apr-2020 +* @author (original) Sean +* @date (original) 08-Apr-2020 * ***************************************************************************/ @@ -54,30 +54,30 @@ /// Payload record structure for DG temperature sensors data message. typedef struct { - F32 inletPrimaryHeater; ///< Inlet primary heater temperature sensor - F32 outletPrimaryHeater; ///< Outlet primary heater temperature sensor - F32 conductivitySensor1; ///< Conductivity sensor 1 temperature sensor - F32 conductivitySensor2; ///< Conductivity sensor 2 temperature sensor - F32 outletRedundant; ///< Outlet redundant temperature sensor - F32 inletDialysate; ///< Inlet dialysate temperature sensor - F32 primaryHeaterThermocouple; ///< Primary heaters thermocouple sensor - F32 trimmerHeaterThermocouple; ///< Trimmer heater thermocouple sensor - F32 priamyHeaterColdjunction; ///< Primary heaters cold junction temperature sensor - F32 trimmerHeaterColdjunction; ///< Trimmer heater cold junction temperature sensor - F32 primaryHeaterInternal; ///< Primary heaters internal temperature (calculated from thermocouple and cold junction) - F32 trimmerHeaterInternal; ///< Trimmer heater internal temperature (calculated from thermocouple and cold junction) - F32 fpgaBoard; ///< FPGA board temperature sensor - F32 loadCellA1B1; ///< Load cell A1/B1 temperature sensor - F32 loadCellA2B2; ///< Load cell A2/B2 temperature sensor - F32 internalTHDORTD; ///< THDo RTD channel temperature sensor - F32 internalTDIRTD; ///< TDI RTD channel temperature sensor - F32 internalCondSnsrTemp; ///< Conductivity Sensor internal temperature sensor - U32 primaryThermoCoupleRaw; ///< Primary heaters thermocouple raw ADC value - U32 primaryColdjuncRaw; ///< Primary heaters cold junction raw ADC value - U32 trimmerThermoCoupleRaw; ///< Trimmer heater thermocouple raw ADC value - U32 trimmerColdjuncRaw; ///< Trimmer heater cold junction raw ADC value - S32 cond1Raw; ///< Conductivity sensor 1 raw temperature ADC value - S32 cond2Raw; ///< Conductivity sensor 2 raw temperature ADC value + F32 TPi; ///< Inlet primary heaters temperature sensor + F32 TPo; ///< Outlet primary heaters temperature sensor + F32 TD1; ///< Conductivity sensor 1 temperature sensor + F32 TD2; ///< Conductivity sensor 2 temperature sensor + F32 TRo; ///< Outlet redundant temperature sensor + F32 TDi; ///< Inlet dialysate temperature sensor + F32 HtrPrimThermo; ///< Primary heaters internal temperature sensor + F32 HtrTrimThermo; ///< Trimmer heater internal temperature sensor + F32 HtrPrimColdJunc; ///< Primary heaters cold junction temperature sensor + F32 HtrTrimColdJunc; ///< Trimmer heater cold junction temperature sensor + F32 HtrPrimInternal; ///< Primary heaters internal temperature + F32 HtrTrimInternal; ///< Trimmer heater internal temperature + F32 DGBoardTemp; ///< DG board temperature + F32 ResOneLoadCellTemp; ///< Reservoir 1 load cell sensor temperature + F32 ResTwoLoadCellTemp; ///< Reservoir 2 load cell sensor temperature + F32 THDoInternalTemp; ///< THDo RTD channel temperature sensor + F32 TDiInternalTemp; ///< TDI RTD channel temperature sensor + F32 internalCondSnsrTemp; ///< Conductivity Sensor internal temperature sensor + U32 primaryThermoCoupleRaw; ///< Primary heaters thermocouple raw ADC value + U32 primaryColdjuncRaw; ///< Primary heaters cold junction raw ADC value + U32 trimmerThermoCoupleRaw; ///< Trimmer heater thermocouple raw ADC value + U32 trimmerColdjuncRaw; ///< Trimmer heater cold junction raw ADC value + S32 cond1Raw; ///< Conductivity sensor 1 raw temperature ADC value + S32 cond2Raw; ///< Conductivity sensor 2 raw temperature ADC value } TEMPERATURE_SENSORS_DATA_T; /// Payload record structure for a drain reservoir command message. @@ -123,8 +123,8 @@ F32 getLoadCellWeight( LOAD_CELL_ID_T loadCellID ); F32 getReservoirWeight( DG_RESERVOIR_ID_T resID ); F32 getReservoirWeightLargeFilter( DG_RESERVOIR_ID_T resID ); -F32 getDialysateTemperature( void ); DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ); +F32 getDialysateTemperature( void ); void setDGOpMode( U32 opMode, U32 subMode ); void setDialysateTemperatureReadings( F32 temp1, F32 temp2 ); @@ -155,6 +155,8 @@ void handleDGCommandResponse( DG_CMD_RESPONSE_T *dgCmdRespPtr ); BOOL getDGCommandResponse( U32 commandID, DG_CMD_RESPONSE_T *cmdRespPtr ); +void checkDialysateTemperature( void ); + BOOL testSetDialOutLoadCellWeightOverride( U32 sensor, F32 value ); BOOL testResetDialOutLoadCellWeightOverride( U32 sensor ); Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r02d6de097fc53e769c4851a8f1f6438c5ff5e280 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 02d6de097fc53e769c4851a8f1f6438c5ff5e280) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -5,13 +5,13 @@ * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * -* @file DialInFlow.c +* @file DialInFlow.c * -* @author (last) H. Nguyen -* @date (last) 28-Oct-2021 +* @author (last) H. Nguyen +* @date (last) 28-Oct-2021 * -* @author (original) Sean -* @date (original) 16-Dec-2019 +* @author (original) Sean +* @date (original) 16-Dec-2019 * ***************************************************************************/ @@ -99,7 +99,7 @@ #define DIP_GEAR_RATIO 32.0 ///< DialIn pump motor to dialIn pump gear ratio. #define DIP_PWM_ZERO_OFFSET 0.1 ///< 10% PWM duty cycle = zero speed. /// Macro converts flow rate to estimate PWM needed to achieve it. // TODO - I added 1.2 gain based on empirical data -#define DIP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * DIP_GEAR_RATIO * DIP_MOTOR_RPM_TO_PWM_DC_FACTOR * 1.2 + DIP_PWM_ZERO_OFFSET ) +#define DIP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * DIP_GEAR_RATIO * DIP_MOTOR_RPM_TO_PWM_DC_FACTOR * 1.258 + DIP_PWM_ZERO_OFFSET ) /// Conversion from PWM duty cycle % to commanded pump motor speed. #define DIP_PWM_TO_MOTOR_SPEED_RPM(pwm) ( ((pwm) - DIP_PWM_ZERO_OFFSET) * 4000.0 ) @@ -1123,7 +1123,9 @@ if ( lastDialInPumpDirectionCount != dirErrorCnt ) { lastDialInPumpDirectionCount = dirErrorCnt; +#ifndef DISABLE_PUMP_DIRECTION_CHECKS SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PUMP_DIRECTION_STATUS_ERROR, (U32)HD_PUMP_DIALYSATE_INLET_PUMP ) +#endif } #endif Index: firmware/App/Controllers/DialOutFlow.c =================================================================== diff -u -rc459ad58ef5420db7440fb5478d4b19351d65bcd -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision c459ad58ef5420db7440fb5478d4b19351d65bcd) +++ firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file DialOutFlow.c +* @file DialOutFlow.c * -* @author (last) Sean Nash -* @date (last) 13-Oct-2020 +* @author (last) Sean Nash +* @date (last) 19-Aug-2021 * -* @author (original) Sean -* @date (original) 24-Jan-2020 +* @author (original) Sean +* @date (original) 24-Jan-2020 * ***************************************************************************/ @@ -811,7 +811,9 @@ if ( lastDialOutPumpDirectionCount != dirErrorCnt ) { lastDialOutPumpDirectionCount = dirErrorCnt; +#ifndef DISABLE_PUMP_DIRECTION_CHECKS SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PUMP_DIRECTION_STATUS_ERROR, (U32)HD_PUMP_DIALYSATE_OUTLET_PUMP ) +#endif } dopMCDir = ( getMeasuredDialOutPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE ); Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r8cebc7f282f403c99f712d422454c15414b6fc73 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 8cebc7f282f403c99f712d422454c15414b6fc73) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file PresOccl.c +* @file PresOccl.c * -* @author (last) Sean Nash -* @date (last) 24-Sep-2020 +* @author (last) Sean Nash +* @date (last) 19-Aug-2021 * -* @author (original) Sean -* @date (original) 15-Jan-2020 +* @author (original) Sean +* @date (original) 15-Jan-2020 * ***************************************************************************/ @@ -568,11 +568,11 @@ if ( bpOccl > ( OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) { signalBloodPumpHardStop(); // Stop pump immediately - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_OCCLUSION_BLOOD_PUMP, bpOccl ) + //SET_ALARM_WITH_1_U32_DATA( ALARM_ID_OCCLUSION_BLOOD_PUMP, bpOccl ) } else if ( bpOccl < ( OCCLUSION_CLEAR_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) { - clearAlarmCondition( ALARM_ID_OCCLUSION_BLOOD_PUMP ); + //clearAlarmCondition( ALARM_ID_OCCLUSION_BLOOD_PUMP ); } #endif } Index: firmware/App/Controllers/PresOccl.h =================================================================== diff -u -r8cebc7f282f403c99f712d422454c15414b6fc73 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision 8cebc7f282f403c99f712d422454c15414b6fc73) +++ firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file PresOccl.h +* @file PresOccl.h * -* @author (last) Sean Nash -* @date (last) 22-Sep-2020 +* @author (last) Sean Nash +* @date (last) 19-Aug-2021 * -* @author (original) Sean -* @date (original) 15-Jan-2020 +* @author (original) Sean +* @date (original) 15-Jan-2020 * ***************************************************************************/ Index: firmware/App/Controllers/Switches.c =================================================================== diff -u -r9b831d8407ad2ac737a58f369455074306d5097a -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/Switches.c (.../Switches.c) (revision 9b831d8407ad2ac737a58f369455074306d5097a) +++ firmware/App/Controllers/Switches.c (.../Switches.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -5,13 +5,13 @@ * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * -* @file Switches.c +* @file Switches.c * -* @author (last) Dara Navaei -* @date (last) 01-Oct-2021 +* @author (last) Dara Navaei +* @date (last) 16-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 01-Oct-2021 +* @author (original) Dara Navaei +* @date (original) 25-Jul-2021 * ***************************************************************************/ Index: firmware/App/Controllers/Switches.h =================================================================== diff -u -rccfd15568f1e3d304320c2babb2fd4bcf0413304 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/Switches.h (.../Switches.h) (revision ccfd15568f1e3d304320c2babb2fd4bcf0413304) +++ firmware/App/Controllers/Switches.h (.../Switches.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,6 +1,6 @@ /************************************************************************** * -* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* Copyright (c) 2021-2021 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. @@ -15,7 +15,6 @@ * ***************************************************************************/ - #ifndef APP_CONTROLLERS_SWITCHES_H_ #define APP_CONTROLLERS_SWITCHES_H_ Index: firmware/App/Controllers/Temperatures.c =================================================================== diff -u -r9b831d8407ad2ac737a58f369455074306d5097a -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 9b831d8407ad2ac737a58f369455074306d5097a) +++ firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -5,13 +5,13 @@ * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * -* @file Temperatures.c +* @file Temperatures.c * -* @author (last) Dara Navaei -* @date (last) 01-Oct-2021 +* @author (last) Quang Nguyen +* @date (last) 24-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 01-Oct-2021 +* @author (original) Dara Navaei +* @date (original) 01-Aug-2021 * ***************************************************************************/ @@ -43,7 +43,7 @@ #define ADC_BOARD_TEMP_SENSOR_CONVERSION_CONST_1 272.5 ///< ADC board temperature sensor conversion constant 1. #define ADC_BOARD_TEMP_SENSOR_CONVERSION_CONST_2 0x800000 ///< ADC board temperature sensor conversion constant 2. #define MIN_ALLOWED_TEMPERATURE 0.0 ///< Thermistors/sensors minimum allowed temperature reading. -#define MAX_ALLOWED_TEMPERATURE 120.0 ///< Thermistors/sensors maximum allowed temperature reading. +#define MAX_ALLOWED_TEMPERATURE 80.0 ///< Thermistors/sensors maximum allowed temperature reading. #define MAX_ALLOWED_TEMP_OUT_OF_RANGE_PERIOD ( 5 * MS_PER_SECOND ) ///< Thermistors/sensors maximum allowed temperature out of range period. /// Temperatures exec states @@ -265,21 +265,25 @@ static void monitorTemperatures( void ) { TEMPERATURES_T sensor; - BOOL isAlarmTriggered; - F32 temperature = 0.0; BOOL isTempOutOfRange = FALSE; + F32 temperature = 0.0; + U32 lastFaultSensor = 0; + F32 faultSensorTemp = 0.0; for ( sensor = THERMISTOR_ONBOARD_NTC; sensor < NUM_OF_TEMPERATURES; sensor++ ) { temperature = getTemperatureValue( sensor ); - isTempOutOfRange |= ( temperature > MAX_ALLOWED_TEMPERATURE ) || ( temperature < MIN_ALLOWED_TEMPERATURE ); + if ( ( temperature > MAX_ALLOWED_TEMPERATURE ) || ( temperature < MIN_ALLOWED_TEMPERATURE ) ) + { + isTempOutOfRange = TRUE; + lastFaultSensor = sensor; + faultSensorTemp = temperature; + } } - isAlarmTriggered = isPersistentAlarmTriggered( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, isTempOutOfRange ); - - if ( TRUE == isAlarmTriggered ) + if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, isTempOutOfRange ) ) { - SET_ALARM_WITH_1_F32_DATA( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, temperature ) + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, lastFaultSensor, faultSensorTemp ); } } Index: firmware/App/Controllers/Temperatures.h =================================================================== diff -u -rccfd15568f1e3d304320c2babb2fd4bcf0413304 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Controllers/Temperatures.h (.../Temperatures.h) (revision ccfd15568f1e3d304320c2babb2fd4bcf0413304) +++ firmware/App/Controllers/Temperatures.h (.../Temperatures.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,6 +1,6 @@ /************************************************************************** * -* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* Copyright (c) 2021-2021 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. Index: firmware/App/HDCommon.h =================================================================== diff -u -r8cebc7f282f403c99f712d422454c15414b6fc73 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision 8cebc7f282f403c99f712d422454c15414b6fc73) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file HDCommon.h +* @file HDCommon.h * -* @author (last) Sean Nash -* @date (last) 14-Oct-2020 +* @author (last) Sean Nash +* @date (last) 14-Oct-2020 * -* @author (original) Sean -* @date (original) 27-Feb-2020 +* @author (original) Sean +* @date (original) 27-Feb-2020 * ***************************************************************************/ @@ -25,7 +25,7 @@ #define HD_VERSION_MAJOR 0 #define HD_VERSION_MINOR 6 #define HD_VERSION_MICRO 0 -#define HD_VERSION_BUILD 0 +#define HD_VERSION_BUILD 97 // ********** development build switches ********** @@ -53,11 +53,12 @@ #define DISABLE_MOTOR_CURRENT_CHECKS 1 // Do not error on HD pump current checks #define DISABLE_PUMP_FLOW_CHECKS 1 // Do not error on HD pump flow checks #define DISABLE_PUMP_SPEED_CHECKS 1 // Do not error on HD pump speed checks -// #define DISABLE_PUMP_DIRECTION_CHECKS 1 // Do not error on HD pump direction checks - #define DISABLE_SYRINGE_PUMP 1 // Disable syringe pump functionality + #define DISABLE_PUMP_DIRECTION_CHECKS 1 // Do not error on HD pump direction checks +// #define DISABLE_SYRINGE_PUMP 1 // Disable syringe pump functionality #define ALWAYS_ALLOW_SYRINGE_PUMP_CMDS 1 // Allow syringe pump commands at any time except when pump is busy -// #define DISABLE_PRESSURE_CHECKS 1 // Do not error on HD pressure checks -// #define DISABLE_UF_ALARMS 1 // Do not error on HD ultrafiltration checks + #define DISABLE_UF_ALARMS 1 // Do not error on HD ultrafiltration checks + #define DISABLE_DIALYSATE_TEMP_CHECK 1 // Disable dialysate temperature check + #define DISABLE_PRESSURE_CHECKS 1 // Do not error on HD pressure checks #define DISABLE_VALVE_ALARMS 1 // Do not error on HD valve position #define SKIP_CAL_CHECK 1 // // #define RUN_PUMPS_OPEN_LOOP 1 // BP and DPi pumps will be run open loop (no flow sensor feedback) @@ -70,11 +71,11 @@ #define DISABLE_OCCLUSION_SELF_TEST 1 // Skip occlusion sensor self-test. // #define SKIP_CARTRIDGE_REMOVAL 1 // Skip cartridge removal check // #define DISABLE_FPGA_COUNTER_CHECKS 1 // Disable alarms associated with FPGA read/error counters -// #define DISABLE_VOLTAGE_MONITOR 1 // Disable voltage monitoring/alarms + #define DISABLE_VOLTAGE_MONITOR 1 // Disable voltage monitoring/alarms #define ALLOW_1_MIN_TREATMENT_DURATION 1 // Allow user to change treatment duration to as low as 1 minute #define DISABLE_SYRINGE_PUMP_ALARMS 1 // Disable some syringe pump alarms that are triggering intermittently // #define NO_PUMP_FLOW_LIMITS 1 // Allow any commanded flow rate for peristaltic pumps - #define DISABLE_BUBBLE_ALARMS 1 // Disable bubble alarms + //#define DISABLE_BUBBLE_ALARMS 1 // Disable bubble alarms #define DISABLE_UI_POST_TEST 1 // Disable the UI POST // Skip Pre-Treatment and get to treatment as soon as possible Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r8cebc7f282f403c99f712d422454c15414b6fc73 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 8cebc7f282f403c99f712d422454c15414b6fc73) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file ModeStandby.c +* @file ModeStandby.c * -* @author (last) Sean Nash -* @date (last) 08-Oct-2020 +* @author (last) Quang Nguyen +* @date (last) 24-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -296,12 +296,14 @@ { rejReason = REQUEST_REJECT_REASON_DG_NOT_IN_STANDBY_IDLE_STATE; } + #ifndef DISABLE_BATT_COMM if ( FALSE == isBatteryCharged() ) { rejReason = REQUEST_REJECT_REASON_BATTERY_IS_NOT_CHARGED; } #endif + if ( REQUEST_REJECT_REASON_NONE == rejReason ) { result = TRUE; Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r8cebc7f282f403c99f712d422454c15414b6fc73 -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 8cebc7f282f403c99f712d422454c15414b6fc73) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file SelfTests.c +* @file SelfTests.c * -* @author (last) Quang Nguyen -* @date (last) 28-Jan-2021 +* @author (last) Quang Nguyen +* @date (last) 09-Aug-2021 * -* @author (original) Quang Nguyen -* @date (original) 28-Jan-2021 +* @author (original) Quang Nguyen +* @date (original) 28-Jan-2021 * ***************************************************************************/ @@ -605,6 +605,7 @@ signalBloodPumpHardStop(); signalDialInPumpHardStop(); signalDialOutPumpHardStop(); + selfTestStartTime = getMSTimerCount(); // TODO: Use appropriate sensor driver if ( STATE_CLOSED == getFPGADoorState() ) @@ -762,6 +763,9 @@ { NO_CART_SELF_TESTS_STATE_T state = NO_CART_SELF_TESTS_STOPPED_STATE; + // Restart self-test start time + selfTestStartTime = getMSTimerCount(); + if ( TRUE == selfTestsResumeRequested ) { selfTestsResumeRequested = FALSE; @@ -784,6 +788,9 @@ { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; + // Restart self-test start time + selfTestStartTime = getMSTimerCount(); + // TODO: Use appropriate sensor driver if ( STATE_CLOSED == getFPGADoorState() ) { @@ -1008,6 +1015,9 @@ { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_STOPPED_STATE; + // Restart self-test start time + selfTestStartTime = getMSTimerCount(); + if ( TRUE == selfTestsResumeRequested ) { selfTestsResumeRequested = FALSE; Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r739960711a13328f76f20accc65b9359e1feb2ac -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 739960711a13328f76f20accc65b9359e1feb2ac) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file FPGA.c +* @file FPGA.c * -* @author (last) Peman Montazemi -* @date (last) 15-Feb-2021 +* @author (last) Quang Nguyen +* @date (last) 30-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -23,8 +23,10 @@ #include "Comm.h" #include "Compatible.h" #include "FPGA.h" +#include "OperationModes.h" #include "PersistentAlarm.h" #include "SystemCommMessages.h" +#include "Timers.h" #include "Utilities.h" /** @@ -110,6 +112,8 @@ #define FRONT_DOOR_SWITCH_MASK 0x0010 ///< Front door switch bit mask. Bit 4 of the GPIO register. #define PUMP_TRACK_SWITCH_MASK 0x0020 ///< Pump track switch bit mask. Bit 5 of the GPIO register. +#define PROCESSOR_FPGA_CLOCK_DIFF_TOLERANCE 1 ///< Tolerance for processor clock speed check against FPGA clock. + // FPGA Sensors Record #pragma pack(push,1) /// Record structure for FPGA header read. @@ -299,6 +303,9 @@ static FPGA_SENSORS_ASYNC_T fpgaSensorReadingsAsync; ///< Record of last received async (as needed) FPGA sensor data. #endif +static U16 currentFPGATimerCount_ms; ///< Current FPGA timer count in ms. +static U32 currentTimerCount_ms; ///< Current processor timer count in ms. + // ********** private function prototypes ********** static FPGA_STATE_T handleFPGAReadHeaderState( void ); @@ -924,6 +931,33 @@ /*********************************************************************//** * @brief + * The execFPGAClockSpeedTest function verifies the processor clock speed + * against the FPGA clock. + * @details Inputs: fpgaHeader + * @details Outputs: none + * @return passed, or failed + *************************************************************************/ +void execFPGAClockSpeedTest( void ) +{ + U16 const newFPGATimerCount_ms = getFPGATimerCount(); + U32 const newTimerCount_ms = getMSTimerCount(); + U32 const diffFPGATimerCount = (U32)u16DiffWithWrap( currentFPGATimerCount_ms, newFPGATimerCount_ms ); + U32 const diffTimerCount = u32DiffWithWrap( currentTimerCount_ms, newTimerCount_ms ); + + if ( getCurrentOperationMode() > MODE_INIT ) + { + if ( abs( diffFPGATimerCount - diffTimerCount ) > PROCESSOR_FPGA_CLOCK_DIFF_TOLERANCE ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_FPGA_CLOCK_SPEED_CHECK_FAILURE, diffFPGATimerCount, diffTimerCount ); + } + } + + currentFPGATimerCount_ms = newFPGATimerCount_ms; + currentTimerCount_ms = newTimerCount_ms; +} + +/*********************************************************************//** + * @brief * The consumeUnexpectedData function checks to see if a byte is sitting in * the SCI2 received data register. * @details Inputs: fpgaHeader Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r739960711a13328f76f20accc65b9359e1feb2ac -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 739960711a13328f76f20accc65b9359e1feb2ac) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file FPGA.h +* @file FPGA.h * -* @author (last) Sean Nash -* @date (last) 14-Oct-2020 +* @author (last) Quang Nguyen +* @date (last) 30-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -46,6 +46,7 @@ void execFPGAIn( void ); void execFPGAOut( void ); SELF_TEST_STATUS_T execFPGATest( void ); +void execFPGAClockSpeedTest( void ); void signalFPGAReceiptCompleted( void ); void signalFPGATransmitCompleted( void ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rd39ef6232e746a4f2d425135208602670fae60bd -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision d39ef6232e746a4f2d425135208602670fae60bd) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file SystemComm.c +* @file SystemComm.c * -* @author (last) Sean Nash -* @date (last) 14-Oct-2020 +* @author (last) Quang Nguyen +* @date (last) 23-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -195,7 +195,7 @@ if ( TRUE == isAlarmActive( ALARM_ID_DG_COMM_TIMEOUT ) ) { - clearAlarm( ALARM_ID_DG_COMM_TIMEOUT ); + clearAlarmCondition( ALARM_ID_DG_COMM_TIMEOUT ); } } Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rd39ef6232e746a4f2d425135208602670fae60bd -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision d39ef6232e746a4f2d425135208602670fae60bd) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file SystemCommMessages.c +* @file SystemCommMessages.c * -* @author (last) Peman Montazemi -* @date (last) 18-Mar-2021 +* @author (last) Sean Nash +* @date (last) 19-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -2254,7 +2254,7 @@ TEMPERATURE_SENSORS_DATA_T payload; memcpy( &payload, message->payload, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); - setDialysateTemperatureReadings( payload.inletDialysate, payload.outletRedundant ); + setDialysateTemperatureReadings( payload.TDi, payload.TRo ); } // TODO - what to do if invalid payload length? // TODO - how to know if DG stops sending these? @@ -5153,6 +5153,7 @@ if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) { result = testSetBatteryRemainingPercentOverride( payload.state.u32 ); Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rd39ef6232e746a4f2d425135208602670fae60bd -r358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision d39ef6232e746a4f2d425135208602670fae60bd) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 358e32a9fb25a6929fc5bbd7ee1d8ed2c4b69920) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 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. * -* @file SystemCommMessages.h +* @file SystemCommMessages.h * -* @author (last) Sean Nash -* @date (last) 14-Oct-2020 +* @author (last) Sean Nash +* @date (last) 19-Aug-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -23,6 +23,7 @@ #include "BloodLeak.h" #include "BloodPrime.h" #include "Bubble.h" +#include "CommBuffers.h" #include "DGInterface.h" #include "DialInFlow.h" #include "DialOutFlow.h" @@ -56,7 +57,10 @@ * @{ */ -// ********** public definitions ********** +// ********** public definitions ********** + +#define ACK_REQUIRED TRUE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. +#define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. #define ACK_REQUIRED TRUE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. #define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. @@ -67,7 +71,10 @@ U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); // ACK MSG -BOOL sendACKMsg( MESSAGE_T *message ); +BOOL sendACKMsg( MESSAGE_T *message ); + +// Serialize message +U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); // MSG_ID_DG_CHECK_IN void handleDGCheckIn( MESSAGE_T *message );