diff --git a/src/lib/ebus/datatype.cpp b/src/lib/ebus/datatype.cpp index 686d173b..f4e63683 100644 --- a/src/lib/ebus/datatype.cpp +++ b/src/lib/ebus/datatype.cpp @@ -1019,6 +1019,10 @@ DataTypeList::DataTypeList() add(new NumberDataType("UIR", 16, REV, 0xffff, 0, 0xfffe, 1)); // unsigned integer, 0 - 65534, big endian add(new NumberDataType("SIN", 16, SIG, 0x8000, 0x8001, 0x7fff, 1)); // signed integer, -32767 - +32767, little endian add(new NumberDataType("SIR", 16, SIG|REV, 0x8000, 0x8001, 0x7fff, 1)); // signed integer, -32767 - +32767, big endian + add(new NumberDataType("U3N", 24, 0, 0xffffff, 0, 0xfffffe, 1)); // unsigned 3 bytes int, 0 - 16777214, little endian + add(new NumberDataType("U3R", 24, REV, 0xffffff, 0, 0xfffffe, 1)); // unsigned 3 bytes int, 0 - 16777214, big endian + add(new NumberDataType("S3N", 24, SIG, 0x800000, 0x800001, 0xffffff, 1)); // signed 3 bytes int, -8388607 - +8388607, little endian + add(new NumberDataType("S3R", 24, SIG|REV, 0x800000, 0x800001, 0xffffff, 1)); // signed 3 bytes int, -8388607 - +8388607, big endian add(new NumberDataType("ULG", 32, 0, 0xffffffff, 0, 0xfffffffe, 1)); // unsigned integer, 0 - 4294967294, little endian add(new NumberDataType("ULR", 32, REV, 0xffffffff, 0, 0xfffffffe, 1)); // unsigned integer, 0 - 4294967294, big endian add(new NumberDataType("SLG", 32, SIG, 0x80000000, 0x80000001, 0xffffffff, 1)); // signed integer, -2147483647 - +2147483647, little endian diff --git a/src/lib/ebus/test/test_data.cpp b/src/lib/ebus/test/test_data.cpp index 63ebff89..342d9b31 100644 --- a/src/lib/ebus/test/test_data.cpp +++ b/src/lib/ebus/test/test_data.cpp @@ -318,6 +318,34 @@ int main() {"x,,sir", "32767", "10feffff027fff", "00", ""}, {"x,,sir,10","-9.0", "10feffff02ffa6", "00", ""}, {"x,,sir,-10","-900","10feffff02ffa6", "00", ""}, + {"x,,u3n", "38", "10feffff03260000", "00", ""}, + {"x,,u3n", "0", "10feffff03000000", "00", ""}, + {"x,,u3n", "16777214", "10feffff03feffff", "00", ""}, + {"x,,u3n", "-", "10feffff03ffffff", "00", ""}, + {"x,,u3n,10", "3.8", "10feffff03260000", "00", ""}, + {"x,,u3n,-10","380", "10feffff03260000", "00", ""}, + {"x,,u3r", "38", "10feffff03000026", "00", ""}, + {"x,,u3r", "0", "10feffff03000000", "00", ""}, + {"x,,u3r", "16777214", "10feffff03fffffe", "00", ""}, + {"x,,u3r", "-", "10feffff03ffffff", "00", ""}, + {"x,,u3r,10", "3.8", "10feffff03000026", "00", ""}, + {"x,,u3r,-10","380", "10feffff03000026", "00", ""}, + {"x,,s3n", "-90", "10feffff03a6ffff", "00", ""}, + {"x,,s3n", "0", "10feffff03000000", "00", ""}, + {"x,,s3n", "-1", "10feffff03ffffff", "00", ""}, + {"x,,s3n", "-", "10feffff03000080", "00", ""}, + {"x,,s3n", "-8388607", "10feffff03010080", "00", ""}, + {"x,,s3n", "8388607", "10feffff03ffff7f", "00", ""}, + {"x,,s3n,10","-9.0", "10feffff03a6ffff", "00", ""}, + {"x,,s3n,-10","-900","10feffff03a6ffff", "00", ""}, + {"x,,s3r", "-90", "10feffff03ffffa6", "00", ""}, + {"x,,s3r", "0", "10feffff03000000", "00", ""}, + {"x,,s3r", "-1", "10feffff03ffffff", "00", ""}, + {"x,,s3r", "-", "10feffff03800000", "00", ""}, + {"x,,s3r", "-8388607", "10feffff03800001", "00", ""}, + {"x,,s3r", "8388607", "10feffff037fffff", "00", ""}, + {"x,,s3r,10","-9.0", "10feffff03ffffa6", "00", ""}, + {"x,,s3r,-10","-900","10feffff03ffffa6", "00", ""}, {"x,,flt", "-0.090", "10feffff02a6ff", "00", ""}, {"x,,flt", "0.000", "10feffff020000", "00", ""}, {"x,,flt", "-0.001", "10feffff02ffff", "00", ""},