diff --git a/cube/User/Inc/mbusParserExt.h b/cube/User/Inc/mbusParserExt.h new file mode 100644 index 0000000..908154b --- /dev/null +++ b/cube/User/Inc/mbusParserExt.h @@ -0,0 +1,17 @@ +#ifndef _MBUSPARSEREXT_H_ +#define _MBUSPARSEREXT_H_ + +#include + + +typedef struct { + char name[32]; + char unit[16]; + uint8_t exponent; +} parsedVIB_t; + +parsedVIB_t parseVIB(mbus_value_information_block vib); + + + +#endif //_MBUSPARSEREXT_H_ \ No newline at end of file diff --git a/cube/User/Src/mbusParserExt.c b/cube/User/Src/mbusParserExt.c new file mode 100644 index 0000000..057cc12 --- /dev/null +++ b/cube/User/Src/mbusParserExt.c @@ -0,0 +1,38 @@ +#include +#include + + + +static parsedVIB_t parseVIB_FB(mbus_value_information_block vib) { + parsedVIB_t parsedVIB = { .name = "FB", .unit = "?", .exponent = 1 }; + + return parsedVIB; +} + +static parsedVIB_t parseVIB_FD(mbus_value_information_block vib) { + parsedVIB_t parsedVIB = { .name = "FD", .unit = "?", .exponent = 1 }; + + return parsedVIB; +} + +static parsedVIB_t parseVIB_default(mbus_value_information_block vib) { + parsedVIB_t parsedVIB = { .name = "default", .unit = "?", .exponent = 1 }; + + return parsedVIB; +} + + +parsedVIB_t parseVIB(mbus_value_information_block vib) { + parsedVIB_t parsedVIB; + + if (vib.vif == 0xfb) { + parsedVIB = parseVIB_FB(vib); + } else if (vib.vif == 0xfd) { + parsedVIB = parseVIB_FD(vib); + } else { + parsedVIB = parseVIB_default(vib); + } + + return parsedVIB; +} +