CollisionAvoidance/src/main.cpp

67 lines
1.9 KiB
C++

#include "core/System.h"
#include "utils/Logger.h"
#include "config/SystemConfig.h"
#include <iostream>
#include <thread>
#include <csignal>
#include <filesystem>
volatile sig_atomic_t running = true;
void signalHandler(int signum) {
std::cout << "Interrupt signal (" << signum << ") received.\n";
running = false;
}
LogLevel getLogLevelFromString(const std::string& level) {
if (level == "debug") return LogLevel::DEBUG;
if (level == "info") return LogLevel::INFO;
if (level == "warning") return LogLevel::WARNING;
if (level == "error") return LogLevel::ERROR;
return LogLevel::INFO; // 默认级别
}
int main(int argc, char* argv[]) {
try {
// 设置信号处理
signal(SIGINT, signalHandler);
signal(SIGTERM, signalHandler);
// 创建日志目录
std::filesystem::create_directories("logs");
// 加载系统配置
SystemConfig::instance().load("config/system_config.json");
// 初始化日志系统
Logger::initialize(SystemConfig::instance().logging.file, getLogLevelFromString(SystemConfig::instance().logging.level));
Logger::info("Starting system...");
Logger::debug("Log level set to: ", SystemConfig::instance().logging.level);
// 初始化系统
System system;
if (!system.initialize()) {
Logger::error("Failed to initialize system");
return 1;
}
// 启动系统
system.start();
Logger::info("System running...");
// 主循环
while (running) {
std::this_thread::sleep_for(std::chrono::seconds(1));
}
// 停止系统
system.stop();
Logger::info("System stopped");
return 0;
}
catch (const std::exception& e) {
std::cerr << "Fatal error: " << e.what() << std::endl;
return 1;
}
}