Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r176bb5bc32a18891912e179dc1bc9293b370bed4 -rc048e88d130c4c30f9538330e8fcf23fcc581806 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 176bb5bc32a18891912e179dc1bc9293b370bed4) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision c048e88d130c4c30f9538330e8fcf23fcc581806) @@ -47,7 +47,7 @@ typedef struct { BOOL startCleaningMode; ///< Flag to indicate to start cleaning mode. - DD_DISINFECT_SEL_COMMAND_T startRequestCmdID; ///< DD cleaning mode start request command ID. + DD_COMMAND_T startRequestCmdID; ///< DD cleaning mode start request command ID. ALARM_ID_T alarmID; ///< The informative alarm to trigger for each cleaning mode. DD_OP_MODE_T ddOpMode; ///< DD operation mode. BOOL sampleRqstTrgrd; ///< Flag to indicate the sample alarm has been triggered (for RO perm and chem flush). @@ -64,13 +64,13 @@ static TREATMENT_TYPE_T modality; ///< Modality from the treatment initiation. static BOOL heatDisinfectionStartConfirmed; static DD_CLEANING_MODE_STATUS_T currentDDCleaningMode; ///< Current DD cleaning mode status. -static DD_DISINFECT_SEL_COMMAND_T requestedDisinfectionCommand = DD_CMD_DISINFECT_INIT; +static DD_COMMAND_T requestedDisinfectionCommand = DD_CMD_NONE; // ********** private function prototypes ********** static TD_STANDBY_STATE_T handleStandbyModeStartState( void ); static TD_STANDBY_STATE_T handleStandbyModeWaitForTreatmentState( void ); -static void setRequestedCleaningMode( DD_DISINFECT_SEL_COMMAND_T opMode ); +static void setRequestedCleaningMode( DISINFECT_SELECTION_T opMode ); static TD_STANDBY_STATE_T handleStandbyModeWaitForDisinfectState( void ); /*********************************************************************//** @@ -179,7 +179,7 @@ if ( ( DD_MODE_HEAT == getDDOpMode() ) && ( DD_HEAT_DISINFECT_STATE_COMPLETE == getDDSubMode() ) ) { - requestedDisinfectionCommand = DD_CMD_DISINFECT_INIT; + requestedDisinfectionCommand = DD_CMD_NONE; heatDisinfectionStartConfirmed = FALSE; currentStandbyState = @@ -253,9 +253,8 @@ switch ( requestedDisinfectionCommand ) { case DD_CMD_START_DISINFECT_SKIP: - case DD_CMD_DISINFECT_INIT: state = STANDBY_WAIT_FOR_TREATMENT_STATE; - requestedDisinfectionCommand = DD_CMD_DISINFECT_INIT; + requestedDisinfectionCommand = DD_CMD_NONE; break; case DD_CMD_START_DISINFECT_HEAT: @@ -264,7 +263,7 @@ default: state = STANDBY_WAIT_FOR_TREATMENT_STATE; - requestedDisinfectionCommand = DD_CMD_DISINFECT_INIT; + requestedDisinfectionCommand = DD_CMD_NONE; break; } @@ -365,7 +364,7 @@ { TD_STANDBY_STATE_T state = STANDBY_WAIT_FOR_DISINFECT_STATE; - if ( ( DISINFECT_SEL_HEAT == requestedDisinfectionSelection ) && + if ( ( DD_CMD_START_DISINFECT_HEAT == requestedDisinfectionCommand ) && ( TRUE == heatDisinfectionStartConfirmed ) ) { heatDisinfectionStartConfirmed = FALSE; @@ -411,7 +410,7 @@ * cool heat disinfect or not. * @return none *************************************************************************/ -static void setRequestedCleaningMode( DD_DISINFECT_SEL_COMMAND_T opMode ) +static void setRequestedCleaningMode( DISINFECT_SELECTION_T opMode ) { switch ( opMode ) { @@ -583,30 +582,29 @@ * @details \b Outputs: currentStandbyState * @return TRUE if signal accepted, FALSE if not *************************************************************************/ -BOOL signalUserInitiateDisinfectionSelection( - DD_DISINFECT_SEL_COMMAND_T command ) +BOOL signalUserInitiateDisinfectionSelection( DISINFECT_SELECTION_T options ) { BOOL result = FALSE; if ( MODE_STAN == getCurrentOperationMode() ) { if ( STANDBY_WAIT_FOR_TREATMENT_STATE == currentStandbyState ) { - if ( DD_CMD_START_DISINFECT_SKIP == command ) + if ( DISINFECT_SEL_SKIP == options ) { - requestedDisinfectionCommand = DD_CMD_DISINFECT_INIT; + requestedDisinfectionCommand = DD_CMD_START_DISINFECT_SKIP; currentStandbyState = STANDBY_WAIT_FOR_TREATMENT_STATE; result = TRUE; } - else if ( DD_CMD_START_DISINFECT_HEAT == command ) + else if ( DISINFECT_SEL_HEAT == options ) { - requestedDisinfectionCommand = command; + requestedDisinfectionCommand = DD_CMD_START_DISINFECT_HEAT; currentStandbyState = STANDBY_WAIT_FOR_DISINFECT_STATE; result = TRUE; } } else if ( ( STANDBY_WAIT_FOR_DISINFECT_STATE == currentStandbyState ) && - ( DD_CMD_START_DISINFECT_HEAT == command ) ) + ( DD_CMD_START_DISINFECT_HEAT == options ) ) { // User confirmed Heat Disinfection setup screen. heatDisinfectionStartConfirmed = TRUE; @@ -615,7 +613,7 @@ } else if ( MODE_POST == getCurrentOperationMode() ) { - signalUserConfirmDisinfection( command ); + signalUserConfirmDisinfection( options ); result = TRUE; } @@ -624,14 +622,49 @@ /*********************************************************************//** * @brief + * The handleDisinfectionConfirmCmd function handles user selection + * of the Post-Treatment disinfection operation. + * @details \b Inputs: Disinfection selection message. + * @details \b Outputs: Acceptance response and selected disinfection command. + * @param message Pointer to the message to handle. + * @return TRUE if the selection is accepted, FALSE otherwise. + *************************************************************************/ +BOOL handleDisinfectionConfirmCmd( MESSAGE_T *message ) +{ + BOOL result = FALSE; + TD_OP_MODE_T mode = getCurrentOperationMode(); + UI_RESPONSE_PAYLOAD_T response; + + response.rejectionReason = REQUEST_REJECT_REASON_NONE; + + if ( sizeof( U32 ) == message->hdr.payloadLen ) + { + heatDisinfectionStartConfirmed = TRUE; + } + else + { + response.rejectionReason = + REQUEST_REJECT_REASON_INVALID_REQUEST_FORMAT; + } + + response.accepted = result; + + sendMessage( MSG_ID_TD_DISINFECT_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, + (U08 *)&response, sizeof( UI_RESPONSE_PAYLOAD_T ) ); + + return result; +} + +/*********************************************************************//** + * @brief * The signalStandbyDisinfectionSelection function saves the selected * disinfection option for use by Standby mode. * @details \b Inputs: Selected disinfection command. * @details \b Outputs: Updates requestedDisinfectionCommand. * @param command Selected disinfection command. * @return none *************************************************************************/ -void signalStandbyDisinfectionSelection( DD_DISINFECT_SEL_COMMAND_T command ) +void signalStandbyDisinfectionSelection( DD_COMMAND_T command ) { requestedDisinfectionCommand = command; } @@ -650,15 +683,15 @@ BOOL result = FALSE; TD_OP_MODE_T mode = getCurrentOperationMode(); UI_RESPONSE_PAYLOAD_T response; - DD_DISINFECT_SEL_COMMAND_T command = DD_CMD_DISINFECT_INIT; + DISINFECT_SELECTION_T options = DISINFECT_SEL_SKIP; response.rejectionReason = REQUEST_REJECT_REASON_NONE; if ( sizeof( U32 ) == message->hdr.payloadLen ) { - memcpy( &command , &message->payload[ 0 ], sizeof(U32) ); + memcpy( &options , &message->payload[ 0 ], sizeof(U32) ); if ( TRUE == isDDCommunicating() ) { - result = signalUserInitiateDisinfectionSelection( command ); + result = signalUserInitiateDisinfectionSelection( options ); response.rejectionReason = REQUEST_REJECT_REASON_NONE; }