parent
a4a48bb84e
commit
e1fb48f9a9
|
@ -30,6 +30,8 @@ include $(BOARDS_DIR)/hellen/hellen-common100.mk
|
||||||
|
|
||||||
# we do not have much Lua RAM, let's drop some fancy functions
|
# we do not have much Lua RAM, let's drop some fancy functions
|
||||||
DDEFS += -DWITH_LUA_CONSUMPTION=FALSE
|
DDEFS += -DWITH_LUA_CONSUMPTION=FALSE
|
||||||
|
DDEFS += -DWITH_LUA_PID=FALSE
|
||||||
|
DDEFS += -DWITH_LUA_STOP_ENGINE=FALSE
|
||||||
|
|
||||||
DDEFS += $(PRIMARY_COMMUNICATION_PORT_USART2)
|
DDEFS += $(PRIMARY_COMMUNICATION_PORT_USART2)
|
||||||
|
|
||||||
|
|
|
@ -631,29 +631,11 @@ int lua_canRxAddMask(lua_State* l) {
|
||||||
}
|
}
|
||||||
#endif // EFI_CAN_SUPPORT
|
#endif // EFI_CAN_SUPPORT
|
||||||
|
|
||||||
static int lua_vincpy(lua_State* l) {
|
|
||||||
luaL_checktype(l, 1, LUA_TTABLE);
|
|
||||||
size_t sourceIndex = luaL_checknumber(l, 2);
|
|
||||||
size_t destinationIndex = luaL_checknumber(l, 3);
|
|
||||||
size_t size = luaL_checknumber(l, 4);
|
|
||||||
for (size_t i = 0;i<size;i++) {
|
|
||||||
lua_pushnumber(l, engineConfiguration->vinNumber[sourceIndex + i]);
|
|
||||||
lua_rawseti(l, 1, destinationIndex + i);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
PUBLIC_API_WEAK void boardConfigureLuaHooks(lua_State* lState) { }
|
PUBLIC_API_WEAK void boardConfigureLuaHooks(lua_State* lState) { }
|
||||||
|
|
||||||
void configureRusefiLuaHooks(lua_State* lState) {
|
void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
boardConfigureLuaHooks(lState);
|
boardConfigureLuaHooks(lState);
|
||||||
|
|
||||||
LuaClass<LuaBiQuad> biQuard(lState, "Biquad");
|
|
||||||
biQuard
|
|
||||||
.ctor()
|
|
||||||
.fun("filter", &LuaBiQuad::filter)
|
|
||||||
.fun("configureLowpass", &LuaBiQuad::configureLowpass);
|
|
||||||
|
|
||||||
LuaClass<Timer> luaTimer(lState, "Timer");
|
LuaClass<Timer> luaTimer(lState, "Timer");
|
||||||
luaTimer
|
luaTimer
|
||||||
.ctor()
|
.ctor()
|
||||||
|
@ -668,6 +650,17 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
.fun("setTimeout", &LuaSensor::setTimeout)
|
.fun("setTimeout", &LuaSensor::setTimeout)
|
||||||
.fun("invalidate", &LuaSensor::invalidate);
|
.fun("invalidate", &LuaSensor::invalidate);
|
||||||
|
|
||||||
|
#ifndef WITH_LUA_PID
|
||||||
|
#define WITH_LUA_PID TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if WITH_LUA_PID
|
||||||
|
LuaClass<LuaBiQuad> biQuard(lState, "Biquad");
|
||||||
|
biQuard
|
||||||
|
.ctor()
|
||||||
|
.fun("filter", &LuaBiQuad::filter)
|
||||||
|
.fun("configureLowpass", &LuaBiQuad::configureLowpass);
|
||||||
|
|
||||||
LuaClass<LuaPid> luaPid(lState, "Pid");
|
LuaClass<LuaPid> luaPid(lState, "Pid");
|
||||||
luaPid
|
luaPid
|
||||||
.ctor<float, float, float, float, float>()
|
.ctor<float, float, float, float, float>()
|
||||||
|
@ -683,6 +676,7 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
.fun("setDerivativeFilterLoss", &LuaIndustrialPid::setDerivativeFilterLoss)
|
.fun("setDerivativeFilterLoss", &LuaIndustrialPid::setDerivativeFilterLoss)
|
||||||
.fun("setAntiwindupFreq", &LuaIndustrialPid::setAntiwindupFreq)
|
.fun("setAntiwindupFreq", &LuaIndustrialPid::setAntiwindupFreq)
|
||||||
.fun("reset", &LuaIndustrialPid::reset);
|
.fun("reset", &LuaIndustrialPid::reset);
|
||||||
|
#endif
|
||||||
|
|
||||||
configureRusefiLuaUtilHooks(lState);
|
configureRusefiLuaUtilHooks(lState);
|
||||||
|
|
||||||
|
@ -694,7 +688,7 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
});
|
});
|
||||||
#endif // EFI_PROD_CODE && EFI_SHAFT_POSITION_INPUT
|
#endif // EFI_PROD_CODE && EFI_SHAFT_POSITION_INPUT
|
||||||
lua_register(lState, "vin", lua_vin);
|
lua_register(lState, "vin", lua_vin);
|
||||||
lua_register(lState, "vincpy", lua_vincpy);
|
|
||||||
lua_register(lState, "getAuxAnalog", lua_getAuxAnalog);
|
lua_register(lState, "getAuxAnalog", lua_getAuxAnalog);
|
||||||
lua_register(lState, "getSensorByIndex", lua_getSensorByIndex);
|
lua_register(lState, "getSensorByIndex", lua_getSensorByIndex);
|
||||||
lua_register(lState, "getSensor", lua_getSensorByName);
|
lua_register(lState, "getSensor", lua_getSensorByName);
|
||||||
|
@ -718,6 +712,10 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
lua_pushnumber(l, engine->module<TripOdometer>()->getConsumptionGramPerSecond());
|
lua_pushnumber(l, engine->module<TripOdometer>()->getConsumptionGramPerSecond());
|
||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
|
lua_register(lState, "resetOdometer", [](lua_State*) {
|
||||||
|
engine->module<TripOdometer>()->reset();
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
#endif // EFI_VEHICLE_SPEED
|
#endif // EFI_VEHICLE_SPEED
|
||||||
lua_register(lState, "table3d", [](lua_State* l) {
|
lua_register(lState, "table3d", [](lua_State* l) {
|
||||||
auto humanTableIdx = luaL_checkinteger(l, 1);
|
auto humanTableIdx = luaL_checkinteger(l, 1);
|
||||||
|
@ -887,12 +885,12 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
#endif // EFI_ELECTRONIC_THROTTLE_BODY
|
|
||||||
#if EFI_PROD_CODE
|
|
||||||
lua_register(lState, "setEtbDisabled", [](lua_State* l) {
|
lua_register(lState, "setEtbDisabled", [](lua_State* l) {
|
||||||
engine->engineState.lua.luaDisableEtb = lua_toboolean(l, 1);
|
engine->engineState.lua.luaDisableEtb = lua_toboolean(l, 1);
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
|
#endif // EFI_ELECTRONIC_THROTTLE_BODY
|
||||||
|
#if EFI_PROD_CODE
|
||||||
lua_register(lState, "setIgnDisabled", [](lua_State* l) {
|
lua_register(lState, "setIgnDisabled", [](lua_State* l) {
|
||||||
engine->engineState.lua.luaIgnCut = lua_toboolean(l, 1);
|
engine->engineState.lua.luaIgnCut = lua_toboolean(l, 1);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -996,19 +994,6 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
#if EFI_VEHICLE_SPEED
|
|
||||||
lua_register(lState, "getCurrentGear", [](lua_State* l) {
|
|
||||||
lua_pushinteger(l, Sensor::getOrZero(SensorType::DetectedGear));
|
|
||||||
return 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
lua_register(lState, "getRpmInGear", [](lua_State* l) {
|
|
||||||
auto idx = luaL_checkinteger(l, 1);
|
|
||||||
lua_pushinteger(l, engine->module<GearDetector>()->getRpmInGear(idx));
|
|
||||||
return 1;
|
|
||||||
});
|
|
||||||
#endif // EFI_VEHICLE_SPEED
|
|
||||||
|
|
||||||
#if !EFI_UNIT_TEST
|
#if !EFI_UNIT_TEST
|
||||||
lua_register(lState, "startPwm", lua_startPwm);
|
lua_register(lState, "startPwm", lua_startPwm);
|
||||||
lua_register(lState, "setPwmDuty", lua_setPwmDuty);
|
lua_register(lState, "setPwmDuty", lua_setPwmDuty);
|
||||||
|
@ -1023,6 +1008,12 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
lua_register(lState, "setAirmass", lua_setAirmass);
|
lua_register(lState, "setAirmass", lua_setAirmass);
|
||||||
#endif // EFI_ENGINE_CONTROL
|
#endif // EFI_ENGINE_CONTROL
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef WITH_LUA_STOP_ENGINE
|
||||||
|
#define WITH_LUA_STOP_ENGINE TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if WITH_LUA_STOP_ENGINE
|
||||||
lua_register(lState, "isFirmwareError", [](lua_State* l) {
|
lua_register(lState, "isFirmwareError", [](lua_State* l) {
|
||||||
lua_pushboolean(l, hasFirmwareError());
|
lua_pushboolean(l, hasFirmwareError());
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -1043,6 +1034,7 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
#endif // EFI_SHAFT_POSITION_INPUT
|
#endif // EFI_SHAFT_POSITION_INPUT
|
||||||
|
#endif // WITH_LUA_STOP_ENGINE
|
||||||
|
|
||||||
#if EFI_CAN_SUPPORT
|
#if EFI_CAN_SUPPORT
|
||||||
lua_register(lState, "canRxAdd", lua_canRxAdd);
|
lua_register(lState, "canRxAdd", lua_canRxAdd);
|
||||||
|
@ -1054,13 +1046,6 @@ void configureRusefiLuaHooks(lua_State* lState) {
|
||||||
lua_register(lState, "txCan", lua_txCan);
|
lua_register(lState, "txCan", lua_txCan);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EFI_VEHICLE_SPEED
|
|
||||||
lua_register(lState, "resetOdometer", [](lua_State*) {
|
|
||||||
engine->module<TripOdometer>()->reset();
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
#endif // EFI_VEHICLE_SPEED
|
|
||||||
|
|
||||||
#if EFI_PROD_CODE && HW_HELLEN
|
#if EFI_PROD_CODE && HW_HELLEN
|
||||||
lua_register(lState, "hellenEnablePower", [](lua_State*) {
|
lua_register(lState, "hellenEnablePower", [](lua_State*) {
|
||||||
hellenEnableEn("Lua");
|
hellenEnableEn("Lua");
|
||||||
|
|
|
@ -21,21 +21,3 @@ TEST(LuaVin, Test) {
|
||||||
|
|
||||||
EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0x47);
|
EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0x47);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(LuaVinCpy, Test) {
|
|
||||||
EngineTestHelper eth(engine_type_e::TEST_CRANK_ENGINE);
|
|
||||||
|
|
||||||
strcpy(engineConfiguration->vinNumber, "GM123");
|
|
||||||
|
|
||||||
const char* realdata = ARRAY_EQUALS PRINT_ARRAY R"(
|
|
||||||
|
|
||||||
function testFunc()
|
|
||||||
data = {0, 0, 0, 0, 0}
|
|
||||||
vincpy(data, 2, 1, 3);
|
|
||||||
print(arrayToString(data))
|
|
||||||
expected = { 0x31, 0x32, 0x33, 0x00, 0x00 }
|
|
||||||
return equals(data, expected)
|
|
||||||
end)";
|
|
||||||
|
|
||||||
EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue