idfxx 1.0.0
Modern C++23 components for ESP-IDF
Loading...
Searching...
No Matches
ili9341.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 Chris Leishman
3
4#pragma once
5
13#include <idfxx/lcd/panel>
14#include <idfxx/lcd/panel_io>
15
20namespace idfxx::lcd {
21
28class ili9341 : public panel {
29public:
30#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
44#endif
45
58
60
61 ili9341(const ili9341&) = delete;
62 ili9341& operator=(const ili9341&) = delete;
63 ili9341(ili9341&& other) noexcept;
64 ili9341& operator=(ili9341&& other) noexcept;
65
73 [[nodiscard]] result<void> try_display_on(bool on) override;
74
75private:
76 ili9341() = default;
77 explicit ili9341(esp_lcd_panel_handle_t handle)
78 : _handle(handle) {}
79
80 esp_lcd_panel_handle_t _handle = nullptr;
81};
82
83} // namespace idfxx::lcd
ILI9341 display controller driver.
Definition ili9341.hpp:28
static result< ili9341 > make(idfxx::lcd::panel_io &panel_io, panel::config config)
Creates a new ili9341 panel.
result< void > try_swap_xy(bool swap) override
Swaps the X and Y axes.
esp_lcd_panel_handle_t idf_handle() const override
Returns the underlying ESP-IDF handle.
ili9341 & operator=(ili9341 &&other) noexcept
result< void > try_display_on(bool on) override
Turns the display on or off.
ili9341(ili9341 &&other) noexcept
ili9341(const ili9341 &)=delete
ili9341(idfxx::lcd::panel_io &panel_io, panel::config config)
Creates a new ili9341 panel.
ili9341 & operator=(const ili9341 &)=delete
result< void > try_mirror(bool mirrorX, bool mirrorY) override
Mirrors the display.
SPI-based panel I/O interface.
Definition panel_io.hpp:44
Abstract base class for LCD panels.
Definition panel.hpp:30
LCD driver classes.
Definition color.hpp:19
std::expected< T, std::error_code > result
result type wrapping a value or error code.
Definition error.hpp:120
struct esp_lcd_panel_t * esp_lcd_panel_handle_t
Definition panel.hpp:18
Configuration structure for LCD panels.
Definition panel.hpp:36