getBitRangeMsb

This commit is contained in:
Andrey 2023-11-15 00:28:43 -05:00
parent 461926ef20
commit 9b920bf2fa
2 changed files with 25 additions and 1 deletions

View File

@ -108,6 +108,19 @@ function getBitRange(data, bitIndex, bitWidth) \n\
end \n\
"
#define GET_BIT_RANGE_MSB " \
function getBitRangeMsb(data, bitIndex, bitWidth) \n\
byteIndex = bitIndex >> 3 \n\
shift = bitIndex - byteIndex * 8 \n\
value = data[1 + byteIndex] \n\
if (shift + bitWidth > 8) then \n\
value = value + data[0 + byteIndex] * 256 \
end \n\
mask = (1 << bitWidth) - 1 \n\
return (value >> shift) & mask \n\
end \n\
"
#define SET_BIT_RANGE_LSB " \
function setBitRange(data, totalBitIndex, bitWidth, value) \
local byteIndex = totalBitIndex >> 3 \

View File

@ -92,7 +92,18 @@ TEST(LuaE65, gearTorque) {
return getBitRange(data, 12, 12)
end)";
EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 800);
EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0x320);
}
TEST(LuaE65, offtopicTestGetBitRangeMsb) {
const char* realdata = GET_BIT_RANGE_MSB R"(
function testFunc()
data = {0x9F, 0x01, 0x32, 0x20, 0x23, 0x30, 0xFF, 0x43}
return getBitRangeMsb(data, 12, 12)
end)";
EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0x9F0);
}
TEST(LuaE65, gearTorque2) {