first use of libmbus

This commit is contained in:
Wolfgang Hottgenroth 2020-11-03 14:37:58 +01:00
parent b1e2277ef5
commit c2efa9d8f3
Signed by: wn
GPG Key ID: 6C1E5E531E0D5D7F
3 changed files with 33 additions and 9 deletions

View File

@ -17,6 +17,8 @@ typedef struct {
char deviceName[MBUSDEVICE_NAMELENGTH]; char deviceName[MBUSDEVICE_NAMELENGTH];
uint8_t address; uint8_t address;
t_mbusFrameField consideredField[MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS]; t_mbusFrameField consideredField[MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS];
uint32_t requests;
uint32_t failures;
} t_mbusDevice; } t_mbusDevice;

View File

@ -35,7 +35,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 17 }, { .label = "power", .index = 17 },
{ .label = "", .index = 0 }, { .label = "", .index = 0 },
{ .label = "", .index = 0 } { .label = "", .index = 0 }
} },
.requests = 0,
.failures = 0
}, },
{ {
.deviceName = "Computer Power", .deviceName = "Computer Power",
@ -45,7 +47,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 4 }, { .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 }, { .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 } { .label = "current", .index = 3 }
} },
.requests = 0,
.failures = 0
}, },
{ {
.deviceName = "Dryer Power", .deviceName = "Dryer Power",
@ -55,7 +59,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 4 }, { .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 }, { .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 } { .label = "current", .index = 3 }
} },
.requests = 0,
.failures = 0
}, },
{ {
.deviceName = "Laundry Power", .deviceName = "Laundry Power",
@ -65,7 +71,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 4 }, { .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 }, { .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 } { .label = "current", .index = 3 }
} },
.requests = 0,
.failures = 0
}, },
{ {
.deviceName = "Dishwasher Power", .deviceName = "Dishwasher Power",
@ -75,7 +83,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 4 }, { .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 }, { .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 } { .label = "current", .index = 3 }
} },
.requests = 0,
.failures = 0
}, },
{ {
.deviceName = "Light Power", .deviceName = "Light Power",
@ -85,7 +95,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 4 }, { .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 }, { .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 } { .label = "current", .index = 3 }
} },
.requests = 0,
.failures = 0
}, },
{ {
.deviceName = "Freezer Power", .deviceName = "Freezer Power",
@ -95,7 +107,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 4 }, { .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 }, { .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 } { .label = "current", .index = 3 }
} },
.requests = 0,
.failures = 0
}, },
{ {
.deviceName = "Fridge Power", .deviceName = "Fridge Power",
@ -105,7 +119,9 @@ static t_mbusDevice devices[] = {
{ .label = "power", .index = 4 }, { .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 }, { .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 } { .label = "current", .index = 3 }
} },
.requests = 0,
.failures = 0
} }
}; };
@ -115,7 +131,11 @@ void triggerMBusRequest(void *handle) {
static uint32_t cnt = 0; static uint32_t cnt = 0;
logMsg(""); logMsg("");
logMsg("*** NEW REQUEST %s %d %d ***", devices[deviceIndex].deviceName, deviceIndex, cnt); logMsg("*** NEW REQUEST %s %d %d %d %d ***",
devices[deviceIndex].deviceName,
devices[deviceIndex].requests,
devices[deviceIndex].failures,
deviceIndex, cnt);
mbusCommRequest(&(devices[deviceIndex])); mbusCommRequest(&(devices[deviceIndex]));
cnt++; cnt++;

View File

@ -351,6 +351,7 @@ static void handleRequestEngine(void *handle) {
case MBCS_TIMEOUT: case MBCS_TIMEOUT:
logMsg("hre state TIMEOUT"); logMsg("hre state TIMEOUT");
localMbusCommHandle->device->failures += 1;
localMbusCommHandle->receiving = false; localMbusCommHandle->receiving = false;
if (localMbusCommHandle->frame.userdata != NULL) { if (localMbusCommHandle->frame.userdata != NULL) {
free(localMbusCommHandle->frame.userdata); free(localMbusCommHandle->frame.userdata);
@ -398,6 +399,7 @@ e_mbusCommRequestResult mbusCommRequest(t_mbusDevice *mbusDevice) {
mbusCommHandle.cmd = MBUS_QUERY_CMD; mbusCommHandle.cmd = MBUS_QUERY_CMD;
mbusCommHandle.addr = mbusDevice->address; mbusCommHandle.addr = mbusDevice->address;
mbusCommHandle.device = mbusDevice; mbusCommHandle.device = mbusDevice;
mbusDevice->requests += 1;
schAdd(handleRequestEngine, (void*) &mbusCommHandle, 0, 0); schAdd(handleRequestEngine, (void*) &mbusCommHandle, 0, 0);
res = MBCRR_TRIGGERED; res = MBCRR_TRIGGERED;
} }