mirror of https://github.com/rusefi/rusefi.git
funny games with dash via Lua to override CAN dash profile values #6235
This commit is contained in:
parent
099de78f56
commit
17069719dc
|
@ -7,3 +7,31 @@ void luaDeInitPins();
|
|||
struct AirmassModelBase;
|
||||
AirmassModelBase& getLuaAirmassModel();
|
||||
bool getAuxDigital(int index);
|
||||
|
||||
struct LuaOverrideSensor final : public Sensor {
|
||||
LuaOverrideSensor(SensorType type, SensorType underlyingType) : Sensor(type) {
|
||||
m_underlyingType = underlyingType;
|
||||
reset();
|
||||
}
|
||||
|
||||
void reset() {
|
||||
overrideValue = -1;
|
||||
}
|
||||
|
||||
void setOverrideValue(float value) {
|
||||
overrideValue = value;
|
||||
}
|
||||
|
||||
SensorResult get() const final override {
|
||||
if (overrideValue < 0)
|
||||
return Sensor::get(m_underlyingType);
|
||||
return overrideValue;
|
||||
}
|
||||
|
||||
void showInfo(const char* sensorName) const override {
|
||||
efiPrintf("LuaOverrideSensor \"%s\": override value %.2f", sensorName, overrideValue);
|
||||
}
|
||||
|
||||
float overrideValue = -1;
|
||||
SensorType m_underlyingType;
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include "global.h"
|
||||
#include "sensor_type.h"
|
||||
// was generated automatically by rusEFI tool from sensor_type.h // by enum_to_string.jar tool on Sat Mar 09 14:05:10 UTC 2024
|
||||
// was generated automatically by rusEFI tool from sensor_type.h // by enum_to_string.jar tool on Thu Mar 21 09:51:05 EDT 2024
|
||||
// see also gen_config_and_enums.bat
|
||||
|
||||
|
||||
|
@ -53,6 +53,12 @@ case SensorType::CompressorDischargePressure:
|
|||
return "CompressorDischargePressure";
|
||||
case SensorType::CompressorDischargeTemperature:
|
||||
return "CompressorDischargeTemperature";
|
||||
case SensorType::DashOverrideBatteryVoltage:
|
||||
return "DashOverrideBatteryVoltage";
|
||||
case SensorType::DashOverrideClt:
|
||||
return "DashOverrideClt";
|
||||
case SensorType::DashOverrideRpm:
|
||||
return "DashOverrideRpm";
|
||||
case SensorType::DetectedGear:
|
||||
return "DetectedGear";
|
||||
case SensorType::DriverThrottleIntent:
|
||||
|
|
|
@ -128,6 +128,10 @@ enum class SensorType : unsigned char {
|
|||
|
||||
IgnKeyVoltage,
|
||||
|
||||
DashOverrideRpm,
|
||||
DashOverrideClt,
|
||||
DashOverrideBatteryVoltage,
|
||||
|
||||
AuxLinear1,
|
||||
AuxLinear2,
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
// fine-grained method to facilitate testing
|
||||
void initOverrideSensors();
|
||||
|
||||
// Call this once at startup to initialize, configure, and subscribe sensors
|
||||
void initNewSensors();
|
||||
|
|
|
@ -76,6 +76,16 @@ static void deInitAuxDigital() {
|
|||
}
|
||||
}
|
||||
|
||||
static LuaOverrideSensor overrideRpm(SensorType::DashOverrideRpm, SensorType::Rpm);
|
||||
static LuaOverrideSensor overrideClt(SensorType::DashOverrideClt, SensorType::Clt);
|
||||
static LuaOverrideSensor overrideBatteryVoltage(SensorType::DashOverrideBatteryVoltage, SensorType::BatteryVoltage);
|
||||
|
||||
void initOverrideSensors() {
|
||||
overrideRpm.Register();
|
||||
overrideClt.Register();
|
||||
overrideBatteryVoltage.Register();
|
||||
}
|
||||
|
||||
// one-time start-up
|
||||
// see also 'reconfigureSensors'
|
||||
void initNewSensors() {
|
||||
|
@ -83,6 +93,8 @@ void initNewSensors() {
|
|||
initCanSensors();
|
||||
#endif
|
||||
|
||||
initOverrideSensors();
|
||||
|
||||
initVbatt();
|
||||
initMap();
|
||||
initTps();
|
||||
|
|
|
@ -71,6 +71,9 @@ public enum SensorType {
|
|||
LuaGauge1,
|
||||
LuaGauge2,
|
||||
IgnKeyVoltage,
|
||||
DashOverrideRpm,
|
||||
DashOverrideClt,
|
||||
DashOverrideBatteryVoltage,
|
||||
AuxLinear1,
|
||||
AuxLinear2,
|
||||
AuxSpeed1,
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#include "pch.h"
|
||||
|
||||
#include "func_chain.h"
|
||||
#include "init.h"
|
||||
#include "lua_hooks.h"
|
||||
|
||||
struct AddOne final : public SensorConverter {
|
||||
SensorResult convert(float input) const {
|
||||
|
@ -82,3 +84,22 @@ TEST(FunctionChain, TestGet)
|
|||
fc.get<Doubler>();
|
||||
fc.get<SubOne>();
|
||||
}
|
||||
|
||||
TEST(Sensor, OverrideValue) {
|
||||
EngineTestHelper eth(engine_type_e::HARLEY);
|
||||
// huh? i do not get this EXPECT_FALSE(Sensor::get(SensorType::Rpm).Valid);
|
||||
initOverrideSensors();
|
||||
|
||||
Sensor::setMockValue(SensorType::Rpm, 1000);
|
||||
EXPECT_TRUE(Sensor::get(SensorType::Rpm).Valid);
|
||||
EXPECT_TRUE(Sensor::get(SensorType::DashOverrideRpm).Valid);
|
||||
|
||||
ASSERT_DOUBLE_EQ(1000, Sensor::get(SensorType::Rpm).Value);
|
||||
ASSERT_DOUBLE_EQ(1000, Sensor::get(SensorType::DashOverrideRpm).Value);
|
||||
|
||||
LuaOverrideSensor * sensor = (LuaOverrideSensor*)Sensor::getSensorOfType(SensorType::DashOverrideRpm);
|
||||
sensor->setOverrideValue(3);
|
||||
ASSERT_DOUBLE_EQ(3, Sensor::get(SensorType::DashOverrideRpm).Value);
|
||||
sensor->reset();
|
||||
ASSERT_DOUBLE_EQ(1000, Sensor::get(SensorType::DashOverrideRpm).Value);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue