Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r6e36d2fd90b130f540494f4128951d81e7dc5ed5 -rde4b330865ad6f9966c76f3b335d5b3966f8a1b2 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 6e36d2fd90b130f540494f4128951d81e7dc5ed5) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision de4b330865ad6f9966c76f3b335d5b3966f8a1b2) @@ -57,6 +57,7 @@ static OVERRIDE_F32_T targetHydChamberFluidTemp; ///< Target hydraulics chamber fluid temperature. static OVERRIDE_U32_T isDialDeliveryInProgress; ///< To indicate dialysate started delivering to dialyzer for treatment (overrideable) static OVERRIDE_U32_T isDialysateGoodtoDeliver; ///< Flag indicating whether ready to deliver dialysate or not. +static OVERRIDE_U32_T pendingStopDDGenDialRequest; ///< Flag indicating TD has requested DD stop the generate dialysate (Overridable). static U32 genDialysateDataPublicationTimerCounter; ///< Used to schedule generate dialysate data publication to CAN bus. static OVERRIDE_U32_T genDialysateDataPublishInterval; ///< Generate dialysate mode data publish interval. static F32 lastDialTargetTemperatureSet; ///< last dialysate target temperature set for heater control @@ -95,6 +96,10 @@ isDialDeliveryInProgress.ovData = FALSE; isDialDeliveryInProgress.ovInitData = FALSE; isDialDeliveryInProgress.override = OVERRIDE_RESET; + pendingStopDDGenDialRequest.data = FALSE; + pendingStopDDGenDialRequest.ovData = FALSE; + pendingStopDDGenDialRequest.ovInitData = FALSE; + pendingStopDDGenDialRequest.override = OVERRIDE_RESET; genDialysateDataPublishInterval.data = GEN_DIALYSATE_DATA_PUBLISH_INTERVAL; genDialysateDataPublishInterval.ovData = GEN_DIALYSATE_DATA_PUBLISH_INTERVAL; genDialysateDataPublishInterval.ovInitData = 0; @@ -233,13 +238,20 @@ /*********************************************************************//** * @brief * The execGenDialysateMode function executes the Gen dialysate mode state machine. - * @details \b Inputs: none + * @details \b Inputs: pendingStopDDGenDialRequest,genDialysateState * @details \b Outputs: Gen dialysate mode state machine executed * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when wrong gen dialysate state invoked. * @return current state. *************************************************************************/ U32 execGenDialysateMode( void ) { + //TODO: Transition to post gen dialysate then standby. + if ( TRUE == getU32OverrideValue( &pendingStopDDGenDialRequest ) ) + { + pendingStopDDGenDialRequest.data = FALSE; + requestNewOperationMode( DD_MODE_STAN ); + } + // Continuous water inlet pressure check if ( genDialysateState != DD_GEND_DIALYSATE_DELIVERY_PAUSE ) { @@ -414,18 +426,19 @@ * The requestDDGenDialyasteStop function handles an TD request to stop * generation dialysis mode. * @details \b Inputs: Generation dialysate mode / state - * @details \b Outputs: mode transition + * @details \b Outputs: mode pendingStopDDGenDialRequest * @return TRUE if request accepted, FALSE if not. *************************************************************************/ BOOL requestDDGenDialyasteStop( void ) { - BOOL status = TRUE; + BOOL status = FALSE; - //TODO: Transition to post gen dialysate and standby + if ( DD_MODE_GEND == getCurrentOperationMode() ) + { + pendingStopDDGenDialRequest.data = TRUE; + status = TRUE; + } - // Transition to mode standby - requestNewOperationMode( DD_MODE_STAN ); - return status; } @@ -665,6 +678,24 @@ /*********************************************************************//** * @brief + * The testDDstopGenDialysateOverride function sets the override value + * to stop the gen dialysate operation mode. + * @details Inputs: pendingStopDDGenDialRequest + * @details Outputs: pendingStopDDGenDialRequest + * @param message Override message from Dialin which includes the flag + * to override the operation mode. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testDDstopGenDialysateOverride( MESSAGE_T *message ) +{ + BOOL result = u32Override( message, &pendingStopDDGenDialRequest, FALSE, TRUE ); + + return result; +} + + +/*********************************************************************//** + * @brief * The testGenDExecStateOverride function sets the Gen dialysate execution state * machine to given state. * @details \b Inputs: tester logged in, execStateSet Index: firmware/App/Modes/ModeGenDialysate.h =================================================================== diff -u -r6e36d2fd90b130f540494f4128951d81e7dc5ed5 -rde4b330865ad6f9966c76f3b335d5b3966f8a1b2 --- firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision 6e36d2fd90b130f540494f4128951d81e7dc5ed5) +++ firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision de4b330865ad6f9966c76f3b335d5b3966f8a1b2) @@ -63,6 +63,7 @@ BOOL testDialGoodToDeliverStatusOverride( MESSAGE_T *message ); // To override the dialysate good to deliver status flag BOOL testGenDHydChamberFluidTempOverride( MESSAGE_T *message ); // Override the hydraulics chamber fluid temperature BOOL testGenDExecStateOverride( MESSAGE_T *message ); // Override the Gen dialysate execution state +BOOL testDDstopGenDialysateOverride( MESSAGE_T *message ); // Override the stop gen dialysate request /**@}*/ Index: firmware/App/Modes/ModePreGenDialysate.c =================================================================== diff -u -r6e36d2fd90b130f540494f4128951d81e7dc5ed5 -rde4b330865ad6f9966c76f3b335d5b3966f8a1b2 --- firmware/App/Modes/ModePreGenDialysate.c (.../ModePreGenDialysate.c) (revision 6e36d2fd90b130f540494f4128951d81e7dc5ed5) +++ firmware/App/Modes/ModePreGenDialysate.c (.../ModePreGenDialysate.c) (revision de4b330865ad6f9966c76f3b335d5b3966f8a1b2) @@ -40,6 +40,7 @@ static DD_PRE_GEN_DAILYSATE_STATE_T preGenDialysateState; ///< Currently active pre-gen dialysate state. static OVERRIDE_U32_T pendingStartDDGenDialRequest; ///< Flag indicating TD has requested DD start the generation dialysate request(Overridable). +static OVERRIDE_U32_T pendingStopDDPreGenDialRequest; ///< Flag indicating TD has requested DD stop the pre generation dialysate (Overridable). static U32 preGenDialysatePublishTimerCounter; ///< Pre-Gen Dialysate data broadcast timer counter used to schedule when to transmit data. static OVERRIDE_U32_T preGenDialysateModePublishInterval; ///< Interval (in task intervals) at which to publish pre-gen dialysate mode data to CAN bus. @@ -63,6 +64,10 @@ pendingStartDDGenDialRequest.ovData = FALSE; pendingStartDDGenDialRequest.ovInitData = FALSE; pendingStartDDGenDialRequest.override = OVERRIDE_RESET; + pendingStopDDPreGenDialRequest.data = FALSE; + pendingStopDDPreGenDialRequest.ovData = FALSE; + pendingStopDDPreGenDialRequest.ovInitData = FALSE; + pendingStopDDPreGenDialRequest.override = OVERRIDE_RESET; preGenDialysateModePublishInterval.data = PRE_GEN_DIALYSATE_DATA_PUB_INTERVAL; preGenDialysateModePublishInterval.ovData = PRE_GEN_DIALYSATE_DATA_PUB_INTERVAL; preGenDialysateModePublishInterval.ovInitData = 0; @@ -105,6 +110,12 @@ pendingStartDDGenDialRequest.data = FALSE; requestNewOperationMode( DD_MODE_GEND ); } + //TODO: Transition to post gen dialysate if concentrate priming has been started + if ( TRUE == getU32OverrideValue( &pendingStopDDPreGenDialRequest ) ) + { + pendingStopDDPreGenDialRequest.data = FALSE; + requestNewOperationMode( DD_MODE_STAN ); + } // execute current pre-gen dialysate state switch ( preGenDialysateState ) @@ -166,21 +177,16 @@ * The requestDDPreGenStop function handles an TD request to stop * pre-generation dialysis mode. * @details \b Inputs: Pre generation dialysate mode / state - * @details \b Outputs: mode transition + * @details \b Outputs: pendingStopDDPreGenDialRequest * @return TRUE if request accepted, FALSE if not. *************************************************************************/ BOOL requestDDPreGenStop( void ) { BOOL status = FALSE; - //TODO: Transition to post gen dialysate if concentrate priming has been started - - //TODO: Tranistion to standby if concentrate priming is not yet started if ( DD_MODE_PREG == getCurrentOperationMode() ) { - // Transition to mode standby - requestNewOperationMode( DD_MODE_STAN ); - + pendingStopDDPreGenDialRequest.data = TRUE; status = TRUE; } @@ -267,4 +273,21 @@ return result; } +/*********************************************************************//** + * @brief + * The testDDstopPreGenDialysateOverride function sets the override value + * to stop the pre gen dialysate operation mode. + * @details Inputs: pendingStopDDPreGenDialRequest + * @details Outputs: pendingStopDDPreGenDialRequest + * @param message Override message from Dialin which includes the flag + * to override the operation mode. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testDDstopPreGenDialysateOverride( MESSAGE_T *message ) +{ + BOOL result = u32Override( message, &pendingStopDDPreGenDialRequest, FALSE, TRUE ); + + return result; +} + /**@}*/ Index: firmware/App/Modes/ModePreGenDialysate.h =================================================================== diff -u -r6e36d2fd90b130f540494f4128951d81e7dc5ed5 -rde4b330865ad6f9966c76f3b335d5b3966f8a1b2 --- firmware/App/Modes/ModePreGenDialysate.h (.../ModePreGenDialysate.h) (revision 6e36d2fd90b130f540494f4128951d81e7dc5ed5) +++ firmware/App/Modes/ModePreGenDialysate.h (.../ModePreGenDialysate.h) (revision de4b330865ad6f9966c76f3b335d5b3966f8a1b2) @@ -48,6 +48,7 @@ BOOL testDDPreGenDialysateDataPublishIntervalOverride( MESSAGE_T *message ); // pre-gen dialysate publish override request BOOL testDDstartGenDialysateOverride( MESSAGE_T *message ); // start gen dialysate override request +BOOL testDDstopPreGenDialysateOverride( MESSAGE_T *message ); // stop the pregen dialysate override request /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r724b64673b719eaac10b0c9dd839ad9675274911 -rde4b330865ad6f9966c76f3b335d5b3966f8a1b2 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 724b64673b719eaac10b0c9dd839ad9675274911) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision de4b330865ad6f9966c76f3b335d5b3966f8a1b2) @@ -153,6 +153,8 @@ MSG_ID_DD_POST_GEND_MODE_DATA_PUBLISH_OVERRIDE_REQUEST, MSG_ID_DD_START_PRE_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST, //65 MSG_ID_DD_PRE_GEN_DIALYSATE_REQUEST_DATA, + MSG_ID_DD_STOP_PRE_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST, + MSG_ID_DD_STOP_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST, #ifdef __PUMPTEST__ MSG_ID_DD_PISTON_PUMP_DATA_PUBLISH_OVERRIDE_REQUEST, MSG_ID_DD_PISTON_PUMP_START_STOP_OVERRIDE_REQUEST, @@ -228,6 +230,8 @@ &testDDPostGenDialysateDataPublishIntervalOverride, &testDDstartPreGenDialysateOverride, //65 &handlePreGenDialysateRequestMsg, + &testDDstopPreGenDialysateOverride, + &testDDstopGenDialysateOverride, #ifdef __PUMPTEST__ &testDDPistonPumpControlDataPublishIntervalOverride, &testDDPistonPumpStartStopOverride,