diff --git a/mbus/mbus-protocol.c b/mbus/mbus-protocol.c index 69917ca..88cf474 100755 --- a/mbus/mbus-protocol.c +++ b/mbus/mbus-protocol.c @@ -2677,6 +2677,13 @@ mbus_data_variable_parse(mbus_frame *frame, mbus_data_variable *data) while (i < frame->data_size) { + // Skip filler dif=2F + if ((frame->data[i] & 0xFF) == MBUS_DIB_DIF_IDLE_FILLER) + { + i++; + continue; + } + if ((record = mbus_data_record_new()) == NULL) { // clean up... diff --git a/mbus/mbus-protocol.h b/mbus/mbus-protocol.h index ac5069b..1263417 100755 --- a/mbus/mbus-protocol.h +++ b/mbus/mbus-protocol.h @@ -129,6 +129,7 @@ typedef struct _mbus_slave_data { #define MBUS_DIB_VIF_EXTENSION_BIT 0x80 #define MBUS_DIB_DIF_MANUFACTURER_SPECIFIC 0x0F #define MBUS_DIB_DIF_MORE_RECORDS_FOLLOW 0x1F +#define MBUS_DIB_DIF_IDLE_FILLER 0x2F typedef struct _mbus_data_information_block { diff --git a/test/test-frames/wmbus-converted.hex b/test/test-frames/wmbus-converted.hex new file mode 100644 index 0000000..c6a6996 --- /dev/null +++ b/test/test-frames/wmbus-converted.hex @@ -0,0 +1 @@ +68 1f 1f 68 08 00 72 31 77 67 17 2d 2c 01 02 00 00 00 00 2f 2f 04 83 3b 88 13 00 00 2f 2f 2f 2f 2f 2f 2f 00 16 diff --git a/test/test-frames/wmbus-converted.xml b/test/test-frames/wmbus-converted.xml new file mode 100644 index 0000000..ec235a9 --- /dev/null +++ b/test/test-frames/wmbus-converted.xml @@ -0,0 +1,21 @@ + + + + 17677731 + KAM + 1 + Kamstrup 382 (6850-005) + Electricity + 0 + 00 + 0000 + + + + Instantaneous value + Energy (Wh) + 5000 + 1970-01-01T00:00:00 + + +