This commit is contained in:
Timur A. Fatkhullin 2024-12-10 12:20:05 +03:00
parent 8c609544be
commit 7ad31a539a
2 changed files with 24 additions and 4 deletions

View File

@ -784,11 +784,14 @@ void RaptorEagleCCD::startAquisition()
.binY = (*this)[CAMERA_ATTR_YBIN], .binY = (*this)[CAMERA_ATTR_YBIN],
.readRate = (*this)[CAMERA_ATTR_READ_RATE], .readRate = (*this)[CAMERA_ATTR_READ_RATE],
.readMode = (*this)[CAMERA_ATTR_READ_MODE], .readMode = (*this)[CAMERA_ATTR_READ_MODE],
.ccdTemp = (*this)[CAMERA_ATTR_CCD_TEMP],
.tecSetPoint = (*this)[CAMERA_ATTR_TECPOINT],
.tecState = (*this)[CAMERA_ATTR_TECSTATE] == CAMERA_ATTR_TECSTATE_ON ? true : false,
.pcbTemp = (*this)[CAMERA_ATTR_PCB_TEMP],
.filename = (*this)[CAMERA_ATTR_FITS_FILENAME], .filename = (*this)[CAMERA_ATTR_FITS_FILENAME],
.templateFilename = (*this)[CAMERA_ATTR_FITS_TEMPLATE], .templateFilename = (*this)[CAMERA_ATTR_FITS_TEMPLATE],
.permanentKeywords = _permanentFitsKeywords, // copy .permanentKeywords = _permanentFitsKeywords, // copy
.currentKeywords = std::move(_currentFitsKeywords) // move!!! .currentKeywords = std::move(_currentFitsKeywords) // move!!!
})); }));
// arm grabber // arm grabber

View File

@ -9,6 +9,7 @@
#include <xcliball.h> #include <xcliball.h>
#include <future> #include <future>
#include <list>
#include "raptor_eagle_exception.h" #include "raptor_eagle_exception.h"
@ -29,6 +30,8 @@ public:
// separator char sequence of serialized representation of user FITS keywords array // separator char sequence of serialized representation of user FITS keywords array
static constexpr std::string_view USER_FITS_KEY_SEP_SEQ{"\n"}; static constexpr std::string_view USER_FITS_KEY_SEP_SEQ{"\n"};
static constexpr size_t DEFAULT_ACQ_RING_BUFFER_SIZE = 3;
/* some Eagle V camera constants */ /* some Eagle V camera constants */
// static constexpr double EAGLE_CAMERA_MAX_EXPTIME = 27487.7906944; // in seconds (0xFFFFFFFFFF * 25nsec) // static constexpr double EAGLE_CAMERA_MAX_EXPTIME = 27487.7906944; // in seconds (0xFFFFFFFFFF * 25nsec)
static constexpr double EAGLE_CAMERA_MAX_EXPTIME = 2.5E-8 * 0xFFFFFFFFFF; // in seconds (0xFFFFFFFFFF * 25nsec) static constexpr double EAGLE_CAMERA_MAX_EXPTIME = 2.5E-8 * 0xFFFFFFFFFF; // in seconds (0xFFFFFFFFFF * 25nsec)
@ -147,15 +150,24 @@ private:
std::chrono::utc_clock::time_point startTime; std::chrono::utc_clock::time_point startTime;
std::chrono::utc_clock::time_point abortTime; std::chrono::utc_clock::time_point abortTime;
bool saveInAbort; bool saveInAbort;
double expTime; // in seconds double expTime; // in seconds
uint16_t roiStartX; uint16_t roiStartX;
uint16_t roiStartY; uint16_t roiStartY;
uint16_t roiWidth; uint16_t roiWidth;
uint16_t roiHeight; uint16_t roiHeight;
uint8_t binX; uint8_t binX;
uint8_t binY; uint8_t binY;
std::string_view readRate; std::string_view readRate;
std::string_view readMode; std::string_view readMode;
double ccdTemp;
double tecSetPoint;
bool tecState;
double pcbTemp;
std::string filename; std::string filename;
std::string templateFilename; std::string templateFilename;
std::vector<std::string> permanentKeywords; std::vector<std::string> permanentKeywords;
@ -195,7 +207,7 @@ private:
uint16_t _dimCCD[2] = {2048, 2048}; // init to E2V 4240 CCD dimension uint16_t _dimCCD[2] = {2048, 2048}; // init to E2V 4240 CCD dimension
// CCD temperature and TEC set point calibration data // CCD temperature and TEC set point calibration relation coefficients
double _adcCCDTempCalibCoeffs[2] = {0, 0}; // [k, b], Temp(degs C) = k*ADC + b double _adcCCDTempCalibCoeffs[2] = {0, 0}; // [k, b], Temp(degs C) = k*ADC + b
// [k, b, k_rev, b_rev] // [k, b, k_rev, b_rev]
@ -216,6 +228,9 @@ private:
std::vector<std::string> _currentFitsKeywords; // current acquisition FITS keywords std::vector<std::string> _currentFitsKeywords; // current acquisition FITS keywords
std::vector<std::string> _permanentFitsKeywords; // permanent user FITS keywords std::vector<std::string> _permanentFitsKeywords; // permanent user FITS keywords
// std::list<std::unique_ptr<ushort>> _acqRingBuffer;
std::list<std::pair<std::unique_ptr<ushort>, size_t>> _acqRingBuffer;
// hardware version info // hardware version info
byte_seq_t _microVersion; // microcontroller version: _microVersion[0] - major, _microVersion[1] - minor byte_seq_t _microVersion; // microcontroller version: _microVersion[0] - major, _microVersion[1] - minor
@ -304,10 +319,12 @@ private:
void xclibApiCall(int err, const adc::traits::adc_input_char_range auto& func_name) void xclibApiCall(int err, const adc::traits::adc_input_char_range auto& func_name)
{ {
if (err < 0) { if (err < 0) {
auto s_err = pxd_mesgErrorCode(err);
if (std::ranges::size(func_name)) { if (std::ranges::size(func_name)) {
logError("XCLIB API call ('{}') returns: {} ({})", func_name, err, pxd_mesgErrorCode(err)); logError("XCLIB API call ('{}') returns: {} ({})", func_name, err, s_err);
} else { } else {
logError("XCLIB API call returns: {} ({})", err, pxd_mesgErrorCode(err)); logError("XCLIB API call returns: {} ({})", err, s_err);
} }
if constexpr (!NOEXCEPT) { if constexpr (!NOEXCEPT) {