CollisionAvoidance/include/core/System.h

40 lines
907 B
C++

#pragma once
#include "CollisionDetector.h"
#include "DataCollector.h"
#include "airport/AirportBounds.h"
#include "config/ConnectionConfig.h"
#include <memory>
#include <thread>
#include <vector>
struct ControllableVehicleConfig {
std::string vehicleNo;
std::string ip;
int port;
};
class System {
public:
System();
~System();
bool initialize(const ConnectionConfig& config);
void start();
void stop();
private:
std::unique_ptr<AirportBounds> airportBounds_;
std::unique_ptr<DataCollector> dataCollector_;
std::unique_ptr<CollisionDetector> collisionDetector_;
std::vector<ControllableVehicleConfig> controllableVehicles_;
std::thread processThread_;
bool running_ = false;
void processLoop();
void processCollisions(const std::vector<CollisionRisk>& collisions);
bool loadAirportBounds();
bool loadControllableVehicles();
};