30 lines
632 B
C++
30 lines
632 B
C++
#pragma once
|
|
#include <thread>
|
|
#include <atomic>
|
|
#include <vector>
|
|
#include "ring_buffer.h"
|
|
#include "analysis_model.h"
|
|
|
|
template <size_t N>
|
|
class SensorNetwork {
|
|
RingBuffer<N> buffer;
|
|
AnalysisModel model;
|
|
std::atomic<bool> running{false};
|
|
|
|
std::vector<std::thread> sensors;
|
|
std::vector<std::thread> analysers;
|
|
std::thread controller;
|
|
|
|
public:
|
|
~SensorNetwork() {
|
|
if (running) stop();
|
|
}
|
|
|
|
void start(size_t num_sensors, size_t num_analysers);
|
|
void stop();
|
|
|
|
private:
|
|
void sensor_thread(int id);
|
|
void analyser_thread(int id);
|
|
void controller_thread();
|
|
};
|