mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
uavcan/sensors/battery: add multiple battery filter instances
This commit is contained in:
parent
90e2ac60ce
commit
7e9a45a01a
@ -231,13 +231,13 @@ void
|
||||
UavcanBatteryBridge::filterData(const uavcan::ReceivedDataStructure<uavcan::equipment::power::BatteryInfo> &msg,
|
||||
uint8_t instance)
|
||||
{
|
||||
_battery.setConnected(true);
|
||||
_battery.updateVoltage(msg.voltage);
|
||||
_battery.updateCurrent(msg.current);
|
||||
_battery.updateBatteryStatus(hrt_absolute_time());
|
||||
_battery[instance]->setConnected(true);
|
||||
_battery[instance]->updateVoltage(msg.voltage);
|
||||
_battery[instance]->updateCurrent(msg.current);
|
||||
_battery[instance]->updateBatteryStatus(hrt_absolute_time());
|
||||
|
||||
/* Override data that is expected to arrive from UAVCAN msg*/
|
||||
_battery_status[instance] = _battery.getBatteryStatus();
|
||||
_battery_status[instance] = _battery[instance]->getBatteryStatus();
|
||||
_battery_status[instance].temperature = msg.temperature + CONSTANTS_ABSOLUTE_NULL_CELSIUS; // Kelvin to Celcius
|
||||
_battery_status[instance].serial_number = msg.model_instance_id;
|
||||
_battery_status[instance].id = msg.getSrcNodeID().get(); // overwrite zeroed index from _battery
|
||||
|
||||
@ -99,8 +99,18 @@ private:
|
||||
BatteryDataType _batt_update_mod[battery_status_s::MAX_INSTANCES] {};
|
||||
|
||||
static constexpr int FILTER_DATA = 2;
|
||||
static constexpr int BATTERY_INDEX = 1;
|
||||
static constexpr int BATTERY_INDEX_1 = 1;
|
||||
static constexpr int BATTERY_INDEX_2 = 2;
|
||||
static constexpr int BATTERY_INDEX_3 = 3;
|
||||
static constexpr int BATTERY_INDEX_4 = 4;
|
||||
static constexpr int SAMPLE_INTERVAL_US = 20_ms; // assume higher frequency UAVCAN feedback than 50Hz
|
||||
Battery _battery{BATTERY_INDEX, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_EXTERNAL};
|
||||
|
||||
static_assert(battery_status_s::MAX_INSTANCES <= BATTERY_INDEX_4, "Battery array too big");
|
||||
|
||||
Battery battery1 = {BATTERY_INDEX_1, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_EXTERNAL};
|
||||
Battery battery2 = {BATTERY_INDEX_2, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_EXTERNAL};
|
||||
Battery battery3 = {BATTERY_INDEX_3, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_EXTERNAL};
|
||||
Battery battery4 = {BATTERY_INDEX_4, this, SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_EXTERNAL};
|
||||
|
||||
Battery *_battery[battery_status_s::MAX_INSTANCES] = { &battery1, &battery2, &battery3, &battery4 };
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user