1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#include "autotrack.h"
#include <signal.h>
#include <filesystem>
#include "logger.h"
#include "init.h"
// Catch CTRL+C to exit live properly!
bool autotrack_should_exit = false;
void sig_handler_autotrack(int signo)
{
if (signo == SIGINT || signo == SIGTERM)
autotrack_should_exit = true;
}
int main_autotrack(int argc, char *argv[])
{
if (argc < 3) // Check overall command
{
logger->error("Usage : " + std::string(argv[0]) + " autotrack autotrack_config.json");
logger->error("Sample command :");
logger->error("./satdump autotrack autotrack_config.json");
return 1;
}
if (!std::filesystem::exists(argv[2]))
{
logger->critical("%s does not exist! Exiting", argv[2]);
return 1;
}
logger->error("CLI AutoTrack is still WIP!");
nlohmann::json settings = loadJsonFile(argv[2]);
nlohmann::json parameters = settings["parameters"];
std::string output_folder = settings["output_folder"];
// Init SatDump
satdump::initSatdump();
completeLoggerInit();
// Create output dir
if (!std::filesystem::exists(output_folder))
std::filesystem::create_directories(output_folder);
AutoTrackApp *app = new AutoTrackApp(settings, parameters, output_folder);
// Attach signal
signal(SIGINT, sig_handler_autotrack);
signal(SIGTERM, sig_handler_autotrack);
logger->info("Setup Done!");
// Now, we wait
while (1)
{
if (autotrack_should_exit)
{
logger->warn("Signal Received. Stopping.");
break;
}
app->web_heartbeat();
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
delete app;
return 0;
}
|