From b1451e229cac988eb3de29bb6900c7d6731f8512 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 14 Sep 2022 00:03:38 -0400 Subject: [PATCH] GM --- firmware/controllers/lua/lua_lib.h | 3 ++- unit_tests/tests/lua/test_lua_e38.cpp | 31 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/firmware/controllers/lua/lua_lib.h b/firmware/controllers/lua/lua_lib.h index d53dafdfac..89c8096ade 100644 --- a/firmware/controllers/lua/lua_lib.h +++ b/firmware/controllers/lua/lua_lib.h @@ -77,7 +77,8 @@ end \ // MOTOROLA order, MSB (Most Significant Byte/Big Endian) comes first. #define TWO_BYTES_MSB "function getTwoBytesMSB(data, offset, factor) \ return (data[offset + 1] * 256 + data[offset + 2]) * factor \ - end" + end \ +" #define SET_TWO_BYTES_MSB " function setTwoBytesMsb(data, offset, value) \ value = math.floor(value) \ diff --git a/unit_tests/tests/lua/test_lua_e38.cpp b/unit_tests/tests/lua/test_lua_e38.cpp index 94181363a2..1638a7e395 100644 --- a/unit_tests/tests/lua/test_lua_e38.cpp +++ b/unit_tests/tests/lua/test_lua_e38.cpp @@ -38,6 +38,22 @@ TEST(LuaE38, tps) { EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 5.881); } +TEST(LuaE38, packECMEngineStatus) { + EXPECT_NEAR_M3(testLuaReturnsNumberOrNil( + TWO_BYTES_MSB ARRAY_EQUALS PRINT_ARRAY R"( +tps = 5.881 + function testFunc() + canEngine = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } + canEngine[5] = tps / 0.3921 + + print(arrayToString(canEngine)) + expected = { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 } + return equals(canEngine, expected) + end + )" + ).value_or(0), 0); +} + #define ECMEngineCoolantTemp "\ndata = { 0x00, 0xCA, 0x69, 0x3F, 0x6A, 0x00, 0x00, 0x00}\n " TEST(LuaE38, clt) { @@ -51,3 +67,18 @@ TEST(LuaE38, clt) { ).value_or(0), 65); } +TEST(LuaE38, packECMEngineCoolantTemp) { + EXPECT_NEAR_M3(testLuaReturnsNumberOrNil( + TWO_BYTES_MSB ARRAY_EQUALS PRINT_ARRAY R"( +clt = 65 + function testFunc() + canEngine = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } + canEngine[3] = clt + 40 + + print(arrayToString(canEngine)) + expected = { 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00 } + return equals(canEngine, expected) + end + )" + ).value_or(0), 0); +}