|
| | ssd1680 (idfxx::panel_io &panel_io, config config) |
| | Creates a new SSD1680 panel driver.
|
| |
| | ~ssd1680 () override |
| |
| | ssd1680 (const ssd1680 &)=delete |
| |
| ssd1680 & | operator= (const ssd1680 &)=delete |
| |
| | ssd1680 (ssd1680 &&other) noexcept |
| |
| ssd1680 & | operator= (ssd1680 &&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.
|
| |
SSD1680 ePaper display controller driver.
Driver for SSD1680-based SPI ePaper panels (up to 176x296), such as the 2.13" 122x250 panel on the Seeed Studio XIAO ePaper Display Board EE05.
Implements the full @ref idfxx::epaper::panel interface: full, fast, and
partial refreshes, 4-level grayscale, deep sleep, and wake.
The driver owns the panel's BUSY input and (optional) reset output lines,
and communicates through an <tt>idfxx::panel_io</tt> configured with
@ref spi_io_config. It keeps a shadow copy of the last-written frame
(<tt>(width + 7) / 8 * height</tt> bytes of DRAM, ~4 KB for the 2.13" panel) to maintain the controller's previous-image plane for flicker-free partial refreshes.
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 puts an awake controller 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.
SSD1680 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 an SSD1680 over SPI.
Panel I/O interface for SPI- and I2C-connected displays.
@ ch_auto
Auto select DMA channel.
Definition at line 65 of file ssd1680.hpp.