From f919c409bb68b5b263ccd6d4520a64fb5a69d295 Mon Sep 17 00:00:00 2001 From: Michael du Breuil Date: Sun, 23 Apr 2017 23:25:52 -0700 Subject: [PATCH] AP_BattMonitor: Remove redundant state copy Every backend stored a instance reference, which wasn't used in most locations which is redundant given that the state already tracks the instance for us as well. --- libraries/AP_BattMonitor/AP_BattMonitor.cpp | 8 ++++---- libraries/AP_BattMonitor/AP_BattMonitor_Analog.cpp | 8 ++++---- libraries/AP_BattMonitor/AP_BattMonitor_Analog.h | 2 +- libraries/AP_BattMonitor/AP_BattMonitor_Backend.cpp | 9 ++++----- libraries/AP_BattMonitor/AP_BattMonitor_Backend.h | 3 +-- libraries/AP_BattMonitor/AP_BattMonitor_Bebop.h | 4 ++-- libraries/AP_BattMonitor/AP_BattMonitor_SMBus.h | 2 +- libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.cpp | 4 ++-- libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.h | 2 +- libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp | 4 ++-- libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.h | 2 +- 11 files changed, 23 insertions(+), 25 deletions(-) diff --git a/libraries/AP_BattMonitor/AP_BattMonitor.cpp b/libraries/AP_BattMonitor/AP_BattMonitor.cpp index 5f3490afc1..8fb077aa47 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor.cpp @@ -180,25 +180,25 @@ AP_BattMonitor::init() case BattMonitor_TYPE_ANALOG_VOLTAGE_ONLY: case BattMonitor_TYPE_ANALOG_VOLTAGE_AND_CURRENT: state[instance].instance = instance; - drivers[instance] = new AP_BattMonitor_Analog(*this, instance, state[instance]); + drivers[instance] = new AP_BattMonitor_Analog(*this, state[instance]); _num_instances++; break; case BattMonitor_TYPE_SOLO: state[instance].instance = instance; - drivers[instance] = new AP_BattMonitor_SMBus_Solo(*this, instance, state[instance], + drivers[instance] = new AP_BattMonitor_SMBus_Solo(*this, state[instance], hal.i2c_mgr->get_device(AP_BATTMONITOR_SMBUS_BUS_INTERNAL, AP_BATTMONITOR_SMBUS_I2C_ADDR)); _num_instances++; break; case BattMonitor_TYPE_MAXELL: state[instance].instance = instance; - drivers[instance] = new AP_BattMonitor_SMBus_Maxell(*this, instance, state[instance], + drivers[instance] = new AP_BattMonitor_SMBus_Maxell(*this, state[instance], hal.i2c_mgr->get_device(AP_BATTMONITOR_SMBUS_BUS_EXTERNAL, AP_BATTMONITOR_SMBUS_I2C_ADDR)); _num_instances++; break; case BattMonitor_TYPE_BEBOP: #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO state[instance].instance = instance; - drivers[instance] = new AP_BattMonitor_Bebop(*this, instance, state[instance]); + drivers[instance] = new AP_BattMonitor_Bebop(*this, state[instance]); _num_instances++; #endif break; diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Analog.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_Analog.cpp index 0a079d1590..68b4150c37 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Analog.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Analog.cpp @@ -7,11 +7,11 @@ extern const AP_HAL::HAL& hal; /// Constructor -AP_BattMonitor_Analog::AP_BattMonitor_Analog(AP_BattMonitor &mon, uint8_t instance, AP_BattMonitor::BattMonitor_State &mon_state) : - AP_BattMonitor_Backend(mon, instance, mon_state) +AP_BattMonitor_Analog::AP_BattMonitor_Analog(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state) : + AP_BattMonitor_Backend(mon, mon_state) { - _volt_pin_analog_source = hal.analogin->channel(mon._volt_pin[instance]); - _curr_pin_analog_source = hal.analogin->channel(mon._curr_pin[instance]); + _volt_pin_analog_source = hal.analogin->channel(mon._volt_pin[_state.instance]); + _curr_pin_analog_source = hal.analogin->channel(mon._curr_pin[_state.instance]); // always healthy _state.healthy = true; diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Analog.h b/libraries/AP_BattMonitor/AP_BattMonitor_Analog.h index 9a4521bd96..a1dd716934 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Analog.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Analog.h @@ -82,7 +82,7 @@ class AP_BattMonitor_Analog : public AP_BattMonitor_Backend public: /// Constructor - AP_BattMonitor_Analog(AP_BattMonitor &mon, uint8_t instance, AP_BattMonitor::BattMonitor_State &mon_state); + AP_BattMonitor_Analog(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state); /// Read the battery voltage and current. Should be called at 10hz void read(); diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Backend.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_Backend.cpp index 29fd67de43..280fe57d59 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Backend.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Backend.cpp @@ -22,10 +22,9 @@ base class constructor. This incorporates initialisation as well. */ -AP_BattMonitor_Backend::AP_BattMonitor_Backend(AP_BattMonitor &mon, uint8_t instance, AP_BattMonitor::BattMonitor_State &mon_state) : +AP_BattMonitor_Backend::AP_BattMonitor_Backend(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state) : _mon(mon), - _state(mon_state), - _instance(instance) + _state(mon_state) { } @@ -43,11 +42,11 @@ uint8_t AP_BattMonitor_Backend::capacity_remaining_pct() const /// set capacity for this instance void AP_BattMonitor_Backend::set_capacity(uint32_t capacity) { - _mon._pack_capacity[_instance] = capacity; + _mon._pack_capacity[_state.instance] = capacity; } /// get capacity for this instance int32_t AP_BattMonitor_Backend::get_capacity() const { - return _mon.pack_capacity_mah(_instance); + return _mon.pack_capacity_mah(_state.instance); } diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Backend.h b/libraries/AP_BattMonitor/AP_BattMonitor_Backend.h index 2e23eab5f1..d4d2db3f19 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Backend.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Backend.h @@ -22,7 +22,7 @@ class AP_BattMonitor_Backend { public: // constructor. This incorporates initialisation as well. - AP_BattMonitor_Backend(AP_BattMonitor &mon, uint8_t instance, AP_BattMonitor::BattMonitor_State &mon_state); + AP_BattMonitor_Backend(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state); // we declare a virtual destructor so that BattMonitor driver can // override with a custom destructor if need be @@ -46,5 +46,4 @@ public: protected: AP_BattMonitor &_mon; // reference to front-end AP_BattMonitor::BattMonitor_State &_state; // reference to this instances state (held in the front-end) - uint8_t _instance; // this instance }; diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.h b/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.h index 900d20d4ed..af3d580ce8 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.h @@ -22,8 +22,8 @@ class AP_BattMonitor_Bebop :public AP_BattMonitor_Backend { public: // constructor. This incorporates initialisation as well. - AP_BattMonitor_Bebop(AP_BattMonitor &mon, uint8_t instance, AP_BattMonitor::BattMonitor_State &mon_state): - AP_BattMonitor_Backend(mon, instance, mon_state), + AP_BattMonitor_Bebop(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state): + AP_BattMonitor_Backend(mon, mon_state), _prev_vbat_raw(0.0f), _prev_vbat(0.0f), _battery_voltage_max(0.0f) diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus.h b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus.h index 6e302ae90a..06cd098080 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus.h @@ -16,7 +16,7 @@ class AP_BattMonitor_SMBus : public AP_BattMonitor_Backend public: /// Constructor - AP_BattMonitor_SMBus(AP_BattMonitor &mon, uint8_t instance, + AP_BattMonitor_SMBus(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_HAL::OwnPtr dev); diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.cpp index 9b50f2a3c8..b2398c2f87 100755 --- a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.cpp @@ -36,10 +36,10 @@ uint8_t maxell_cell_ids[] = { 0x3f, // cell 1 */ // Constructor -AP_BattMonitor_SMBus_Maxell::AP_BattMonitor_SMBus_Maxell(AP_BattMonitor &mon, uint8_t instance, +AP_BattMonitor_SMBus_Maxell::AP_BattMonitor_SMBus_Maxell(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_HAL::OwnPtr dev) - : AP_BattMonitor_SMBus(mon, instance, mon_state, std::move(dev)) + : AP_BattMonitor_SMBus(mon, mon_state, std::move(dev)) { _dev->register_periodic_callback(100000, FUNCTOR_BIND_MEMBER(&AP_BattMonitor_SMBus_Maxell::timer, void)); } diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.h b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.h index 2d87b03e21..5997c8b01c 100755 --- a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Maxell.h @@ -11,7 +11,7 @@ class AP_BattMonitor_SMBus_Maxell : public AP_BattMonitor_SMBus public: // Constructor - AP_BattMonitor_SMBus_Maxell(AP_BattMonitor &mon, uint8_t instance, + AP_BattMonitor_SMBus_Maxell(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_HAL::OwnPtr dev); diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp index f96cf7f671..ab5056a062 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp @@ -29,10 +29,10 @@ */ // Constructor -AP_BattMonitor_SMBus_Solo::AP_BattMonitor_SMBus_Solo(AP_BattMonitor &mon, uint8_t instance, +AP_BattMonitor_SMBus_Solo::AP_BattMonitor_SMBus_Solo(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_HAL::OwnPtr dev) - : AP_BattMonitor_SMBus(mon, instance, mon_state, std::move(dev)) + : AP_BattMonitor_SMBus(mon, mon_state, std::move(dev)) { _pec_supported = true; _dev->register_periodic_callback(100000, FUNCTOR_BIND_MEMBER(&AP_BattMonitor_SMBus_Solo::timer, void)); diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.h b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.h index 32c3225667..8836148bbb 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.h @@ -11,7 +11,7 @@ class AP_BattMonitor_SMBus_Solo : public AP_BattMonitor_SMBus public: // Constructor - AP_BattMonitor_SMBus_Solo(AP_BattMonitor &mon, uint8_t instance, + AP_BattMonitor_SMBus_Solo(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_HAL::OwnPtr dev);