publishing results
This commit is contained in:
parent
f584c7b543
commit
8e0d072571
@ -7,8 +7,8 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char name[32];
|
char *name;
|
||||||
char unit[16];
|
char *unit;
|
||||||
int8_t exponent;
|
int8_t exponent;
|
||||||
bool found;
|
bool found;
|
||||||
} parsedVIB_t;
|
} parsedVIB_t;
|
||||||
|
@ -7,8 +7,21 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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) {
|
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]);
|
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) {
|
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) {
|
if ((vib.vife[0] & 0b01110000) == 0b01000000) {
|
||||||
strcpy(parsedVIB.name, "Voltage");
|
parsedVIB.name = NAME_VOLTAGE;
|
||||||
strcpy(parsedVIB.unit, "V");
|
parsedVIB.unit = UNIT_VOLT;
|
||||||
parsedVIB.exponent = (vib.vife[0] & 0b01111) - 9;
|
parsedVIB.exponent = (vib.vife[0] & 0b01111) - 9;
|
||||||
parsedVIB.found = true;
|
parsedVIB.found = true;
|
||||||
} else if ((vib.vife[0] & 0b01110000) == 0b01010000) {
|
} else if ((vib.vife[0] & 0b01110000) == 0b01010000) {
|
||||||
strcpy(parsedVIB.name, "Current");
|
parsedVIB.name = NAME_CURRENT;
|
||||||
strcpy(parsedVIB.unit, "A");
|
parsedVIB.unit = UNIT_AMPERE;
|
||||||
parsedVIB.exponent = (vib.vife[0] & 0b01111) - 12;
|
parsedVIB.exponent = (vib.vife[0] & 0b01111) - 12;
|
||||||
parsedVIB.found = true;
|
parsedVIB.found = true;
|
||||||
} else {
|
} 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) {
|
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) {
|
if ((vib.vif & 0b01111000) == 0b00000000) {
|
||||||
strcpy(parsedVIB.name, "Energy");
|
parsedVIB.name = NAME_ENERGY;
|
||||||
strcpy(parsedVIB.unit, "Wh");
|
parsedVIB.unit = UNIT_WATTHOUR;
|
||||||
parsedVIB.exponent = (vib.vif & 0b0111) - 3;
|
parsedVIB.exponent = (vib.vif & 0b0111) - 3;
|
||||||
parsedVIB.found = true;
|
parsedVIB.found = true;
|
||||||
} else if ((vib.vif & 0b01111000) == 0b00101000) {
|
} else if ((vib.vif & 0b01111000) == 0b00101000) {
|
||||||
strcpy(parsedVIB.name, "Power");
|
parsedVIB.name = NAME_POWER;
|
||||||
strcpy(parsedVIB.unit, "W");
|
parsedVIB.unit = UNIT_WATT;
|
||||||
parsedVIB.exponent = (vib.vif & 0b0111) - 3;
|
parsedVIB.exponent = (vib.vif & 0b0111) - 3;
|
||||||
parsedVIB.found = true;
|
parsedVIB.found = true;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user