Dif 0f is manufacturer specific, treat remaining odd difs, like 7f also as manufacturer specific.

pull/622/head
Fredrik Öhrström 2022-09-27 19:27:37 +02:00
rodzic 0643668f51
commit 84eeaaa038
3 zmienionych plików z 8 dodań i 4 usunięć

Wyświetl plik

@ -408,4 +408,4 @@ collect_copyrights:
# Include dependency information generated by gcc in a previous compile.
include $(wildcard $(patsubst %.o,%.d,$(PROG_OBJS) $(DRIVER_OBJS)))
.PHONY: deb
.PHONY: deb test testd deploy release_major release_minor release_rc collect_copyrights

Wyświetl plik

@ -208,7 +208,7 @@ bool parseDV(Telegram *t,
{
if (dif == 0x0f)
{
DEBUG_PARSER("(dvparser) reached manufacturer specific data 0f, parsing is done.\n");
DEBUG_PARSER("(dvparser) reached dif %02x manufacturer specific data, parsing is done.\n", dif);
datalen = std::distance(data,data_end);
string value = bin2hex(data+1, data_end, datalen-1);
t->mfct_0f_index = 1+std::distance(data_start, data);
@ -216,7 +216,12 @@ bool parseDV(Telegram *t,
t->addExplanationAndIncrementPos(data, datalen, KindOfData::PROTOCOL, Understanding::NONE, "%02X manufacturer specific data %s", dif, value.c_str());
break;
}
debug("(dvparser) cannot handle dif %02X ignoring rest of telegram.\n", dif);
DEBUG_PARSER("(dvparser) reached unknown dif %02x treating remaining data as manufacturer specific, parsing is done.\n", dif);
datalen = std::distance(data,data_end);
string value = bin2hex(data+1, data_end, datalen-1);
t->mfct_0f_index = 1+std::distance(data_start, data);
assert(t->mfct_0f_index >= 0);
t->addExplanationAndIncrementPos(data, datalen, KindOfData::PROTOCOL, Understanding::NONE, "%02X unknown dif treating remaining data as mfct specific %s", dif, value.c_str());
break;
}
if (dif == 0x2f) {

Wyświetl plik

@ -12,7 +12,6 @@ cat > $TEST/test_expected.txt <<EOF
(dvparser) found new format "046D036E51706CE1F14302FF2C0259D40902FD66A000" with hash 48a9, remembering!
(dvparser) warning: unexpected end of data
(dvparser) warning: unexpected end of data
(dvparser) cannot handle dif 7F ignoring rest of telegram.
(dvparser) found new format "046D0406041301FD17426C4406840106840206840306840406840506840606840706840806840906C1337F47A64E0C062364" with hash b934, remembering!
(meter) while processing field extractors ignoring dventry 0C06 at offset 129 matching since field total was already matched against dventry 0406 at offset 25 !
EOF