1616
1717#include < modm/architecture/interface/delay.hpp>
1818#include < modm/architecture/interface/register.hpp>
19- // #include <modm/platform/gpio/base.hpp> ???
2019#include < modm/processing/resumable.hpp>
2120
2221#include < modm/ui/graphic/display.hpp>
3029#include " ili9341_interface_parallel.hpp"
3130#include " ili9341_interface_spi.hpp"
3231
33- using namespace modm ::shape;
34- using namespace modm ::color;
35- using namespace modm ::graphic;
3632namespace modm
3733{
3834
3935// / @ingroup modm_driver_ili9341
4036
41- template <class Interface , class Reset , size_t BC = 512 >
37+ template <class Transport , class Reset , size_t BC = 512 >
4238// requires std::derived_from<Painter, RemotePainter<R>>
43- class Ili9341 : public Interface ,
44- public Display<color::Rgb565, Size(320 , 240 ), true >
39+ class Ili9341 : public Transport , public graphic ::Display<color::Rgb565, shape::Size(320 , 240 ), true >
4540{
4641 // OPTIMIZE determine good contraints
4742 static_assert (BC >= 32 , " Conversion Buffer < 64 pixels produces too much overhead." );
48- static_assert (BC <= 4096 , " Conversion Buffer > 4048 pixels doesn't make it better." );
43+ static_assert (BC <= 2048 , " Conversion Buffer > 2048 pixels doesn't make it any better." );
4944
5045 using Toggle = ili9341_register::Toggle;
5146 using ReadWrite = ili9341_register::ReadWrite;
5247 using Command = ili9341_register::Command;
5348 using ReadCommand = ili9341_register::ReadCommand;
5449
5550public:
56- using ColorType = Rgb565;
57- using BufferLandscape = Buffer<Rgb565 , ResolutionVector>;
58- using BufferPortrait = Buffer<Rgb565 , ResolutionVector.swapped()>;
51+ using ColorType = color:: Rgb565;
52+ using BufferLandscape = graphic:: Buffer<ColorType , ResolutionVector>;
53+ using BufferPortrait = graphic:: Buffer<ColorType , ResolutionVector.swapped()>;
5954
6055 ColorType color;
6156 ColorType* colormap;
6257
6358 template <typename ... Args>
6459 Ili9341 (Args &&...args)
65- : Interface (std::forward<Args>(args)...)
60+ : Transport (std::forward<Args>(args)...)
6661 { Reset::setOutput (modm::Gpio::High); }
6762
6863 ~Ili9341 (){};
6964
70- modm:: ResumableResult<void >
65+ ResumableResult<void >
7166 initialize ();
7267
73- modm:: ResumableResult<void >
68+ ResumableResult<void >
7469 reset (bool hardReset = false );
7570
76- modm:: ResumableResult<uint16_t >
71+ ResumableResult<uint16_t >
7772 getIcModel ();
7873
79- /* modm:: ResumableResult<uint32_t>
74+ /* ResumableResult<uint32_t>
8075 getStatus(); // 5 bytes, Datasheet P92
8176
82- modm:: ResumableResult<uint16_t>
77+ ResumableResult<uint16_t>
8378 getPowerMode(); // 2 bytes, Datasheet P94
8479
85- modm:: ResumableResult<uint16_t>
80+ ResumableResult<uint16_t>
8681 getMadCtl(); // 2 bytes, Datasheet P95
8782
88- modm:: ResumableResult<uint16_t>
83+ ResumableResult<uint16_t>
8984 getPixelFormat(); // 2 bytes, Datasheet P96 */
9085
91- modm:: ResumableResult<void >
86+ ResumableResult<void >
9287 set (Toggle toggle, bool state);
9388
94- modm:: ResumableResult<void >
89+ ResumableResult<void >
9590 set (ReadWrite reg, uint8_t value);
9691
97- modm:: ResumableResult<uint8_t >
92+ ResumableResult<uint8_t >
9893 get (ReadWrite reg);
9994
100- modm:: ResumableResult<void >
101- setOrientation (Orientation orientation);
95+ ResumableResult<void >
96+ setOrientation (graphic:: Orientation orientation);
10297
103- modm:: ResumableResult<void >
98+ ResumableResult<void >
10499 setScrollArea (uint16_t topFixedRows, uint16_t firstRow, uint16_t bottomFixedRows);
105100
106- modm:: ResumableResult<void >
101+ ResumableResult<void >
107102 scrollTo (uint16_t row);
108103
109- template <ColorPattern P>
110- modm:: ResumableResult<void >
111- writePattern (Rectangle rectangle, P pattern);
104+ template <graphic:: ColorPattern P>
105+ ResumableResult<void >
106+ writePattern (shape:: Rectangle rectangle, P pattern);
112107
113- modm:: ResumableResult<void >
114- clear (ColorType color = html::Black );
108+ ResumableResult<void >
109+ clear (ColorType color = 0 );
115110private:
116111 // Static variables for resumable functions
117- Section section;
118- Point cursor;
112+ shape:: Section section;
113+ shape:: Point cursor;
119114 // ##################################################################
120115
121116protected:
122- modm:: ResumableResult<void >
117+ ResumableResult<void >
123118 updateClipping ();
124119
125- modm:: ResumableResult<void >
126- setClipping (Point point);
120+ ResumableResult<void >
121+ setClipping (shape:: Point point);
127122
128123 /* *
129124 * Write Image with foreign Color
@@ -132,8 +127,8 @@ class Ili9341 : public Interface,
132127 * @param placement Placement for the image
133128 */
134129 template <Color CO, template <typename > class Accessor >
135- modm:: ResumableResult<void >
136- writeImage (ImageAccessor<CO, Accessor> accessor);
130+ ResumableResult<void >
131+ writeImage (graphic:: ImageAccessor<CO, Accessor> accessor);
137132
138133 /* *
139134 * Write Image with same Color
@@ -142,16 +137,16 @@ class Ili9341 : public Interface,
142137 * @param placement Placement for the image
143138 */
144139 template <template <typename > class Accessor >
145- modm:: ResumableResult<void >
146- writeImage (ImageAccessor<ColorType, Accessor> accessor);
140+ ResumableResult<void >
141+ writeImage (graphic:: ImageAccessor<ColorType, Accessor> accessor);
147142
148- modm:: ResumableResult<void > drawBlind (const Point& point);
149- modm:: ResumableResult<void > drawBlind (const Section& section);
150- modm:: ResumableResult<void > drawBlind (const HLine& hline);
151- modm:: ResumableResult<void > drawBlind (const VLine& vline);
143+ ResumableResult<void > drawBlind (const shape:: Point& point);
144+ ResumableResult<void > drawBlind (const shape:: Section& section);
145+ ResumableResult<void > drawBlind (const shape:: HLine& hline);
146+ ResumableResult<void > drawBlind (const shape:: VLine& vline);
152147
153- modm:: ResumableResult<Rgb565 >
154- getBlind (const Point& point) const ;
148+ ResumableResult<ColorType >
149+ getBlind (const shape:: Point& point) const ;
155150
156151private:
157152 // Static variables for resumable functions
@@ -168,14 +163,14 @@ class Ili9341 : public Interface,
168163 {
169164 uint16_t buff_cmd_clipping[2 ];
170165
171- Rgb565 buffer[BC]; // Conversion buffer
166+ ColorType buffer[BC]; // Conversion buffer
172167 size_t i; // index in conversion buffer
173168 Point scanner; // index on display
174169
175- size_t pixels; // Number of remaining pixels of transaction
170+ uint64_t pixels; // Must fit R.x * R.y = 76800
176171 size_t pixels_bulk; // Number of pixels of current bulk
177172
178- Rgb565 temp_color; // Temporary storage for a color
173+ ColorType temp_color; // Temporary storage for a color
179174 } p; // p for parallel
180175 };
181176};
0 commit comments