1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-13 19:40:31 +03:00

Fix default axis values for arbitrary gyro alignment

Prevents clean installs from displaying the sensor alignment as changed values in the `diff`.

Sets the default values for the sensor alignment axes to match the selected sensor alignment. Previously the axis values defaulted to 0 so when the active value was set based on the sensor alignment these values would appear as changes in the `diff` even though they were actually the default values. Corrected the default values to be based on the selected sensor alignment default.
This commit is contained in:
Bruce Luckcuck 2019-07-23 12:33:41 -04:00
parent 924c40a50d
commit 3da40f7ec3
2 changed files with 21 additions and 12 deletions

View file

@ -71,20 +71,32 @@ PG_REGISTER_ARRAY_WITH_RESET_FN(gyroDeviceConfig_t, MAX_GYRODEV_COUNT, gyroDevic
void pgResetFn_gyroDeviceConfig(gyroDeviceConfig_t *devconf) void pgResetFn_gyroDeviceConfig(gyroDeviceConfig_t *devconf)
{ {
devconf[0].index = 0; devconf[0].index = 0;
sensorAlignment_t customAlignment1 = CUSTOM_ALIGN_CW0_DEG;
#ifdef GYRO_1_CUSTOM_ALIGN
customAlignment1 = GYRO_1_CUSTOM_ALIGN;
#else
buildAlignmentFromStandardAlignment(&customAlignment1, GYRO_1_ALIGN);
#endif // GYRO_1_CUSTOM_ALIGN
// All multi-gyro boards use SPI based gyros. // All multi-gyro boards use SPI based gyros.
#ifdef USE_SPI_GYRO #ifdef USE_SPI_GYRO
gyroResetSpiDeviceConfig(&devconf[0], GYRO_1_SPI_INSTANCE, IO_TAG(GYRO_1_CS_PIN), IO_TAG(GYRO_1_EXTI_PIN), GYRO_1_ALIGN, GYRO_1_CUSTOM_ALIGN); gyroResetSpiDeviceConfig(&devconf[0], GYRO_1_SPI_INSTANCE, IO_TAG(GYRO_1_CS_PIN), IO_TAG(GYRO_1_EXTI_PIN), GYRO_1_ALIGN, customAlignment1);
#ifdef USE_MULTI_GYRO #ifdef USE_MULTI_GYRO
devconf[1].index = 1; devconf[1].index = 1;
gyroResetSpiDeviceConfig(&devconf[1], GYRO_2_SPI_INSTANCE, IO_TAG(GYRO_2_CS_PIN), IO_TAG(GYRO_2_EXTI_PIN), GYRO_2_ALIGN, GYRO_2_CUSTOM_ALIGN); sensorAlignment_t customAlignment2 = CUSTOM_ALIGN_CW0_DEG;
#endif #ifdef GYRO_2_CUSTOM_ALIGN
#endif customAlignment2 = GYRO_2_CUSTOM_ALIGN;
#else
buildAlignmentFromStandardAlignment(&customAlignment2, GYRO_2_ALIGN);
#endif // GYRO_2_CUSTOM_ALIGN
gyroResetSpiDeviceConfig(&devconf[1], GYRO_2_SPI_INSTANCE, IO_TAG(GYRO_2_CS_PIN), IO_TAG(GYRO_2_EXTI_PIN), GYRO_2_ALIGN, customAlignment2);
#endif // USE_MULTI_GYRO
#endif // USE_SPI_GYRO
// I2C gyros appear as a sole gyro in single gyro boards. // I2C gyros appear as a sole gyro in single gyro boards.
#if defined(USE_I2C_GYRO) && !defined(USE_MULTI_GYRO) #if defined(USE_I2C_GYRO) && !defined(USE_MULTI_GYRO)
devconf[0].i2cBus = I2C_DEV_TO_CFG(I2CINVALID); // XXX Not required? devconf[0].i2cBus = I2C_DEV_TO_CFG(I2CINVALID); // XXX Not required?
gyroResetI2cDeviceConfig(&devconf[0], I2C_DEVICE, IO_TAG(GYRO_1_EXTI_PIN), GYRO_1_ALIGN, GYRO_1_CUSTOM_ALIGN); gyroResetI2cDeviceConfig(&devconf[0], I2C_DEVICE, IO_TAG(GYRO_1_EXTI_PIN), GYRO_1_ALIGN, customAlignment1);
#endif #endif
// Special treatment for very rare F3 targets with variants having either I2C or SPI acc/gyro chip; mark it for run time detection. // Special treatment for very rare F3 targets with variants having either I2C or SPI acc/gyro chip; mark it for run time detection.

View file

@ -365,13 +365,10 @@
#define GYRO_2_ALIGN CW0_DEG #define GYRO_2_ALIGN CW0_DEG
#endif #endif
#if !defined(GYRO_1_CUSTOM_ALIGN) // Previously there was logic here to default GYRO_1_CUSTOM_ALIGN and GYRO_2_CUSTOM_ALIGN
#define GYRO_1_CUSTOM_ALIGN CUSTOM_ALIGN_CW0_DEG // to CUSTOM_ALIGN_CW0_DEG if they weren't defined in the target. The defaulting logic
#endif // has been moved to pg/gyrodev.c to set the custom alignment based on the sensor alignment
// if a custom alignment is not applied in the target.
#if !defined(GYRO_2_CUSTOM_ALIGN)
#define GYRO_2_CUSTOM_ALIGN CUSTOM_ALIGN_CW0_DEG
#endif
#ifdef USE_VCP #ifdef USE_VCP
#ifndef USB_DETECT_PIN #ifndef USB_DETECT_PIN