Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r1b76127ac6833e64fb04749707ae899052402f3e -r579bc4f9f48d639777faa8354c921c3c9e60f80c --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 1b76127ac6833e64fb04749707ae899052402f3e) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 579bc4f9f48d639777faa8354c921c3c9e60f80c) @@ -226,7 +226,7 @@ *************************************************************************/ void execDGInterfaceMonitor( void ) { - if ( isACPowerLost() != TRUE ) + if ( FALSE == isACPowerLost() ) { // 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 ); @@ -458,14 +458,14 @@ /*********************************************************************//** * @brief - * The getDialysateTemperature function gets the latest dialysate temperature. - * @details Inputs: dgDialysateTemp + * The getDGDisinfectsStates function returns the DG disinfects readings. + * @details Inputs: none * @details Outputs: none - * @return the latest dialysate temperature + * @return the current DG disinfects readings *************************************************************************/ -F32 getDialysateTemperature( void ) +DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ) { - return dgDialysateTemp; + return disinfectsStatus; } /*********************************************************************//** @@ -509,14 +509,14 @@ /*********************************************************************//** * @brief - * The getDGDisinfectsStates function returns the DG disinfects readings. - * @details Inputs: disinfectsStatus + * The getDialysateTemperature function returns the DG dialysate temperature. + * @details Inputs: dgDialysateTemp * @details Outputs: none - * @return the current DG disinfects readings + * @return the latest dialysate temperature *************************************************************************/ -DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ) +F32 getDialysateTemperature( void ) { - return disinfectsStatus; + return dgDialysateTemp; } /*********************************************************************//** @@ -1310,7 +1310,7 @@ U32 trimmerState = dgHeatersData.trimmerHeaterState; DG_OP_MODE_T dgOp = getDGOpMode(); - if ( isACPowerLost() != TRUE ) + if ( FALSE == isACPowerLost() ) { if ( ( DG_MODE_GENE == dgOp ) || ( DG_MODE_FILL == dgOp ) || ( DG_MODE_DRAI == dgOp ) ) { Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r1b76127ac6833e64fb04749707ae899052402f3e -r579bc4f9f48d639777faa8354c921c3c9e60f80c --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 1b76127ac6833e64fb04749707ae899052402f3e) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 579bc4f9f48d639777faa8354c921c3c9e60f80c) @@ -254,6 +254,33 @@ /*********************************************************************//** * @brief + * The isACPowerLost function determines whether A/C power loss has + * been detected. This function sets the alarms blocked condition to + * allow smooth alarm recovery. + * + * @details Inputs: alarmStatus + * @details Outputs: alarmsBlockedTimer + * @return TRUE if A/C power loss alarm is in effect, FALSE if not + *************************************************************************/ +BOOL isACPowerLost( void ) +{ + BOOL result = TRUE; + + // Continue to block new alarms until the alarms are cleared. + if ( ( FALSE == isAlarmConditionDetected( ALARM_ID_HD_AC_POWER_LOST ) ) && + ( FALSE == isAlarmConditionDetected( ALARM_ID_HD_AC_POWER_LOST_IN_TREATMENT ) ) ) + { + result = FALSE; + } + else + { + alarmsBlockedTimer = ALARM_BLOCKED_COUNT_AFTER_AC_RETURN; + } + return result; +} + +/*********************************************************************//** + * @brief * The activateAlarm function activates a given alarm. * @details Inputs: none * @details Outputs: alarmIsActive[], alarmStartedAt[], alarmStatus is updated @@ -262,6 +289,11 @@ *************************************************************************/ static void activateAlarm( ALARM_ID_T alarm ) { + // Block new alarms, occuring during loss of AC power + if ( ( TRUE == getCPLDACPowerLossDetected() ) ) + { + alarmsBlockedTimer = ALARM_BLOCKED_COUNT_AFTER_AC_RETURN; + } // Verify valid alarm index if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) { Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r1b76127ac6833e64fb04749707ae899052402f3e -r579bc4f9f48d639777faa8354c921c3c9e60f80c --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 1b76127ac6833e64fb04749707ae899052402f3e) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 579bc4f9f48d639777faa8354c921c3c9e60f80c) @@ -204,6 +204,7 @@ void setAlarmUserActionEnabled( ALARM_USER_ACTION_T action, BOOL enabled ); void signalAlarmSilence( ALARM_SILENCE_CMD_T cmd ); void signalAlarmUserActionInitiated( ALARM_USER_ACTION_T action ); +BOOL isACPowerLost( void ); BOOL isAlarmActive( ALARM_ID_T alarm ); BOOL isAlarmConditionDetected( ALARM_ID_T alarm ); BOOL isAnyAlarmActive( void ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r1b76127ac6833e64fb04749707ae899052402f3e -r579bc4f9f48d639777faa8354c921c3c9e60f80c --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 1b76127ac6833e64fb04749707ae899052402f3e) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 579bc4f9f48d639777faa8354c921c3c9e60f80c) @@ -5451,6 +5451,7 @@ if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) { result = testSetBatteryRemainingCapacityOverride( payload.state.f32 );