Program Listing for File main_toflx2file.cpp
↰ Return to documentation for file (main_toflx2file.cpp)
#include "fromhost.hpp"
#include "ers/ers.h"
#include <format>
static volatile std::sig_atomic_t signal_status;
void signal_handler(int s){signal_status = s;}
int main(int argc, char** argv)
{
std::unique_ptr<ConfigToFlxToFile> c = std::make_unique<ConfigToFlxToFile>();
c->parse(argc, argv);
auto fh = FromHost<ConfigToFlxToFile, FileDevice, FileFromHostBuffer>(std::move(c));
for (auto & dev_no : fh.cfg->resource.device){
ERS_INFO(std::format("DEVICE {}", dev_no));
fh.devices.emplace_back(std::make_unique<FileDevice>(*fh.cfg, dev_no));
fh.dma_buffers.emplace(dev_no,
make_unique<FileFromHostBuffer>(fh.devices.back(), fh.cfg->file, fh.cfg->fifo_as_file));
}
fh.start();
std::signal(SIGINT, signal_handler);
std::signal(SIGTERM, signal_handler);
while (signal_status == 0) {
fh.print_monitoring();
usleep(fh.cfg->stats.monitoring_period_ms * 1000);
}
ERS_INFO(std::format("Received signal {}, exiting...", static_cast<int>(signal_status)));
fh.stop();
return 0;
}