Skip to content
Snippets Groups Projects
Commit abecaabe authored by Ruben Otto's avatar Ruben Otto :crab:
Browse files

feat: send data to kernel if measurement got updated

parent 7998c196
Branches
No related tags found
No related merge requests found
......@@ -85,6 +85,9 @@ int main() {
sigaction(SIGINT, &signal_action, NULL);
measurement_t measurement_cache[sizeof(uint8_t)];
uint8_t measurement_cache_size = 0;
printf("Started daemon\n");
while (1) {
......@@ -98,15 +101,73 @@ int main() {
printf("Received data from %d: ", measurement.id);
print_measurement_data(&measurement);
// -1 = insert & update
// 0 = nothing
// 1 = update
int action = -1;
for (int i = 0; i < measurement_cache_size; i++) {
if (measurement_cache[i].id != measurement.id) {
continue;
}
if (measurement_cache[i].datatype == measurement.datatype) {
switch (measurement.datatype) {
case INT8:
action = measurement_cache[i].data.int8 != measurement.data.int8;
break;
case UINT8:
action = measurement_cache[i].data.uint8 != measurement.data.uint8;
break;
case INT16:
action = measurement_cache[i].data.int16 != measurement.data.int16;
break;
case UINT16:
action = measurement_cache[i].data.uint16 != measurement.data.uint16;
break;
case INT32:
action = measurement_cache[i].data.int32 != measurement.data.int32;
break;
case UINT32:
action = measurement_cache[i].data.uint32 != measurement.data.uint32;
break;
case INT64:
action = measurement_cache[i].data.int64 != measurement.data.int64;
break;
case UINT64:
action = measurement_cache[i].data.uint64 != measurement.data.uint64;
break;
case FLOAT32:
action =
measurement_cache[i].data.float32 != measurement.data.float32;
break;
case FLOAT64:
action =
measurement_cache[i].data.float64 != measurement.data.float64;
break;
}
} else {
action = -1;
}
measurement_cache[i] = measurement;
}
if (action == -1) {
measurement_cache[measurement_cache_size] = measurement;
measurement_cache_size++;
}
if (action != 0) {
data_t data = {
.sender_id = SENDER_ID,
.count = 1,
.measurements = &measurement,
.count = measurement_cache_size,
.measurements = measurement_cache,
};
if (send_kernel_message(&kernel_send_handle, &data) == -1) {
printf(" (failed to send to kernel)");
}
}
printf("\n");
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment