This commit is contained in:
2025-11-18 18:51:01 +03:00
parent 14e583a244
commit 273f239abb
5 changed files with 93 additions and 15 deletions

View File

@@ -1121,14 +1121,18 @@ public:
static MccPointingTargetSerializer pt_ser;
// output format: <mount data>, speedX, speedY, pcmX, pcmY, refCorr (in arcsecs), <target data>
// RA-APP_mnt, DEC-APP_mnt, HA_mnt, AZ_mnt, ZD_mnt, ALT_mnt, X_mnt, Y_mnt, COO-PAIR_mnt, TIME-POINT_mnt,
// LST, SPEED_X_mnt, SPEED_Y_mnt, PCM_X, PCM_Y, REFCORR,
// RA-ICRS_tag, DEC-ICRS_tag, RA-APP_tag, DEC-APP_tag, HA_tag, AZ_tag, ZD_tag, ALT_tag, X_tag, Y_tag,
// COO-PAIR_tag, TIME-POINT_tag
eqhrz_ser.setFormat(_currentFormat);
eqhrz_ser.setPrecision(_currentPrec);
eqhrz_ser(value, bytes);
std::format_to(std::back_inserter(bytes), "{}", _delimiter);
// toSexagesimalHour(bytes, value.LST);
// std::format_to(std::back_inserter(bytes), "{}", _delimiter);
toSexagesimalHour(bytes, value.LST);
std::format_to(std::back_inserter(bytes), "{}", _delimiter);
// '*3600.0' to express refraction correction in arcseconds!
toDegrees(bytes, value.speedX, value.speedY, value.pcmX, value.pcmY, value.refCorr * 3600.0);
@@ -1152,43 +1156,50 @@ public:
// valid format: <mount data>, speedX, speedY, pcmX, pcmY, refCorr, <target data>
auto els = splitToElements(std::forward<IR>(bytes));
if (els.size() < 12) {
if (els.size() < 28) {
// return std::make_error_code(std::errc::invalid_argument);
return MccCoordinateConvErrorCode::ERROR_ARG_LEN;
}
MccTelemetryData tdata;
auto err = MccEqtHrzCoordsDeserializer{}(std::string_view{els[0].begin(), els[11].end()}, tdata);
auto err = MccEqtHrzCoordsDeserializer{}(std::string_view{els[0].begin(), els[9].end()}, tdata);
if (err) {
return err;
}
err = parseDegreeRepr(els[5], tdata.speedX);
size_t idx = 10;
err = parseHourRepr(els[idx++], tdata.LST);
if (err) {
return err;
}
err = parseDegreeRepr(els[5], tdata.speedY);
err = parseDegreeRepr(els[idx++], tdata.speedX);
if (err) {
return err;
}
err = parseDegreeRepr(els[5], tdata.pcmX);
err = parseDegreeRepr(els[idx++], tdata.speedY);
if (err) {
return err;
}
err = parseDegreeRepr(els[5], tdata.pcmY);
err = parseDegreeRepr(els[idx++], tdata.pcmX);
if (err) {
return err;
}
err = parseDegreeRepr(els[5], tdata.refCorr);
err = parseDegreeRepr(els[idx++], tdata.pcmY);
if (err) {
return err;
}
err = MccPointingTargetDeserializer{}(std::string_view{els[0].begin(), els[11].end()}, tdata.target);
err = parseDegreeRepr(els[idx++], tdata.refCorr);
if (err) {
return err;
}
err = MccPointingTargetDeserializer{}(std::string_view{els[idx].begin(), els.back().end()}, tdata.target);
if (err) {
return err;
}