mavlink use all ORB battery_status instances instead of BOARD_NUMBER_BRICKS

This commit is contained in:
Daniel Agar
2019-08-03 13:36:42 -04:00
parent 991669073e
commit 483280236b
3 changed files with 54 additions and 62 deletions
@@ -101,7 +101,7 @@ MavlinkStreamHighLatency2::MavlinkStreamHighLatency2(Mavlink *mavlink) : Mavlink
_windspeed(SimpleAnalyzer::AVERAGE)
{
for (int i = 0; i < BOARD_NUMBER_BRICKS; i++) {
for (int i = 0; i < ORB_MULTI_MAX_INSTANCES; i++) {
_batteries[i].subscription = _mavlink->add_orb_subscription(ORB_ID(battery_status), i);
}
@@ -119,7 +119,7 @@ bool MavlinkStreamHighLatency2::send(const hrt_abstime t)
bool updated = _airspeed.valid();
updated |= _airspeed_sp.valid();
for (int i = 0; i < BOARD_NUMBER_BRICKS; i++) {
for (int i = 0; i < ORB_MULTI_MAX_INSTANCES; i++) {
updated |= _batteries[i].analyzer.valid();
}
@@ -159,7 +159,7 @@ bool MavlinkStreamHighLatency2::send(const hrt_abstime t)
int lowest = 0;
for (int i = 1; i < BOARD_NUMBER_BRICKS; i++) {
for (int i = 1; i < ORB_MULTI_MAX_INSTANCES; i++) {
const bool battery_connected = _batteries[i].connected && _batteries[i].analyzer.valid();
const bool battery_is_lowest = _batteries[i].analyzer.get_scaled(100.0f) <= _batteries[lowest].analyzer.get_scaled(
100.0f);
@@ -230,7 +230,7 @@ void MavlinkStreamHighLatency2::reset_analysers(const hrt_abstime t)
_airspeed.reset();
_airspeed_sp.reset();
for (int i = 0; i < BOARD_NUMBER_BRICKS; i++) {
for (int i = 0; i < ORB_MULTI_MAX_INSTANCES; i++) {
_batteries[i].analyzer.reset();
}
@@ -278,7 +278,7 @@ bool MavlinkStreamHighLatency2::write_battery_status(mavlink_high_latency2_t *ms
struct battery_status_s battery;
bool updated = false;
for (int i = 0; i < BOARD_NUMBER_BRICKS; i++) {
for (int i = 0; i < ORB_MULTI_MAX_INSTANCES; i++) {
if (_batteries[i].subscription->update(&_batteries[i].timestamp, &battery)) {
updated = true;
_batteries[i].connected = battery.connected;
@@ -535,7 +535,7 @@ void MavlinkStreamHighLatency2::update_battery_status()
{
battery_status_s battery;
for (int i = 0; i < BOARD_NUMBER_BRICKS; i++) {
for (int i = 0; i < ORB_MULTI_MAX_INSTANCES; i++) {
if (_batteries[i].subscription->update(&battery)) {
_batteries[i].connected = battery.connected;
_batteries[i].analyzer.add_value(battery.remaining, _update_rate_filtered);