diff --git a/firmware/controllers/lua/lua_lib.h b/firmware/controllers/lua/lua_lib.h index 64b7e8d30d..c86bf7587c 100644 --- a/firmware/controllers/lua/lua_lib.h +++ b/firmware/controllers/lua/lua_lib.h @@ -1,3 +1,7 @@ +/** + * file lua_lib.h + */ + #define ARRAY_EQUALS "function equals(data1, data2) \ \ local index = 1 \ @@ -38,3 +42,20 @@ end \ data[offset + 2] = value & 0xff \ end \ " + +// one day we shall get Preprocessor macros with C++11 raw string literals +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55971 +#define GET_BIT_RANGE_LSB " \ +function getBitRange(data, bitIndex, bitWidth) \ + byteIndex = bitIndex >> 3 \ + shift = bitIndex - byteIndex * 8 \ + value = data[1 + byteIndex] \ + if (shift + bitWidth > 8) then \ + value = value + data[2 + byteIndex] * 256 \ + end \ + mask = (1 << bitWidth) - 1 \ + return (value >> shift) & mask \ +end \ +" + + diff --git a/unit_tests/tests/lua/test_lua_e65.cpp b/unit_tests/tests/lua/test_lua_e65.cpp index f2b4eb6736..8d6c42272d 100644 --- a/unit_tests/tests/lua/test_lua_e65.cpp +++ b/unit_tests/tests/lua/test_lua_e65.cpp @@ -12,17 +12,6 @@ return checksum \ end " -#define GET_BIT_RANGE "function getBitRange(data, bitIndex, bitWidth) \ - byteIndex = bitIndex >> 3 \ - shift = bitIndex - byteIndex * 8 \ - value = data[1 + byteIndex] \ - if (shift + bitWidth > 8) then \ - value = value + data[2 + byteIndex] * 256 \ - end \ - mask = (1 << bitWidth) - 1 \ - return (value >> shift) & mask \ -end" - // https://github.com/HeinrichG-V12/E65_ReverseEngineering/blob/main/docs/0x3B4.md TEST(LuaE65, Battery) { const char* realdata = TWO_BYTES_LSB R"( @@ -96,7 +85,7 @@ pedal = 50 } TEST(LuaE65, gearTorque) { - const char* realdata = GET_BIT_RANGE R"( + const char* realdata = GET_BIT_RANGE_LSB R"( function testFunc() data = {0x9F, 0x01, 0x32, 0x20, 0x23, 0x30, 0xFF, 0x43} @@ -107,7 +96,7 @@ TEST(LuaE65, gearTorque) { } TEST(LuaE65, gearTorque2) { - const char* realdata = GET_BIT_RANGE R"( + const char* realdata = GET_BIT_RANGE_LSB R"( function testFunc() data = {0x9F, 0x01, 0x32, 0x20, 0x23, 0x30, 0xFF, 0x43} @@ -118,7 +107,7 @@ TEST(LuaE65, gearTorque2) { } TEST(LuaE65, gearTorque3) { - const char* realdata = GET_BIT_RANGE R"( + const char* realdata = GET_BIT_RANGE_LSB R"( function testFunc() data = {0x9F, 0xDF, 0x32, 0x20, 0x23, 0x30, 0xFF, 0x43}