libepaper 2.0.0
A C++23 library for controlling Waveshare e-paper displays on Raspberry Pi, featuring transparent sleep/wake management and a fluent builder API.
Loading...
Searching...
No Matches
driver_concepts.hpp
Go to the documentation of this file.
1#pragma once
2
66#include <concepts>
67#include <cstddef>
68#include <expected>
69#include <span>
70
71namespace epaper {
72
138template <typename T>
139concept Driver = std::movable<T> && requires(T &d, DisplayMode mode, std::span<const std::byte> buffer) {
140 // Lifecycle
141 { d.init(mode) } -> std::same_as<std::expected<void, Error>>;
142 { d.sleep() } -> std::same_as<std::expected<void, Error>>;
143 { d.wake() } -> std::same_as<std::expected<void, Error>>;
144
145 // Drawing
146 { d.clear() } -> std::same_as<std::expected<void, Error>>;
147 { d.display(buffer) } -> std::same_as<std::expected<void, Error>>;
148
149 // Dimensions (can be static or instance methods, but callable on instance)
150 { d.width() } -> std::convertible_to<std::size_t>;
151 { d.height() } -> std::convertible_to<std::size_t>;
152};
153
154} // namespace epaper
Definition driver_concepts.hpp:139
Definition color.hpp:5
DisplayMode
Definition driver.hpp:46