From c80cb92c537e57d5211526b497fb747a8dff0f87 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Thu, 4 Mar 2021 16:35:01 +0100 Subject: [PATCH] prepare buffer --- src/Makefile | 4 ++-- src/sinkSender.c | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index 51d0901..87a844d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -5,8 +5,8 @@ LDFLAGS=-lwiringPi -lconfig INST_DIR=/opt/sbin -REFCNT:=$(shell git rev-list --all --count) -VERSION:=$(shell cat VERSION) +REFCNT := $(shell git rev-list --all --count) +VERSION := $(shell git rev-parse --short=8 HEAD) .PHONY: all all: counter diff --git a/src/sinkSender.c b/src/sinkSender.c index 9e7c933..9259b33 100644 --- a/src/sinkSender.c +++ b/src/sinkSender.c @@ -1,4 +1,5 @@ #include +#include #include "sinkSender.h" #include "logging.h" #include "led.h" @@ -23,6 +24,8 @@ const char *sharedSecret; static t_minuteBuffer minuteBuffer; static uint32_t secondOfMinute; +extern char VERSION[]; + void sinkSenderInit(config_t *pCfg) { if (! config_lookup_string(pCfg, SINKSERVER_KEY, &sinkServer)) { @@ -54,8 +57,28 @@ void sinkSenderPut(uint32_t seconds, uint32_t frequency) { minuteBuffer.s.timestamp = seconds; } minuteBuffer.s.frequency[secondOfMinute] = frequency; + secondOfMinute += 1; + if (secondOfMinute == SECONDS_PER_MINUTE) { + logmsg(LOG_DEBUG, "minute is full"); + minuteBuffer->s.totalRunningHours = 0; + minuteBuffer->s.totalPowercycles = 0; + minuteBuffer->s.totalWatchdogResets = 0; + minuteBuffer->s.version = strtol(VERSION, NULL, 16); + + memset(minuteBuffer->s.deviceId, 0, sizeof(minuteBuffer->s.deviceId)); + strcpy(minuteBuffer->s.deviceId, config->deviceId); + + memcpy(minuteBuffer->s.hash, config->sharedSecret, SHA256_BLOCK_SIZE); + SHA256_CTX ctx; + sha256_init(&ctx); + sha256_update(&ctx, minuteBuffer->b, sizeof(minuteBuffer->b)); + sha256_final(&ctx, minuteBuffer->s.hash); + + + + } led(E_GREEN, true);