This commit is contained in:
Timur A. Fatkhullin 2024-12-13 02:25:03 +03:00
parent 1806ffda99
commit 1dacab88fe
3 changed files with 29 additions and 34 deletions

View File

@ -424,7 +424,8 @@ size_t RaptorEagleCCD::clReadAndCheckAck(byte_seq_t& bytes)
if (_clCommandAckBit && nbytes) { if (_clCommandAckBit && nbytes) {
auto ack = *(bytes.end() - 1 - _clChecksumBit); auto ack = *(bytes.end() - 1 - _clChecksumBit);
if (ack != CL_ETX) { 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())); std::format("pxd_serialWrite({}, 0, {}, {})", _cameraUnitmap, (void*)bytes.data(), bytes.size()));
if (nbytes != 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 // 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), n = pxd_serialWrite(_cameraUnitmap, 0, (char*)etx_checksum_bytes, tr_nbytes),
std::format("pxd_serialWrite({}, 0, {}, {})", _cameraUnitmap, (void*)etx_checksum_bytes, tr_nbytes)); std::format("pxd_serialWrite({}, 0, {}, {})", _cameraUnitmap, (void*)etx_checksum_bytes, tr_nbytes));
if (n != tr_nbytes) { if (n != tr_nbytes) {
throw std::error_code(RaptorEagleCCDError::ERROR_CAMLINK_WRITE); throw std::system_error(RaptorEagleCCDError::ERROR_CAMLINK_WRITE);
} }
nbytes += n; nbytes += n;
@ -756,7 +757,7 @@ void RaptorEagleCCD::startAquisition()
// if (_isAcqInProgress) { // if (_isAcqInProgress) {
if (AcquisitionProcess::isAcqInProgress) { if (AcquisitionProcess::isAcqInProgress) {
logError("Acquisition is in progress! Exit!"); 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 auto bytes = readRegisters({0xD4}); // trigger mode register
@ -764,7 +765,7 @@ void RaptorEagleCCD::startAquisition()
if (bits.test(CL_TRIGGER_MODE_EXT_TRIGGER_BIT)) { if (bits.test(CL_TRIGGER_MODE_EXT_TRIGGER_BIT)) {
logError("External trigger mode is set! Nothing to do, exit!"); 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()) if (resetMicro())
return; 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()) if (resetFPGA())
return; return;
throw std::error_code(RaptorEagleCCDError::ERROR_CANNOT_RESET_FPGA); throw std::system_error(RaptorEagleCCDError::ERROR_CANNOT_RESET_FPGA);
}); });

View File

@ -335,7 +335,7 @@ private:
} }
if constexpr (!NOEXCEPT) { if constexpr (!NOEXCEPT) {
throw std::error_code(err, XCLIBErrorCategory::get()); throw std::system_error(err, XCLIBErrorCategory::get());
} }
} else { } else {
if (std::ranges::size(func_name)) { if (std::ranges::size(func_name)) {

View File

@ -1,4 +1,5 @@
#include <common/adc_spdlog.h> #include <common/adc_spdlog.h>
#include <common/adc_utils.h>
#include <net/adc_netproto.h> #include <net/adc_netproto.h>
#include <net/asio/adc_device_netserver_asio.h> #include <net/asio/adc_device_netserver_asio.h>
#include <spdlog/sinks/basic_file_sink.h> #include <spdlog/sinks/basic_file_sink.h>
@ -76,38 +77,31 @@ int main(int argc, char* argv[])
}(); }();
std::string level_str = opt_result["level"].as<std::string>(); std::string level_str = opt_result["level"].as<std::string>();
std::ranges::transform(level_str, level_str.begin(), [](const char& c) { return std::tolower(c); });
auto log_level = [&level_str]() { auto log_level = spdlog::level::from_str(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;
}();
logger->set_level(log_level); logger->set_level(log_level);
logger->flush_on(spdlog::level::trace); 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::seconds>(std::chrono::system_clock::now()));
logger->info(fmt, std::format(" {} ", zt));
logger->info(fmt, "");
logger->info("\n");
asio::io_context io_ctx; asio::io_context io_ctx;
asio::signal_set signals(io_ctx, SIGINT, SIGTERM); asio::signal_set signals(io_ctx, SIGINT, SIGTERM);
signals.async_wait([&](std::error_code, int) { io_ctx.stop(); }); signals.async_wait([&](std::error_code, int) { io_ctx.stop(); });
RaptorEagleCCD ccd_device(logger); RaptorEagleCCD ccd_device(logger);
server_t server("RAPTOR EAGLE V CCD SERVER", io_ctx, 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<bool>()) { if (opt_result["D"].as<bool>()) {
// server.daemonize(); server.daemonize();
} }
io_ctx.run(); io_ctx.run();
@ -145,13 +139,13 @@ int main(int argc, char* argv[])
} catch (const cxxopts::exceptions::exception& ex) { } catch (const cxxopts::exceptions::exception& ex) {
std::cerr << "\nAn error occured while parsing input options: " << ex.what() << "\n"; std::cerr << "\nAn error occured while parsing input options: " << ex.what() << "\n";
return 127; exit_code = 127;
} catch (const std::system_error& ex) { } catch (const std::system_error& ex) {
std::cerr << "\nAn error ocured: " << ex.what() << "\n"; 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"; // std::cerr << "Category: " << ex.code().category().name() << "; message: " << ex.code().message() << "\n";
return 128; exit_code = 128;
} }
return 0; return exit_code;
} }