Index: Accel.c =================================================================== diff -u -r0b0881c587fbebbd8096a85205362d1637d8bf58 -r2e34f38bf9411bb161e66fedfdb6725b098be2ec --- Accel.c (.../Accel.c) (revision 0b0881c587fbebbd8096a85205362d1637d8bf58) +++ Accel.c (.../Accel.c) (revision 2e34f38bf9411bb161e66fedfdb6725b098be2ec) @@ -84,11 +84,11 @@ static U32 accelReadingsCount = 0; ///< number of samples in flow rolling average buffer static F32 accelAvgVector[ NUM_OF_ACCEL_AXES ]; ///< Filtered accelerometer vector for tilt static F32 accelTilt[ NUM_OF_ACCEL_AXES ]; ///< Axis angles for tilt determination (filtered and converted to degrees) -static U32 accelTiltErrorTimerCounter = 0; ///< used for persistence requirement on tilt error +static U32 accelTiltErrorTimerCounter = 0; ///< used for persistence requirement on tilt error static BOOL tiltErrorDetected; ///< Flag indicates a tilt error has been detected and tilt must now come below alarm clear threshold to clear alarm. -static BOOL shockErrorDetected; ///< Flag indicates a shock error has been detected and g-force must now come below alarm clear threshold to clear alarm. - +static BOOL shockErrorDetected; ///< Flag indicates a shock error has been detected and g-force must now come below alarm clear threshold to clear alarm. + static ACCELEROMETER_SELF_TEST_STATE_T accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_START; ///< current accelerometer self-test state // ********** private function prototypes ********** @@ -126,8 +126,8 @@ accelMaxs[ axis ].ovData = 0.0; accelMaxs[ axis ].ovInitData = 0.0; accelMaxs[ axis ].override = OVERRIDE_RESET; - } - + } + tiltErrorDetected = FALSE; shockErrorDetected = FALSE; } @@ -504,15 +504,15 @@ { // excessive tilt must persist before triggering alarm if ( ++accelTiltErrorTimerCounter > MAX_TILT_PERSISTENCE ) - { - tiltErrorDetected = TRUE; + { + tiltErrorDetected = TRUE; #ifdef _DG_ SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_EXCESSIVE_TILT, x, y ) #else SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_EXCESSIVE_TILT, x, y ) #endif } - } + } else if ( ( TRUE == tiltErrorDetected ) && ( ( fabs( x ) > MAX_TILT_ANGLE_TO_CLEAR_ALARM ) || ( fabs( y ) > MAX_TILT_ANGLE_TO_CLEAR_ALARM ) ) ) { #ifdef _DG_ @@ -523,8 +523,8 @@ } else if ( ( fabs( x ) <= MAX_TILT_ANGLE_TO_CLEAR_ALARM ) && ( fabs( y ) <= MAX_TILT_ANGLE_TO_CLEAR_ALARM ) ) { - accelTiltErrorTimerCounter = 0; - tiltErrorDetected = FALSE; + accelTiltErrorTimerCounter = 0; + tiltErrorDetected = FALSE; #ifdef _DG_ clearAlarmCondition( ALARM_ID_DG_EXCESSIVE_TILT ); #else @@ -569,8 +569,8 @@ // has system just experienced an excessive shock? if ( maxAll > MAX_SHOCK_ACCELERATION ) - { - shockErrorDetected = TRUE; + { + shockErrorDetected = TRUE; #ifdef _DG_ SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_SHOCK, (F32)maxAxis, getMaxAccelAxis( maxAxis ) ) #else @@ -611,38 +611,38 @@ switch ( accelSelfTestState ) { case ACCELEROMETER_SELF_TEST_STATE_START: - { + { #ifdef _HD_ - HD_ACCELEROMETER_SENSOR_CAL_RECORD_T cal = getHDAccelerometerSensorCalibrationRecord(); + HD_ACCELEROMETER_SENSOR_CAL_RECORD_T cal = getHDAccelerometerSensorCalibrationRecord(); #endif #ifdef _DG_ - DG_ACCELEROMETER_SENSOR_CAL_RECORD_T cal = getDGAccelerometerSensorCalibrationRecord(); + DG_ACCELEROMETER_SENSOR_CAL_RECORD_T cal = getDGAccelerometerSensorCalibrationRecord(); #endif - accelCalOffsets[ ACCEL_AXIS_X ] = cal.accelXOffset; - accelCalOffsets[ ACCEL_AXIS_Y ] = cal.accelYOffset; - accelCalOffsets[ ACCEL_AXIS_Z ] = cal.accelZOffset; + accelCalOffsets[ ACCEL_AXIS_X ] = cal.accelXOffset; + accelCalOffsets[ ACCEL_AXIS_Y ] = cal.accelYOffset; + accelCalOffsets[ ACCEL_AXIS_Z ] = cal.accelZOffset; - // Ensure calibration has been done for accelerometer + // Ensure calibration has been done for accelerometer #ifndef DISABLE_CAL_CHECK - if ( cal.calibrationTime == 0 ) + if ( cal.calibrationTime == 0 ) #else - if ( FALSE ) + if ( FALSE ) #endif - { - result = SELF_TEST_STATUS_FAILED; - accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_COMPLETE; + { + result = SELF_TEST_STATUS_FAILED; + accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_COMPLETE; #ifdef _DG_ - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_ACCELEROMETER_SELF_TEST_FAILURE, 0 ) // TODO - use invalid cal fault instead. + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_ACCELEROMETER_SELF_TEST_FAILURE, 0 ) // TODO - use invalid cal fault instead. #else - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_ACCELEROMETER_SELF_TEST_FAILURE, 0 ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_ACCELEROMETER_SELF_TEST_FAILURE, 0 ) #endif + } + else + { + accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_IN_PROGRESS; + } } - else - { - accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_IN_PROGRESS; - } - } break; case ACCELEROMETER_SELF_TEST_STATE_IN_PROGRESS: