diff --git a/src/sensors/softfusion/drivers/bmi270.h b/src/sensors/softfusion/drivers/bmi270.h index be2b780..36e210b 100644 --- a/src/sensors/softfusion/drivers/bmi270.h +++ b/src/sensors/softfusion/drivers/bmi270.h @@ -258,6 +258,7 @@ struct BMI270 { Regs::InitCtrl::reg, Regs::InitCtrl::valueStartInit ); + auto* firmware_buffer = new uint8_t[RegisterInterface::MaxTransactionLength]; for (uint16_t pos = 0; pos < sizeof(bmi270_firmware);) { // tell the device current position @@ -273,13 +274,11 @@ struct BMI270 { static_cast(sizeof(bmi270_firmware) - pos), RegisterInterface::MaxTransactionLength ); - m_RegisterInterface.writeBytes( - Regs::InitData, - burstWrite, - const_cast(bmi270_firmware + pos) - ); + memcpy_P(firmware_buffer, bmi270_firmware + pos, burstWrite); + m_RegisterInterface.writeBytes(Regs::InitData, burstWrite, firmware_buffer); pos += burstWrite; } + delete[] firmware_buffer; m_RegisterInterface.writeReg(Regs::InitCtrl::reg, Regs::InitCtrl::valueEndInit); delay(140);