|
| | uc8179 (idfxx::panel_io &panel_io, config config) |
| | Creates a new UC8179 panel driver.
|
| |
| | ~uc8179 () override |
| |
| | uc8179 (const uc8179 &)=delete |
| |
| uc8179 & | operator= (const uc8179 &)=delete |
| |
| | uc8179 (uc8179 &&other) noexcept |
| |
| uc8179 & | operator= (uc8179 &&other) noexcept |
| |
| virtual | ~panel ()=default |
| |
| | panel (const panel &)=delete |
| |
| panel & | operator= (const panel &)=delete |
| |
| size_t | width () const noexcept |
| | Returns the panel width in pixels.
|
| |
| size_t | height () const noexcept |
| | Returns the panel height in pixels.
|
| |
| enum color_mode | color_mode () const noexcept |
| | Returns the panel's current pixel format.
|
| |
| bool | asleep () const noexcept |
| | Returns whether the panel is in deep sleep.
|
| |
| void | write (const mono_framebuffer &fb, size_t x=0, size_t y=0) |
| | Uploads a monochrome framebuffer to the controller's RAM.
|
| |
| void | write (const gray4_framebuffer &fb, size_t x=0, size_t y=0) |
| | Uploads a grayscale framebuffer to the controller's RAM.
|
| |
| void | write_rows (const mono_framebuffer &fb, size_t row_start, size_t row_end, size_t x=0, size_t y=0) |
| | Uploads a horizontal band of a monochrome framebuffer.
|
| |
| void | write_rows (const gray4_framebuffer &fb, size_t row_start, size_t row_end, size_t x=0, size_t y=0) |
| | Uploads a horizontal band of a grayscale framebuffer.
|
| |
| void | clear () |
| | Clears the controller's RAM to white, without a framebuffer.
|
| |
| result< void > | try_write (const mono_framebuffer &fb, size_t x=0, size_t y=0) |
| | Uploads a monochrome framebuffer to the controller's RAM.
|
| |
| result< void > | try_write (const gray4_framebuffer &fb, size_t x=0, size_t y=0) |
| | Uploads a grayscale framebuffer to the controller's RAM.
|
| |
| result< void > | try_write_rows (const mono_framebuffer &fb, size_t row_start, size_t row_end, size_t x=0, size_t y=0) |
| | Uploads a horizontal band of a monochrome framebuffer.
|
| |
| result< void > | try_write_rows (const gray4_framebuffer &fb, size_t row_start, size_t row_end, size_t x=0, size_t y=0) |
| | Uploads a horizontal band of a grayscale framebuffer.
|
| |
| result< void > | try_clear () |
| | Clears the controller's RAM to white, without a framebuffer.
|
| |
| void | refresh (refresh_mode mode=refresh_mode::full) |
| | Refreshes the panel from the controller's RAM.
|
| |
| void | wait () |
| | Waits for the controller's BUSY line to release.
|
| |
| template<typename Rep , typename Period > |
| void | wait_for (const std::chrono::duration< Rep, Period > &timeout) |
| | Waits for the controller's BUSY line to release, with a timeout.
|
| |
| result< void > | try_refresh (refresh_mode mode=refresh_mode::full) |
| | Refreshes the panel from the controller's RAM.
|
| |
| result< void > | try_wait () |
| | Waits for the controller's BUSY line to release.
|
| |
| template<typename Rep , typename Period > |
| result< void > | try_wait_for (const std::chrono::duration< Rep, Period > &timeout) |
| | Waits for the controller's BUSY line to release, with a timeout.
|
| |
| void | set_color_mode (enum color_mode mode) |
| | Switches the panel between monochrome and grayscale operation.
|
| |
| result< void > | try_set_color_mode (enum color_mode mode) |
| | Switches the panel between monochrome and grayscale operation.
|
| |
| void | sleep () |
| | Puts the panel controller into deep sleep.
|
| |
| void | wake () |
| | Wakes the panel controller from deep sleep.
|
| |
| result< void > | try_sleep () |
| | Puts the panel controller into deep sleep.
|
| |
| result< void > | try_wake () |
| | Wakes the panel controller from deep sleep.
|
| |
UC8179 ePaper display controller driver.
Driver for UC8179-based SPI ePaper panels (up to 800x600), such as the 7.5" 800x480 panel (GooDisplay GDEY075T7 glass) on the Seeed Studio XIAO ePaper Display Board EE05. Implements the full idfxx::epaper::panel interface: full, fast, and partial refreshes, 4-level grayscale, deep sleep, and wake.
The driver owns the panel's BUSY input (active low on this controller) and (optional) reset output lines, and communicates through an idfxx::panel_io configured with spi_io_config. Unlike controllers that need the previous frame re-sent by the host, the UC8179 copies the new-image RAM to the previous-image RAM when a refresh completes, so the driver keeps no shadow frame — full-frame writes stream the framebuffer's 48 KB (at 800x480) straight to the controller.
This type is non-copyable and move-only. A moved-from object must not be used: any operation other than destruction or assignment is undefined behavior. The destructor powers off an awake controller and puts it into deep sleep.
fb.set_pixel(10, 20, true);
fb.flush(display);
display.refresh();
display.sleep();
In-memory framebuffer for monochrome (1 bit per pixel) ePaper displays.
UC8179 ePaper display controller driver.
static panel_io::spi_config spi_io_config(gpio cs, gpio dc, freq::hertz pclk=freq::hertz{10 '000 '000}) noexcept
Returns a panel I/O configuration for communicating with a UC8179 over SPI.
Panel I/O interface for SPI- and I2C-connected displays.
@ ch_auto
Auto select DMA channel.
Definition at line 66 of file uc8179.hpp.