diff --git a/cube/User/Inc/mbusParserExt.h b/cube/User/Inc/mbusParserExt.h index 2d45c0b..c62759d 100644 --- a/cube/User/Inc/mbusParserExt.h +++ b/cube/User/Inc/mbusParserExt.h @@ -7,8 +7,8 @@ #include typedef struct { - char name[32]; - char unit[16]; + char *name; + char *unit; int8_t exponent; bool found; } parsedVIB_t; diff --git a/cube/User/Src/mbusParserExt.c b/cube/User/Src/mbusParserExt.c index a5678fc..454ee80 100644 --- a/cube/User/Src/mbusParserExt.c +++ b/cube/User/Src/mbusParserExt.c @@ -7,8 +7,21 @@ #include + +static const char NAME_VOLTAGE[] = "Voltage"; +static const char NAME_CURRENT[] = "Current"; +static const char NAME_POWER[] = "Power"; +static const char NAME_ENERGY[] = "Energy"; +static const char NAME_UNKNOWN[] = "unknown"; + +static const char UNIT_VOLT[] = "V"; +static const char UNIT_AMPERE[] = "A"; +static const char UNIT_WATT[] = "W"; +static const char UNIT_WATTHOUR[] = "Wh"; +static const char UNIT_UNKNOWN[] = "?"; + static parsedVIB_t parseVIB_FB(mbus_value_information_block vib) { - parsedVIB_t parsedVIB = { .name = "FB unknown", .unit = "?", .exponent = 1, .found = false }; + parsedVIB_t parsedVIB = { .name = NAME_UNKNOWN, .unit = UNIT_UNKNOWN, .exponent = 1, .found = false }; coloredMsg(LOG_RED, true, "mpe pvd_fb unknown vife 0x%02x", vib.vife[0]); @@ -16,16 +29,16 @@ static parsedVIB_t parseVIB_FB(mbus_value_information_block vib) { } static parsedVIB_t parseVIB_FD(mbus_value_information_block vib) { - parsedVIB_t parsedVIB = { .name = "FD unknown", .unit = "?", .exponent = 1, .found = false }; + parsedVIB_t parsedVIB = { .name = NAME_UNKNOWN, .unit = UNIT_UNKNOWN, .exponent = 1, .found = false }; if ((vib.vife[0] & 0b01110000) == 0b01000000) { - strcpy(parsedVIB.name, "Voltage"); - strcpy(parsedVIB.unit, "V"); + parsedVIB.name = NAME_VOLTAGE; + parsedVIB.unit = UNIT_VOLT; parsedVIB.exponent = (vib.vife[0] & 0b01111) - 9; parsedVIB.found = true; } else if ((vib.vife[0] & 0b01110000) == 0b01010000) { - strcpy(parsedVIB.name, "Current"); - strcpy(parsedVIB.unit, "A"); + parsedVIB.name = NAME_CURRENT; + parsedVIB.unit = UNIT_AMPERE; parsedVIB.exponent = (vib.vife[0] & 0b01111) - 12; parsedVIB.found = true; } else { @@ -36,16 +49,16 @@ static parsedVIB_t parseVIB_FD(mbus_value_information_block vib) { } static parsedVIB_t parseVIB_default(mbus_value_information_block vib) { - parsedVIB_t parsedVIB = { .name = "default unknown", .unit = "?", .exponent = 1, .found = false }; + parsedVIB_t parsedVIB = { .name = NAME_UNKNOWN, .unit = UNIT_UNKNOWN, .exponent = 1, .found = false }; if ((vib.vif & 0b01111000) == 0b00000000) { - strcpy(parsedVIB.name, "Energy"); - strcpy(parsedVIB.unit, "Wh"); + parsedVIB.name = NAME_ENERGY; + parsedVIB.unit = UNIT_WATTHOUR; parsedVIB.exponent = (vib.vif & 0b0111) - 3; parsedVIB.found = true; } else if ((vib.vif & 0b01111000) == 0b00101000) { - strcpy(parsedVIB.name, "Power"); - strcpy(parsedVIB.unit, "W"); + parsedVIB.name = NAME_POWER; + parsedVIB.unit = UNIT_WATT; parsedVIB.exponent = (vib.vif & 0b0111) - 3; parsedVIB.found = true; } else {