mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-23 17:18:28 -04:00
GCS_MAVLink: Only send a single battery status per call
This commit is contained in:
parent
f8acc211cf
commit
7fae084793
@ -222,7 +222,7 @@ public:
|
|||||||
void send_fence_status() const;
|
void send_fence_status() const;
|
||||||
void send_power_status(void);
|
void send_power_status(void);
|
||||||
void send_battery_status(const uint8_t instance) const;
|
void send_battery_status(const uint8_t instance) const;
|
||||||
bool send_battery_status() const;
|
bool send_battery_status();
|
||||||
void send_distance_sensor() const;
|
void send_distance_sensor() const;
|
||||||
// send_rangefinder sends only if a downward-facing instance is
|
// send_rangefinder sends only if a downward-facing instance is
|
||||||
// found. Rover overrides this!
|
// found. Rover overrides this!
|
||||||
@ -844,6 +844,8 @@ private:
|
|||||||
|
|
||||||
uint32_t last_mavlink_stats_logged;
|
uint32_t last_mavlink_stats_logged;
|
||||||
|
|
||||||
|
uint8_t last_battery_status_idx;
|
||||||
|
|
||||||
// true if we should NOT do MAVLink on this port (usually because
|
// true if we should NOT do MAVLink on this port (usually because
|
||||||
// someone's doing SERIAL_CONTROL over mavlink)
|
// someone's doing SERIAL_CONTROL over mavlink)
|
||||||
bool _locked;
|
bool _locked;
|
||||||
|
@ -246,14 +246,19 @@ void GCS_MAVLINK::send_battery_status(const uint8_t instance) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// returns true if all battery instances were reported
|
// returns true if all battery instances were reported
|
||||||
bool GCS_MAVLINK::send_battery_status() const
|
bool GCS_MAVLINK::send_battery_status()
|
||||||
{
|
{
|
||||||
const AP_BattMonitor &battery = AP::battery();
|
const AP_BattMonitor &battery = AP::battery();
|
||||||
|
|
||||||
for(uint8_t i = 0; i < battery.num_instances(); i++) {
|
for(uint8_t i = 0; i < AP_BATT_MONITOR_MAX_INSTANCES; i++) {
|
||||||
if (battery.get_type(i) != AP_BattMonitor_Params::BattMonitor_Type::BattMonitor_TYPE_NONE) {
|
const uint8_t battery_id = (last_battery_status_idx + 1) % AP_BATT_MONITOR_MAX_INSTANCES;
|
||||||
|
if (battery.get_type(battery_id) != AP_BattMonitor_Params::BattMonitor_Type::BattMonitor_TYPE_NONE) {
|
||||||
CHECK_PAYLOAD_SIZE(BATTERY_STATUS);
|
CHECK_PAYLOAD_SIZE(BATTERY_STATUS);
|
||||||
send_battery_status(i);
|
send_battery_status(battery_id);
|
||||||
|
last_battery_status_idx = battery_id;
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
last_battery_status_idx = battery_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user