Compare commits
1 Commits
8d8369440c
...
3d45d2a4b3
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d45d2a4b3 |
18
eink.hpp
18
eink.hpp
@@ -157,9 +157,11 @@ class Eink {
|
||||
}
|
||||
|
||||
constexpr auto sendImageChannel = [](const auto command, const auto &image) {
|
||||
using image_t = std::remove_cvref_t<decltype(image)>;
|
||||
|
||||
sendCommand(command);
|
||||
for (auto j = std::size_t{0}; j < image.size(); ++j) {
|
||||
const auto [count, data] = flash::load(image[j]);
|
||||
for (auto j = std::size_t{0}; j < std::tuple_size_v<image_t>; ++j) {
|
||||
const auto [count, data] = flash::loadLike<RleImage>(image[j]);
|
||||
for (auto i = std::uint16_t{0}; i < count; ++i) {
|
||||
if (command == Cmd::WRITE_RAM_BLACK) {
|
||||
sendData(data);
|
||||
@@ -170,8 +172,8 @@ class Eink {
|
||||
}
|
||||
};
|
||||
|
||||
sendImageChannel(Cmd::WRITE_RAM_BLACK, std::get<0>(rleImage));
|
||||
sendImageChannel(Cmd::WRITE_RAM_RED, std::get<1>(rleImage));
|
||||
sendImageChannel(Cmd::WRITE_RAM_BLACK, std::get<0>(rleImage.value));
|
||||
sendImageChannel(Cmd::WRITE_RAM_RED, std::get<1>(rleImage.value));
|
||||
|
||||
sendCommand(Cmd::DISPLAY_UPDATE_CONTROL_2);
|
||||
sendData(USE_ORIGINAL_LUT ? 0xF7 : 0xC7);
|
||||
@@ -210,13 +212,15 @@ class Eink {
|
||||
waitUntilIdle();
|
||||
}
|
||||
|
||||
static void writeLut(const Waveform &lut)
|
||||
template <typename Lut>
|
||||
static void writeLut(const Lut &lut)
|
||||
{
|
||||
const auto flashLutPtr = reinterpret_cast<const std::byte *>(&lut);
|
||||
static_assert(sizeof(lut) == sizeof(Waveform), "Invalid LUT size");
|
||||
|
||||
sendCommand(Cmd::WRITE_LUT);
|
||||
for (auto i = std::size_t{0}; i < sizeof(lut); ++i) {
|
||||
const auto lutByte = flash::load(flashLutPtr[i]);
|
||||
const auto lutByte = lut[i];
|
||||
static_assert(std::is_same_v<std::byte, std::remove_cvref_t<decltype(lutByte)>>, "Invalid LUT value type");
|
||||
sendData(static_cast<word_t>(lutByte));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user