DCM: prevent a segmentation fault when compass is not enabled

when compass is disabled _compass is NULL
This commit is contained in:
Andrew Tridgell 2012-01-13 15:48:07 +11:00
parent 622217357c
commit f4490b62c7
1 changed files with 8 additions and 3 deletions

View File

@ -195,7 +195,9 @@ AP_DCM::accel_adjust(void)
void void
AP_DCM::matrix_reset(void) AP_DCM::matrix_reset(void)
{ {
_compass->null_offsets_disable(); if (_compass != NULL) {
_compass->null_offsets_disable();
}
_dcm_matrix.a.x = 1.0f; _dcm_matrix.a.x = 1.0f;
_dcm_matrix.a.y = 0.0f; _dcm_matrix.a.y = 0.0f;
_dcm_matrix.a.z = 0.0f; _dcm_matrix.a.z = 0.0f;
@ -208,8 +210,11 @@ AP_DCM::matrix_reset(void)
_omega_I.x = 0.0f; _omega_I.x = 0.0f;
_omega_I.y = 0.0f; _omega_I.y = 0.0f;
_omega_I.z = 0.0f; _omega_I.z = 0.0f;
_compass->null_offsets_enable(); // This call is needed to restart the nulling if (_compass != NULL) {
// Otherwise the reset in the DCM matrix can mess up the nulling _compass->null_offsets_enable(); // This call is needed to restart the nulling
// Otherwise the reset in the DCM matrix can mess up
// the nulling
}
} }
/************************************************* /*************************************************