diff --git a/Makefile b/Makefile index 0ee10ce..90b0778 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/src/dvparser.cc b/src/dvparser.cc index 39d40fb..c5aad98 100644 --- a/src/dvparser.cc +++ b/src/dvparser.cc @@ -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) { diff --git a/tests/test_broken.sh b/tests/test_broken.sh index 927c8a1..cff3015 100755 --- a/tests/test_broken.sh +++ b/tests/test_broken.sh @@ -12,7 +12,6 @@ cat > $TEST/test_expected.txt <