From 6aec8d0d456baf912fee9f1025c9000871a7c914 Mon Sep 17 00:00:00 2001 From: mrheltic Date: Thu, 5 Dec 2024 12:21:54 +0100 Subject: [PATCH] Hotfixes Passing array of possible faulty sensors --- include/dataAcquisition.h | 2 +- libraries/dataAcquisition.c | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/dataAcquisition.h b/include/dataAcquisition.h index be5595c..523e0d8 100644 --- a/include/dataAcquisition.h +++ b/include/dataAcquisition.h @@ -8,7 +8,7 @@ typedef struct { float mean; float standardDeviation; - bool *possibleFaultySensor; + int *possibleFaultySensor; } Metrics; typedef struct { diff --git a/libraries/dataAcquisition.c b/libraries/dataAcquisition.c index ae9d0da..b763e8c 100644 --- a/libraries/dataAcquisition.c +++ b/libraries/dataAcquisition.c @@ -442,12 +442,10 @@ Metrics getMetrics(float **readings, int sensorNumber, int slidingWindow) float standardDeviation = 0; int outlierCount = 0; int *faultySensors = (int *)malloc(sensorNumber * sizeof(int)); - bool *possiblyFaultySensors = (bool *)malloc(sensorNumber * sizeof(bool)); for (int i = 0; i < sensorNumber; i++) { faultySensors[i] = 0; - possiblyFaultySensors[i] = false; } float sum = 0; @@ -483,11 +481,23 @@ Metrics getMetrics(float **readings, int sensorNumber, int slidingWindow) } } - for (int i = 0; i < sensorNumber; i++) + int faultySensorsCount = 0; + for(int i = 0; i < sensorNumber; i++) + { + if(faultySensors[i] >= 0.001 * slidingWindow) + { + faultySensorsCount++; + } + } + + int *possiblyFaultySensors = (int *)malloc(faultySensorsCount * sizeof(int)); + + int j = 0; + for (int i = 0; i < faultySensorsCount; i++) { if (faultySensors[i] >= 0.001 * slidingWindow) { - possiblyFaultySensors[i] = true; + possiblyFaultySensors[j] = i; } }