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
16#include <esp_lcd_ili9341.h>
17#include <memory>
18
23namespace idfxx::lcd {
24
31class ili9341 : public panel {
32public:
41 [[nodiscard]] static result<std::unique_ptr<ili9341>>
42 make(std::shared_ptr<idfxx::lcd::panel_io> panel_io, panel::config config);
43
44#ifdef CONFIG_COMPILER_CXX_EXCEPTIONS
54 [[nodiscard]] explicit ili9341(std::shared_ptr<idfxx::lcd::panel_io> panel_io, panel::config config);
55#endif
56
58
59 ili9341(const ili9341&) = delete;
60 ili9341& operator=(const ili9341&) = delete;
61 ili9341(ili9341&&) = delete;
63
64 [[nodiscard]] esp_lcd_panel_handle_t idf_handle() const override;
65 [[nodiscard]] result<void> try_swap_xy(bool swap) override;
66 [[nodiscard]] result<void> try_mirror(bool mirrorX, bool mirrorY) override;
67 [[nodiscard]] result<void> try_display_on(bool on) override;
68
69private:
70 explicit ili9341() = default;
71
72 result<esp_lcd_panel_handle_t> make_handle(esp_lcd_panel_io_handle_t io_handle, const panel::config& config);
73
74 std::shared_ptr<idfxx::lcd::panel_io> _panel_io;
76};
77
78} // namespace idfxx::lcd
ILI9341 display controller driver.
Definition ili9341.hpp:31
result< void > try_swap_xy(bool swap) override
Swaps the X and Y axes.
ili9341 & operator=(ili9341 &&)=delete
esp_lcd_panel_handle_t idf_handle() const override
Returns the underlying ESP-IDF handle.
result< void > try_display_on(bool on) override
Turns the display on or off.
ili9341(ili9341 &&)=delete
ili9341(const ili9341 &)=delete
static result< std::unique_ptr< ili9341 > > make(std::shared_ptr< idfxx::lcd::panel_io > panel_io, panel::config config)
Creates a new ili9341 panel.
ili9341 & operator=(const ili9341 &)=delete
ili9341(std::shared_ptr< idfxx::lcd::panel_io > panel_io, panel::config config)
Creates a new ili9341 panel.
result< void > try_mirror(bool mirrorX, bool mirrorY) override
Mirrors the display.
SPI-based panel I/O interface.
Definition panel_io.hpp:42
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:118
struct esp_lcd_panel_t * esp_lcd_panel_handle_t
Definition panel.hpp:18
Configuration structure for LCD panels.
Definition panel.hpp:36