Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r176bb5bc32a18891912e179dc1bc9293b370bed4 -rc048e88d130c4c30f9538330e8fcf23fcc581806 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 176bb5bc32a18891912e179dc1bc9293b370bed4) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision c048e88d130c4c30f9538330e8fcf23fcc581806) @@ -47,6 +47,7 @@ static BOOL patientDisconnectHandled; ///< Flag indicates patient disconnect actions have been handled static BOOL disposableRemovalConfirmed; ///< Flag indicates user confirms disposable removal. static DISINFECT_SELECTION_T selectedDisinfectionSelection; ///< Selected disinfection option from UI.static BOOL disinfectionSelectionReceived; +static BOOL disinfectionSelectionReceived; static volatile U32 postTreatmentStateBroadcastTimer; ///< Timer counter for pending power off request. static TD_POST_TREATMENT_STATE_T currentPostTreatmentState; ///< Current Post-Treatment sub-state @@ -317,14 +318,36 @@ *************************************************************************/ static TD_POST_TREATMENT_STATE_T handleDisinfectionState( void ) { - TD_POST_TREATMENT_STATE_T state = - TD_POST_TREATMENT_DISINFECTION_STATE; + TD_POST_TREATMENT_STATE_T state = TD_POST_TREATMENT_DISINFECTION_STATE; + static DD_COMMAND_T command = DD_CMD_NONE; + if ( TRUE == disinfectionSelectionReceived ) { + switch ( selectedDisinfectionSelection ) + { + case DISINFECT_SEL_SKIP: + command = DD_CMD_START_DISINFECT_SKIP; + break; + case DISINFECT_SEL_FLUSH: + command = DD_CMD_START_DISINFECT_FLUSH; + break; + case DISINFECT_SEL_HEAT: + command = DD_CMD_START_DISINFECT_HEAT; + break; + case DISINFECT_SEL_HEAT_CITRIC: + command = DD_CMD_START_DISINFECT_HEAT_CITRIC; + break; + case DISINFECT_SEL_SUBSTITUTION_PORT: + command = DD_CMD_START_DISINFECT_SUBSTITUTION_PORT; + break; + default: + command = DD_CMD_NONE; + break; + } +// command = selectedDisinfectionSelection + DD_CMD_START_DISINFECT_SKIP; // Save selected disinfection option in Standby. - signalStandbyDisinfectionSelection( - selectedDisinfectionSelection ); + signalStandbyDisinfectionSelection( command ); // Request DD transition to Standby. cmdStopGenerateDialysate(); @@ -337,41 +360,7 @@ return state; } -/*********************************************************************//** - * @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 ) - { - disinfectionSelectionReceived = 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 signalUserConfirmPatientDisconnection signals post-treatment mode @@ -406,9 +395,10 @@ * @details \b Outputs: selectedDisinfectionCommand * @return none *************************************************************************/ -void signalUserConfirmDisinfection( DISINFECT_SELECTION_T selection ) +void signalUserConfirmDisinfection( DISINFECT_SELECTION_T options ) { - selectedDisinfectionSelection = selection; + disinfectionSelectionReceived = TRUE; + selectedDisinfectionSelection = options; } Index: firmware/App/Modes/ModePostTreat.h =================================================================== diff -u -r176bb5bc32a18891912e179dc1bc9293b370bed4 -rc048e88d130c4c30f9538330e8fcf23fcc581806 --- firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision 176bb5bc32a18891912e179dc1bc9293b370bed4) +++ firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision c048e88d130c4c30f9538330e8fcf23fcc581806) @@ -40,8 +40,7 @@ void signalUserConfirmPatientDisconnection( void ); void signalUserConfirmDisposableRemoval( void ); -void signalUserConfirmDisinfection( DISINFECT_SELECTION_T selection ); -BOOL handleDisinfectionConfirmCmd( MESSAGE_T *message ); +void signalUserConfirmDisinfection( DISINFECT_SELECTION_T options ); /**@}*/ 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; } Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -r176bb5bc32a18891912e179dc1bc9293b370bed4 -rc048e88d130c4c30f9538330e8fcf23fcc581806 --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 176bb5bc32a18891912e179dc1bc9293b370bed4) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision c048e88d130c4c30f9538330e8fcf23fcc581806) @@ -48,8 +48,9 @@ BOOL signalUserInitiateTreatment( MESSAGE_T *message ); // User has initiated/cancelled treatment workflow void signalAlarmActionToStandbyMode( ALARM_ACTION_T action ); // Execute alarm action as appropriate for Standby mode -BOOL signalUserInitiateDisinfectionSelection( DISINFECT_SELECTION_T command ); -void signalStandbyDisinfectionSelection( DISINFECT_SELECTION_T command ); +BOOL signalUserInitiateDisinfectionSelection( DISINFECT_SELECTION_T options ); +BOOL handleDisinfectionConfirmCmd( MESSAGE_T *message ); +void signalStandbyDisinfectionSelection( DD_COMMAND_T command ); BOOL handleUIDisinfectRequest( MESSAGE_T *message ); void setFluidType( TREATMENT_TYPE_T modality ); // Set a specific fluid type