Shared Catalog

This commit is contained in:
khodowany
2026-09-17 00:44:19 -05:00
parent aa1273b07d
commit 5941a4cd49
44 changed files with 3613 additions and 733 deletions
+56
View File
@@ -0,0 +1,56 @@
#pragma once
#include <array>
#include <cstddef>
#include <cstdint>
#include <optional>
#include <vamp_protocol/page_control.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};
};
class gesture_state {
public:
auto update(std::bool_t touching, std::uint64_t now_ms) -> std::optional<vamp_protocol::page_command>;
private:
std::bool_t touching_{};
std::bool_t hold_sent_{};
std::bool_t pending_tap_{};
std::uint64_t down_ms_{};
std::uint64_t last_up_ms_{};
};
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_{};
};
}