From dc824f0c429c456df24ab9ef9c4588f7dba039c8 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Mon, 21 Feb 2022 11:26:57 -0500 Subject: [PATCH] N73 --- unit_tests/tests/lua/test_lua_e65.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/unit_tests/tests/lua/test_lua_e65.cpp b/unit_tests/tests/lua/test_lua_e65.cpp index db0bc1a28a..68f08eb2e1 100644 --- a/unit_tests/tests/lua/test_lua_e65.cpp +++ b/unit_tests/tests/lua/test_lua_e65.cpp @@ -5,6 +5,18 @@ return (data[offset + 2] * 256 + data[offset + 1]) * factor \ end" + +#define GET_BIT_RANGE "function getBitRange(data, bitIndex, bitWidth) \ + byteIndex = bitIndex >> 3 \ + shift = bitIndex - byteIndex * 8 \ + value = data[1 + byteIndex] \ + if (shift + bitIndex > 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 R"( @@ -52,6 +64,18 @@ TEST(LuaE65, gear) { EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 8); } +TEST(LuaE65, gearTorque) { + const char* realdata = GET_BIT_RANGE R"( + + function testFunc() + data = {0x9F, 0x01, 0x32, 0x20, 0x23, 0x30, 0xFF, 0x43} + return getBitRange(data, 12, 12) + end)"; + + EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 800); +} + + TEST(LuaE65, sumChecksum) { // checksum is first byte // id = A8, packet: