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; +} + /**@}*/