#include #include "../control_proto.h" #include "../utils.h" using namespace BM700; void print_result(const std::optional& res) { if (res.has_value()) { std::cout << "CMD: " << res.value().cmd << "\n"; if (res->args.size()) { std::cout << "ARGS: "; for (auto const& el : res->args) { std::cout << "'" << el << "' "; } std::cout << "\n"; } else { std::cout << "NO ARGS\n"; } } else { std::cout << "Invalid command!\n"; } } void print_ang_result(std::string_view ang_str, bool hh = false) { std::cout << "ANG STRING: '" << ang_str << "'\n"; auto ang_res = mcc::utils::parsAngleString(ang_str, hh); if (ang_res.has_value()) { std::cout << "ANG: " << ang_res.value() << "\n"; } else { std::cout << "INVALID ANGLE STRING!\n"; } } int main() { ControlProtoParser pr; std::string cmd{CONTROL_PROTO_STR_TAG_MINALT.begin(), CONTROL_PROTO_STR_TAG_MINALT.end()}; cmd += "=10.324"; std::cout << "COMMAND STRING: " << cmd << "\n"; auto res = pr.parse(cmd); print_result(res); cmd = std::string(CONTROL_PROTO_STR_STOP.begin(), CONTROL_PROTO_STR_STOP.end()); std::cout << "\nCOMMAND STRING: " << cmd << "\n"; res = pr.parse(cmd); print_result(res); cmd = std::string(CONTROL_PROTO_STR_UTC_DATE.begin(), CONTROL_PROTO_STR_UTC_DATE.end()); cmd += "=2025-06-10,01:32:45.213"; std::cout << "\nCOMMAND STRING: " << cmd << "\n"; res = pr.parse(cmd); print_result(res); std::cout << "\n\n******* TEST ANGLE STRING PARSING *******\n"; cmd = " 10:00:00 "; print_ang_result(cmd); cmd = " -10:30:36 "; print_ang_result(cmd); cmd = "231.3467 "; print_ang_result(cmd); cmd = " 12:30:00 "; print_ang_result(cmd, true); std::cout << "\n\n"; double ra = 0.3242345, dec = -1.2342397; std::cout << "RADEC (rads): " << ra << ", " << dec << "\n"; std::cout << "RADEC (sexg): " << mcc::utils::RADEC_rad2sxg(ra, dec, ";", 3, 2) << "\n"; std::cout << "RADEC (degs): " << mcc::utils::rad2deg_str(ra, dec, ";", 7, 7) << "\n"; return 0; }