From 0fb56356fbb0aa7ef6a77661ab568b5ba7044df4 Mon Sep 17 00:00:00 2001 From: Jon Trulson Date: Thu, 7 Jul 2016 17:50:29 -0600 Subject: [PATCH] bmx055: fix up some issues reported by static analysis Signed-off-by: Jon Trulson --- src/bmx055/bma250e.cxx | 32 +++++++++++++++++++------------- src/bmx055/bma250e.hpp | 2 +- src/bmx055/bmc150.cxx | 4 ++-- src/bmx055/bmc150.hpp | 4 ++-- src/bmx055/bmg160.cxx | 32 +++++++++++++++++++------------- src/bmx055/bmg160.hpp | 2 +- src/bmx055/bmi055.cxx | 4 ++-- src/bmx055/bmi055.hpp | 4 ++-- src/bmx055/bmm150.cxx | 23 ++++++++++++++++++----- src/bmx055/bmm150.hpp | 2 +- src/bmx055/bmx055.cxx | 6 +++--- src/bmx055/bmx055.hpp | 6 +++--- 12 files changed, 73 insertions(+), 48 deletions(-) diff --git a/src/bmx055/bma250e.cxx b/src/bmx055/bma250e.cxx index bdf41ca1..cee8a953 100644 --- a/src/bmx055/bma250e.cxx +++ b/src/bmx055/bma250e.cxx @@ -40,12 +40,9 @@ static float c2f(float c) return (c * (9.0 / 5.0) + 32.0); } -BMA250E::BMA250E(int bus, uint8_t addr, int cs) : +BMA250E::BMA250E(int bus, int addr, int cs) : m_i2c(0), m_spi(0), m_gpioIntr1(0), m_gpioIntr2(0), m_gpioCS(0) { - m_addr = addr; - m_isSPI = false; - m_accX = 0; m_accY = 0; m_accZ = 0; @@ -53,7 +50,15 @@ BMA250E::BMA250E(int bus, uint8_t addr, int cs) : m_temperature = 0.0; if (addr < 0) - m_isSPI = true; + { + m_addr = 0; + m_isSPI = true; + } + else + { + m_addr = uint8_t(addr); + m_isSPI = false; + } if (m_isSPI) { @@ -127,6 +132,13 @@ BMA250E::~BMA250E() { uninstallISR(INTERRUPT_INT1); uninstallISR(INTERRUPT_INT2); + + if (m_i2c) + delete m_i2c; + if (m_spi) + delete m_spi; + if(m_gpioCS) + delete m_gpioCS; } void BMA250E::init(POWER_MODE_T pwr, RANGE_T range, BW_T bw) @@ -160,20 +172,14 @@ void BMA250E::init(POWER_MODE_T pwr, RANGE_T range, BW_T bw) void BMA250E::update() { - int bufLen = 0; - uint8_t startReg = 0; + int bufLen = 7; // max, non-FIFO + uint8_t startReg = REG_ACCD_X_LSB; if (m_useFIFO) { bufLen = 6; startReg = REG_FIFO_DATA; } - else - { - // non FIFO, read acc regs directly (including temp) - bufLen = 7; - startReg = REG_ACCD_X_LSB; - } uint8_t buf[bufLen]; diff --git a/src/bmx055/bma250e.hpp b/src/bmx055/bma250e.hpp index 46ae471f..8d59a2cb 100644 --- a/src/bmx055/bma250e.hpp +++ b/src/bmx055/bma250e.hpp @@ -964,7 +964,7 @@ namespace upm { * @param cs The gpio pin to use for the SPI Chip Select. -1 for * I2C or for SPI with a hardware controlled pin. */ - BMA250E(int bus=BMA250E_I2C_BUS, uint8_t addr=BMA250E_DEFAULT_ADDR, + BMA250E(int bus=BMA250E_I2C_BUS, int addr=BMA250E_DEFAULT_ADDR, int cs=-1); /** diff --git a/src/bmx055/bmc150.cxx b/src/bmx055/bmc150.cxx index 26d3f62b..afef4409 100644 --- a/src/bmx055/bmc150.cxx +++ b/src/bmx055/bmc150.cxx @@ -32,8 +32,8 @@ using namespace upm; using namespace std; -BMC150::BMC150(int accelBus, uint8_t accelAddr, int accelCS, - int magBus, uint8_t magAddr, int magCS) : +BMC150::BMC150(int accelBus, int accelAddr, int accelCS, + int magBus, int magAddr, int magCS) : m_accel(0), m_mag(0) { // if -1 is supplied as a bus for any of these, we will not diff --git a/src/bmx055/bmc150.hpp b/src/bmx055/bmc150.hpp index c570af01..9992b6df 100644 --- a/src/bmx055/bmc150.hpp +++ b/src/bmx055/bmc150.hpp @@ -93,10 +93,10 @@ namespace upm { * I2C or for SPI with a hardware controlled pin. */ BMC150(int accelBus=BMC150_DEFAULT_BUS, - uint8_t accelAddr=BMC150_DEFAULT_ACC_ADDR, + int accelAddr=BMC150_DEFAULT_ACC_ADDR, int accelCS=-1, int magBus=BMC150_DEFAULT_BUS, - uint8_t magAddr=BMC150_DEFAULT_MAG_ADDR, + int magAddr=BMC150_DEFAULT_MAG_ADDR, int magCS=-1); /** diff --git a/src/bmx055/bmg160.cxx b/src/bmx055/bmg160.cxx index 45593b6a..1a750ab9 100644 --- a/src/bmx055/bmg160.cxx +++ b/src/bmx055/bmg160.cxx @@ -42,12 +42,9 @@ static float c2f(float c) return (c * (9.0 / 5.0) + 32.0); } -BMG160::BMG160(int bus, uint8_t addr, int cs) : +BMG160::BMG160(int bus, int addr, int cs) : m_i2c(0), m_spi(0), m_gpioIntr1(0), m_gpioIntr2(0), m_gpioCS(0) { - m_addr = addr; - m_isSPI = false; - m_gyrX = 0; m_gyrY = 0; m_gyrZ = 0; @@ -55,7 +52,15 @@ BMG160::BMG160(int bus, uint8_t addr, int cs) : m_temperature = 0.0; if (addr < 0) - m_isSPI = true; + { + m_addr = 0; + m_isSPI = true; + } + else + { + m_addr = uint8_t(addr); + m_isSPI = false; + } if (m_isSPI) { @@ -105,6 +110,13 @@ BMG160::~BMG160() { uninstallISR(INTERRUPT_INT1); uninstallISR(INTERRUPT_INT2); + + if (m_i2c) + delete m_i2c; + if (m_spi) + delete m_spi; + if(m_gpioCS) + delete m_gpioCS; } void BMG160::init(POWER_MODE_T pwr, RANGE_T range, BW_T bw) @@ -132,20 +144,14 @@ void BMG160::init(POWER_MODE_T pwr, RANGE_T range, BW_T bw) void BMG160::update() { - int bufLen = 0; - uint8_t startReg = 0; + int bufLen = 7; // max, non-FIFO + uint8_t startReg = REG_RATE_X_LSB; if (m_useFIFO) { bufLen = 6; startReg = REG_FIFO_DATA; } - else - { - // non FIFO, read acc regs directly (including temp) - bufLen = 7; - startReg = REG_RATE_X_LSB; - } uint8_t buf[bufLen]; diff --git a/src/bmx055/bmg160.hpp b/src/bmx055/bmg160.hpp index 9b7b3893..6203434f 100644 --- a/src/bmx055/bmg160.hpp +++ b/src/bmx055/bmg160.hpp @@ -823,7 +823,7 @@ namespace upm { * I2C or for SPI with a hardware controlled pin. * @param theChipID The chip ID to use for validation */ - BMG160(int bus=BMG160_I2C_BUS, uint8_t addr=BMG160_DEFAULT_ADDR, + BMG160(int bus=BMG160_I2C_BUS, int addr=BMG160_DEFAULT_ADDR, int cs=-1); /** diff --git a/src/bmx055/bmi055.cxx b/src/bmx055/bmi055.cxx index 0b348f76..41e3083c 100644 --- a/src/bmx055/bmi055.cxx +++ b/src/bmx055/bmi055.cxx @@ -32,8 +32,8 @@ using namespace upm; using namespace std; -BMI055::BMI055(int accelBus, uint8_t accelAddr, int accelCS, - int gyroBus, uint8_t gyroAddr, int gyroCS) : +BMI055::BMI055(int accelBus, int accelAddr, int accelCS, + int gyroBus, int gyroAddr, int gyroCS) : m_accel(0), m_gyro(0) { // if -1 is supplied as a bus for any of these, we will not diff --git a/src/bmx055/bmi055.hpp b/src/bmx055/bmi055.hpp index 4212643c..0fb1e7bc 100644 --- a/src/bmx055/bmi055.hpp +++ b/src/bmx055/bmi055.hpp @@ -85,10 +85,10 @@ namespace upm { * I2C or for SPI with a hardware controlled pin. */ BMI055(int accelBus=BMA250E_I2C_BUS, - uint8_t accelAddr=BMA250E_DEFAULT_ADDR, + int accelAddr=BMA250E_DEFAULT_ADDR, int accelCS=-1, int gyroBus=BMG160_I2C_BUS, - uint8_t gyroAddr=BMG160_DEFAULT_ADDR, + int gyroAddr=BMG160_DEFAULT_ADDR, int gyroCS=-1); /** diff --git a/src/bmx055/bmm150.cxx b/src/bmx055/bmm150.cxx index 2e98ab2f..9a19fe00 100644 --- a/src/bmx055/bmm150.cxx +++ b/src/bmx055/bmm150.cxx @@ -92,12 +92,9 @@ using namespace upm; using namespace std; -BMM150::BMM150(int bus, uint8_t addr, int cs) : +BMM150::BMM150(int bus, int addr, int cs) : m_i2c(0), m_spi(0), m_gpioIntr(0), m_gpioDR(0), m_gpioCS(0) { - m_addr = addr; - m_isSPI = false; - m_magX = 0; m_magY = 0; m_magZ = 0; @@ -119,7 +116,16 @@ BMM150::BMM150(int bus, uint8_t addr, int cs) : m_dig_xy1 = 0; if (addr < 0) - m_isSPI = true; + { + m_addr = 0; + m_isSPI = true; + } + else + { + m_addr = uint8_t(addr); + m_isSPI = false; + } + if (m_isSPI) { @@ -177,6 +183,13 @@ BMM150::~BMM150() { uninstallISR(INTERRUPT_INT); uninstallISR(INTERRUPT_DR); + + if (m_i2c) + delete m_i2c; + if (m_spi) + delete m_spi; + if(m_gpioCS) + delete m_gpioCS; } void BMM150::init(USAGE_PRESETS_T usage) diff --git a/src/bmx055/bmm150.hpp b/src/bmx055/bmm150.hpp index ab20e8cf..db805e92 100644 --- a/src/bmx055/bmm150.hpp +++ b/src/bmx055/bmm150.hpp @@ -320,7 +320,7 @@ namespace upm { * I2C or for SPI with a hardware controlled pin. * @param theChipID The chip ID to use for validation */ - BMM150(int bus=BMM150_I2C_BUS, uint8_t addr=BMM150_DEFAULT_ADDR, + BMM150(int bus=BMM150_I2C_BUS, int addr=BMM150_DEFAULT_ADDR, int cs=-1); /** diff --git a/src/bmx055/bmx055.cxx b/src/bmx055/bmx055.cxx index 9d36a5b1..2c4f10f1 100644 --- a/src/bmx055/bmx055.cxx +++ b/src/bmx055/bmx055.cxx @@ -32,9 +32,9 @@ using namespace upm; using namespace std; -BMX055::BMX055(int accelBus, uint8_t accelAddr, int accelCS, - int gyroBus, uint8_t gyroAddr, int gyroCS, - int magBus, uint8_t magAddr, int magCS) : +BMX055::BMX055(int accelBus, int accelAddr, int accelCS, + int gyroBus, int gyroAddr, int gyroCS, + int magBus, int magAddr, int magCS) : m_accel(0), m_gyro(0), m_mag(0) { // if -1 is supplied as a bus for any of these, we will not diff --git a/src/bmx055/bmx055.hpp b/src/bmx055/bmx055.hpp index 3f03d602..7addfd9c 100644 --- a/src/bmx055/bmx055.hpp +++ b/src/bmx055/bmx055.hpp @@ -100,13 +100,13 @@ namespace upm { * I2C or for SPI with a hardware controlled pin. */ BMX055(int accelBus=BMA250E_I2C_BUS, - uint8_t accelAddr=BMA250E_DEFAULT_ADDR, + int accelAddr=BMA250E_DEFAULT_ADDR, int accelCS=-1, int gyroBus=BMG160_I2C_BUS, - uint8_t gyroAddr=BMG160_DEFAULT_ADDR, + int gyroAddr=BMG160_DEFAULT_ADDR, int gyroCS=-1, int magBus=BMM150_I2C_BUS, - uint8_t magAddr=BMM150_DEFAULT_ADDR, + int magAddr=BMM150_DEFAULT_ADDR, int magCS=-1); /**