Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -ra673b3fdaed36dc1e30bce51c8d90218cc96fccb -r2e6c750c202b7361d79488ce383e34f380e75413 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision a673b3fdaed36dc1e30bce51c8d90218cc96fccb) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 2e6c750c202b7361d79488ce383e34f380e75413) @@ -37,17 +37,21 @@ #define TREATMENT_TIME_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) // interval (ms/task time) at which the treatment time data is published on the CAN bus +/// Sub-mode states while in treatment mode typedef enum Treatment_States { - TREATMENT_START_STATE = 0, - TREATMENT_DIALYSIS_STATE, - TREATMENT_STOP_STATE, - TREATMENT_RINSEBACK_STATE, - TREATMENT_RB_RC_PAUSE_STATE, - TREATMENT_RECIRC_STATE, - TREATMENT_BYPASS_RECIRC_STATE, - TREATMENT_END_STATE, - NUM_OF_TREATMENT_STATES + TREATMENT_START_STATE = 0, ///< Start treatment, prime blood side with gradual ramp for 1 min. while dialyzer is bypassed. No dialysis or UF taking place. + TREATMENT_DIALYSIS_STATE, ///< Perform dialysis. Deliver Heparin as prescribed. Deliver UF as prescribed. Handle saline boluses as requested. + TREATMENT_STOP_STATE, ///< Treatment stopped. All pumps off. Dializer bypassed. + TREATMENT_RINSEBACK_STATE, ///< Perform rinseback with saline. Dialyzer bypassed. Dialysate recirculating. + TREATMENT_RINSEBACK_PAUSE_STATE, ///< Rinseback paused. Blood pump off. Dialyzer bypassed. Dialysate recirculating. + TREATMENT_RECIRC_SETUP_STATE, ///< Rinseback complete. Blood pump off. Blood lines closed. User to disconnect and shunt blood lines. + TREATMENT_RECIRC_STATE, ///< Recirculate saline and dialysate while patient disconnected. Blood lines open and shunted. Dialyzer is bypassed. + TREATMENT_RECIRC_PAUSE_STATE, ///< Recirculate paused. Blood pump off. Blood lines closed and shunted. Dialyzer is bypassed. + TREATMENT_RECIRC_STOP_STATE, ///< Recirculate stopped. Blood pump off. Blood lines open. Waiting for patient to unshunt and connect and resume treatment. + TREATMENT_DIALYSIS_END_STATE, ///< Dialysis has ended. Blood pump slowed. Dialyzer is bypassed. Dialysate is recirculated. User can rinseback. + TREATMENT_END_STATE, ///< Treatment has ended. All pumps off. Dialyzer is bypassed. Blood lines are closed. User to disconnect. + NUM_OF_TREATMENT_STATES ///< # of treatment states (sub-modes). } TREATMENT_STATE_T; // ********** private data ********** @@ -101,7 +105,7 @@ *************************************************************************/ void transitionToTreatmentMode( void ) { - // initialize mode each time we transition to it + // initialize treatment mode each time we transition to it initTreatmentMode(); // initialize treatment sub-modes each time we transition to treatment mode initDialysis(); @@ -158,18 +162,30 @@ // TODO - implement break; - case TREATMENT_RB_RC_PAUSE_STATE: + case TREATMENT_RINSEBACK_PAUSE_STATE: // TODO - implement break; + case TREATMENT_RECIRC_SETUP_STATE: + // TODO - implement + break; + case TREATMENT_RECIRC_STATE: // TODO - implement break; - case TREATMENT_BYPASS_RECIRC_STATE: + case TREATMENT_RECIRC_PAUSE_STATE: // TODO - implement break; + case TREATMENT_RECIRC_STOP_STATE: + // TODO - implement + break; + + case TREATMENT_DIALYSIS_END_STATE: + // TODO - implement + break; + case TREATMENT_END_STATE: // TODO - implement requestNewOperationMode( MODE_POST ); // TODO - test code - remove later @@ -256,8 +272,10 @@ treatmentTimeMS += msSinceLast; lastTreatmentTimeStamp = newTime; + // execute state machine for treatment dialysis sub-mode execDialysis(); + // TODO - test code - remove later if ( getOffButtonState() == BUTTON_STATE_PRESSED ) { if ( lastOffButtonState == BUTTON_STATE_RELEASED ) @@ -289,8 +307,10 @@ { TREATMENT_STATE_T result = TREATMENT_STOP_STATE; + // execute state machine for treatment stop sub-mode execTreatmentStop(); + // TODO - test code - remove later if ( getOffButtonState() == BUTTON_STATE_PRESSED ) { if ( lastOffButtonState == BUTTON_STATE_RELEASED )