From fffedae3e073c6f6bcbdbac98840804182179f69 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Wed, 22 Jul 2015 17:15:15 -0300 Subject: [PATCH] AP_Compass: AK8963: reduce stack usage and zero out buffers Since we are not using MPU9250's fifo to get samples from AK8963 we will always read only 1 sample (+ control registers). --- libraries/AP_Compass/AP_Compass_AK8963.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass_AK8963.cpp b/libraries/AP_Compass/AP_Compass_AK8963.cpp index 80c1bbc6e6..957b7df5d7 100644 --- a/libraries/AP_Compass/AP_Compass_AK8963.cpp +++ b/libraries/AP_Compass/AP_Compass_AK8963.cpp @@ -397,25 +397,22 @@ void AP_AK8963_SerialBus_MPU9250::register_read(uint8_t address, uint8_t *value, void AP_AK8963_SerialBus_MPU9250::_read(uint8_t address, uint8_t *buf, uint32_t count) { - ASSERT(count < 150); - uint8_t tx[150]; - uint8_t rx[150]; + ASSERT(count < 32); + + address |= READ_FLAG; + uint8_t tx[32] = { address, }; + uint8_t rx[32] = { }; - tx[0] = address | READ_FLAG; - tx[1] = 0; _spi->transaction(tx, rx, count + 1); - memcpy(buf, rx + 1, count); } void AP_AK8963_SerialBus_MPU9250::_write(uint8_t address, const uint8_t *buf, uint32_t count) { ASSERT(count < 2); - uint8_t tx[2]; + uint8_t tx[2] = { address, }; - tx[0] = address; memcpy(tx+1, buf, count); - _spi->transaction(tx, NULL, count + 1); }