From 45d8716fcc66281be56a0c19083cf43253d009ee Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 26 Aug 2022 00:04:47 -0400 Subject: [PATCH] B6 progress --- firmware/controllers/lua/lua_lib.h | 5 ++++ unit_tests/tests/lua/test_lua_vag.cpp | 41 ++++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/firmware/controllers/lua/lua_lib.h b/firmware/controllers/lua/lua_lib.h index 17ccc2f856..3f00d47d38 100644 --- a/firmware/controllers/lua/lua_lib.h +++ b/firmware/controllers/lua/lua_lib.h @@ -18,6 +18,11 @@ end \ " + +#define PRINT_ARRAY "hexstr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, \"A\", \"B\", \"C\", \"D\", \"E\", \"F\" } \ +\ +" + // LSB (Least Significant Byte comes first) "Intel" #define TWO_BYTES_LSB "function getTwoBytesLSB(data, offset, factor) \ return (data[offset + 2] * 256 + data[offset + 1]) * factor \ diff --git a/unit_tests/tests/lua/test_lua_vag.cpp b/unit_tests/tests/lua/test_lua_vag.cpp index c7d8aced63..15c49598a5 100644 --- a/unit_tests/tests/lua/test_lua_vag.cpp +++ b/unit_tests/tests/lua/test_lua_vag.cpp @@ -21,15 +21,48 @@ TEST(LuaVag, Checksum) { // LSB (Least Significant Byte comes first) "Intel" TEST(LuaVag, packMotor1) { - const char* realdata = ARRAY_EQUALS SET_TWO_BYTES R"( + const char* realdata = PRINT_ARRAY ARRAY_EQUALS SET_TWO_BYTES R"( +function toHexString(num) + if num == 0 then + return '0' + end + + local result = "" + while num > 0 do + local n = num % 16 + result = hexstr[n + 1] ..result + num = math.floor(num / 16) + end + return result +end + +function arrayToString(arr) + local str = "" + local index = 1 + while arr[index] ~= nil do + str = str.." "..toHexString(arr[index]) + index = index + 1 + end + return str +end function testFunc() + engineTorque = 15.21 rpm = 1207.1 + innerTorqWithoutExt = 21.6 + tps = 31.6 + requestedTorque = 21.84 + data = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } - setTwoBytes(data, 2, 4 * rpm) - expected = { 0x00, 0x00, 0xDC, 0x12, 0x00, 0x00, 0x00, 0x00 } + data[2] = engineTorque / 0.39 + setTwoBytes(data, 2, rpm / 0.25) + data[5] = innerTorqWithoutExt / 0.4 + +print(arrayToString(data)) + + expected = { 0x00, 0x27, 0xDC, 0x12, 0x36, 0x00, 0x00, 0x00 } -- print(data) return equals(data, expected) end @@ -38,7 +71,7 @@ TEST(LuaVag, packMotor1) { EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0); } -#define realMotor1Packet "\ndata = { 0x00, 0x027, 0x08A, 0x01A, 0x036, 0x04F, 0x019, 0x038}\n " +#define realMotor1Packet "\ndata = { 0x00, 0x27, 0x8A, 0x1A, 0x36, 0x4F, 0x19, 0x38}\n " TEST(LuaVag, unpackMotor1_engine_torq) { const char* realdata = GET_BIT_RANGE_LSB realMotor1Packet R"(