Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -ra635fc9674913460c74831add7886c85d8aaf8f1 -rfe01fd0124c0c43737474781730608d55d0f0bda --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision a635fc9674913460c74831add7886c85d8aaf8f1) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision fe01fd0124c0c43737474781730608d55d0f0bda) @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. @@ -29,11 +29,11 @@ typedef enum POST_States { POST_STATE_START = 0, + POST_STATE_WATCHDOG, POST_STATE_ALARM_LAMP, - POST_STATE_STUCK_BUTTON, POST_STATE_FPGA, POST_STATE_RTC, - POST_STATE_WATCHDOG, + POST_STATE_STUCK_BUTTON, POST_STATE_COMPLETED, POST_STATE_FAILED, NUM_OF_POST_STATES @@ -79,7 +79,6 @@ *************************************************************************/ void transitionToInitAndPOSTMode( void ) { - requestAlarmLampPattern( LAMP_PATTERN_MANUAL ); } /************************************************************************* @@ -95,25 +94,25 @@ { SELF_TEST_STATUS_T testStatus = SELF_TEST_STATUS_IN_PROGRESS; - BOOL stop = isStopButtonPressed(); + // 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 ); @@ -124,9 +123,10 @@ 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; @@ -148,18 +148,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; } } @@ -215,6 +207,7 @@ } else if ( testStatus == SELF_TEST_STATUS_FAILED ) { + requestAlarmLampPattern( LAMP_PATTERN_FAULT ); tempPOSTPassed = FALSE; result = POST_STATE_FAILED; }