Path: blob/master/libraries/AP_BattMonitor/AP_BattMonitor_INA239.h
9659 views
#pragma once12#include <AP_Common/AP_Common.h>3#include <AP_HAL/SPIDevice.h>4#include "AP_BattMonitor_Backend.h"5#include <utility>67#if AP_BATTERY_INA239_ENABLED89class AP_BattMonitor_INA239 : public AP_BattMonitor_Backend10{11public:12/// Constructor13AP_BattMonitor_INA239(AP_BattMonitor &mon,14AP_BattMonitor::BattMonitor_State &mon_state,15AP_BattMonitor_Params ¶ms);1617bool has_cell_voltages() const override { return false; }18bool has_temperature() const override { return false; }19bool has_current() const override { return true; }20bool get_cycle_count(uint16_t &cycles) const override { return false; }2122void init(void) override;23void read() override;2425static const struct AP_Param::GroupInfo var_info[];2627protected:28AP_HAL::Device *dev;2930void configure(void);31bool read_word(const uint8_t reg, int16_t& data) const;32bool write_word(const uint8_t reg, const uint16_t data) const;33void timer(void);3435bool configured;36bool callback_registered;37uint32_t failed_reads;38uint32_t last_configure_ms;3940struct {41uint16_t count;42float volt_sum;43float current_sum;44HAL_Semaphore sem;45} accumulate;46float current_LSB;47float voltage_LSB;4849AP_Float max_amps;50AP_Float rShunt;51};5253#endif // AP_BATTERY_INA239_ENABLED545556