111 lines
3.9 KiB
C++
111 lines
3.9 KiB
C++
#include <iostream>
|
|
#include <list>
|
|
|
|
|
|
#include "../mcc_defaults.h"
|
|
#include "../mcc_netserver_proto.h"
|
|
|
|
int main()
|
|
{
|
|
// using msg1_t = mcc::network::MccNetMessage<mcc::network::MccNetMessageValidKeywords, std::string_view>;
|
|
// using msg2_t = mcc::network::MccNetMessage<mcc::network::MccNetMessageValidKeywords, std::string>;
|
|
using msg1_t = mcc::network::MccNetMessage<std::string_view>;
|
|
using msg2_t = mcc::network::MccNetMessage<std::string>;
|
|
|
|
mcc::network::MccNetMessage msg3("ACK");
|
|
|
|
std::string_view sv{"TARGET 11:22:33.212; -0.23876984; RADEC "};
|
|
std::vector<char> 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<double> 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<std::chrono::seconds>(2);
|
|
std::cout << "msg.par[2] = <" << p2.value_or({}) << ">\n";
|
|
|
|
std::cout << "msg.par[3] = <";
|
|
auto p3 = msg2.paramValue<decltype(vd)>(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<std::list<std::string_view>>(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", msg2_t::MccNetMessageCoordPrec{2, 3}, cpt);
|
|
std::cout << "MSG2: " << msg2.byteRepr() << "\n";
|
|
auto cpt1 = msg2.paramValue<mcc::MccCelestialPoint>(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::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;
|
|
}
|