...
This commit is contained in:
@@ -107,7 +107,8 @@ public:
|
||||
typedef std::error_code error_t;
|
||||
|
||||
|
||||
MccTelemetry(mcc_ccte_c auto* ccte, mcc_PCM_c auto* pcm, mcc_hardware_c auto* hardware)
|
||||
template <mcc_position_controls_c CONTROLS_T>
|
||||
MccTelemetry(CONTROLS_T* controls)
|
||||
: _isDataUpdated(new std::atomic_bool()),
|
||||
_data(),
|
||||
_internalUpdating(new std::atomic_bool),
|
||||
@@ -122,10 +123,10 @@ public:
|
||||
_data.target.pair_kind = MccCoordPairKind::COORDS_KIND_RADEC_ICRS;
|
||||
|
||||
// using ccte_t = std::remove_cvref_t<decltype(*ccte)>;
|
||||
using pcm_t = std::remove_cvref_t<decltype(*pcm)>;
|
||||
using hardware_t = std::remove_cvref_t<decltype(*hardware)>;
|
||||
using pcm_t = std::remove_cvref_t<decltype(*controls)>;
|
||||
using hardware_t = std::remove_cvref_t<decltype(*controls)>;
|
||||
|
||||
_updateTargetFunc = [ccte, pcm, this](bool only_hw, std::stop_token stop_token) -> error_t {
|
||||
_updateTargetFunc = [controls, this](bool only_hw, std::stop_token stop_token) -> error_t {
|
||||
if (!only_hw) {
|
||||
//
|
||||
// compute apparent coordinates
|
||||
@@ -140,7 +141,7 @@ public:
|
||||
_data.target.Y = _data.target.DEC_ICRS;
|
||||
|
||||
// update apparent cordinates
|
||||
auto ccte_err = ccte->transformCoordinates(_data.target, &_data.target);
|
||||
auto ccte_err = controls->transformCoordinates(_data.target, &_data.target);
|
||||
if (ccte_err) {
|
||||
return mcc_deduce_error<error_t>(ccte_err, MccTelemetryErrorCode::ERROR_COORD_TRANSFORM);
|
||||
}
|
||||
@@ -159,7 +160,7 @@ public:
|
||||
// pt.time_point =
|
||||
// std::chrono::time_point_cast<typename decltype(pt.time_point)::duration>(_data.target.time_point);
|
||||
|
||||
pcm_err = pcm->computeInversePCM(_data, &pcm_res, &_data);
|
||||
pcm_err = controls->computeInversePCM(_data, &pcm_res, &_data);
|
||||
|
||||
// if constexpr (mccIsEquatorialMount(pcm_t::mountType)) {
|
||||
// pcm_err = pcm->computeInversePCM(_data, &pcm_res, &_data);
|
||||
@@ -193,10 +194,10 @@ public:
|
||||
return MccTelemetryErrorCode::ERROR_OK;
|
||||
};
|
||||
|
||||
_updateFunc = [ccte, pcm, hardware, this](std::stop_token stop_token) {
|
||||
_updateFunc = [controls, this](std::stop_token stop_token) {
|
||||
// first, update mount quantities
|
||||
typename hardware_t::hardware_state_t hw_pos;
|
||||
auto hw_err = hardware->hardwareGetState(&hw_pos);
|
||||
auto hw_err = controls->hardwareGetState(&hw_pos);
|
||||
if (hw_err) {
|
||||
return mcc_deduce_error(hw_err, MccTelemetryErrorCode::ERROR_HARDWARE_GETPOS);
|
||||
}
|
||||
@@ -210,19 +211,19 @@ public:
|
||||
_data.time_point =
|
||||
std::chrono::time_point_cast<typename decltype(_data.time_point)::duration>(hw_pos.time_point);
|
||||
|
||||
auto ccte_err = ccte->timepointToJulday(_data.time_point, &_data.JD);
|
||||
auto ccte_err = controls->timepointToJulday(_data.time_point, &_data.JD);
|
||||
if (!ccte_err) {
|
||||
if (stop_token.stop_requested()) {
|
||||
return MccTelemetryErrorCode::ERROR_UPDATE_STOPPED;
|
||||
}
|
||||
|
||||
ccte_err = ccte->juldayToAppSideral(_data.JD, &_data.LST, true);
|
||||
ccte_err = controls->juldayToAppSideral(_data.JD, &_data.LST, true);
|
||||
if (!ccte_err) {
|
||||
if (stop_token.stop_requested()) {
|
||||
return MccTelemetryErrorCode::ERROR_UPDATE_STOPPED;
|
||||
}
|
||||
|
||||
ccte_err = ccte->equationOrigins(_data.JD, &eo);
|
||||
ccte_err = controls->equationOrigins(_data.JD, &eo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,7 +241,7 @@ public:
|
||||
_data.speedY = (double)hw_pos.speedY;
|
||||
|
||||
// fill _data.pcmX, _data.pcmY and corresponded apparent coordinates
|
||||
auto pcm_err = pcm->computePCM(_data, &_data, &_data);
|
||||
auto pcm_err = controls->computePCM(_data, &_data, &_data);
|
||||
if (pcm_err) {
|
||||
return mcc_deduce_error(pcm_err, MccTelemetryErrorCode::ERROR_PCM_COMP);
|
||||
}
|
||||
@@ -259,7 +260,7 @@ public:
|
||||
|
||||
_data.pair_kind = MccCoordPairKind::COORDS_KIND_HADEC_APP;
|
||||
|
||||
ccte_err = ccte->transformCoordinates(_data, &pt);
|
||||
ccte_err = controls->transformCoordinates(_data, &pt);
|
||||
if (!ccte_err) {
|
||||
_data.AZ = pt.X;
|
||||
_data.ALT = pt.Y;
|
||||
@@ -274,8 +275,8 @@ public:
|
||||
_data.pair_kind = MccCoordPairKind::COORDS_KIND_AZZD;
|
||||
|
||||
pt.pair_kind = MccCoordPairKind::COORDS_KIND_HADEC_APP;
|
||||
ccte_err = ccte->transformCoordinates(_data, &pt);
|
||||
if (!ccte) {
|
||||
ccte_err = controls->transformCoordinates(_data, &pt);
|
||||
if (!ccte_err) {
|
||||
_data.HA = pt.X;
|
||||
_data.DEC_APP = pt.Y;
|
||||
_data.RA_APP = (double)_data.LST - (double)_data.HA + eo;
|
||||
@@ -294,7 +295,7 @@ public:
|
||||
_data.X = _data.AZ;
|
||||
_data.Y = _data.ZD;
|
||||
|
||||
ccte_err = ccte->refractionCorrection(_data, &_data.refCorr);
|
||||
ccte_err = controls->refractionCorrection(_data, &_data.refCorr);
|
||||
if (!ccte_err) {
|
||||
// restore hardware encoders coordinates
|
||||
_data.X = (double)hw_pos.X;
|
||||
@@ -326,7 +327,7 @@ public:
|
||||
};
|
||||
|
||||
|
||||
_setTargetFunc = [ccte, this](MccCelestialPoint const& pt) {
|
||||
_setTargetFunc = [controls, this](MccCelestialPoint const& pt) {
|
||||
// in the case of apparent input coordinates
|
||||
// one must ensure the same time points
|
||||
|
||||
@@ -334,7 +335,7 @@ public:
|
||||
_data.target.time_point =
|
||||
std::chrono::time_point_cast<typename decltype(_data.target.time_point)::duration>(pt.time_point);
|
||||
|
||||
auto ret = ccte->transformCoordinates(pt, &_data.target);
|
||||
auto ret = controls->transformCoordinates(pt, &_data.target);
|
||||
|
||||
if (!ret) {
|
||||
if (pt.pair_kind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS) {
|
||||
@@ -346,7 +347,7 @@ public:
|
||||
} else { // apparent coordinates were computed above
|
||||
// compute ICRS coordinates
|
||||
MccCelestialPoint cpt{.pair_kind = MccCoordPairKind::COORDS_KIND_RADEC_ICRS};
|
||||
ret = ccte->transformCoordinates(pt, &cpt);
|
||||
ret = controls->transformCoordinates(pt, &cpt);
|
||||
|
||||
_data.target.RA_ICRS = cpt.X;
|
||||
_data.target.DEC_ICRS = cpt.Y;
|
||||
|
||||
Reference in New Issue
Block a user