1#include "device/remote_logger.hpp"
6remote_logger::remote_logger(
const info_type& info)
7 : info_{info}, peer_{asio::ip::make_address(info.address), info.port} {
8 if (info.key_.empty() || info.udp_name.empty() || info.port == 0) {
9 throw std::invalid_argument(
"invalid remote logger configuration");
13void remote_logger::connect() {
14 if (!udp_) udp_ = &roboctrl::get<io::udp_server>(info_.udp_name);
17void remote_logger::start() {
18 if (!udp_)
throw std::logic_error(
"remote logger start before connect");
22awaitable<void> remote_logger::push_value(std::string name,
double value) {
23 if (!started_)
co_return;
26 auto packet = network_protocol::encode_log_name(name);
27 const auto sample = network_protocol::encode_log_value(network_protocol::log_name_id(name), value);
28 packet.insert(packet.end(), sample.begin(), sample.end());
29 co_await udp_->send(peer_, packet);
32awaitable<void> remote_logger::push_console_message(std::string message) {
33 if (!started_)
co_return;
34 const auto packet = network_protocol::encode_log_text(message);
35 co_await udp_->send(peer_, packet);
38awaitable<void> remote_logger::push_message_box(std::string message) {
39 if (!started_)
co_return;
40 const auto packet = network_protocol::encode_log_text(message,
true);
41 co_await udp_->send(peer_, packet);