mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-20 15:13:34 +08:00
battery: separate out publishing from updating
to allow smart battery drivers to use the battery class and filling in additional information in case it makes sense.
This commit is contained in:
@@ -130,7 +130,10 @@ void Battery::updateBatteryStatus(const hrt_abstime ×tamp)
|
||||
} else {
|
||||
_connected = false;
|
||||
}
|
||||
}
|
||||
|
||||
battery_status_s Battery::getBatteryStatus()
|
||||
{
|
||||
battery_status_s battery_status{};
|
||||
battery_status.voltage_v = _voltage_v;
|
||||
battery_status.voltage_filtered_v = _voltage_filter_v.getState();
|
||||
@@ -149,13 +152,23 @@ void Battery::updateBatteryStatus(const hrt_abstime ×tamp)
|
||||
battery_status.capacity = _params.capacity > 0.f ? static_cast<uint16_t>(_params.capacity) : 0;
|
||||
battery_status.id = static_cast<uint8_t>(_index);
|
||||
battery_status.warning = _warning;
|
||||
battery_status.timestamp = hrt_absolute_time();
|
||||
return battery_status;
|
||||
}
|
||||
|
||||
void Battery::publishBatteryStatus(const battery_status_s &battery_status)
|
||||
{
|
||||
if (_source == _params.source) {
|
||||
battery_status.timestamp = hrt_absolute_time();
|
||||
_battery_status_pub.publish(battery_status);
|
||||
}
|
||||
}
|
||||
|
||||
void Battery::updateAndPublishBatteryStatus(const hrt_abstime ×tamp)
|
||||
{
|
||||
updateBatteryStatus(timestamp);
|
||||
publishBatteryStatus(getBatteryStatus());
|
||||
}
|
||||
|
||||
void Battery::sumDischarged(const hrt_abstime ×tamp, float current_a)
|
||||
{
|
||||
// Not a valid measurement
|
||||
|
||||
@@ -97,6 +97,16 @@ public:
|
||||
*/
|
||||
void updateBatteryStatus(const hrt_abstime ×tamp);
|
||||
|
||||
battery_status_s getBatteryStatus();
|
||||
void publishBatteryStatus(const battery_status_s &battery_status);
|
||||
|
||||
/**
|
||||
* Convenience function for combined update and publication
|
||||
* @see updateBatteryStatus()
|
||||
* @see publishBatteryStatus()
|
||||
*/
|
||||
void updateAndPublishBatteryStatus(const hrt_abstime ×tamp);
|
||||
|
||||
protected:
|
||||
struct {
|
||||
param_t v_empty;
|
||||
|
||||
Reference in New Issue
Block a user