BS_Praktikum4/sensor_network.h

30 lines
742 B
C
Raw Permalink Normal View History

2025-06-03 00:50:08 +02:00
#pragma once
#include <thread>
#include <atomic>
#include <vector>
#include "ring_buffer.h"
#include "analysis_model.h"
2025-06-03 01:40:44 +02:00
/**
* Hauptklasse für das Sensornetzwerk
* @tparam N Größe des Ringpuffers
*
* Verwaltet alle Komponenten:
* - Ringpuffer für Sensordaten
* - Analysemodell
* - Threads für Sensoren, Analyse und Controller
*/
2025-06-03 00:50:08 +02:00
template <size_t N>
class SensorNetwork {
2025-06-03 01:40:44 +02:00
RingBuffer<N> buffer; // Gemeinsamer Datenpuffer
AnalysisModel model; // Geteiltes Analysemodell
std::atomic<bool> running = false; // Steuerflag für Threads
std::vector<std::thread> threads; // Alle Threads
2025-06-03 00:50:08 +02:00
public:
2025-06-03 01:25:44 +02:00
~SensorNetwork() { if (running) stop(); }
2025-06-03 01:40:44 +02:00
2025-06-03 01:25:44 +02:00
void start(size_t sensors, size_t analysers);
2025-06-03 00:50:08 +02:00
void stop();
2025-06-03 01:25:44 +02:00
};