Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r286fbceae8be1276780690fe4b3010c8b2270239 -r12c4f28723f9af89ae693df771039da1bc7ffc80 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 286fbceae8be1276780690fe4b3010c8b2270239) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) @@ -16,6 +16,7 @@ ***************************************************************************/ #include "ModeStandby.h" +#include "ModeWaterPreGen.h" #include "OperationModes.h" #include "PersistentAlarm.h" #include "SystemCommRO.h" @@ -30,7 +31,6 @@ // ********** private data ********** static RO_STANDBY_MODE_STATE_T standbyState; ///< Currently active standby state. -static U32 pendingStartPreGenRequest; ///< Flag indicating DD has requested RO start the generate permeate. // ********** private function prototypes ********** @@ -46,7 +46,6 @@ void initStandbyMode( void ) { standbyState = RO_STANDBY_MODE_STATE_IDLE; - pendingStartPreGenRequest = FALSE; } /*********************************************************************//** @@ -103,9 +102,8 @@ { RO_STANDBY_MODE_STATE_T state = RO_STANDBY_MODE_STATE_IDLE; - if ( TRUE == pendingStartPreGenRequest ) + if ( TRUE == getPreGenRequest() ) { - pendingStartPreGenRequest = FALSE; requestNewOperationMode( RO_MODE_PGEN ); } @@ -124,27 +122,7 @@ return standbyState; } -/*********************************************************************//** - * @brief - * The requestPreGenStart function handles an DD request to start (go to gen permeate mode). - * @details \b Inputs: standbyState - * @details \b Outputs: pendingStartRORequest - * @return TRUE if request accepted, FALSE if not. - *************************************************************************/ -BOOL requestPreGenStart( void ) -{ - BOOL result = FALSE; - if ( ( RO_MODE_STAN == getCurrentOperationMode() ) && ( RO_STANDBY_MODE_STATE_IDLE == standbyState ) ) - { - result = TRUE; - pendingStartPreGenRequest = TRUE; - } - - return result; -} - - /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -rf8bdb3ff260a42f46e178d08979758789db7c307 -r12c4f28723f9af89ae693df771039da1bc7ffc80 --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision f8bdb3ff260a42f46e178d08979758789db7c307) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) @@ -36,7 +36,6 @@ void initStandbyMode( void ); // Initialize this unit U32 transitionToStandbyMode( void ); // Prepares for transition to standby mode U32 execStandbyMode( void ); // Execute the standby mode state machine (call from OperationModes) -BOOL signalROStart( void ); // Signal the system to start RO water RO_STANDBY_MODE_STATE_T getCurrentStandbyState( void ); // get the current state of the standby mode. Index: firmware/App/Modes/ModeWaterGen.c =================================================================== diff -u -r28b6e281605c1a944c982d0ec7dcdb6f28aac82b -r12c4f28723f9af89ae693df771039da1bc7ffc80 --- firmware/App/Modes/ModeWaterGen.c (.../ModeWaterGen.c) (revision 28b6e281605c1a944c982d0ec7dcdb6f28aac82b) +++ firmware/App/Modes/ModeWaterGen.c (.../ModeWaterGen.c) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) @@ -15,10 +15,12 @@ * ***************************************************************************/ -#include "ModeWaterGen.h" + #include "DDInterface.h" #include "Level.h" #include "ModeStandby.h" +#include "ModeWaterGen.h" +#include "ModeWaterPreGen.h" #include "MessageSupport.h" #include "Messaging.h" #include "OperationModes.h" @@ -42,6 +44,7 @@ static U32 genWaterDataPublicationTimerCounter; ///< Used to schedule generate water data publication to CAN bus. static OVERRIDE_U32_T genWaterDataPublishInterval; ///< Generate water mode data publish interval. static U32 stateDelayTime; ///< Time stamp to track delay before valve switch. +static U32 pendingStartGenRequest; ///< Flag indicating DD has requested RO start the generate permeate. // ********** private function prototypes ********** @@ -300,7 +303,43 @@ } } +/*********************************************************************//** + * @brief + * The requestGenWaterStart function handles an DD request to start (go to gen permeate mode). + * @details \b Inputs: preGenWState + * @details \b Outputs: pendingStartGenRequest + * @return TRUE if request accepted, FALSE if not. + *************************************************************************/ +BOOL requestGenWaterStart( void ) +{ + BOOL result = FALSE; + if ( RO_PRE_GENW_STATE_COMPLETE == getCurrentPreGenWState() ) + { + result = TRUE; + pendingStartGenRequest = TRUE; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The requestGenWaterStop function handles an DD request to stop (go to standby mode). + * @details \b Inputs: none + * @details \b Outputs: pendingStartGenRequest + * @return TRUE if request accepted, FALSE if not. + *************************************************************************/ +BOOL requestGenWaterStop( void ) +{ + BOOL result = TRUE; + pendingStartGenRequest = FALSE; + requestNewOperationMode( RO_MODE_STAN ); + + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Modes/ModeWaterGen.h =================================================================== diff -u -rd19f70066e9d3503c5d2d4fd26a43c7dfa00f873 -r12c4f28723f9af89ae693df771039da1bc7ffc80 --- firmware/App/Modes/ModeWaterGen.h (.../ModeWaterGen.h) (revision d19f70066e9d3503c5d2d4fd26a43c7dfa00f873) +++ firmware/App/Modes/ModeWaterGen.h (.../ModeWaterGen.h) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) @@ -44,6 +44,8 @@ U32 transitionToGenWaterMode( void ); // Transition to gen water mode U32 execGenWaterMode( void ); // Execute the gen water mode state machine (call from OperationModes) void execGenWaterMonitor( void ); // Water generation monitor +BOOL requestGenWaterStart( void ); +BOOL requestGenWaterStop( void ); RO_GENW_MODE_STATE_T getCurrentGenWaterState( void ); // Get the current state of the gen water mode Index: firmware/App/Modes/ModeWaterPreGen.c =================================================================== diff -u -r286fbceae8be1276780690fe4b3010c8b2270239 -r12c4f28723f9af89ae693df771039da1bc7ffc80 --- firmware/App/Modes/ModeWaterPreGen.c (.../ModeWaterPreGen.c) (revision 286fbceae8be1276780690fe4b3010c8b2270239) +++ firmware/App/Modes/ModeWaterPreGen.c (.../ModeWaterPreGen.c) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) @@ -38,7 +38,7 @@ static RO_PRE_GENW_MODE_STATE_T preGenWState; ///< Currently active pre generate water state. static U32 preGenWDataPublicationTimerCounter; ///< Used to schedule pre generate water data publication to CAN bus. static OVERRIDE_U32_T preGenWDataPublishInterval; ///< Pre Generate water mode data publish interval. -static U32 pendingStartGenRequest; ///< Flag indicating DD has requested RO start the generate permeate. +static U32 pendingStartPreGenRequest; ///< Flag indicating DD has requested RO start the generate permeate. // ********** private function prototypes ********** @@ -61,7 +61,8 @@ preGenWDataPublishInterval.ovData = PRE_GENW_DATA_PUBLISH_INTERVAL; preGenWDataPublishInterval.ovInitData = 0; preGenWDataPublishInterval.override = OVERRIDE_RESET; - preGenWDataPublicationTimerCounter = 0; + preGenWDataPublicationTimerCounter = 0; + pendingStartPreGenRequest = FALSE; } /*********************************************************************//** @@ -165,7 +166,7 @@ { RO_PRE_GENW_MODE_STATE_T state = RO_PRE_GENW_STATE_COMPLETE; - if ( TRUE == pendingStartGenRequest ) + if ( TRUE == pendingStartPreGenRequest ) { requestNewOperationMode( RO_MODE_GENW ); } @@ -187,6 +188,20 @@ return preGenWState; } +/** + * *******************************************************************//** + * @brief + * The getPreGenRequest function returns the current state of the + * pre gen water mode. + * @details \b Inputs: pendingStartPreGenRequest + * @details \b Outputs: none + * @return the current state of pre gen request + *************************************************************************/ +BOOL getPreGenRequest( void ) +{ + return pendingStartPreGenRequest; +} + /*********************************************************************//** * @brief * The getPreGenWDataPublishInterval function gets the pre generate water @@ -227,25 +242,41 @@ /*********************************************************************//** * @brief - * The requestPreGenStart function handles an DD request to start (go to gen permeate mode). - * @details \b Inputs: preGenWState - * @details \b Outputs: pendingStartGenRequest + * The requestPreGenStart function handles an DD request to start (go to pre gen permeate mode). + * @details \b Inputs: standbyState + * @details \b Outputs: pendingStartRORequest * @return TRUE if request accepted, FALSE if not. *************************************************************************/ -BOOL requestGenWaterStart( void ) +BOOL requestPreGenStart( void ) { BOOL result = FALSE; - if ( RO_PRE_GENW_STATE_COMPLETE == preGenWState ) + if ( ( RO_MODE_STAN == getCurrentOperationMode() ) && ( RO_STANDBY_MODE_STATE_IDLE == getCurrentStandbyState() ) ) { - result = TRUE; - pendingStartGenRequest = TRUE; + result = TRUE; + pendingStartPreGenRequest = TRUE; } return result; } +/*********************************************************************//** + * @brief + * The requestPreGenStop function handles an DD request to stop (go to standby mode). + * @details \b Inputs: none + * @details \b Outputs: pendingStartPreGenRequest + * @return TRUE if request accepted, FALSE if not. + *************************************************************************/ +BOOL requestPreGenStop( void ) +{ + BOOL result = TRUE; + pendingStartPreGenRequest = FALSE; + requestNewOperationMode( RO_MODE_STAN ); + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Modes/ModeWaterPreGen.h =================================================================== diff -u -r286fbceae8be1276780690fe4b3010c8b2270239 -r12c4f28723f9af89ae693df771039da1bc7ffc80 --- firmware/App/Modes/ModeWaterPreGen.h (.../ModeWaterPreGen.h) (revision 286fbceae8be1276780690fe4b3010c8b2270239) +++ firmware/App/Modes/ModeWaterPreGen.h (.../ModeWaterPreGen.h) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) @@ -42,8 +42,9 @@ void initPreGenWMode( void ); // Initialize this pre gen water mode unit U32 transitionToPreGenWMode( void ); // Transition to pre gen water mode U32 execPreGenWMode( void ); // Execute the pre gen water mode state machine (call from OperationModes) -BOOL requestGenWaterStart( void ); - +BOOL requestPreGenStart( void ); +BOOL requestPreGenStop( void ); +BOOL getPreGenRequest( void ); RO_PRE_GENW_MODE_STATE_T getCurrentPreGenWState( void ); // Get the current state of the pre gen water mode BOOL testPreGenWaterDataPublishIntervalOverride( MESSAGE_T *message ); Index: firmware/App/Services/DDInterface.c =================================================================== diff -u -r286fbceae8be1276780690fe4b3010c8b2270239 -r12c4f28723f9af89ae693df771039da1bc7ffc80 --- firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 286fbceae8be1276780690fe4b3010c8b2270239) +++ firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) @@ -188,17 +188,18 @@ { if ( FALSE == start ) { - // stop Permeate Generation by transitioning to standby mode signalROPumpStop( P12_PUMP ); - requestNewOperationMode( RO_MODE_STAN ); + result = requestPreGenStop(); } else { // Set flow rate and delivery. setDDPermeateFlowRate( roRate ); + result = TRUE; } - result = TRUE; } + + return result; } /*********************************************************************//** @@ -226,17 +227,18 @@ { if ( FALSE == start ) { - // stop Permeate Generation by transitioning to standby mode signalROPumpStop( P12_PUMP ); - requestNewOperationMode( RO_MODE_STAN ); + result = requestGenWaterStop(); } else { // Set flow rate and delivery. setDDPermeateFlowRate( roRate ); + result = TRUE; } - result = TRUE; } + + return result; }