diff --git a/src/VERSION b/src/VERSION index fd6d73e..ea6844b 100644 --- a/src/VERSION +++ b/src/VERSION @@ -1 +1 @@ -0.95 +0.97 diff --git a/src/counter.c b/src/counter.c index 9018f8e..baa5aef 100644 --- a/src/counter.c +++ b/src/counter.c @@ -88,24 +88,26 @@ int main (void) { double lastF = 0; bool settled = false; uint8_t ledTick = 0; + while (1) { - uint32_t diff = ringbufferGet(); + uint32_t period = ringbufferGet(); - double f = 1.0 / (((double) diff) / 1000000.0); - double fRaw = f; + double fRaw = 1.0 / (((double) period) / 1000000.0); int valid = settled ? 1 : 0; - double gradient = f - lastF; + double gradient = fRaw - lastF; + double fSmoothed = fRaw; if (settled && (fabs(gradient) > epsilon)) { - logmsg(LOG_INFO, "Current f=%f, last f=%f, gradient %f too large, invalid\n", f, lastF, gradient); + logmsg(LOG_INFO, "Current f=%f, last f=%f, gradient %f too large, invalid\n", fRaw, lastF, gradient); skipped++; - f = lastF; + fSmoothed = lastF; valid = 0; + } else { + lastF = fRaw; } - lastF = f; -// printf("%f, %d\n", f, valid); + if (settled) { - influxAddFrequency(fRaw, f, gradient, valid); + influxAddFrequency(period, fRaw, fSmoothed, gradient, valid); } ledTick++; diff --git a/src/influx.c b/src/influx.c index 153df79..d29a094 100644 --- a/src/influx.c +++ b/src/influx.c @@ -91,7 +91,7 @@ static void influxSendRequest() { led(E_BLUE, false); } -void influxAddFrequency(double fRaw, double fSmoothed, double gradient, +void influxAddFrequency(uint32_t period, double fRaw, double fSmoothed, double gradient, int valid) { static uint32_t entries = 0; static uint32_t totalEntries = 0; @@ -100,7 +100,12 @@ void influxAddFrequency(double fRaw, double fSmoothed, double gradient, clock_gettime(CLOCK_REALTIME, &t); uint64_t tt = (((uint64_t)t.tv_sec) * 1000) + (((uint64_t)t.tv_nsec) / 1000000); - int c = sprintf(tmpBuf, "mainsfrequency,host=%s,valid=%d,location=%s freq=%f,gradient=%f,freqRaw=%f %llu\n", influxTag, valid, location, fSmoothed, gradient, fRaw, tt); + int c = sprintf(tmpBuf, "mainsfrequency,host=%s,valid=%d,location=%s " + "period=%u,freq=%f,freqSmoothed=%f,gradient=%f,freqRaw=%f " + "%llu\n", + influxTag, valid, location, + period, fSmoothed, fSmoothed, gradient, fRaw, + tt); if ((bufferNextEntry + c + 10) > (influxBuffer + BUFSIZE)) { influxSendRequest(); diff --git a/src/influx.h b/src/influx.h index 0bb1290..60e166d 100644 --- a/src/influx.h +++ b/src/influx.h @@ -3,7 +3,7 @@ #include -void influxAddFrequency(double fRaw, double fSmoothed, double gradient, int valid); +void influxAddFrequency(uint32_t period, double fRaw, double fSmoothed, double gradient, int valid); void influxInit(config_t *pCfg); #endif // _INFLUX_H_