annotate esp/update_lcd_block.h @ 21:a90cb6927c7d default tip

fix countdown queries. Display "now" instead of "In -0.4 hours"
author drewp@bigasterisk.com
date Sat, 07 Sep 2024 17:47:36 -0700
parents 47795c3121f1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
1 #include <string>
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
2
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
3 #include "esphome.h"
8
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
4 // some from esphome; other code from
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
5 // https://github.com/lvgl/lvgl_esp32_drivers/blob/master/lvgl_tft/ili9481.c
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
6 // #include "esphome/components/ili9xxx/ili9xxx_display.h"
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
7
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
8 static const char *const TAG = "ili9481direct";
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
9
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
10 namespace esphome {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
11 namespace ili9xxx {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
12
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
13 /* MIPI DCS Type1 */
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
14 #define ILI9481_CMD_NOP 0x00
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
15 #define ILI9481_CMD_SOFTWARE_RESET 0x01
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
16 #define ILI9481_CMD_READ_DISP_POWER_MODE 0x0A
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
17 #define ILI9481_CMD_READ_DISP_MADCTRL 0x0B // bits 7:3 only
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
18 #define ILI9481_CMD_READ_DISP_PIXEL_FORMAT 0x0C
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
19 #define ILI9481_CMD_READ_DISP_IMAGE_MODE 0x0D
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
20 #define ILI9481_CMD_READ_DISP_SIGNAL_MODE 0x0E
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
21 #define ILI9481_CMD_READ_DISP_SELF_DIAGNOSTIC 0x0F // bits 7:6 only
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
22 #define ILI9481_CMD_ENTER_SLEEP_MODE 0x10
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
23 #define ILI9481_CMD_SLEEP_OUT 0x11
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
24 #define ILI9481_CMD_PARTIAL_MODE_ON 0x12
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
25 #define ILI9481_CMD_NORMAL_DISP_MODE_ON 0x13
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
26 #define ILI9481_CMD_DISP_INVERSION_OFF 0x20
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
27 #define ILI9481_CMD_DISP_INVERSION_ON 0x21
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
28 #define ILI9481_CMD_DISPLAY_OFF 0x28
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
29 #define ILI9481_CMD_DISPLAY_ON 0x29
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
30 #define ILI9481_CMD_COLUMN_ADDRESS_SET 0x2A
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
31 #define ILI9481_CMD_PAGE_ADDRESS_SET 0x2B
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
32 #define ILI9481_CMD_MEMORY_WRITE 0x2C
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
33 #define ILI9481_CMD_MEMORY_READ 0x2E
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
34 #define ILI9481_CMD_PARTIAL_AREA 0x30
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
35 #define ILI9481_CMD_VERT_SCROLL_DEFINITION 0x33
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
36 #define ILI9481_CMD_TEARING_EFFECT_LINE_OFF 0x34
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
37 #define ILI9481_CMD_TEARING_EFFECT_LINE_ON 0x35
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
38 #define ILI9481_CMD_MEMORY_ACCESS_CONTROL 0x36 // bits 7:3,1:0 only
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
39 #define ILI9481_CMD_VERT_SCROLL_START_ADDRESS 0x37
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
40 #define ILI9481_CMD_IDLE_MODE_OFF 0x38
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
41 #define ILI9481_CMD_IDLE_MODE_ON 0x39
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
42 #define ILI9481_CMD_COLMOD_PIXEL_FORMAT_SET 0x3A
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
43 #define ILI9481_CMD_WRITE_MEMORY_CONTINUE 0x3C
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
44 #define ILI9481_CMD_READ_MEMORY_CONTINUE 0x3E
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
45 #define ILI9481_CMD_SET_TEAR_SCANLINE 0x44
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
46 #define ILI9481_CMD_GET_SCANLINE 0x45
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
47
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
48 #define ILI9481_DDB_START 0xA1
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
49 #define ILI9481_DDB_CONTINUE 0xA8
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
50
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
51 /* other */
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
52 #define ILI9481_CMD_ACCESS_PROTECT 0xB0
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
53 #define ILI9481_CMD_LOW_POWER_CONTROL 0xB1
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
54 #define ILI9481_CMD_FRAME_MEMORY_ACCESS 0xB3
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
55 #define ILI9481_CMD_DISPLAY_MODE 0xB4
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
56 #define ILI9481_CMD_DEVICE_CODE 0xBF
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
57
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
58 #define ILI9481_CMD_PANEL_DRIVE 0xC0
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
59 #define ILI9481_CMD_DISP_TIMING_NORMAL 0xC1
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
60 #define ILI9481_CMD_DISP_TIMING_PARTIAL 0xC2
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
61 #define ILI9481_CMD_DISP_TIMING_IDLE 0xC3
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
62 #define ILI9481_CMD_FRAME_RATE 0xC5
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
63 #define ILI9481_CMD_INTERFACE_CONTROL 0xC6
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
64 #define ILI9481_CMD_GAMMA_SETTING 0xC8
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
65
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
66 #define ILI9481_CMD_POWER_SETTING 0xD0
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
67 #define ILI9481_CMD_VCOM_CONTROL 0xD1
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
68 #define ILI9481_CMD_POWER_CONTROL_NORMAL 0xD2
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
69 #define ILI9481_CMD_POWER_CONTROL_IDEL 0xD3
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
70 #define ILI9481_CMD_POWER_CONTROL_PARTIAL 0xD4
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
71
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
72 #define ILI9481_CMD_NVMEM_WRITE 0xE0
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
73 #define ILI9481_CMD_NVMEM_PROTECTION_KEY 0xE1
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
74 #define ILI9481_CMD_NVMEM_STATUS_READ 0xE2
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
75 #define ILI9481_CMD_NVMEM_PROTECTION 0xE3
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
76
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
77 typedef struct {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
78 uint8_t cmd;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
79 uint8_t data[16];
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
80 uint8_t databytes; // No of data in data; bit 7 = delay after set; 0xFF = end
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
81 // of cmds.
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
82 } lcd_init_cmd_t;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
83
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
84 lcd_init_cmd_t ili_init_cmds[] = {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
85 {ILI9481_CMD_SLEEP_OUT, {0x00}, 0x80},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
86
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
87 // {ILI9481_CMD_POWER_SETTING, {0x07, 0x42, 0x18}, 3}, // from lvgl code
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
88 {ILI9481_CMD_POWER_SETTING, {0x07, 0x41, 0x1D}, 3}, // from esphome code
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
89
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
90 // {ILI9481_CMD_VCOM_CONTROL, {0x00, 0x07, 0x10}, 3}, // from lvgl code
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
91 {ILI9481_CMD_VCOM_CONTROL, {0x00, 0x1c, 0x1f}, 3}, // from esphome code
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
92
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
93 // {ILI9481_CMD_POWER_CONTROL_NORMAL, {0x01, 0x02}, 2}, // from lvgl code
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
94 {ILI9481_CMD_POWER_CONTROL_NORMAL, {0x01, 0x11}, 2}, // from esphome code
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
95
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
96 {ILI9481_CMD_PANEL_DRIVE, {0x10, 0x3B, 0x00, 0x02, 0x11}, 5},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
97 {ILI9481_CMD_FRAME_RATE, {0x03}, 1},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
98 {ILI9481_CMD_FRAME_MEMORY_ACCESS, {0x0, 0x0, 0x0, 0x0}, 4},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
99 //{ILI9481_CMD_DISP_TIMING_NORMAL, {0x10, 0x10, 0x22}, 3},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
100 {ILI9481_CMD_GAMMA_SETTING,
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
101 {0x00, 0x32, 0x36, 0x45, 0x06, 0x16, 0x37, 0x75, 0x77, 0x54, 0x0C, 0x00},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
102 12},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
103
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
104 #define ILI9481_ADDR_PAGE_ADDR_ORDER_B_TO_T 0x80
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
105 #define ILI9481_ADDR_COL_ADDR_ORDER_R_TO_L 0x40
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
106 #define ILI9481_ADDR_PAGE_COLUMN_ORDER_REVERSE 0x20
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
107 #define ILI9481_ADDR_LCD_REFRESH_BOT_TO_TOP 0x10
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
108 #define ILI9481_ADDR_BGR_ORDER 0x08
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
109 #define ILI9481_ADDR_HFLIP 0x02
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
110 #define ILI9481_ADDR_VFLIP 0x01
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
111
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
112 {ILI9481_CMD_MEMORY_ACCESS_CONTROL,
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
113 {ILI9481_ADDR_BGR_ORDER |
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
114 ILI9481_ADDR_HFLIP |
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
115 0},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
116 1},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
117
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
118 {ILI9481_CMD_COLMOD_PIXEL_FORMAT_SET, {0x66}, 1},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
119 // {ILI9481_CMD_COLMOD_PIXEL_FORMAT_SET, {0x55}, 1},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
120
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
121 {ILI9481_CMD_DISP_INVERSION_ON, {}, 0x80},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
122 {ILI9481_CMD_NORMAL_DISP_MODE_ON, {}, 0x80},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
123 {ILI9481_CMD_DISPLAY_ON, {}, 0x80},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
124 {0, {0}, 0xff},
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
125 };
7
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
126
8
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
127 class ILI9481Direct
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
128 : public Component,
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
129 public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW,
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
130 spi::CLOCK_PHASE_LEADING,
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
131 // spi::DATA_RATE_40MHZ
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
132 spi::DATA_RATE_10MHZ> {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
133 public:
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
134 ILI9481Direct(esphome::spi::SPIComponent *spi) { spi_ = spi; }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
135 esphome::spi::SPIComponent *spi_;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
136 int width_ = 320;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
137 int height_ = 480;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
138 esp32::ESP32InternalGPIOPin *reset_pin_;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
139 esp32::ESP32InternalGPIOPin *dc_pin_;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
140 esp32::ESP32InternalGPIOPin *cs_pin_;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
141
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
142 void setup() override {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
143 this->setup_pins_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
144 this->init_lcd_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
145 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
146 void loop() override {}
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
147
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
148 void setup_pins_() {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
149 dc_pin_ = new esp32::ESP32InternalGPIOPin();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
150 dc_pin_->set_pin(::GPIO_NUM_22);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
151 dc_pin_->set_inverted(false);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
152 dc_pin_->set_drive_strength(::GPIO_DRIVE_CAP_2);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
153 dc_pin_->set_flags(gpio::Flags::FLAG_OUTPUT);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
154
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
155 dc_pin_->setup(); // OUTPUT
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
156 dc_pin_->digital_write(false);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
157
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
158 reset_pin_ = new esp32::ESP32InternalGPIOPin();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
159 reset_pin_->set_pin(::GPIO_NUM_25);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
160 reset_pin_->set_inverted(false);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
161 reset_pin_->set_drive_strength(::GPIO_DRIVE_CAP_2);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
162 reset_pin_->set_flags(gpio::Flags::FLAG_OUTPUT);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
163
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
164 reset_pin_->setup(); // OUTPUT
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
165 reset_pin_->digital_write(true);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
166
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
167 cs_pin_ = new esp32::ESP32InternalGPIOPin();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
168 cs_pin_->set_pin(::GPIO_NUM_27);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
169 cs_pin_->set_inverted(false);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
170 cs_pin_->set_drive_strength(::GPIO_DRIVE_CAP_2);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
171 cs_pin_->set_flags(gpio::Flags::FLAG_OUTPUT);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
172
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
173 set_cs_pin(cs_pin_);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
174 set_spi_parent(spi_);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
175 spi_setup();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
176 reset_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
177 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
178
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
179 void init_lcd_() {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
180 command(ILI9481_CMD_SOFTWARE_RESET);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
181 delay(150);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
182
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
183 uint16_t cmd = 0;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
184 while (ili_init_cmds[cmd].databytes != 0xff) {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
185 command(ili_init_cmds[cmd].cmd);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
186 {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
187 start_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
188 write_array(ili_init_cmds[cmd].data,
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
189 ili_init_cmds[cmd].databytes & 0x1F);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
190 end_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
191 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
192 if (ili_init_cmds[cmd].databytes & 0x80) {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
193 delay(150);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
194 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
195 cmd++;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
196 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
197 ESP_LOGI(TAG, "done init cmds");
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
198 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
199
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
200 void blit(uint16_t xp, uint16_t yp, uint16_t w, uint16_t h,
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
201 const unsigned char *&buf) {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
202 set_addr_window_(xp, yp, xp + w - 1, yp + h - 1);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
203
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
204 this->command(ILI9481_CMD_MEMORY_WRITE);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
205 {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
206 this->start_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
207 this->write_array(buf, static_cast<size_t>(h * w * 3));
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
208 this->end_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
209 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
210 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
211
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
212 void set_addr_window_(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
213 command(ILI9481_CMD_COLUMN_ADDRESS_SET);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
214 {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
215 start_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
216 write_byte(x1 >> 8);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
217 write_byte(x1 & 0xFF);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
218 write_byte(x2 >> 8);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
219 write_byte(x2 & 0xFF);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
220 end_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
221 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
222 command(ILI9481_CMD_PAGE_ADDRESS_SET);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
223 {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
224 start_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
225 write_byte(y1 >> 8);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
226 write_byte(y1 & 0xFF);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
227 write_byte(y2 >> 8);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
228 write_byte(y2 & 0xFF);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
229 end_data_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
230 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
231 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
232 void command(uint8_t value) {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
233 this->start_command_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
234 this->write_byte(value);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
235 this->end_command_();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
236 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
237
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
238 void start_command_() {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
239 this->dc_pin_->digital_write(false);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
240 this->enable();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
241 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
242 void end_command_() { this->disable(); }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
243
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
244 void start_data_() {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
245 this->dc_pin_->digital_write(true);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
246 this->enable();
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
247 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
248 void end_data_() { this->disable(); }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
249
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
250 void reset_() {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
251 if (this->reset_pin_ != nullptr) {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
252 this->reset_pin_->digital_write(false);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
253 delay(20);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
254 this->reset_pin_->digital_write(true);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
255 delay(20);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
256 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
257 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
258 };
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
259
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
260 void update_lcd_block(ILI9481Direct *lcd, std::string &x) {
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
261 #if 0
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
262 std::string localPayload = x;
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
263 const unsigned char *buf = reinterpret_cast<const unsigned char*>(localPayload.data());
7
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
264 #else
8
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
265 const unsigned char *buf = reinterpret_cast<const unsigned char *>(x.data());
7
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
266 #endif
8
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
267
7
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
268 uint16_t seq, xp, yp, w, h;
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
269 #define readu16() \
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
270 (static_cast<const uint16_t>(*(buf++)) | \
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
271 (static_cast<const uint16_t>(*(buf++)) << 8))
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
272 seq = readu16();
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
273 xp = readu16();
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
274 yp = readu16();
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
275 w = readu16();
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
276 h = readu16();
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
277 char seqDia[] = " ";
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
278 seqDia[seq % 10] = '%';
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
279 ESP_LOGD("dbg",
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
280 "seq=%hu%s xp=%hu, yp=%hu, w=%hu, h=%hu, full payload=%d bytes", seq,
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
281 seqDia, xp, yp, w, h, x.size());
b46679798c51 mv esp code to this repo. still trying to get correct refreshes
drewp@bigasterisk.com
parents:
diff changeset
282
8
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
283 lcd->blit(xp, yp, w, h, buf);
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
284 }
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
285 } // namespace ili9xxx
47795c3121f1 bufferless updates! mqtt message is sent over SPI and everything works
drewp@bigasterisk.com
parents: 7
diff changeset
286 } // namespace esphome