From 8b9955dc671fe3003372ebef26fb7892bf627685 Mon Sep 17 00:00:00 2001 From: Andreika Date: Sun, 9 Jul 2023 21:41:57 +0300 Subject: [PATCH] lua getAuxDigital() #4861 (#5400) * lua getAuxDigital() #4861 * fix * fix simulator --- firmware/controllers/lua/lua_hooks.cpp | 23 +++++++++++++++++++++++ firmware/init/sensor/init_sensors.cpp | 2 +- firmware/tunerstudio/rusefi.input | 4 ++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/firmware/controllers/lua/lua_hooks.cpp b/firmware/controllers/lua/lua_hooks.cpp index 54ef8dffa7..cd92c78088 100644 --- a/firmware/controllers/lua/lua_hooks.cpp +++ b/firmware/controllers/lua/lua_hooks.cpp @@ -316,6 +316,28 @@ static int lua_getDigital(lua_State* l) { return 1; } +static int lua_getAuxDigital(lua_State* l) { + auto idx = luaL_checkinteger(l, 1); + if (idx < 0 || idx >= LUA_DIGITAL_INPUT_COUNT) { + // Return nil to indicate invalid parameter + lua_pushnil(l); + return 1; + } + + if (!isBrainPinValid(engineConfiguration->luaDigitalInputPins[idx])) { + // Return nil to indicate invalid pin + lua_pushnil(l); + return 1; + } + +#if !EFI_SIMULATOR + bool state = efiReadPin(engineConfiguration->luaDigitalInputPins[idx]); + lua_pushboolean(l, state); +#endif // !EFI_SIMULATOR + + return 1; +} + static int lua_setDebug(lua_State* l) { // wrong debug mode, ignore if (engineConfiguration->debugMode != DBG_LUA) { @@ -892,6 +914,7 @@ void configureRusefiLuaHooks(lua_State* l) { lua_register(l, "getFan", lua_fan); lua_register(l, "getDigital", lua_getDigital); + lua_register(l, "getAuxDigital", lua_getAuxDigital); lua_register(l, "setDebug", lua_setDebug); lua_register(l, "getAirmass", lua_getAirmass); lua_register(l, "setAirmass", lua_setAirmass); diff --git a/firmware/init/sensor/init_sensors.cpp b/firmware/init/sensor/init_sensors.cpp index c8e5ec6851..a06b867220 100644 --- a/firmware/init/sensor/init_sensors.cpp +++ b/firmware/init/sensor/init_sensors.cpp @@ -56,7 +56,7 @@ static void deInitOldAnalogInputs() { static void initAuxDigital() { #if EFI_PROD_CODE for (size_t i = 0;iluaDigitalInputPins);i++) { - efiSetPadMode("Lua Digital", engineConfiguration->luaDigitalInputPins[i], getInputMode(PI_DEFAULT)); + efiSetPadMode("Lua Digital", engineConfiguration->luaDigitalInputPins[i], engineConfiguration->luaDigitalInputPinModes[i]); } #endif // EFI_PROD_CODE } diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 7e12ebdef3..a529a5e32f 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1889,7 +1889,7 @@ menuDialog = main subMenu = std_separator subMenu = auxInputsDialog, "Lua Analog Inputs" -# TODO finish https://github.com/rusefi/rusefi/issues/4861 subMenu = luaDigitalInputsDialog, "Lua Digital Inputs" + subMenu = luaDigitalInputsDialog, "Lua Digital Inputs" subMenu = luaOutputs, "Lua Script PWM Outputs" groupMenu = "Lua Calibrations" @@ -3949,7 +3949,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "Mode #7", luaDigitalInputPinModes7 field = "Mode #8", luaDigitalInputPinModes8 - dialog = luaDigitalInputsDialog, "Lua Digital Inputs", border + dialog = luaDigitalInputsDialog, "Lua Digital Aux Inputs", border panel = luaDigitalInputsLeftDialog, West panel = luaDigitalInputsRightDialog, East