Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -r653a028c13aff34d2ad06cbfb0e7a34691767dd1 -r5e47cac9994e1e0f5b4cebbeb9994c7a2aa83096 --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 653a028c13aff34d2ad06cbfb0e7a34691767dd1) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 5e47cac9994e1e0f5b4cebbeb9994c7a2aa83096) @@ -930,7 +930,7 @@ * transitions to the next state. * @details Inputs: stateTimer, rsrvr1Status, rsrvr2Status * @details Outputs: stateTimer, rsrvr1Status, rsrvr2Status, - * chemDisinfectUIState + * chemDisinfectUIState, prevChemDisinfectState * @return next state of the chemical disinfect state machine *************************************************************************/ static DG_CHEM_DISINFECT_STATE_T handleChemicalDisinfectDisinfectR1ToR2State( void ) @@ -946,14 +946,16 @@ { // Heating up to minimum temperature for chemical disinfect failed alarmDetectedPendingTrigger = ALARM_ID_DG_CHEM_DISINFECT_TARGET_TEMP_OUT_OF_RANGE; - chemDisinfectState = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; + prevChemDisinfectState = state; + state = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; } if ( TRUE == didTimeout( stateTimer, MAX_DISINFECT_STATE_TIME_MS ) ) { // Heating up to minimum temperature for chemical disinfect failed alarmDetectedPendingTrigger = ALARM_ID_DG_CHEM_DISINFECT_TARGET_TEMP_OUT_OF_RANGE; - chemDisinfectState = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; + prevChemDisinfectState = state; + state = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; } if ( chemDisinfectReservoirTime >= DISINFECT_CYCLE_PERIOD_MS ) @@ -1048,14 +1050,16 @@ { // Heating up to minimum temperature for chemical disinfect failed alarmDetectedPendingTrigger = ALARM_ID_DG_CHEM_DISINFECT_TARGET_TEMP_OUT_OF_RANGE; - chemDisinfectState = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; + prevChemDisinfectState = state; + state = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; } if ( TRUE == didTimeout( stateTimer, MAX_DISINFECT_STATE_TIME_MS ) ) { // Heating up to minimum temperature for chemical disinfect failed alarmDetectedPendingTrigger = ALARM_ID_DG_CHEM_DISINFECT_TARGET_TEMP_OUT_OF_RANGE; - chemDisinfectState = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; + prevChemDisinfectState = state; + state = DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH; } if ( chemDisinfectReservoirTime >= DISINFECT_CYCLE_PERIOD_MS ) @@ -1576,7 +1580,8 @@ } else if ( TdiTemp < CHEM_DISINFECT_MINIMUM_TEMPERATURE_C ) { - isChemDisinfectTempAboveTarget = FALSE; + isChemDisinfectTempAboveTarget = FALSE; + ischemDisinfectWarmupTargetReached = FALSE; } if ( TRUE == isChemDisinfectTempAboveTarget ) Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rfab0257d4913c021698418277e742c2a61e0368e -r5e47cac9994e1e0f5b4cebbeb9994c7a2aa83096 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision fab0257d4913c021698418277e742c2a61e0368e) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 5e47cac9994e1e0f5b4cebbeb9994c7a2aa83096) @@ -1860,16 +1860,13 @@ void sendROPermeateSampleDispenseReadyToHD( void ) { MESSAGE_T msg; - U08 *payloadPtr = msg.payload; - U32 dispenseReady = (U32)TRUE; + U08 *payloadPtr = msg.payload; // Create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_DG_SEND_RO_PERMEATE_SAMPLE_DISPENSE_READY_TO_HD; - msg.hdr.payloadLen = sizeof( U32 ); + msg.hdr.payloadLen = 0; - memcpy( payloadPtr, &dispenseReady, sizeof( U32 ) ); - // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_2_HD, ACK_REQUIRED ); }