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
/mnt/nas/libepaper/include/epaper/hal/mock_spi.hpp

Mock SPI bus for testing.

Mock SPI bus for testing.Records all transfers and allows configuring responses. Satisfies hal::SpiBus concept without requiring hardware.

MockSpiBus spi;
spi.queue_response(0xAA);
auto result = spi.transfer(0x55);
assert(result == 0xAA);
assert(spi.sent_bytes()[0] == 0x55);
#pragma once
#include <cstddef>
#include <cstdint>
#include <deque>
#include <span>
#include <vector>
namespace epaper::hal {
class MockSpiBus {
public:
auto transfer(std::uint8_t byte) -> std::uint8_t {
sent_bytes_.push_back(byte);
if (!response_queue_.empty()) {
auto response = response_queue_.front();
response_queue_.pop_front();
return response;
}
return 0x00; // Default response
}
auto write(std::span<const std::byte> data) -> void {
for (auto byte : data) {
sent_bytes_.push_back(static_cast<std::uint8_t>(byte));
}
}
[[nodiscard]] auto sent_bytes() const -> const std::vector<std::uint8_t> & { return sent_bytes_; }
[[nodiscard]] auto transfer_count() const -> std::size_t { return sent_bytes_.size(); }
auto queue_response(std::uint8_t byte) -> void { response_queue_.push_back(byte); }
auto reset() -> void {
sent_bytes_.clear();
response_queue_.clear();
}
private:
std::vector<std::uint8_t> sent_bytes_;
std::deque<std::uint8_t> response_queue_;
};
static_assert(SpiBus<MockSpiBus>, "MockSpiBus must satisfy SpiBus concept");
} // namespace epaper::hal
auto sent_bytes() const -> const std::vector< std::uint8_t > &
Get vector of all bytes sent via transfer() and write().
Definition mock_spi.hpp:64
auto reset() -> void
Reset bus state for new test.
Definition mock_spi.hpp:81
auto transfer(std::uint8_t byte) -> std::uint8_t
Full-duplex byte transfer.
Definition mock_spi.hpp:37
auto transfer_count() const -> std::size_t
Get total number of bytes transferred.
Definition mock_spi.hpp:70
auto queue_response(std::uint8_t byte) -> void
Queue a response byte for next transfer() call.
Definition mock_spi.hpp:76
auto write(std::span< const std::byte > data) -> void
Bulk write operation.
Definition mock_spi.hpp:54
Definition gpio.hpp:62
SPI bus concept for hardware abstraction.