CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
Ardupilot

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: Ardupilot/ardupilot
Path: blob/master/libraries/AP_BattMonitor/AP_BattMonitor_EFI.cpp
Views: 1798
1
/*
2
This program is free software: you can redistribute it and/or modify
3
it under the terms of the GNU General Public License as published by
4
the Free Software Foundation, either version 3 of the License, or
5
(at your option) any later version.
6
7
This program is distributed in the hope that it will be useful,
8
but WITHOUT ANY WARRANTY; without even the implied warranty of
9
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
GNU General Public License for more details.
11
12
You should have received a copy of the GNU General Public License
13
along with this program. If not, see <http://www.gnu.org/licenses/>.
14
*/
15
16
#include "AP_BattMonitor_config.h"
17
18
#if AP_BATTERY_EFI_ENABLED
19
20
#include <AP_Common/AP_Common.h>
21
#include <AP_Math/AP_Math.h>
22
#include <AP_EFI/AP_EFI.h>
23
24
#include "AP_BattMonitor_EFI.h"
25
26
// update state
27
void AP_BattMonitor_EFI::read()
28
{
29
AP_EFI *efi = AP::EFI();
30
if (efi == nullptr) {
31
return;
32
}
33
34
if (!efi->is_healthy()) {
35
_state.healthy = false;
36
return;
37
}
38
39
struct EFI_State efi_state;
40
/*
41
a simple mapping of 1 Amp == 1 litre/hour and 1Ah = 1Litre
42
*/
43
efi->get_state(efi_state);
44
45
_state.current_amps = efi_state.fuel_consumption_rate_cm3pm*0.001*60; // litres/hour
46
// use arbitrary 1.0 Volts
47
_state.voltage = 1.0;
48
_state.consumed_mah = efi_state.estimated_consumed_fuel_volume_cm3; // millilitres
49
_state.consumed_wh = 0.001 * _state.consumed_mah;
50
_state.healthy = true;
51
_state.last_time_micros = AP_HAL::micros();
52
}
53
54
#endif // AP_BATTERY_EFI_ENABLED
55
56