Index: firmware/App/Modes/FPModes/FPOperationModes.c =================================================================== diff -u -rc07917caced76b53a0ed8f35167fac6f9d8310a4 -rf4a8565c7edec12094b8a737ed7b8cd3424a9208 --- firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision c07917caced76b53a0ed8f35167fac6f9d8310a4) +++ firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision f4a8565c7edec12094b8a737ed7b8cd3424a9208) @@ -7,8 +7,8 @@ * * @file FPOperationModes.c * -* @author (last) Michael Garthwaite -* @date (last) 30-Oct-2025 +* @author (last) “rkallala” +* @date (last) 09-Dec-2025 * * @author (original) Michael Garthwaite * @date (original) 08-Sep-2025 @@ -131,7 +131,7 @@ // Is requested new mode valid and legal at this time? if ( ( newMode >= FP_MODE_NLEG ) && ( isTestingActivated() != TRUE ) ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, FP_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, newMode ) newMode = currentMode; } @@ -181,7 +181,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, currentMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, FP_FAULT_ID_OP_MODES_INVALID_MODE_STATE, currentMode ) currentMode = FP_MODE_FAUL; currentSubMode = 0; break; @@ -220,7 +220,7 @@ } else { // Invalid mode requested - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, FP_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, newMode ) } } @@ -348,7 +348,7 @@ default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, FP_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, newMode ) break; } } @@ -405,7 +405,7 @@ * The isFPDefeatured function returns if the Leahi device is defeatured. * @details \b Inputs: none * @details \b Outputs: none - * @return the boolean if the FP device is defeatured. + * @return TRUE if FP device is de-featured, FALSE if not. *************************************************************************/ BOOL isFPDefeatured( void ) { @@ -419,7 +419,7 @@ * has a boost pump installed. * @details \b Inputs: none * @details \b Outputs: none - * @return the boolean if boost pump is installed. + * @return TRUE if FP device is contains a boost pump, FALSE if not. *************************************************************************/ BOOL isBoostPumpInstalled( void ) { @@ -433,21 +433,29 @@ * has a boost pump installed. * @details \b Inputs: none * @details \b Outputs: none - * @return the rejection reason codes for stopping generate permeate. + * @return the rejection reason code for stopping generate permeate. *************************************************************************/ REQUEST_REJECT_REASON_CODE_T signalStopGenPermeate( void ) { REQUEST_REJECT_REASON_CODE_T reason = REQUEST_REJECT_REASON_NONE; + BOOL result = FALSE; + // Stop is agnostic to defeatured/featured. // As long as were not in fault or POST, request to go to standby to stop - if ( currentMode >= FP_MODE_STAN ) + if ( TRUE == isFPDefeatured() ) { - requestNewFPOperationMode( FP_MODE_STAN ); + result = requestPreGenDefStop(); } else { + result = requestPreGenStop(); + } + + if ( FALSE == result ) + { reason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; } + return reason; } @@ -457,20 +465,28 @@ * has a boost pump installed. * @details \b Inputs: none * @details \b Outputs: none - * @return the rejection reason codes for starting generate permeate. + * @return the rejection reason code for starting generate permeate. *************************************************************************/ REQUEST_REJECT_REASON_CODE_T signalStartGenPermeate( void ) { REQUEST_REJECT_REASON_CODE_T reason = REQUEST_REJECT_REASON_NONE; + BOOL result = FALSE; + // TODO - Service and disinfection checks happen here. if ( TRUE == isFPDefeatured() ) { - requestNewFPOperationMode( FP_MODE_DPGP ); + result = requestPreGenDefStart(); } else { - requestNewFPOperationMode( FP_MODE_PGEN ); + result = requestPreGenStart(); } + + if ( FALSE == result ) + { + reason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; + } + return reason; }