Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -re93b63ee6a4e46aca48197d9d7a5fbd1ecd2b09e -rdbdd97d883c75351fb316ac61911e189986f911e --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision e93b63ee6a4e46aca48197d9d7a5fbd1ecd2b09e) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision dbdd97d883c75351fb316ac61911e189986f911e) @@ -48,9 +48,10 @@ #define DIALYSATE_TEMP_HIGH_SAFETY_TIMEOUT_MS ( 1 * MS_PER_SECOND ) ///< Dialysate temperature high safety timeout in milliseconds. #define DIALYSATE_TEMP_LOW_SAFETY_LIMIT_C 42.0F ///< Dialysate low safety temperature limit in C. #define DIALYSATE_TEMP_LOW_SAFETY_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Dialysate temperature low safety timeout in milliseconds. -#define LOAD_CELL_DATA_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Load cell freshness timeout (in ms). +#define DG_DATA_FRESHNESS_TIMEOUT_MS ( 3 * MS_PER_SECOND ) ///< DG data freshness timeout (in ms). -// ********** private data ********** +// ********** private data ********** + static const U32 DIP_LOAD_CELL_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); static const U32 DIP_TEMPERATURE_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); static const U32 DIP_RESERVOIRS_DATA_MESSAGE_ALARM_THRESHOLD = ((2 * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); @@ -93,10 +94,6 @@ static BOOL dgDialysateTemperatureDataFreshFlag = FALSE; ///< Flag to signal the handleTemperatureReadingsFromDG() to process fresh temperature data static BOOL dgReservoirsDataFreshFlag = FALSE; ///< Flag to signal the handleDGReservoirData() to process fresh reservoirs data static BOOL dgOpModeDataFreshFlag = FALSE; ///< Flag to signal the handleDGOpMode() to process fresh dg op mode data -static U32 loadcellDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh load cell data message is received -static U32 temperatureDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh temperature data message is received -static U32 reservoirsDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh reservoirs data message is received -static U32 dgOpModeDataMessageFreshStatusCounter = 0; ///< Counter use to trigger alarm if no fresh dg op mode data message is received // Reservoir data static DG_RESERVOIR_ID_T dgActiveReservoir = DG_RESERVOIR_2; ///< Latest active reservoir reported by the DG. @@ -175,10 +172,10 @@ initPersistentAlarm( ALARM_ID_HD_DIALYSATE_TEMP_BELOW_TARGET_TEMP, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_HD_DIALYSATE_TEMP_ABOVE_TARGET_TEMP, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS, DIALYSATE_TEMP_OUT_OF_TARGET_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_HD_NEW_DIALYSATE_TEMPERATURE_DATA_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_HD_NEW_RESERVOIRS_DATA_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_HD_NEW_DG_OPERATION_MODE_MESSAGE_NOT_RECEIVE, LOAD_CELL_DATA_TIMEOUT_MS, LOAD_CELL_DATA_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE, DG_DATA_FRESHNESS_TIMEOUT_MS, DG_DATA_FRESHNESS_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_NEW_DIALYSATE_TEMPERATURE_DATA_MESSAGE_NOT_RECEIVE, DG_DATA_FRESHNESS_TIMEOUT_MS, DG_DATA_FRESHNESS_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_NEW_RESERVOIRS_DATA_MESSAGE_NOT_RECEIVE, DG_DATA_FRESHNESS_TIMEOUT_MS, DG_DATA_FRESHNESS_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_HD_NEW_DG_OPERATION_MODE_MESSAGE_NOT_RECEIVE, DG_DATA_FRESHNESS_TIMEOUT_MS, DG_DATA_FRESHNESS_TIMEOUT_MS ); } /**********************************************************************//** @@ -223,14 +220,14 @@ { // Trigger alarm if not receiving new load cell data message in timely manner checkDGDataFreshness( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE, &dgLoadCellDataFreshFlag ); - +/* =========== DN-28AUG2022 for debug only. Will re-install this line. // Trigger alarm if not receiving new dialysate temperature data message in timely manner checkDGDataFreshness( ALARM_ID_HD_NEW_DIALYSATE_TEMPERATURE_DATA_MESSAGE_NOT_RECEIVE, &dgDialysateTemperatureDataFreshFlag ); - +============== */ // Trigger alarm if not receiving new reservoirs data message in timely manner checkDGDataFreshness( ALARM_ID_HD_NEW_RESERVOIRS_DATA_MESSAGE_NOT_RECEIVE, &dgReservoirsDataFreshFlag ); - // Trigger alarm if not receiving new reservoirs data message in timely manner + // Trigger alarm if not receiving new DG op mode message in timely manner checkDGDataFreshness( ALARM_ID_HD_NEW_DG_OPERATION_MODE_MESSAGE_NOT_RECEIVE, &dgOpModeDataFreshFlag ); // Check to see if DG has restarted @@ -347,74 +344,6 @@ /*********************************************************************//** * @brief - * The getLoadCellDataFreshFlag function returns a flag to indicate - * if the load cell data message reported by the DG is fresh or stale data. - * @details Inputs: dgLoadCellDataFreshFlag - * @details Outputs: dgLoadCellDataFreshFlag - * @return T/F flag to indicate fresh/stale status of load cell data. - *************************************************************************/ -BOOL getLoadCellDataFreshFlag( void ) -{ - BOOL result = dgLoadCellDataFreshFlag; - - dgLoadCellDataFreshFlag = FALSE; - - return result; -} - -/*********************************************************************//** - * @brief - * The getTemperatureDataFreshFlag function returns a flag to indicate - * if the temperature data message reported by the DG is fresh or stale data. - * @details Inputs: dgDialysateTemperatureDataFreshFlag - * @details Outputs: dgDialysateTemperatureDataFreshFlag - * @return T/F flag to indicate fresh/stale status of load cell data. - *************************************************************************/ -BOOL getTemperatureDataFreshFlag( void ) // DN-19AUG2022 -{ - BOOL result = dgDialysateTemperatureDataFreshFlag; - - dgDialysateTemperatureDataFreshFlag = FALSE; - - return result; -} - -/*********************************************************************//** - * @brief - * The getReservoirsDataFreshFlag function returns a flag to indicate - * if the reservoirs data message reported by the DG is fresh or stale data. - * @details Inputs: dgReservoirsDataFreshFlag - * @details Outputs: dgReservoirsDataFreshFlag - * @return T/F flag to indicate fresh/stale status of load cell data. - *************************************************************************/ -BOOL getReservoirsDataFreshFlag( void ) // DN-22AUG2022 -{ - BOOL result = dgReservoirsDataFreshFlag; - - dgReservoirsDataFreshFlag = FALSE; - - return result; -} - -/*********************************************************************//** - * @brief - * The getDGOpModeDataFreshFlag function returns a flag to indicate - * if the dg op mode data message reported by the DG is fresh or stale data. - * @details Inputs: dgOpModeDataFreshFlag - * @details Outputs: dgOpModeDataFreshFlag - * @return T/F flag to indicate fresh/stale status of load cell data. - *************************************************************************/ -BOOL getDgOpModeDataFreshFlag( void ) // DN-22AUG2022 -{ - BOOL result = dgOpModeDataFreshFlag; - - dgOpModeDataFreshFlag = FALSE; - - return result; -} - -/*********************************************************************//** - * @brief * The getLoadCellWeight function gets the current load cell weight. * @details Inputs: loadCellWeightInGrams * @details Outputs: none