diff --git a/cube/User/Inc/sinkStruct.h b/cube/User/Inc/sinkStruct.h index f9a8207..c8fd84b 100644 --- a/cube/User/Inc/sinkStruct.h +++ b/cube/User/Inc/sinkStruct.h @@ -9,6 +9,9 @@ typedef struct __attribute__((__packed__)) { char deviceId[sizeof(((t_configBlock*)0)->deviceId)]; uint8_t hash[SHA256_BLOCK_SIZE]; + uint32_t totalRunningHours; + uint32_t totalPowercycles; + uint32_t totalWatchdogResets; uint64_t timestamp; uint32_t frequency[SECONDS_PER_MINUTE]; } t_minuteStruct; diff --git a/cube/User/Src/counter.c b/cube/User/Src/counter.c index f42db7a..c833d40 100644 --- a/cube/User/Src/counter.c +++ b/cube/User/Src/counter.c @@ -12,7 +12,7 @@ #include #include #include - +#include const uint32_t COUNTER_FREQUENCY = 1.0e6; @@ -25,6 +25,7 @@ volatile static uint32_t mainsCntSum = 0; volatile static uint32_t mainsCntCnt = 0; static t_seconds *seconds; +static t_deviceStats *deviceStats; @@ -69,6 +70,11 @@ void counterMinuteTick(void *handle) { if (minuteBufferReady[minuteBufferIdx] == 1) { coloredMsg(LOG_BLUE, "cmt, buffer %d is done, handle it", minuteBufferIdx); + + minuteBuffer->s.totalRunningHours = deviceStats->totalRunningHours; + minuteBuffer->s.totalPowercycles = deviceStats->totalPowercycles; + minuteBuffer->s.totalWatchdogResets = deviceStats->totalWatchdogResets; + memset(minuteBuffer->s.deviceId, 0, sizeof(minuteBuffer->s.deviceId)); strcpy(minuteBuffer->s.deviceId, config->deviceId); @@ -190,6 +196,8 @@ void mainsCntsInputCaptureCallback(TIM_HandleTypeDef *htim) { void counterInit() { + deviceStats = getGlobalDeviceStats(); + seconds = wizGetSeconds(); for (uint8_t i = 0; i < NUM_OF_MINUTE_BUFFERS; i++) { minuteBufferReady[i] = false; diff --git a/sink/sink20169.c b/sink/sink20169.c index 3b11a09..ce69c21 100644 --- a/sink/sink20169.c +++ b/sink/sink20169.c @@ -270,7 +270,9 @@ int httpPostRequest(char *url, const char *user, const char *pass, char *payload } int forwardMinuteBuffer(t_forwarderHandle *handle, t_minuteBuffer *buf) { - logmsg(LOG_INFO, "DeviceId: %s", buf->s.deviceId); + logmsg(LOG_INFO, "DeviceId: %s, RunningHours: %u, Powercycles: %u, WatchdogResets: %u", + buf->s.deviceId, buf->s.totalRunningHours, buf->s.totalPowercycles, buf->s.totalWatchdogResets); + t_device *device = findDevice(handle->configHandle, buf->s.deviceId); const char *location = device->location;