diff --git a/sw/airborne/peripherals/mpu9250_i2c.c b/sw/airborne/peripherals/mpu9250_i2c.c index 3237c35224..25ae8e298b 100644 --- a/sw/airborne/peripherals/mpu9250_i2c.c +++ b/sw/airborne/peripherals/mpu9250_i2c.c @@ -114,8 +114,15 @@ void mpu9250_i2c_event(struct Mpu9250_I2c *mpu) mpu->data_rates.rates.r = Int16FromBuf(mpu->i2c_trans.buf, 13); // if we are reading slaves through the mpu, copy the ext_sens_data - if ((mpu->config.i2c_bypass == FALSE) && (mpu->config.nb_slaves > 0)) - memcpy(mpu->data_ext, (void *) &(mpu->i2c_trans.buf[15]), mpu->config.nb_bytes - 15); + if ((mpu->config.i2c_bypass == FALSE) && (mpu->config.nb_slaves > 0)) { + /* the buffer is volatile, since filled from ISR + * but we know it's ok to use it here so we silence the warning + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" + memcpy(mpu->data_ext, (uint8_t *) &(mpu->i2c_trans.buf[15]), mpu->config.nb_bytes - 15); +#pragma GCC diagnostic pop + } mpu->data_available = TRUE; } diff --git a/sw/airborne/peripherals/mpu9250_spi.c b/sw/airborne/peripherals/mpu9250_spi.c index 0fff4d5330..82f03067e1 100644 --- a/sw/airborne/peripherals/mpu9250_spi.c +++ b/sw/airborne/peripherals/mpu9250_spi.c @@ -114,8 +114,15 @@ void mpu9250_spi_event(struct Mpu9250_Spi *mpu) mpu->data_rates.rates.r = Int16FromBuf(mpu->rx_buf, 14); // if we are reading slaves, copy the ext_sens_data - if (mpu->config.nb_slaves > 0) - memcpy(mpu->data_ext, (void *) &(mpu->rx_buf[16]), mpu->config.nb_bytes - 15); + if (mpu->config.nb_slaves > 0) { + /* the buffer is volatile, since filled from ISR + * but we know it's ok to use it here so we silence the warning + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" + memcpy(mpu->data_ext, (uint8_t *) &(mpu->rx_buf[16]), mpu->config.nb_bytes - 15); +#pragma GCC diagnostic pop + } mpu->data_available = TRUE; }