ardupilot/libraries/AP_Generator/AP_Generator_Backend.h

54 lines
1.3 KiB
C++

#pragma once
#include "AP_Generator.h"
#if GENERATOR_ENABLED
class AP_Generator_Backend
{
public:
// Constructor
AP_Generator_Backend(AP_Generator& frontend);
// Declare a virtual destructor in case Generator drivers want to override
virtual ~AP_Generator_Backend() {};
virtual void init(void) = 0;
virtual void update(void) = 0;
// Set default to not fail arming checks
virtual bool pre_arm_check(char *failmsg, uint8_t failmsg_len) const { return true; }
// Set default to not fail failsafes
virtual AP_BattMonitor::BatteryFailsafe update_failsafes(void) const {
return AP_BattMonitor::BatteryFailsafe::BatteryFailsafe_None;
}
virtual bool healthy(void) const = 0;
// Generator controls must return true if present in generator type
virtual bool stop(void) { return false; }
virtual bool idle(void) { return false; }
virtual bool run(void) { return false; }
// Use generator mavlink message
virtual void send_generator_status(const GCS_MAVLINK &channel) {}
protected:
// Update frontend
void update_frontend(void);
// Measurements readings to write to front end
float _voltage;
float _current;
float _fuel_remain_pct; // Decimal from 0 to 1
float _consumed_mah;
uint16_t _rpm;
AP_Generator& _frontend;
};
#endif