Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r1d07de4e970f54f2ae1786ef546cf5567df9ba8e -reb5370021e7e60c18732382a512886da0f9b276d --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 1d07de4e970f54f2ae1786ef546cf5567df9ba8e) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision eb5370021e7e60c18732382a512886da0f9b276d) @@ -550,6 +550,12 @@ { if ( opMode < NUM_OF_DG_MODES ) { + // reset POST passed flag if DG restarted or faulted or went to service mode + if ( ( opMode < DG_MODE_STAN ) && ( dgCurrentOpMode >= DG_MODE_STAN ) ) + { + signalDGPOSTFinalResult( FALSE ); + } + // update DG op mode and sub-mode dgCurrentOpMode = (DG_OP_MODE_T)opMode; dgSubMode = subMode; } Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r1d07de4e970f54f2ae1786ef546cf5567df9ba8e -reb5370021e7e60c18732382a512886da0f9b276d --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 1d07de4e970f54f2ae1786ef546cf5567df9ba8e) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision eb5370021e7e60c18732382a512886da0f9b276d) @@ -448,6 +448,18 @@ /*********************************************************************//** * @brief + * The isDGPOSTPassed function determines whether all DG POST have passed. + * @details Inputs: postPassed + * @details Outputs: none + * @return true if all DG POST tests have passed, false if not + *************************************************************************/ +BOOL isDGPOSTPassed( void ) +{ + return dgPOSTPassed; +} + +/*********************************************************************//** + * @brief * The handlePOSTStatus function handles a status result returned by a * POST function. * @details Inputs: testStatus Index: firmware/App/Modes/ModeInitPOST.h =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -reb5370021e7e60c18732382a512886da0f9b276d --- firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision eb5370021e7e60c18732382a512886da0f9b276d) @@ -37,6 +37,7 @@ U32 execInitAndPOSTMode( void ); // Execute the init. & POST mode state machine (call from OperationModes) BOOL isPOSTCompleted( void ); // Determine whether POST has completed yet BOOL isPOSTPassed( void ); // Determine whether POST has passed +BOOL isDGPOSTPassed( void ); // Determine whether DG POST has passed void signalAlarmActionToInitAndPOSTMode( ALARM_ACTION_T action ); // Execute alarm action as appropriate for fault mode void signalUIPOSTFinalResult( BOOL passed ); // Record UI POST result void signalDGPOSTFinalResult( BOOL passed ); // Record DG POST result Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r19f13e67288117e7f81c1245a75cc6b5f8aaf899 -reb5370021e7e60c18732382a512886da0f9b276d --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 19f13e67288117e7f81c1245a75cc6b5f8aaf899) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision eb5370021e7e60c18732382a512886da0f9b276d) @@ -284,7 +284,7 @@ REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NONE; // Verify HD is in standby mode waiting for treatment start request - if ( ( MODE_STAN != getCurrentOperationMode() ) || ( STANDBY_WAIT_FOR_TREATMENT_STATE != currentStandbyState ) ) + if ( ( MODE_STAN != getCurrentOperationMode() ) || ( STANDBY_WAIT_FOR_TREATMENT_STATE != currentStandbyState ) || ( isPOSTPassed() != TRUE ) ) { rejReason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; } @@ -299,7 +299,7 @@ rejReason = REQUEST_REJECT_REASON_DG_INCOMPATIBLE; } // Verify DG is not busy - else if ( ( DG_MODE_STAN != getDGOpMode() ) || ( DG_STANDBY_MODE_STATE_IDLE != getDGSubMode() ) ) + else if ( ( DG_MODE_STAN != getDGOpMode() ) || ( DG_STANDBY_MODE_STATE_IDLE != getDGSubMode() ) || ( isDGPOSTPassed() != TRUE ) ) { rejReason = REQUEST_REJECT_REASON_DG_NOT_IN_STANDBY_IDLE_STATE; }