Index: firmware/App/Modes/FPModes/FPModeFault.c =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/FPModeFault.c (.../FPModeFault.c) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Modes/FPModes/FPModeFault.c (.../FPModeFault.c) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -307,4 +307,66 @@ } } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testValidateFaultChangeReq function validate whether + * requested sub mode change is legal or not. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +BOOL testValidateFaultChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + + if ( newSubMode < NUM_OF_FP_FAULT_STATES ) + { + switch ( newSubMode ) + { + case FP_FAULT_STATE_START: + case FP_FAULT_DEENERGIZED_STATE: + case FP_FAULT_ENERGIZED_STATE: + default: + result = TRUE; + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewFaultSubMode function requests transition + * to a new fault sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewFaultSubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_FAULT_STATES ) + { + faultState = (FP_FAULT_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + // Any of these state require no special handling + case FP_FAULT_STATE_START: + case FP_FAULT_DEENERGIZED_STATE: + case FP_FAULT_ENERGIZED_STATE: + default: + break; + } + } +} + /**@}*/ Index: firmware/App/Modes/FPModes/FPModeFault.h =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/FPModeFault.h (.../FPModeFault.h) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Modes/FPModes/FPModeFault.h (.../FPModeFault.h) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -36,9 +36,12 @@ U32 transitionToFPFaultMode( void ); // Prepares for transition to fault mode U32 execFPFaultMode( void ); // Execute the fault mode state machine (call from OperationModes) -FP_FAULT_STATE_T getCurrentFPFaultState( void ); // get the current state of the fault mode. +FP_FAULT_STATE_T getCurrentFPFaultState( void ); // get the current state of the fault mode. void deEnergizeFPActuators( BOOL isDrainEnabled ); +BOOL testValidateFaultChangeReq( U32 newSubMode ); // Validate the requested fault sub mode transition is possible or not +void testSignalNewFaultSubMode( U32 newSubMode ); // Signal transition to a new fault sub mode + /**@}*/ #endif Index: firmware/App/Modes/FPModes/FPModeStandby.c =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/FPModeStandby.c (.../FPModeStandby.c) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Modes/FPModes/FPModeStandby.c (.../FPModeStandby.c) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -146,4 +146,56 @@ *************************************************************************/ +/*********************************************************************//** + * @brief + * The testValidateStandbyChangeReq function validate whether + * requested sub mode change is legal or not. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +BOOL testValidateStandbyChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + + if ( newSubMode < NUM_OF_FP_STANDBY_MODE_STATES ) + { + switch ( newSubMode ) + { + case FP_STANDBY_MODE_STATE_IDLE: + default: + result = TRUE; + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewStandbySubMode function requests transition + * to a new standby sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewStandbySubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_STANDBY_MODE_STATES ) + { + standbyState = (FP_STANDBY_MODE_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + // Any of these state require no special handling + case FP_STANDBY_MODE_STATE_IDLE: + default: + break; + } + } +} + /**@}*/ Index: firmware/App/Modes/FPModes/FPModeStandby.h =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/FPModeStandby.h (.../FPModeStandby.h) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Modes/FPModes/FPModeStandby.h (.../FPModeStandby.h) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -41,7 +41,8 @@ FP_STANDBY_MODE_STATE_T getCurrentFPStandbyState( void ); // get the current state of the standby mode. -BOOL testFPstartGenPermeateOverride( MESSAGE_T *message ); // Overide start gen permeate mode +BOOL testValidateStandbyChangeReq( U32 newSubMode ); // Validate the requested standby sub mode transition is possible or not +void testSignalNewStandbySubMode( U32 newSubMode ); // Signal transition to a new standby sub mode /**@}*/ Index: firmware/App/Modes/FPModes/FPOperationModes.c =================================================================== diff -u -r2b1f6635d351e9cd0b398160ab6c756c2464db1c -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision 2b1f6635d351e9cd0b398160ab6c756c2464db1c) +++ firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -47,10 +47,10 @@ static U32 broadcastModeIntervalCtr; ///< Interval counter used to determine when to broadcast operation mode. Initialize to 11 to stagger broadcast. static U32 currentSubState; ///< current sub state. static U32 current4thLevelState; ///< current 4th level state. -static U32 testRequestedSubMode; ///< Requested operation sub mode from dialin. -static BOOL testChangeSubMode; ///< Flag to determine change operation sub mode request status. static BOOL isDeviceDefeatured; ///< bool to determine defeatured status static BOOL isBoostInstalled; ///< bool to determine boost pump status +static U32 testRequestedSubMode; ///< Requested operation sub mode from dialin. +static BOOL testChangeSubMode; ///< Flag to determine change operation sub mode request status. /// Interval (in task intervals) at which to publish operation mode data to CAN bus. static OVERRIDE_U32_T opModePublishInterval = { BROADCAST_TD_OP_MODE_INTERVAL, BROADCAST_TD_OP_MODE_INTERVAL, BROADCAST_TD_OP_MODE_INTERVAL, 0 }; @@ -72,8 +72,8 @@ static FP_OP_MODE_T arbitrateModeRequest( void ); static void transitionToNewOperationMode( FP_OP_MODE_T newMode ); static void broadcastOperationMode( void ); -static void requestNewFPOperationSubMode( void ); -static BOOL validateSubModeChangeRequest( U32 reqSubMode ); +static void testRequestNewFPOperationSubMode( void ); +static BOOL testValidateSubModeChangeRequest( FP_OP_MODE_T reqMode, U32 reqSubMode ); /*********************************************************************//** * @brief @@ -98,11 +98,11 @@ currentSubMode = 0; currentSubState = NO_FP_SUB_STATE; current4thLevelState = NO_FP_SUB_STATE; - testRequestedSubMode = 0; - testChangeSubMode = FALSE; broadcastModeIntervalCtr = DATA_PUBLISH_COUNTER_START_COUNT; isDeviceDefeatured = FALSE; isBoostInstalled = FALSE; + testRequestedSubMode = 0; + testChangeSubMode = FALSE; transitionToNewOperationMode( FP_MODE_INIT ); @@ -156,10 +156,10 @@ // sendOperationStatusEvent(); } // Is sub mode change request active? - if ( testChangeSubMode ) + if ( TRUE == testChangeSubMode ) { testChangeSubMode = FALSE; - requestNewFPOperationSubMode(); + testRequestNewFPOperationSubMode(); } // Mode specific processing to be done continuously @@ -392,84 +392,6 @@ /*********************************************************************//** * @brief - * The requestNewFPOperationSubMode function requests transition to a new - * operation sub mode. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -static void requestNewFPOperationSubMode( void ) -{ - switch ( currentMode ) - { - case FP_MODE_PGEN: - signalNewPreGenPSubMode( testRequestedSubMode ); - break; - - case FP_MODE_GENP: - signalNewGenPermeateSubMode( testRequestedSubMode ); - break; - - case FP_MODE_DPGP: - signalNewPreGenPDefeaturedSubMode( testRequestedSubMode ); - break; - - case FP_MODE_DEGP: - signalNewGenPDefeaturedSubMode( testRequestedSubMode ); - break; - - case FP_MODE_FAUL: - case FP_MODE_SERV: - case FP_MODE_INIT: - case FP_MODE_STAN: - default: - break; - } -} - -/*********************************************************************//** - * @brief - * The validateSubModeChangeRequest function requests transition to a new - * operation sub mode. - * @details \b Inputs: none - * @details \b Outputs: none - * @return TRUE if request is legal, FALSE if not. - *************************************************************************/ -static BOOL validateSubModeChangeRequest( U32 reqSubMode ) -{ - BOOL result = FALSE; - - switch ( currentMode ) - { - case FP_MODE_PGEN: - result = validatePreGenPChangeReq( reqSubMode ); - break; - - case FP_MODE_GENP: - result = validateGenPermeateChangeReq( reqSubMode ); - break; - - case FP_MODE_DPGP: - result = validatePreGenPDefeaturedChangeReq( reqSubMode ); - break; - - case FP_MODE_DEGP: - result = validateGenPDefeaturedChangeReq( reqSubMode ); - break; - - case FP_MODE_FAUL: - case FP_MODE_SERV: - case FP_MODE_INIT: - case FP_MODE_STAN: - default: - break; - } - - return result; -} - -/*********************************************************************//** - * @brief * The setCurrentFPSubState function sets the current subState. * @details \b Inputs: none * @details \b Outputs: currentSubState @@ -651,10 +573,10 @@ if ( reqMode < NUM_OF_FP_MODES ) { // verify if the requested submode transition is possible - result = validateSubModeChangeRequest( reqSubMode ); + result = testValidateSubModeChangeRequest( reqMode, reqSubMode ); // send the sub mode change request only if the requested transition is valid - if ( result ) + if ( TRUE == result ) { // request new operation mode and sub mode if the requested operation mode is not current mode if ( currentMode != reqMode ) @@ -746,4 +668,97 @@ return result; } +/*********************************************************************//** + * @brief + * The testRequestNewFPOperationSubMode function requests transition to a new + * operation sub mode. + * @details \b Inputs: currentMode, testRequestedSubMode + * @details \b Outputs: none + * @return none + *************************************************************************/ +static void testRequestNewFPOperationSubMode( void ) +{ + switch ( currentMode ) + { + case FP_MODE_PGEN: + testSignalNewPreGenPSubMode( testRequestedSubMode ); + break; + + case FP_MODE_GENP: + testSignalNewGenPermeateSubMode( testRequestedSubMode ); + break; + + case FP_MODE_DPGP: + testSignalNewPreGenPDefeaturedSubMode( testRequestedSubMode ); + break; + + case FP_MODE_DEGP: + testSignalNewGenPDefeaturedSubMode( testRequestedSubMode ); + break; + + case FP_MODE_FAUL: + testSignalNewFaultSubMode( testRequestedSubMode ); + break; + + case FP_MODE_STAN: + testSignalNewStandbySubMode( testRequestedSubMode ); + break; + + case FP_MODE_SERV: + case FP_MODE_INIT: + default: + break; + } +} + +/*********************************************************************//** + * @brief + * The testValidateSubModeChangeRequest function requests transition to a new + * operation sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param reqMode FP operation mode enumeration + * @param reqSubMode operation sub mode requested + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +static BOOL testValidateSubModeChangeRequest( FP_OP_MODE_T reqMode, U32 reqSubMode ) +{ + BOOL result = FALSE; + + switch ( reqMode ) + { + case FP_MODE_PGEN: + result = testValidatePreGenPChangeReq( reqSubMode ); + break; + + case FP_MODE_GENP: + result = testValidateGenPermeateChangeReq( reqSubMode ); + break; + + case FP_MODE_DPGP: + result = testValidatePreGenPDefeaturedChangeReq( reqSubMode ); + break; + + case FP_MODE_DEGP: + result = testValidateGenPDefeaturedChangeReq( reqSubMode ); + break; + + case FP_MODE_FAUL: + result = testValidateFaultChangeReq( reqSubMode ); + break; + + case FP_MODE_STAN: + result = testValidateStandbyChangeReq( reqSubMode ); + break; + + // No need to validate the request for the following modes as it is not supported + case FP_MODE_SERV: + case FP_MODE_INIT: + default: + break; + } + + return result; +} + /**@}*/ Index: firmware/App/Modes/FPModes/ModeGenPermeate.c =================================================================== diff -u -rf7553872983e440277cae7f84b386ff195d7c394 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision f7553872983e440277cae7f84b386ff195d7c394) +++ firmware/App/Modes/FPModes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -243,54 +243,6 @@ /*********************************************************************//** * @brief - * The validateGenPermeateChangeReq function validate whether requested - * sub mode change is legal or not. - * @details \b Inputs: none - * @details \b Outputs: none - * @return TRUE if request is legal, FALSE if not. - *************************************************************************/ -BOOL validateGenPermeateChangeReq( U32 newSubMode ) -{ - BOOL result = FALSE; - - // TODO add validation logic - result = TRUE; - - return result; -} - -/*********************************************************************//** - * @brief - * The signalNewGenPermeateSubMode function requests transition to - * a new Gen Permeate sub mode. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -void signalNewGenPermeateSubMode( U32 newSubMode ) -{ - FP_GENP_MODE_STATE_T reqSubMode = (FP_GENP_MODE_STATE_T)newSubMode; - - if ( reqSubMode < NUM_OF_FP_GENP_MODE_STATES ) - { - genPermeateState = reqSubMode; - // handle the prerequisite if any - switch ( reqSubMode ) - { - case FP_GENP_TANK_FILL_STATE: - break; - - case FP_GENP_TANK_FULL_STATE: - break; - default: - break; - } - setModeGenPTransition( reqSubMode ); - } -} - -/*********************************************************************//** - * @brief * The getTankFullAlarmTimeout function returns the tank full alarm timeout * @details \b Inputs: none * @details \b Outputs: tankFullAlarmTimeout @@ -560,4 +512,59 @@ return result; } +/*********************************************************************//** + * @brief + * The testValidateGenPermeateChangeReq function validate whether requested + * sub mode change is legal or not. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +BOOL testValidateGenPermeateChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + + if ( newSubMode < NUM_OF_FP_GENP_MODE_STATES ) + { + switch ( newSubMode ) + { + case FP_GENP_TANK_FILL_STATE: + case FP_GENP_TANK_FULL_STATE: + default: + result = TRUE; + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewGenPermeateSubMode function requests transition to + * a new Gen Permeate sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewGenPermeateSubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_GENP_MODE_STATES ) + { + genPermeateState = (FP_GENP_MODE_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + // Any of these state require no special handling + case FP_GENP_TANK_FILL_STATE: + case FP_GENP_TANK_FULL_STATE: + default: + break; + } + setModeGenPTransition( genPermeateState ); + } +} + /**@}*/ Index: firmware/App/Modes/FPModes/ModeGenPermeate.h =================================================================== diff -u -ra36dcbc3e2f94d418d8aa54588c836a3adf35e17 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision a36dcbc3e2f94d418d8aa54588c836a3adf35e17) +++ firmware/App/Modes/FPModes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -46,11 +46,11 @@ U32 execGenPermeateMode( void ); // Execute the gen permeate mode state machine (call from OperationModes) BOOL requestGenWaterStart( void ); // Request to start gen water and transition modes BOOL requestGenWaterStop( void ); // Request to stop gen water and transition. -BOOL validateGenPermeateChangeReq( U32 newSubMode ); // Validate the requested gen permeate sub mode transition is possible or not -void signalNewGenPermeateSubMode( U32 newSubMode ); // Signal transition to a new gen permeate sub mode FP_GENP_MODE_STATE_T getCurrentGenPermeateState( void ); // Get the current state of the gen water mode BOOL testGenPermeateDataPublishIntervalOverride( MESSAGE_T *message ); // override broadcast interval for gen permeate +BOOL testValidateGenPermeateChangeReq( U32 newSubMode ); // Validate the requested gen permeate sub mode transition is possible or not +void testSignalNewGenPermeateSubMode( U32 newSubMode ); // Signal transition to a new gen permeate sub mode /**@}*/ Index: firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.c =================================================================== diff -u -rf7553872983e440277cae7f84b386ff195d7c394 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.c (.../ModeGenPermeateDefeatured.c) (revision f7553872983e440277cae7f84b386ff195d7c394) +++ firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.c (.../ModeGenPermeateDefeatured.c) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -273,56 +273,6 @@ /*********************************************************************//** * @brief - * The validateGenPDefeaturedChangeReq function validate whether requested - * sub mode change is legal or not. - * @details \b Inputs: none - * @details \b Outputs: none - * @return TRUE if request is legal, FALSE if not. - *************************************************************************/ -BOOL validateGenPDefeaturedChangeReq( U32 newSubMode ) -{ - BOOL result = FALSE; - - // TODO add validation logic - result = TRUE; - - return result; -} - -/*********************************************************************//** - * @brief - * The signalNewGenPDefeaturedSubMode function requests transition to a new - * defeatured Gen Permeate sub mode. - * @details \b Alarm: ALARM_ID_FP_SOFTWARE_FAULT if given new sub mode is invalid. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -void signalNewGenPDefeaturedSubMode( U32 newSubMode ) -{ - FP_GENP_DEF_MODE_STATE_T reqSubMode = (FP_GENP_DEF_MODE_STATE_T)newSubMode; - - if ( reqSubMode < NUM_OF_FP_GENP_DEF_MODE_STATES ) - { - genPermeateDefState = reqSubMode; - // handle the prerequisite if any - switch ( reqSubMode ) - { - case FP_GENP_DEF_SUPPLY_WATER: - break; - - case FP_GENP_DEF_PAUSED: - break; - - default: - break; - } - setModeGenPDefTransition( reqSubMode ); - } -} - -/*********************************************************************//** - * @brief * The getGenPermeateDataPublishInterval function gets the generate permeate * defeatured mode data publish interval. * @details \b Inputs: genPermeateDefDataPublishInterval @@ -383,4 +333,59 @@ return result; } +/*********************************************************************//** + * @brief + * The testValidateGenPDefeaturedChangeReq function validate whether + * requested sub mode change is legal or not. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +BOOL testValidateGenPDefeaturedChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + + if ( newSubMode < NUM_OF_FP_GENP_DEF_MODE_STATES ) + { + switch ( newSubMode ) + { + case FP_GENP_DEF_SUPPLY_WATER: + case FP_GENP_DEF_PAUSED: + default: + result = TRUE; + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewGenPDefeaturedSubMode function requests transition + * to a new defeatured Gen Permeate sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewGenPDefeaturedSubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_GENP_DEF_MODE_STATES ) + { + genPermeateDefState = (FP_GENP_DEF_MODE_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + // Any of these state require no special handling + case FP_GENP_DEF_SUPPLY_WATER: + case FP_GENP_DEF_PAUSED: + default: + break; + } + setModeGenPDefTransition( genPermeateDefState ); + } +} + /**@}*/ Index: firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.h =================================================================== diff -u -ra36dcbc3e2f94d418d8aa54588c836a3adf35e17 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.h (.../ModeGenPermeateDefeatured.h) (revision a36dcbc3e2f94d418d8aa54588c836a3adf35e17) +++ firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.h (.../ModeGenPermeateDefeatured.h) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -46,12 +46,11 @@ BOOL requestGenWaterDefStart( void ); // request to start gen permeate in defeatured mode BOOL requestGenWaterDefStop( void ); // request to stop gen permeate in defeatured mode BOOL getGenPermeateRequest( void ); // get function to retrieve request status -BOOL validateGenPDefeaturedChangeReq( U32 newSubMode ); // Validate the requested defeatured gen permeate sub mode transition is possible or not -void signalNewGenPDefeaturedSubMode( U32 newSubMode ); // Signal transition to a new defeatured gen permeate sub mode FP_GENP_DEF_MODE_STATE_T getCurrentGenPermeateDefState( void ); // Get the current state of the gen water mode BOOL testGenPermeateDefDataPublishIntervalOverride( MESSAGE_T *message ); // override broadcast interval for defeatued gen permeate - +BOOL testValidateGenPDefeaturedChangeReq( U32 newSubMode ); // Validate the requested defeatured gen permeate sub mode transition is possible or not +void testSignalNewGenPDefeaturedSubMode( U32 newSubMode ); // Signal transition to a new defeatured gen permeate sub mode /**@}*/ #endif Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -rf7553872983e440277cae7f84b386ff195d7c394 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision f7553872983e440277cae7f84b386ff195d7c394) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -448,67 +448,6 @@ /*********************************************************************//** * @brief - * The validatePreGenPChangeReq function validate whether requested - * sub mode change is legal or not. - * @details \b Inputs: none - * @details \b Outputs: none - * @return TRUE if request is legal, FALSE if not. - *************************************************************************/ -BOOL validatePreGenPChangeReq( U32 newSubMode ) -{ - BOOL result = FALSE; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); - - // TODO add validation logic - result = TRUE; - - return result; -} - -/*********************************************************************//** - * @brief - * The signalNewPreGenPSubMode function requests transition to a new - * PreGen Permeate sub mode. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -void signalNewPreGenPSubMode( U32 newSubMode ) -{ - FP_PRE_GENP_MODE_STATE_T reqSubMode = (FP_PRE_GENP_MODE_STATE_T)newSubMode; - - if ( reqSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) - { - preGenPState = reqSubMode; - // handle the prerequisite if any - switch ( reqSubMode ) - { - case FP_PRE_GENP_INLET_PRESSURE_CHECK: - break; - - case FP_PRE_GENP_FILTER_FLUSH: - break; - - case FP_PRE_GENP_PERMEATE_FLUSH: - break; - - case FP_PRE_GENP_CONCENTRATE_FLUSH: - // jump to concentrate flush sub mode only if the permeate tank is full - break; - - case FP_PRE_GENP_VERIFY_WATER: - break; - - case FP_PRE_GENP_PAUSED: - default: - break; - } - setModePreGenPTransition( reqSubMode ); - } -} - -/*********************************************************************//** - * @brief * The getPreGenWDataPublishInterval function gets the pre generate water * mode data publish interval. * @details \b Inputs: genWaterDataPublishInterval @@ -612,4 +551,71 @@ return result; } +/*********************************************************************//** + * @brief + * The testValidatePreGenPChangeReq function validate whether requested + * sub mode change is legal or not. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +BOOL testValidatePreGenPChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + + if ( newSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) + { + switch ( newSubMode ) + { + case FP_PRE_GENP_CONCENTRATE_FLUSH: + result = (( LEVEL_STATE_HIGH == level ) ? TRUE : FALSE); + break; + + case FP_PRE_GENP_INLET_PRESSURE_CHECK: + case FP_PRE_GENP_FILTER_FLUSH: + case FP_PRE_GENP_PERMEATE_FLUSH: + case FP_PRE_GENP_VERIFY_WATER: + case FP_PRE_GENP_PAUSED: + default: + result = TRUE; + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewPreGenPSubMode function requests transition to a new + * PreGen Permeate sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewPreGenPSubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) + { + preGenPState = (FP_PRE_GENP_MODE_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + // Require no special handling for now (update the comment if required in future) + case FP_PRE_GENP_INLET_PRESSURE_CHECK: + case FP_PRE_GENP_FILTER_FLUSH: + case FP_PRE_GENP_PERMEATE_FLUSH: + case FP_PRE_GENP_CONCENTRATE_FLUSH: + case FP_PRE_GENP_VERIFY_WATER: + case FP_PRE_GENP_PAUSED: + default: + break; + } + setModePreGenPTransition( preGenPState ); + } +} + /**@}*/ Index: firmware/App/Modes/FPModes/ModePreGenPermeate.h =================================================================== diff -u -ra36dcbc3e2f94d418d8aa54588c836a3adf35e17 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModePreGenPermeate.h (.../ModePreGenPermeate.h) (revision a36dcbc3e2f94d418d8aa54588c836a3adf35e17) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.h (.../ModePreGenPermeate.h) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -47,10 +47,10 @@ BOOL requestPreGenStop( void ); // Stop pre gen permeate request BOOL getPreGenRequest( void ); // Get the pre gen permeate request status FP_PRE_GENP_MODE_STATE_T getCurrentPreGenPState( void ); // Get the current state of the pre gen permeate mode -BOOL validatePreGenPChangeReq( U32 newSubMode ); // Validate the requested pre gen permeate sub mode transition is possible or not -void signalNewPreGenPSubMode( U32 newSubMode ); // Signal transition to a new pre gen permeate sub mode -BOOL testPreGenDataPublishIntervalOverride( MESSAGE_T *message ); +BOOL testPreGenDataPublishIntervalOverride( MESSAGE_T *message ); // override broadcast interval for pre gen permeate +void testSignalNewPreGenPSubMode( U32 newSubMode ); // Signal transition to a new pre gen permeate sub mode +BOOL testValidatePreGenPChangeReq( U32 newSubMode ); // Validate the requested pre gen permeate sub mode transition is possible or not /**@}*/ Index: firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c =================================================================== diff -u -rf7553872983e440277cae7f84b386ff195d7c394 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c (.../ModePreGenPermeateDefeatured.c) (revision f7553872983e440277cae7f84b386ff195d7c394) +++ firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.c (.../ModePreGenPermeateDefeatured.c) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -317,57 +317,6 @@ /*********************************************************************//** * @brief - * The validatePreGenPDefeaturedChangeReq function validate whether requested - * sub mode change is legal or not. - * @details \b Inputs: none - * @details \b Outputs: none - * @return TRUE if request is legal, FALSE if not. - *************************************************************************/ -BOOL validatePreGenPDefeaturedChangeReq( U32 newSubMode ) -{ - BOOL result = FALSE; - - // TODO add validation logic - result = TRUE; - - return result; -} - -/*********************************************************************//** - * @brief - * The signalNewPreGenPDefeaturedSubMode function requests transition to a new - * defeatured PreGen Permeate sub mode. - * @details \b Alarm: ALARM_ID_FP_SOFTWARE_FAULT if given new sub mode is invalid. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -void signalNewPreGenPDefeaturedSubMode( U32 newSubMode ) -{ - FP_PRE_GENP_DEF_MODE_STATE_T reqSubMode = (FP_PRE_GENP_DEF_MODE_STATE_T)newSubMode; - - if ( reqSubMode < NUM_OF_FP_PRE_GENP_DEF_MODE_STATES ) - { - preGenPermeateDefState = reqSubMode; - // handle the prerequisite if any - switch ( reqSubMode ) - { - case FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK: - break; - - case FP_PRE_GENP_DEF_FLUSH: - break; - - case FP_PRE_GENP_DEF_PAUSED: - default: - break; - } - setModePreGenPDefTransition( reqSubMode ); - } -} - -/*********************************************************************//** - * @brief * The getGenPermeateDataPublishInterval function gets the generate permeate * defeatured mode data publish interval. * @details \b Inputs: preGenPermeateDefDataPublishInterval @@ -428,4 +377,61 @@ return result; } +/*********************************************************************//** + * @brief + * The testValidatePreGenPDefeaturedChangeReq function validate whether + * requested sub mode change is legal or not. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return TRUE if request is legal, FALSE if not. + *************************************************************************/ +BOOL testValidatePreGenPDefeaturedChangeReq( U32 newSubMode ) +{ + BOOL result = FALSE; + + if ( newSubMode < NUM_OF_FP_PRE_GENP_DEF_MODE_STATES ) + { + switch ( newSubMode ) + { + case FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK: + case FP_PRE_GENP_DEF_FLUSH: + case FP_PRE_GENP_DEF_PAUSED: + default: + result = TRUE; + break; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSignalNewPreGenPDefeaturedSubMode function requests transition + * to a new defeatured PreGen Permeate sub mode. + * @details \b Inputs: none + * @details \b Outputs: none + * @param newSubMode the enumerated sub state of the mode. + * @return none + *************************************************************************/ +void testSignalNewPreGenPDefeaturedSubMode( U32 newSubMode ) +{ + if ( newSubMode < NUM_OF_FP_PRE_GENP_DEF_MODE_STATES ) + { + preGenPermeateDefState = (FP_PRE_GENP_DEF_MODE_STATE_T)newSubMode; + // handle the prerequisite if any + switch ( newSubMode ) + { + // Any of these state require no special handling + case FP_PRE_GENP_DEF_INLET_PRESSURE_CHECK: + case FP_PRE_GENP_DEF_FLUSH: + case FP_PRE_GENP_DEF_PAUSED: + default: + break; + } + setModePreGenPDefTransition( preGenPermeateDefState ); + } +} + /**@}*/ Index: firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.h =================================================================== diff -u -ra36dcbc3e2f94d418d8aa54588c836a3adf35e17 -r886964fa2bf6a5bb61b33b8b5547f3d0c585b360 --- firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.h (.../ModePreGenPermeateDefeatured.h) (revision a36dcbc3e2f94d418d8aa54588c836a3adf35e17) +++ firmware/App/Modes/FPModes/ModePreGenPermeateDefeatured.h (.../ModePreGenPermeateDefeatured.h) (revision 886964fa2bf6a5bb61b33b8b5547f3d0c585b360) @@ -46,11 +46,11 @@ BOOL requestPreGenDefStart( void ); // Request to start pre generate BOOL requestPreGenDefStop( void ); // Request to stop pre generate BOOL getPreGenPermeateRequest( void ); // Retrieve pre gen request -BOOL validatePreGenPDefeaturedChangeReq( U32 newSubMode ); // Validate the requested defeatured pre gen permeate sub mode transition is possible or not -void signalNewPreGenPDefeaturedSubMode( U32 newSubMode ); // Signal transition to a new defeatured pre gen permeate sub mode FP_PRE_GENP_DEF_MODE_STATE_T getCurrentPreGenPermeateDefState( void ); // Get the current state of the Pre gen water mode BOOL testPreGenPermeateDefDataPublishIntervalOverride( MESSAGE_T *message ); // override broadcast interval for Pre gen permeate +BOOL testValidatePreGenPDefeaturedChangeReq( U32 newSubMode ); // Validate the requested defeatured pre gen permeate sub mode transition is possible or not +void testSignalNewPreGenPDefeaturedSubMode( U32 newSubMode ); // Signal transition to a new defeatured pre gen permeate sub mode /**@}*/