Index: Accel.c =================================================================== diff -u -r68b76edaadee8d345f68c0d1686a0a2b6e5f568f -r4f5dd6461770d92d651d83b05c38be7da6db2f7d --- Accel.c (.../Accel.c) (revision 68b76edaadee8d345f68c0d1686a0a2b6e5f568f) +++ Accel.c (.../Accel.c) (revision 4f5dd6461770d92d651d83b05c38be7da6db2f7d) @@ -638,21 +638,15 @@ getMeasuredAccelAxis( ACCEL_AXIS_Y ), getMeasuredAccelAxis( ACCEL_AXIS_Z ) ); - if ( fabs( NOMINAL_ACCEL_VECTOR_LENGTH - vectorLen ) < MAX_ACCEL_VECTOR_LENGTH_ERROR ) + if ( fabs( NOMINAL_ACCEL_VECTOR_LENGTH - vectorLen ) >= MAX_ACCEL_VECTOR_LENGTH_ERROR ) { - result = SELF_TEST_STATUS_PASSED; - } - else - { // count the failures postFailCounter++; - if ( postFailCounter < ACCEL_POST_TEST_FAIL_MAX ) + if ( postFailCounter >= ACCEL_POST_TEST_FAIL_MAX ) { - result = SELF_TEST_STATUS_PASSED; - } - else - { result = SELF_TEST_STATUS_FAILED; + // Already failed, no need to repeat test + postTestCounter = ACCEL_POST_TEST_COUNT; #ifdef _DG_ SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_ACCELEROMETER_SELF_TEST_FAILURE, vectorLen ) #else @@ -669,6 +663,11 @@ } else { + // Test complete, return Pass / Fail. + if ( SELF_TEST_STATUS_FAILED != result ) + { + result = SELF_TEST_STATUS_PASSED; + } accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_COMPLETE; } }