Index: firmware/App/Controllers/Buttons.c =================================================================== diff -u -ra0aca1a4d87df989303b4f7f41208a4916861afa -r1f3647830e9de0a1f0a4e445ce8d72d5525f51fb --- firmware/App/Controllers/Buttons.c (.../Buttons.c) (revision a0aca1a4d87df989303b4f7f41208a4916861afa) +++ firmware/App/Controllers/Buttons.c (.../Buttons.c) (revision 1f3647830e9de0a1f0a4e445ce8d72d5525f51fb) @@ -32,6 +32,13 @@ NUM_OF_BUTTON_SELF_TEST_STATES } BUTTON_SELF_TEST_STATE_T; +typedef enum Buttons +{ + BUTTON_OFF = 0, + BUTTON_STOP, + NUM_OF_BUTTONS +} BUTTON_T; + #define OFF_REQUEST_PULSE_COUNT 4 #define OFF_REQUEST_PULSE_INTVL 50 // ms #define STOP_BUTTON_PENDING_TIMEOUT 500 // ms @@ -211,14 +218,16 @@ case BUTTON_SELF_TEST_STATE_IN_PROGRESS: if ( ( dataOffButtonState.data == BUTTON_STATE_RELEASED ) && ( dataStopButtonState.data == BUTTON_STATE_RELEASED ) ) { - result = SELF_TEST_STATUS_PASSED; buttonSelfTestState = BUTTON_SELF_TEST_STATE_COMPLETE; + result = SELF_TEST_STATUS_PASSED; } else if ( TRUE == didTimeout( buttonSelfTestTimerCount, STUCK_BUTTON_TIMEOUT ) ) { - result = SELF_TEST_STATUS_FAILED; - // TODO - trigger stuck button POST failure + U32 almData = ( dataStopButtonState.data == BUTTON_STATE_PRESSED ? BUTTON_STOP : BUTTON_OFF ); + + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_STUCK_BUTTON_TEST_FAILED, almData ) buttonSelfTestState = BUTTON_SELF_TEST_STATE_COMPLETE; + result = SELF_TEST_STATUS_FAILED; } // else just stay in progress and wait for next call break;