diff --git a/libraries/AP_Compass/AP_Compass_VRBRAIN.cpp b/libraries/AP_Compass/AP_Compass_VRBRAIN.cpp index fe42a63929..7f05388a66 100644 --- a/libraries/AP_Compass/AP_Compass_VRBRAIN.cpp +++ b/libraries/AP_Compass/AP_Compass_VRBRAIN.cpp @@ -57,10 +57,8 @@ bool AP_Compass_VRBRAIN::init(void) } for (uint8_t i=0; i<_num_instances; i++) { -#ifdef DEVIOCGDEVICEID // get device id _dev_id[i] = ioctl(_mag_fd[i], DEVIOCGDEVICEID, 0); -#endif // average over up to 20 samples if (ioctl(_mag_fd[i], SENSORIOCSQUEUEDEPTH, 20) != 0) { @@ -70,6 +68,11 @@ bool AP_Compass_VRBRAIN::init(void) // remember if the compass is external _is_external[i] = (ioctl(_mag_fd[i], MAGIOCGEXTERNAL, 0) > 0); +#if defined(CONFIG_ARCH_BOARD_VRBRAIN_V45) + //deal with situations where user has cut internal mag on VRBRAIN 4.5 + //and uses only one external mag attached to the internal I2C bus + _is_external[i] = _external.load() ? _external.get() : _is_external[i]; +#endif if (_is_external[i]) { hal.console->printf("Using external compass[%u]\n", (unsigned)i); } @@ -109,7 +112,7 @@ bool AP_Compass_VRBRAIN::read(void) _sum[i].rotate(MAG_BOARD_ORIENTATION); // override any user setting of COMPASS_EXTERNAL - _external.set(_is_external[0]); + //_external.set(_is_external[0]); if (_is_external[i]) { // add user selectable orientation