#pragma once #include #include #include #include "ring_buffer.h" #include "analysis_model.h" /** * Hauptklasse des Sensornetzwerks * @tparam N Größe des Ringpuffers * * Verwaltet alle Komponenten: * - Ringpuffer für Sensordaten * - Analysemodell * - Threads für Sensoren, Analyse und Controller */ template class SensorNetwork { RingBuffer buffer; // Gemeinsamer Datenpuffer AnalysisModel model; // Geteiltes Analysemodell std::atomic running{false}; // Steuerflag für Threads // Thread-Container std::vector sensors; std::vector analysers; std::thread controller; public: ~SensorNetwork() { if (running) stop(); } void start(size_t num_sensors, size_t num_analysers); void stop(); private: // Thread-Funktionen void sensor_thread(int id); void analyser_thread(int id); void controller_thread(); };