Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r1f3647830e9de0a1f0a4e445ce8d72d5525f51fb -rea6ff77291eee02f351953b76c6720cf860c8be7 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 1f3647830e9de0a1f0a4e445ce8d72d5525f51fb) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision ea6ff77291eee02f351953b76c6720cf860c8be7) @@ -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 @@ -93,31 +93,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 +141,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; } }