mirror of https://github.com/rusefi/wideband.git
90 lines
1.9 KiB
C++
90 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <cstddef>
|
|
|
|
#include "port_shared.h"
|
|
#include "wideband_config.h"
|
|
|
|
struct AnalogChannelResult
|
|
{
|
|
float NernstVoltage;
|
|
float PumpCurrentVoltage;
|
|
/* for dual version - this is voltage on Heater-, switches between zero and Vbatt with heater PWM,
|
|
* used for both Vbatt measurement and Heater diagnostic */
|
|
float BatteryVoltage;
|
|
};
|
|
|
|
struct AnalogResult
|
|
{
|
|
AnalogChannelResult ch[AFR_CHANNELS];
|
|
float VirtualGroundVoltageInt;
|
|
};
|
|
|
|
AnalogResult AnalogSample();
|
|
|
|
enum class SensorType : uint8_t {
|
|
LSU49 = 0,
|
|
LSU42 = 1,
|
|
LSUADV = 2,
|
|
};
|
|
|
|
enum class AuxOutputMode : uint8_t {
|
|
Afr0 = 0,
|
|
Afr1 = 1,
|
|
Lambda0 = 2,
|
|
Lambda1 = 3,
|
|
Egt0 = 4,
|
|
Egt1 = 5,
|
|
};
|
|
|
|
class Configuration {
|
|
private:
|
|
// Increment this any time the configuration format changes
|
|
// It is stored along with the data to ensure that it has been written before
|
|
static constexpr uint32_t ExpectedTag = 0xDEADBE01;
|
|
uint32_t Tag = ExpectedTag;
|
|
|
|
public:
|
|
bool IsValid() const
|
|
{
|
|
return this->Tag == ExpectedTag;
|
|
}
|
|
void LoadDefaults();
|
|
|
|
// Actual configuration data
|
|
union {
|
|
struct {
|
|
uint8_t CanIndexOffset = 0;
|
|
// AUX0 and AUX1 curves
|
|
float auxOutBins[2][8];
|
|
float auxOutValues[2][8];
|
|
AuxOutputMode auxOutputSource[2];
|
|
|
|
SensorType sensorType;
|
|
} __attribute__((packed));
|
|
|
|
// pad to 256 bytes including tag
|
|
uint8_t pad[256 - sizeof(Tag)];
|
|
};
|
|
};
|
|
|
|
int InitConfiguration();
|
|
Configuration* GetConfiguration();
|
|
void SetConfiguration();
|
|
|
|
/* TS stuff */
|
|
uint8_t *GetConfigurationPtr();
|
|
size_t GetConfigurationSize();
|
|
int SaveConfiguration();
|
|
const char *getTsSignature();
|
|
|
|
void rebootNow();
|
|
void rebootToOpenblt();
|
|
|
|
// LSU4.2, LSU4.9 or LSU_ADV
|
|
SensorType GetSensorType();
|
|
void SetupESRDriver(SensorType sensor);
|
|
void ToggleESRDriver(SensorType sensor);
|
|
int GetESRSupplyR();
|