#include #include #include #include static parsedVIB_t parseVIB_FB(mbus_value_information_block vib) { parsedVIB_t parsedVIB = { .name = "FB unknown", .unit = "?", .exponent = 1 }; return parsedVIB; } static parsedVIB_t parseVIB_FD(mbus_value_information_block vib) { parsedVIB_t parsedVIB = { .name = "FD unknown", .unit = "?", .exponent = 1 }; return parsedVIB; } static parsedVIB_t parseVIB_default(mbus_value_information_block vib) { parsedVIB_t parsedVIB = { .name = "default unknown", .unit = "?", .exponent = 1 }; if ((vib.vif & 0b00000000) == 0b00000000) { strcpy(parsedVIB.name, "Energy"); strcpy(parsedVIB.unit, "Wh"); parsedVIB.exponent = (vib.vif & 0b0111) - 3; } else if ((vib.vif & 0b00101000) == 0b00101000) { strcpy(parsedVIB.name, "Power"); strcpy(parsedVIB.unit, "W"); parsedVIB.exponent = (vib.vif & 0b0111) - 3; } else { coloredMsg(LOG_RED, true, "mpe pvd unknown vif 0x%02x", vib.vif); } 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; }