20 std::string serial_name {
"referee"};
21 std::chrono::steady_clock::duration offline_timeout {std::chrono::seconds{1}};
22 bool ui_enabled {
false};
23 std::chrono::steady_clock::duration ui_period {std::chrono::milliseconds{100}};
24 std::uint16_t ui_receiver_id {0};
30 [[nodiscard]]
bool configured()
const {
return configured_; }
31 [[nodiscard]]
bool offline()
const;
32 [[nodiscard]]
auto timeout()
const {
return info_.offline_timeout; }
33 [[nodiscard]]
const referee_protocol::state& data()
const {
return state_; }
34 [[nodiscard]] std::string desc()
const {
return "referee"; }
35 void set_ui_status(referee_protocol::ui_status status) { ui_status_ = status; }
39 void receive(referee_protocol::bytes data);
40 awaitable<void> send_graphics(std::span<const referee_protocol::graphic> items);
42 awaitable<void> delete_graphics(std::uint8_t operation, std::uint8_t layer);
44 std::optional<std::pair<std::uint16_t, std::uint16_t>> ui_addresses()
const;
47 referee_protocol::stream_parser parser_;
48 referee_protocol::state state_;
49 referee_protocol::ui_status ui_status_;
50 std::optional<referee_protocol::clock::time_point> received_at_;
51 std::function<void(
const referee_protocol::frame&)> frame_callback_;
52 std::uint8_t sequence_ {};
53 bool configured_ {}, connected_ {}, started_ {};