diff --git a/raptor_eagle_ccd.cpp b/raptor_eagle_ccd.cpp index 07d50d2..181091d 100644 --- a/raptor_eagle_ccd.cpp +++ b/raptor_eagle_ccd.cpp @@ -424,7 +424,8 @@ size_t RaptorEagleCCD::clReadAndCheckAck(byte_seq_t& bytes) if (_clCommandAckBit && nbytes) { auto ack = *(bytes.end() - 1 - _clChecksumBit); if (ack != CL_ETX) { - throw std::error_code(ack, RaptorEagleControllerErrorCategory::get()); + // throw std::system_error(std::error_code(ack, RaptorEagleControllerErrorCategory::get())); + throw std::system_error(ack, RaptorEagleControllerErrorCategory::get()); } } @@ -481,7 +482,7 @@ size_t RaptorEagleCCD::clWrite(const byte_seq_t& bytes) std::format("pxd_serialWrite({}, 0, {}, {})", _cameraUnitmap, (void*)bytes.data(), bytes.size())); if (nbytes != bytes.size()) { - throw std::error_code(RaptorEagleCCDError::ERROR_CAMLINK_WRITE); + throw std::system_error(RaptorEagleCCDError::ERROR_CAMLINK_WRITE); } // send trailing ETX and possible checksum bytes @@ -496,7 +497,7 @@ size_t RaptorEagleCCD::clWrite(const byte_seq_t& bytes) n = pxd_serialWrite(_cameraUnitmap, 0, (char*)etx_checksum_bytes, tr_nbytes), std::format("pxd_serialWrite({}, 0, {}, {})", _cameraUnitmap, (void*)etx_checksum_bytes, tr_nbytes)); if (n != tr_nbytes) { - throw std::error_code(RaptorEagleCCDError::ERROR_CAMLINK_WRITE); + throw std::system_error(RaptorEagleCCDError::ERROR_CAMLINK_WRITE); } nbytes += n; @@ -756,7 +757,7 @@ void RaptorEagleCCD::startAquisition() // if (_isAcqInProgress) { if (AcquisitionProcess::isAcqInProgress) { logError("Acquisition is in progress! Exit!"); - throw std::error_code(RaptorEagleCCDError::ERROR_ACQUISITION_IN_PROGRESS); + throw std::system_error(RaptorEagleCCDError::ERROR_ACQUISITION_IN_PROGRESS); } auto bytes = readRegisters({0xD4}); // trigger mode register @@ -764,7 +765,7 @@ void RaptorEagleCCD::startAquisition() if (bits.test(CL_TRIGGER_MODE_EXT_TRIGGER_BIT)) { logError("External trigger mode is set! Nothing to do, exit!"); - throw std::error_code(RaptorEagleCCDError::ERROR_EXT_TRIGGER_MODE); + throw std::system_error(RaptorEagleCCDError::ERROR_EXT_TRIGGER_MODE); } @@ -963,7 +964,7 @@ void RaptorEagleCCD::initAttrComm() if (resetMicro()) return; - throw std::error_code(RaptorEagleCCDError::ERROR_CANNOT_RESET_MICRO); + throw std::system_error(RaptorEagleCCDError::ERROR_CANNOT_RESET_MICRO); }); @@ -972,7 +973,7 @@ void RaptorEagleCCD::initAttrComm() if (resetFPGA()) return; - throw std::error_code(RaptorEagleCCDError::ERROR_CANNOT_RESET_FPGA); + throw std::system_error(RaptorEagleCCDError::ERROR_CANNOT_RESET_FPGA); }); diff --git a/raptor_eagle_ccd.h b/raptor_eagle_ccd.h index 04c6d74..4c250d8 100644 --- a/raptor_eagle_ccd.h +++ b/raptor_eagle_ccd.h @@ -335,7 +335,7 @@ private: } if constexpr (!NOEXCEPT) { - throw std::error_code(err, XCLIBErrorCategory::get()); + throw std::system_error(err, XCLIBErrorCategory::get()); } } else { if (std::ranges::size(func_name)) { diff --git a/raptor_eaglev_server.cpp b/raptor_eaglev_server.cpp index 9e46f8c..00b15bf 100644 --- a/raptor_eaglev_server.cpp +++ b/raptor_eaglev_server.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -76,38 +77,31 @@ int main(int argc, char* argv[]) }(); std::string level_str = opt_result["level"].as(); + std::ranges::transform(level_str, level_str.begin(), [](const char& c) { return std::tolower(c); }); - auto log_level = [&level_str]() { - if (level_str == "TRACE") { - return spdlog::level::trace; - } else if (level_str == "DEBUG") { - return spdlog::level::debug; - } else if (level_str == "INFO") { - return spdlog::level::info; - } else if (level_str == "WARN") { - return spdlog::level::warn; - } else if (level_str == "ERROR") { - return spdlog::level::err; - } else if (level_str == "CRITICAL") { - return spdlog::level::critical; - } else if (level_str == "OFF") { - return spdlog::level::off; - } - - return spdlog::level::info; - }(); + auto log_level = spdlog::level::from_str(level_str); logger->set_level(log_level); logger->flush_on(spdlog::level::trace); + logger->set_pattern("%v"); + int w = 90; + const std::string fmt = std::format("{{:*^{}}}", w); + logger->info("\n\n\n"); + logger->info(fmt, ""); + logger->info(fmt, " RAPTOR EAGLE V CCD CAMERA SERVER "); + auto zt = std::chrono::zoned_time(std::chrono::current_zone(), + std::chrono::floor(std::chrono::system_clock::now())); + logger->info(fmt, std::format(" {} ", zt)); + logger->info(fmt, ""); + logger->info("\n"); asio::io_context io_ctx; asio::signal_set signals(io_ctx, SIGINT, SIGTERM); signals.async_wait([&](std::error_code, int) { io_ctx.stop(); }); - RaptorEagleCCD ccd_device(logger); server_t server("RAPTOR EAGLE V CCD SERVER", io_ctx, logger); @@ -136,7 +130,7 @@ int main(int argc, char* argv[]) } if (opt_result["D"].as()) { - // server.daemonize(); + server.daemonize(); } io_ctx.run(); @@ -145,13 +139,13 @@ int main(int argc, char* argv[]) } catch (const cxxopts::exceptions::exception& ex) { std::cerr << "\nAn error occured while parsing input options: " << ex.what() << "\n"; - return 127; + exit_code = 127; } catch (const std::system_error& ex) { - std::cerr << "\nAn error ocured: " << ex.what() << "\n"; - std::cerr << "Category: " << ex.code().category().name() << "; message: " << ex.code().message() << "\n"; - return 128; + std::cerr << "\nAn error occured: " << ex.what() << " (err category: " << ex.code().category().name() << ")\n"; + // std::cerr << "Category: " << ex.code().category().name() << "; message: " << ex.code().message() << "\n"; + exit_code = 128; } - return 0; + return exit_code; }