...
This commit is contained in:
parent
273f239abb
commit
c6b47d8ad6
@ -334,7 +334,9 @@ public:
|
|||||||
*st = eraGst06a(ERFA_DJM0, ut1, ERFA_DJM0, tt);
|
*st = eraGst06a(ERFA_DJM0, ut1, ERFA_DJM0, tt);
|
||||||
|
|
||||||
if (islocal) {
|
if (islocal) {
|
||||||
*st += _currentState.lon;
|
// *st += _currentState.lon;
|
||||||
|
// *st = MccAngle(*st + _currentState.lon).normalize<MccAngle::NORM_KIND_0_360>();
|
||||||
|
*st = eraAnp(*st + _currentState.lon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -484,6 +484,8 @@ struct MccGenericTelemetryData : MccGenericEqtHrzCoords<CoordT> {
|
|||||||
coord_t pcmX, pcmY;
|
coord_t pcmX, pcmY;
|
||||||
|
|
||||||
coord_t refCorr;
|
coord_t refCorr;
|
||||||
|
|
||||||
|
coord_t EO;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -355,6 +355,20 @@ struct mcc_CCTE_interface_t {
|
|||||||
return std::forward<SelfT>(self).timepointToAppSideral(std::move(jd), st, islocal);
|
return std::forward<SelfT>(self).timepointToAppSideral(std::move(jd), st, islocal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EQUATION OF THE ORIGINS (ERA-GST)
|
||||||
|
|
||||||
|
template <std::derived_from<mcc_CCTE_interface_t> SelfT>
|
||||||
|
RetT equationOrigins(this SelfT&& self, mcc_time_point_c auto const& tp, mcc_angle_c auto* eo)
|
||||||
|
{
|
||||||
|
return std::forward<SelfT>(self).equationOrigins(std::move(tp), eo);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <std::derived_from<mcc_CCTE_interface_t> SelfT>
|
||||||
|
RetT equationOrigins(this SelfT&& self, mcc_julday_c auto const& jd, mcc_angle_c auto* eo)
|
||||||
|
{
|
||||||
|
return std::forward<SelfT>(self).equationOrigins(std::move(jd), eo);
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE: ASSUMING THE AZINUTH IS COUNTED FROM THE SOUTH THROUGH THE WEST!!!
|
// NOTE: ASSUMING THE AZINUTH IS COUNTED FROM THE SOUTH THROUGH THE WEST!!!
|
||||||
template <std::derived_from<mcc_CCTE_interface_t> SelfT>
|
template <std::derived_from<mcc_CCTE_interface_t> SelfT>
|
||||||
RetT transformCoordinates(this SelfT&& self, mcc_celestial_point_c auto from_pt, mcc_celestial_point_c auto* to_pt)
|
RetT transformCoordinates(this SelfT&& self, mcc_celestial_point_c auto from_pt, mcc_celestial_point_c auto* to_pt)
|
||||||
@ -626,6 +640,9 @@ concept mcc_telemetry_data_c = mcc_eqt_hrz_coord_c<T> && std::default_initializa
|
|||||||
|
|
||||||
// atmospheric refraction correction for current zenithal distance
|
// atmospheric refraction correction for current zenithal distance
|
||||||
requires mcc_angle_c<decltype(t.refCorr)>; // for current .ZD
|
requires mcc_angle_c<decltype(t.refCorr)>; // for current .ZD
|
||||||
|
|
||||||
|
// equation of the origins (ERA-GST)
|
||||||
|
requires mcc_angle_c<decltype(t.EO)>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -281,6 +281,7 @@ public:
|
|||||||
ccte_err = controls->juldayToAppSideral(_data.JD, &_data.LST, true);
|
ccte_err = controls->juldayToAppSideral(_data.JD, &_data.LST, true);
|
||||||
if (!ccte_err) {
|
if (!ccte_err) {
|
||||||
ccte_err = controls->equationOrigins(_data.JD, &eo);
|
ccte_err = controls->equationOrigins(_data.JD, &eo);
|
||||||
|
_data.EO = eo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,7 +312,8 @@ public:
|
|||||||
|
|
||||||
if constexpr (mccIsEquatorialMount(pcm_t::mountType)) {
|
if constexpr (mccIsEquatorialMount(pcm_t::mountType)) {
|
||||||
_data.RA_APP =
|
_data.RA_APP =
|
||||||
MccAngle((double)_data.LST - (double)_data.HA + eo).normalize<MccAngle::NORM_KIND_0_360>();
|
MccAngle((double)_data.LST - (double)_data.HA - eo).normalize<MccAngle::NORM_KIND_0_360>();
|
||||||
|
// MccAngle((double)_data.LST - (double)_data.HA + eo).normalize<MccAngle::NORM_KIND_0_360>();
|
||||||
|
|
||||||
_data.X = _data.HA;
|
_data.X = _data.HA;
|
||||||
_data.Y = _data.DEC_APP;
|
_data.Y = _data.DEC_APP;
|
||||||
@ -338,7 +340,8 @@ public:
|
|||||||
_data.HA = pt.X;
|
_data.HA = pt.X;
|
||||||
_data.DEC_APP = pt.Y;
|
_data.DEC_APP = pt.Y;
|
||||||
_data.RA_APP =
|
_data.RA_APP =
|
||||||
MccAngle((double)_data.LST - (double)_data.HA + eo).normalize<MccAngle::NORM_KIND_0_360>();
|
MccAngle((double)_data.LST - (double)_data.HA - eo).normalize<MccAngle::NORM_KIND_0_360>();
|
||||||
|
// MccAngle((double)_data.LST - (double)_data.HA + eo).normalize<MccAngle::NORM_KIND_0_360>();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -388,35 +391,6 @@ public:
|
|||||||
|
|
||||||
return MccTelemetryErrorCode::ERROR_OK;
|
return MccTelemetryErrorCode::ERROR_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// arm internal update loop
|
|
||||||
// _internalUpdatingStopSource = std::stop_source{};
|
|
||||||
|
|
||||||
// _internalUpdatingLoopFuture = std::async(
|
|
||||||
// std::launch::async,
|
|
||||||
// [this](std::stop_token stoken) {
|
|
||||||
// while (!(*_internalUpdatingLoopStop)) {
|
|
||||||
// {
|
|
||||||
// std::unique_lock ulock(*_internalUpdatingLoopMutex);
|
|
||||||
// _internalUpdatingLoopCondVar->wait(ulock, [this]() -> bool { return *_dataUpdatingRequested;
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// {
|
|
||||||
// std::lock_guard lock_update(*_updateMutex);
|
|
||||||
|
|
||||||
// *_isDataUpdated = false;
|
|
||||||
// _lastUpdateError = _updateFunc(stoken);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// *_isDataUpdated = true;
|
|
||||||
|
|
||||||
// // unlock all waiting threads
|
|
||||||
// _updateCondVar->notify_all();
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// _internalUpdatingStopSource.get_token());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -429,8 +403,6 @@ public:
|
|||||||
|
|
||||||
virtual ~MccTelemetry()
|
virtual ~MccTelemetry()
|
||||||
{
|
{
|
||||||
*_internalUpdatingLoopStop = true;
|
|
||||||
|
|
||||||
stopInternalTelemetryDataUpdating();
|
stopInternalTelemetryDataUpdating();
|
||||||
|
|
||||||
if (_internalUpdatingFuture.valid()) {
|
if (_internalUpdatingFuture.valid()) {
|
||||||
@ -747,11 +719,11 @@ protected:
|
|||||||
std::unique_ptr<std::mutex> _updateMutex;
|
std::unique_ptr<std::mutex> _updateMutex;
|
||||||
std::unique_ptr<std::condition_variable> _updateCondVar;
|
std::unique_ptr<std::condition_variable> _updateCondVar;
|
||||||
|
|
||||||
std::future<void> _internalUpdatingLoopFuture{};
|
// std::future<void> _internalUpdatingLoopFuture{};
|
||||||
std::unique_ptr<std::mutex> _internalUpdatingLoopMutex{new std::mutex()};
|
// std::unique_ptr<std::mutex> _internalUpdatingLoopMutex{new std::mutex()};
|
||||||
std::unique_ptr<std::condition_variable> _internalUpdatingLoopCondVar{new std::condition_variable()};
|
// std::unique_ptr<std::condition_variable> _internalUpdatingLoopCondVar{new std::condition_variable()};
|
||||||
std::unique_ptr<std::atomic_bool> _internalUpdatingLoopStop{new std::atomic_bool{false}};
|
// std::unique_ptr<std::atomic_bool> _internalUpdatingLoopStop{new std::atomic_bool{false}};
|
||||||
std::unique_ptr<std::atomic_bool> _dataUpdatingRequested{new std::atomic_bool{false}};
|
// std::unique_ptr<std::atomic_bool> _dataUpdatingRequested{new std::atomic_bool{false}};
|
||||||
|
|
||||||
error_t _lastUpdateError{MccTelemetryErrorCode::ERROR_OK};
|
error_t _lastUpdateError{MccTelemetryErrorCode::ERROR_OK};
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user