fome-fw/firmware/controllers/algo/engine_parts.h

92 lines
1.5 KiB
C
Raw Normal View History

2019-05-27 15:50:23 -07:00
/*
* @file engine_parts.h
*
* @date May 27, 2019
2020-01-07 21:02:40 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
2019-05-27 15:50:23 -07:00
*/
2019-09-19 21:25:43 -07:00
#pragma once
2019-05-27 15:50:23 -07:00
#include "static_vector.h"
#include "timer.h"
2019-05-27 15:50:23 -07:00
#define MOCK_ADC_SIZE 26
2019-05-27 15:50:23 -07:00
struct Accelerometer {
2019-05-27 15:50:23 -07:00
float x = 0; // G value
float y = 0;
float z = 0;
float yaw = 0;
float roll = 0;
2019-05-27 15:50:23 -07:00
};
struct SensorsState {
2019-05-27 15:50:23 -07:00
Accelerometer accelerometer;
};
class FuelConsumptionState {
public:
void consumeFuel(float grams, efitick_t nowNt);
float getConsumedGrams() const;
float getConsumptionGramPerSecond() const;
private:
float m_consumedGrams = 0;
float m_rate = 0;
Timer m_timer;
2019-05-27 15:50:23 -07:00
};
class TransmissionState {
public:
gear_e gearSelectorPosition;
};
struct warning_t {
Timer LastTriggered;
obd_code_e Code = OBD_None;
warning_t() { }
explicit warning_t(obd_code_e code)
: Code(code)
{
}
// Equality just checks the code, timer doesn't matter
bool operator ==(const warning_t& other) const {
return other.Code == Code;
}
// Compare against a plain OBD code
bool operator ==(const obd_code_e other) const {
return other == Code;
}
};
typedef static_vector<warning_t, 8> warningBuffer_t;
2021-06-23 03:37:32 -07:00
2019-05-27 15:50:23 -07:00
class WarningCodeState {
public:
WarningCodeState();
void addWarningCode(obd_code_e code);
bool isWarningNow() const;
bool isWarningNow(obd_code_e code) const;
2019-05-27 15:50:23 -07:00
void clear();
int warningCounter;
int lastErrorCode;
Timer timeSinceLastWarning;
2019-05-27 15:50:23 -07:00
// todo: we need a way to post multiple recent warnings into TS
2021-06-23 03:37:32 -07:00
warningBuffer_t recentWarnings;
2019-05-27 15:50:23 -07:00
};
2020-03-26 08:52:19 -07:00
struct multispark_state
{
2020-07-29 02:22:54 -07:00
efitick_t delay = 0;
efitick_t dwell = 0;
uint8_t count = 0;
2020-03-26 08:52:19 -07:00
};