Files
product-vamp/include/vamp_pico/input.hpp
T
khodowany fa385205e2
ci / checks (push) Failing after 1h5m14s
Shared Catalog
2026-09-17 01:25:26 -05:00

46 lines
954 B
C++

#pragma once
#include <array>
#include <cstddef>
#include <cstdint>
#include <optional>
#include <vamp_protocol/gesture.hpp>
namespace vamp_pico {
enum class request_kind {
DISPLAY,
COMMAND,
HEARTBEAT,
};
struct remote_request {
request_kind kind{request_kind::DISPLAY};
vamp_protocol::page_command command{vamp_protocol::page_command::NEXT};
};
enum class enqueue_result {
QUEUED,
BUSY,
};
class request_scheduler {
public:
static constexpr auto command_capacity = std::size_t{16};
auto enqueue(vamp_protocol::page_command command) -> enqueue_result;
auto next(std::uint64_t now_ms) -> std::optional<remote_request>;
auto complete(std::uint64_t now_ms) -> void;
auto queued() const -> std::size_t;
private:
std::array<vamp_protocol::page_command, command_capacity> commands_{};
std::size_t head_{};
std::size_t size_{};
std::bool_t in_flight_{};
std::bool_t completed_{};
std::uint64_t completed_ms_{};
};
}