Browse Source

ina226/voxlpm: make sure parameter sub is reset

The subscription to parameter updates has to get
copied otherwise the change detection will not get
reset for next time.
sbg
Matthias Grob 5 years ago
parent
commit
d82f325f8d
  1. 6
      src/drivers/power_monitor/ina226/ina226.cpp
  2. 2
      src/drivers/power_monitor/ina226/ina226.h
  3. 6
      src/drivers/power_monitor/voxlpm/voxlpm.cpp
  4. 2
      src/drivers/power_monitor/voxlpm/voxlpm.hpp

6
src/drivers/power_monitor/ina226/ina226.cpp

@ -210,9 +210,11 @@ INA226::collect() @@ -210,9 +210,11 @@ INA226::collect()
{
perf_begin(_sample_perf);
parameter_update_s param_update;
if (_parameter_update_sub.updated()) {
// Read from topic to clear updated flag
parameter_update_s parameter_update;
_parameter_update_sub.copy(&parameter_update);
if (_parameters_sub.copy(&param_update)) {
updateParams();
}

2
src/drivers/power_monitor/ina226/ina226.h

@ -207,7 +207,7 @@ private: @@ -207,7 +207,7 @@ private:
Battery _battery;
uORB::Subscription _actuators_sub{ORB_ID(actuator_controls_0)};
uORB::Subscription _parameters_sub{ORB_ID(parameter_update)};
uORB::Subscription _parameter_update_sub{ORB_ID(parameter_update)};
int read(uint8_t address, int16_t &data);
int write(uint8_t address, uint16_t data);

6
src/drivers/power_monitor/voxlpm/voxlpm.cpp

@ -316,9 +316,11 @@ VOXLPM::measure() @@ -316,9 +316,11 @@ VOXLPM::measure()
}
}
parameter_update_s update;
if (_parameter_update_sub.updated()) {
// Read from topic to clear updated flag
parameter_update_s parameter_update;
_parameter_update_sub.copy(&parameter_update);
if (_parameter_sub.update(&update)) {
updateParams();
}

2
src/drivers/power_monitor/voxlpm/voxlpm.hpp

@ -253,7 +253,7 @@ private: @@ -253,7 +253,7 @@ private:
perf_counter_t _comms_errors;
uORB::PublicationMulti<power_monitor_s> _pm_pub_topic{ORB_ID(power_monitor)};
uORB::Subscription _parameter_sub{ORB_ID(parameter_update)};
uORB::Subscription _parameter_update_sub{ORB_ID(parameter_update)};
power_monitor_s _pm_status{};

Loading…
Cancel
Save