Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r52863cba9685f31136ab3f4b4764a17ccf34fc05 -rf7e3018ec6ab762fe08efb42b21fb2ca970174b0 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 52863cba9685f31136ab3f4b4764a17ccf34fc05) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision f7e3018ec6ab762fe08efb42b21fb2ca970174b0) @@ -28,10 +28,10 @@ typedef enum POST_States { POST_STATE_START = 0, + POST_STATE_WATCHDOG, POST_STATE_ALARM_LAMP, - POST_STATE_STUCK_BUTTON, POST_STATE_FPGA, - POST_STATE_WATCHDOG, + POST_STATE_STUCK_BUTTON, POST_STATE_COMPLETED, POST_STATE_FAILED, NUM_OF_POST_STATES @@ -77,7 +77,6 @@ *************************************************************************/ void transitionToInitAndPOSTMode( void ) { - requestAlarmLampPattern( LAMP_PATTERN_MANUAL ); } /************************************************************************* @@ -93,31 +92,33 @@ { SELF_TEST_STATUS_T testStatus = SELF_TEST_STATUS_IN_PROGRESS; + // TODO - send POST status on CAN + // execute current POST state switch ( postState ) { case POST_STATE_START: - postState = POST_STATE_ALARM_LAMP; + postState = POST_STATE_WATCHDOG; break; + case POST_STATE_WATCHDOG: + testStatus = execWatchdogTest(); + postState = handlePOSTStatus( testStatus ); // ignoring return value because last test + break; + case POST_STATE_ALARM_LAMP: testStatus = execAlarmLampTest(); postState = handlePOSTStatus( testStatus ); break; - case POST_STATE_STUCK_BUTTON: - testStatus = execStuckButtonTest(); - postState = handlePOSTStatus( testStatus ); - break; - case POST_STATE_FPGA: testStatus = execFPGATest(); postState = handlePOSTStatus( testStatus ); break; - case POST_STATE_WATCHDOG: - testStatus = execWatchdogTest(); - handlePOSTStatus( testStatus ); // ignoring return value because last test + case POST_STATE_STUCK_BUTTON: + testStatus = execStuckButtonTest(); + handlePOSTStatus( testStatus ); if ( TRUE == tempPOSTPassed ) { postState = POST_STATE_COMPLETED; @@ -139,18 +140,10 @@ break; case POST_STATE_FAILED: -#ifndef RM46_EVAL_BOARD_TARGET - // TODO - send POST status on CAN - // will want POST faults to wait for us to get here before sending us to fault mode - requestNewOperationMode( MODE_FAUL ); -#else - requestNewOperationMode( MODE_STAN ); -#endif - break; - + // should not get here - any failed post test should have already triggered a fault and taken us to fault mode default: - postState = POST_STATE_FAILED; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE, postState ) + postState = POST_STATE_FAILED; break; } } @@ -206,6 +199,7 @@ } else if ( testStatus == SELF_TEST_STATUS_FAILED ) { + requestAlarmLampPattern( LAMP_PATTERN_FAULT ); tempPOSTPassed = FALSE; result = POST_STATE_FAILED; }