Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -ra97ade33cb05958a645306392f61b1182f6a1fe1 -rb8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision a97ade33cb05958a645306392f61b1182f6a1fe1) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision b8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7) @@ -101,6 +101,7 @@ initPostTreatmentMode(); // TODO - stop any DG fill that may be in progress from an aborted treatment + // cmdStopDGFill(); // Set user alarm recovery actions allowed in this mode setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); @@ -172,6 +173,19 @@ /*********************************************************************//** * @brief + * The signalUserConfirmDisposableRemoval signals post-treatment mode + * user has confirmed disposable removal. + * @details Inputs: none + * @details Outputs: disposableRemovalConfirmed + * @return none + *************************************************************************/ +void signalUserConfirmDisposableRemoval( void ) +{ + disposableRemovalConfirmed = TRUE; +} + +/*********************************************************************//** + * @brief * The signalAlarmActionToPostTreatmentMode function executes the given alarm action * as appropriate while in PostTreatment Mode. * @details Inputs: none @@ -199,26 +213,33 @@ HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE; VALVE_T valve; - if ( TRUE == patientDisconnectionConfirmed ) + if ( STATE_CLOSED == getFPGADoorState() ) { - patientDisconnectionConfirmed = FALSE; - state = HD_POST_TREATMENT_DE_PRIME_STATE; - - for ( valve = VDI; valve < NUM_OF_VALVES; ++valve ) + if ( TRUE == patientDisconnectionConfirmed ) { - homeValve( valve ); - } + patientDisconnectionConfirmed = FALSE; + state = HD_POST_TREATMENT_DE_PRIME_STATE; - homeBloodPump(); - homeDialInPump(); - homeDialOutPump(); + for ( valve = VDI; valve < NUM_OF_VALVES; ++valve ) + { + homeValve( valve ); + } - if ( ( bolusVol > 0.0 ) || ( hepRate > 0.0 ) ) - { - // TODO: Enable when have syringe pump driver - // retractSyringePump(); + homeBloodPump(); + homeDialInPump(); + homeDialOutPump(); + + if ( ( bolusVol > 0.0 ) || ( hepRate > 0.0 ) ) + { + // TODO: Enable when have syringe pump driver + // retractSyringePump(); + } } } + else + { + activateAlarmNoData( ALARM_ID_CARTRIDGE_DOOR_OPENED ); + } return state; } @@ -279,6 +300,7 @@ if ( ( TRUE == isReservoirOneEmpty ) && ( TRUE == isReservoirTwoEmpty ) && ( TRUE == isCartridgeUnloaded() ) ) { + cmdStopDG(); requestNewOperationMode( MODE_STAN ); } } Index: firmware/App/Modes/ModePostTreat.h =================================================================== diff -u -re67d12da06d96f7f6a30771ef309fc9db5b92d70 -rb8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7 --- firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision e67d12da06d96f7f6a30771ef309fc9db5b92d70) +++ firmware/App/Modes/ModePostTreat.h (.../ModePostTreat.h) (revision b8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7) @@ -36,6 +36,7 @@ U32 execPostTreatmentMode( void ); // Execute the post-treatment mode state machine (call from OperationModes) void signalUserConfirmPatientDisconnection( void ); +void signalUserConfirmDisposableRemoval( void ); void signalAlarmActionToPostTreatmentMode( ALARM_ACTION_T action ); // Execute alarm action as appropriate for post-treatment mode /**@}*/ Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -ra97ade33cb05958a645306392f61b1182f6a1fe1 -rb8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision a97ade33cb05958a645306392f61b1182f6a1fe1) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision b8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7) @@ -1211,6 +1211,10 @@ handlePatientDisconnectionConfirmCmd( message ); break; + case MSG_ID_HD_DISPOSABLE_REMOVAL_CONFIRM: + handleDisposableRemovalConfirmCmd( message ); + break; + case MSG_ID_DG_COMMAND_RESPONSE: handleDGCmdResp( message ); break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -re67d12da06d96f7f6a30771ef309fc9db5b92d70 -rb8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e67d12da06d96f7f6a30771ef309fc9db5b92d70) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision b8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7) @@ -495,6 +495,25 @@ sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); } + +/*********************************************************************//** + * @brief + * The handleDisposableRemovalConfirmCmd function handles user confirms + * disposable removal. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none. + *************************************************************************/ +void handleDisposableRemovalConfirmCmd( MESSAGE_T *message ) +{ + if ( 0 == message->hdr.payloadLen ) + { + signalUserConfirmDisposableRemoval(); + } + + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); +} /*********************************************************************//** * @brief Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -re67d12da06d96f7f6a30771ef309fc9db5b92d70 -rb8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision e67d12da06d96f7f6a30771ef309fc9db5b92d70) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision b8f8a3fdf24e26c0268b3f566061d8c6d7cd44e7) @@ -183,6 +183,9 @@ // MSG_ID_UI_PATIENT_DISCONNECTION_CONFIRM void handlePatientDisconnectionConfirmCmd( MESSAGE_T *message ); +// MSG_ID_HD_DISPOSABLE_REMOVAL_CONFIRM +void handleDisposableRemovalConfirmCmd( MESSAGE_T *message ); + // MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS BOOL sendDialysateTempTargetsToDG( F32 primary, F32 trimmer );