From f09c4700ba882e1923d49c904dda3ac97c26281b Mon Sep 17 00:00:00 2001 From: Simon Hardt Date: Wed, 2 Mar 2022 23:54:26 +0100 Subject: [PATCH] Fix --- frame/src/Image.cpp | 6 ++++-- frame/src/Image.hpp | 5 +++-- frame/src/Size.hpp | 2 ++ frame/src/display/EPD_7in5_V2.cpp | 17 +++++++++++------ frame/src/display/EPD_7in5_V2.hpp | 2 +- frame/src/display/IDisplay.hpp | 6 +++--- frame/src/main.cpp | 22 +++++++++++++++++++--- 7 files changed, 43 insertions(+), 17 deletions(-) diff --git a/frame/src/Image.cpp b/frame/src/Image.cpp index 4be06bf..96facb1 100644 --- a/frame/src/Image.cpp +++ b/frame/src/Image.cpp @@ -1,12 +1,14 @@ #include "Image.hpp" +#include + namespace frame { Image::Image(uint32_t pWidth, uint32_t pHeight) : mWidth(pWidth) , mHeight(pHeight) - , mBuffer(mWidth * mHeight) + , mBuffer(mWidth * mHeight, 0) { } @@ -25,7 +27,7 @@ namespace frame return mBuffer.at(toInternal(x, y)); } - uint8_t Image::toInternal(uint32_t x, uint32_t y) const + size_t Image::toInternal(uint32_t x, uint32_t y) const { return x + mWidth * y; } diff --git a/frame/src/Image.hpp b/frame/src/Image.hpp index 436ba57..af0de2d 100644 --- a/frame/src/Image.hpp +++ b/frame/src/Image.hpp @@ -1,6 +1,7 @@ #pragma once #include "Size.hpp" +#include #include namespace frame @@ -29,7 +30,7 @@ namespace frame } private: - uint8_t toInternal(uint32_t x, uint32_t y) const; + size_t toInternal(uint32_t x, uint32_t y) const; }; -} // namespace frame \ No newline at end of file +} // namespace frame diff --git a/frame/src/Size.hpp b/frame/src/Size.hpp index f27dd6e..fe93d85 100644 --- a/frame/src/Size.hpp +++ b/frame/src/Size.hpp @@ -1,5 +1,7 @@ #pragma once +#include + namespace frame { struct Size diff --git a/frame/src/display/EPD_7in5_V2.cpp b/frame/src/display/EPD_7in5_V2.cpp index 8c902c3..bf33f9f 100644 --- a/frame/src/display/EPD_7in5_V2.cpp +++ b/frame/src/display/EPD_7in5_V2.cpp @@ -19,6 +19,9 @@ namespace frame::display bool EPD_7in5_V2::Init() { + if(DEV_Module_Init()!=0) + return false; + return EPD_7IN5_V2_Init() == 0; } @@ -26,17 +29,17 @@ namespace frame::display { if(color == Color::WHITE) { - EPD_7IN5_V2_Clear() + EPD_7IN5_V2_Clear(); } else { EPD_7IN5_V2_ClearBlack(); } } - void EPD_7in5_V2::Display(Image const& image) + void EPD_7in5_V2::Display(Image const& image, bool invert) { constexpr auto bytes_width = mWidth / 8; - std::vector data(bytes_with * mHeight); + std::vector data(bytes_width * mHeight); uint8_t bit_counter; @@ -44,15 +47,17 @@ namespace frame::display { for(auto x = 0; x < bytes_width; ++x) { - uint8_t byte = 0; + uint8_t byte = 0xFF; for(auto bit = 0; bit < 8; ++bit) { + byte <<= 1; + if(image.at(x * 8 + bit, y) > 265 / 2) { byte ^= 1; } - byte << 1; } + byte = ~ byte; data[bytes_width * y + x] = byte; } @@ -66,4 +71,4 @@ namespace frame::display EPD_7IN5_V2_Sleep(); } -} // namespace frame::display \ No newline at end of file +} // namespace frame::display diff --git a/frame/src/display/EPD_7in5_V2.hpp b/frame/src/display/EPD_7in5_V2.hpp index 1997cc3..c6c2243 100644 --- a/frame/src/display/EPD_7in5_V2.hpp +++ b/frame/src/display/EPD_7in5_V2.hpp @@ -15,7 +15,7 @@ namespace frame::display void Clear(Color color) override; - void Display(Image const& image) override; + void Display(Image const& image, bool invert = false) override; void Sleep() override; }; diff --git a/frame/src/display/IDisplay.hpp b/frame/src/display/IDisplay.hpp index 1f618cf..d286d46 100644 --- a/frame/src/display/IDisplay.hpp +++ b/frame/src/display/IDisplay.hpp @@ -22,14 +22,14 @@ namespace frame::display virtual void Clear(Color color) = 0; - virtual void Display(Image const& image) = 0; + virtual void Display(Image const& image, bool invert = false) = 0; virtual void Sleep() = 0; public: Size const& getSize() { - return size; + return mSize; } }; -} // namespace frame::display \ No newline at end of file +} // namespace frame::display diff --git a/frame/src/main.cpp b/frame/src/main.cpp index 793cbf4..b9cf665 100644 --- a/frame/src/main.cpp +++ b/frame/src/main.cpp @@ -24,12 +24,28 @@ int main() frame::Image image(display.getSize()); - for(int x = 0; x < image.getWidth(); ++x) + for(int y = 0; y < 1; ++y) { - image.at(x, 0) = 0xFF; + for(int x = 0; x < image.getWidth(); ++x) + { + image.at(x, y) = 0xFF; + } } + for(int y = image.getHeight() - 1; y < image.getHeight(); ++y) + { + for(int x = 0; x < image.getWidth(); ++x) + { + image.at(x, y) = 0xFF; + } + } + + display.Display(image); + + std::this_thread::sleep_for(10s); + + display.Clear(frame::display::Color::WHITE); } /* @@ -73,4 +89,4 @@ int main() return 0; } -*/ \ No newline at end of file +*/