ardupilot/libraries/AP_BattMonitor/AP_BattMonitor_FuelFlow.h
Andrew Tridgell 5571a84a49 AP_BattMonitor: added a "battery" backend for liquid fuel flow
This is for sensors that give a pulse for each fixed volume of fuel.

Output is:
    - current in Amps maps to in litres/hour
    - consumed mAh is in consumed millilitres
    - fixed 1.0v voltage
2019-03-19 11:35:59 +11:00

35 lines
923 B
C++

#pragma once
#include "AP_BattMonitor.h"
#include "AP_BattMonitor_Backend.h"
class AP_BattMonitor_FuelFlow : public AP_BattMonitor_Backend
{
public:
/// Constructor
AP_BattMonitor_FuelFlow(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_BattMonitor_Params &params);
/// Read the battery voltage and current. Should be called at 10hz
void read() override;
/// returns true if battery monitor provides consumed energy info
bool has_consumed_energy() const override { return true; }
/// returns true if battery monitor provides current info
bool has_current() const override { return true; }
void init(void) override {}
private:
void irq_handler(uint8_t pin, bool pin_state, uint32_t timestamp);
struct IrqState {
uint32_t pulse_count;
uint32_t total_us;
uint32_t last_pulse_us;
} irq_state;
int8_t last_pin = -1;
};