#include #include #include "../mcc_defaults.h" #include "../mcc_netserver_proto.h" int main() { // using msg1_t = mcc::network::MccNetMessage; // using msg2_t = mcc::network::MccNetMessage; using msg1_t = mcc::network::MccNetMessage; using msg2_t = mcc::network::MccNetMessage; mcc::network::MccNetMessage msg3("ACK"); std::string_view sv{"TARGET 11:22:33.212; -0.23876984; RADEC "}; std::vector arr{sv.begin(), sv.end()}; msg1_t msg1; msg1.fromCharRange(arr); std::cout << "msg.key = <" << msg1.keyword() << ">\n"; std::cout << "msg.par[1] = <" << msg1.param(1) << ">\n"; std::vector vd{1.1, 2.2, 3.3}; msg2_t msg2("ACK", 12.43298042, "EEE", std::chrono::seconds(10), vd); // msg2_t msg2("ACK"); std::cout << "msg.bytes = <" << msg2.byteRepr() << ">\n"; std::cout << "msg.key = <" << msg2.keyword() << ">\n"; std::cout << "msg.par[1] = <" << msg2.param(1) << ">\n"; std::cout << "msg.par[2] = <" << msg2.param(2) << ">\n"; auto p2 = msg2.paramValue(2); std::cout << "msg.par[2] = <" << p2.value_or({}) << ">\n"; std::cout << "msg.par[3] = <"; auto p3 = msg2.paramValue(3); if (p3.has_value()) { for (auto const& el : p3.value()) { std::cout << el << " "; } } std::cout << ">\n"; std::cout << "msg.par[1-2] joined = <" << msg2.params(1, 2) << ">\n"; auto vv = msg2.params>(1, 3); std::cout << "msg.par[1-3] array = <"; for (auto const& el : vv) { std::cout << el << " "; } std::cout << ">\n"; mcc::MccCelestialPoint cpt{.pair_kind = mcc::MccCoordPairKind::COORDS_KIND_RADEC_APP, .time_point = std::chrono::system_clock::now(), .X = mcc::MccAngle("10:23:56.12331", mcc::mcc_hms), .Y = mcc::MccAngle(67.9827148715, mcc::mcc_degrees)}; // msg2.construct("ACK", "MOUNT", msg2_t::CFMT_DEGREES, msg2_t::MccNetMessageCoordPrec{2, 3}, cpt); msg2.construct("ACK", "MOUNT", mcc::network::MccNetMessageCoordPrec{2, 3}, cpt); std::cout << "MSG2: " << msg2.byteRepr() << "\n"; auto cpt1 = msg2.paramValue(1); if (cpt1) { std::cout << "cpt.time_point = " << cpt1.value().time_point << "\n"; std::cout << "cpt.X = " << cpt1.value().X << "\n"; } std::cout << "\n\n\n"; mcc::MccCelestialPointSerializer cpser; mcc::MccCelestialPointDeserializer cpdser; std::string s; cpser(cpt, s); std::cout << "Serialized: " << s << "\n"; auto err = cpdser(s, cpt); if (err) { std::cout << "deserialization error: " << err.message() << "\n"; } else { std::cout << "Deserialized: tp = " << cpt.time_point << "; kind = " << mcc::MccCoordPairKindToStr(cpt.pair_kind) << "\n"; } std::cout << "\n\n\n"; mcc::MccCelestialCoordEpoch cep; std::cout << "UTC: " << cep.UTC() << "\n"; std::cout << "MJD: " << cep.MJD() << "\n"; std::cout << "Epoch: " << cep.JEpoch() << "\n"; cep.fromTimePoint(std::chrono::system_clock::now()); std::cout << "\n"; std::cout << "UTC: " << cep.UTC() << "\n"; std::cout << "MJD: " << cep.MJD() << "\n"; std::cout << "Epoch: " << cep.JEpoch() << "\n"; cep.fromCharRange("60958.90342"); std::cout << "\n"; std::cout << "UTC: " << cep.UTC() << "\n"; std::cout << "MJD: " << cep.MJD() << "\n"; std::cout << "Epoch: " << cep.JEpoch(2) << "\n"; cep -= std::chrono::days(10); std::cout << "\n"; std::cout << "UTC: " << cep.UTC() << "\n"; std::cout << "MJD: " << cep.MJD() << "\n"; std::cout << "Epoch: " << cep.JEpoch() << "\n"; std::cout << "\n" << (cep = mcc::MccCelestialCoordEpoch::now()).UTC() << "\n"; std::cout << "MJD: " << cep.MJD() << "\n"; std::cout << "Epoch: " << cep.JEpoch() << "\n"; auto ep1 = mcc::MccCelestialCoordEpoch::now(); auto ep2 = mcc::MccCelestialCoordEpoch::now(); std::cout << "\n" << std::boolalpha << (ep1 < ep2) << "\n"; std::cout << "\n" << std::boolalpha << (mcc::MccCelestialCoordEpoch::now() != mcc::MccCelestialCoordEpoch::now()) << "\n"; return 0; }