Skip to content

Commit 1ebd4a7

Browse files
committed
API changes
1 parent fa090da commit 1ebd4a7

File tree

5 files changed

+102
-114
lines changed

5 files changed

+102
-114
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# ***IMPORTANT PLEASE READ***
22
_____________________________
33

4+
***API Breaking Change***
5+
`lcd_bus.RGBBus` and `lcd_bus.I80Bus` have had the data pins consilidated into a single parameter.
6+
The parameter name is `data_pins` and it is a tuple of the pin numbers that needs to be passed.
7+
8+
`lcd_bus.RGBBus` had 2 parameters removed. The `disp` and `disp_active_high` parameters. The "disp"
9+
pin is the power pin and it should be set as such with the display driver and not the bus
10+
11+
----------------------------------------------
412

513
The `mpy_cross` build command has been removed. It will be compiled automatically if it has not been compiled yet.
614

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import rgb_display_framework
2+
import lvgl as lv
3+
4+
import lcd_bus
5+
6+
7+
STATE_HIGH = rgb_display_framework.STATE_HIGH
8+
STATE_LOW = rgb_display_framework.STATE_LOW
9+
STATE_PWM = rgb_display_framework.STATE_PWM
10+
11+
BYTE_ORDER_RGB = rgb_display_framework.BYTE_ORDER_RGB
12+
BYTE_ORDER_BGR = rgb_display_framework.BYTE_ORDER_BGR
13+
14+
15+
class ILI6122(rgb_display_framework.RGBDisplayDriver):
16+
17+
def __init__(
18+
self,
19+
data_bus,
20+
display_width,
21+
display_height,
22+
frame_buffer1=None,
23+
frame_buffer2=None,
24+
reset_pin=None,
25+
reset_state=STATE_HIGH,
26+
power_pin=None,
27+
power_on_state=STATE_HIGH,
28+
backlight_pin=None,
29+
backlight_on_state=STATE_HIGH,
30+
offset_x=0,
31+
offset_y=0,
32+
color_byte_order=BYTE_ORDER_RGB,
33+
color_space=lv.COLOR_FORMAT.RGB888, # NOQA
34+
rgb565_byte_swap=False,
35+
):
36+
37+
if not isinstance(data_bus, lcd_bus.RGBBus):
38+
raise ValueError('invalid databus for the ILI6122 IC')
39+
40+
self._spi_3wire = None
41+
self._bus_shared_pins = False
42+
43+
super().__init__(
44+
data_bus=data_bus,
45+
display_width=display_width,
46+
display_height=display_height,
47+
frame_buffer1=frame_buffer1,
48+
frame_buffer2=frame_buffer2,
49+
reset_pin=reset_pin,
50+
reset_state=reset_state,
51+
power_pin=power_pin,
52+
power_on_state=power_on_state,
53+
backlight_pin=backlight_pin,
54+
backlight_on_state=backlight_on_state,
55+
offset_x=offset_x,
56+
offset_y=offset_y,
57+
color_byte_order=color_byte_order,
58+
color_space=color_space,
59+
rgb565_byte_swap=rgb565_byte_swap,
60+
_cmd_bits=8,
61+
_param_bits=8,
62+
_init_bus=True
63+
)
64+
65+
def init(self):
66+
rgb_display_framework.RGBDisplayDriver.init(self, None)

api_drivers/common_api_drivers/frozen/other/task_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def _task_handler(self, _):
155155

156156
except Exception as e:
157157
self._running = False
158-
158+
159159
if self.exception_hook:
160160
self.exception_hook(e)
161161

ext_mod/lcd_bus/esp32_src/i80_bus.c

Lines changed: 12 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,7 @@
3131
enum {
3232
ARG_dc,
3333
ARG_wr,
34-
ARG_data0,
35-
ARG_data1,
36-
ARG_data2,
37-
ARG_data3,
38-
ARG_data4,
39-
ARG_data5,
40-
ARG_data6,
41-
ARG_data7,
42-
ARG_data8,
43-
ARG_data9,
44-
ARG_data10,
45-
ARG_data11,
46-
ARG_data12,
47-
ARG_data13,
48-
ARG_data14,
49-
ARG_data15,
34+
ARG_data_pins,
5035
ARG_cs,
5136
ARG_freq,
5237
ARG_dc_idle_high,
@@ -62,22 +47,7 @@
6247
const mp_arg_t make_new_args[] = {
6348
{ MP_QSTR_dc, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
6449
{ MP_QSTR_wr, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
65-
{ MP_QSTR_data0, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
66-
{ MP_QSTR_data1, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
67-
{ MP_QSTR_data2, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
68-
{ MP_QSTR_data3, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
69-
{ MP_QSTR_data4, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
70-
{ MP_QSTR_data5, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
71-
{ MP_QSTR_data6, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
72-
{ MP_QSTR_data7, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
73-
{ MP_QSTR_data8, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
74-
{ MP_QSTR_data9, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
75-
{ MP_QSTR_data10, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
76-
{ MP_QSTR_data11, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
77-
{ MP_QSTR_data12, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
78-
{ MP_QSTR_data13, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
79-
{ MP_QSTR_data14, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
80-
{ MP_QSTR_data15, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
50+
{ MP_QSTR_data_pins, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
8151
{ MP_QSTR_cs, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
8252
{ MP_QSTR_freq, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = 10000000 } },
8353
{ MP_QSTR_dc_idle_high, MP_ARG_BOOL | MP_ARG_KW_ONLY, { .u_bool = false } },
@@ -109,31 +79,18 @@
10979
self->bus_config.dc_gpio_num = (int)args[ARG_dc].u_int;
11080
self->bus_config.wr_gpio_num = (int)args[ARG_wr].u_int;
11181
self->bus_config.clk_src = LCD_CLK_SRC_PLL160M;
112-
self->bus_config.data_gpio_nums[0] = args[ARG_data0].u_int;
113-
self->bus_config.data_gpio_nums[1] = args[ARG_data1].u_int;
114-
self->bus_config.data_gpio_nums[2] = args[ARG_data2].u_int;
115-
self->bus_config.data_gpio_nums[3] = args[ARG_data3].u_int;
116-
self->bus_config.data_gpio_nums[4] = args[ARG_data4].u_int;
117-
self->bus_config.data_gpio_nums[5] = args[ARG_data5].u_int;
118-
self->bus_config.data_gpio_nums[6] = args[ARG_data6].u_int;
119-
self->bus_config.data_gpio_nums[7] = args[ARG_data7].u_int;
120-
self->bus_config.data_gpio_nums[8] = args[ARG_data8].u_int;
121-
self->bus_config.data_gpio_nums[9] = args[ARG_data9].u_int;
122-
self->bus_config.data_gpio_nums[10] = args[ARG_data10].u_int;
123-
self->bus_config.data_gpio_nums[11] = args[ARG_data11].u_int;
124-
self->bus_config.data_gpio_nums[12] = args[ARG_data12].u_int;
125-
self->bus_config.data_gpio_nums[13] = args[ARG_data13].u_int;
126-
self->bus_config.data_gpio_nums[14] = args[ARG_data14].u_int;
127-
self->bus_config.data_gpio_nums[15] = args[ARG_data15].u_int;
128-
129-
uint8_t i = 0;
130-
for (; i < SOC_LCD_I80_BUS_WIDTH; i++) {
131-
if (self->bus_config.data_gpio_nums[i] == -1) {
132-
break;
133-
}
82+
83+
mp_obj_tuple_t *data_pins = MP_OBJ_TO_PTR(args[ARG_data_pins].u_obj);
84+
85+
for (size_t i = 0; i < data_pins->len; i++) {
86+
self->bus_config.data_gpio_nums[i] = (int)mp_obj_get_int(data_pins->items[i]);
87+
}
88+
89+
for (size_t i = data_pins->len; i < SOC_LCD_I80_BUS_WIDTH; i++) {
90+
self->bus_config.data_gpio_nums[i] = -1;
13491
}
13592

136-
self->bus_config.bus_width = (size_t) i;
93+
self->bus_config.bus_width = (size_t)data_pins->len;
13794

13895
self->panel_io_config.cs_gpio_num = (int)args[ARG_cs].u_int;
13996
self->panel_io_config.pclk_hz = (uint32_t)args[ARG_freq].u_int;

ext_mod/lcd_bus/esp32_src/rgb_bus.c

Lines changed: 15 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -83,24 +83,8 @@
8383
ARG_hsync,
8484
ARG_vsync,
8585
ARG_de,
86-
ARG_disp,
8786
ARG_pclk,
88-
ARG_data0,
89-
ARG_data1,
90-
ARG_data2,
91-
ARG_data3,
92-
ARG_data4,
93-
ARG_data5,
94-
ARG_data6,
95-
ARG_data7,
96-
ARG_data8,
97-
ARG_data9,
98-
ARG_data10,
99-
ARG_data11,
100-
ARG_data12,
101-
ARG_data13,
102-
ARG_data14,
103-
ARG_data15,
87+
ARG_data_pins,
10488
ARG_freq,
10589
ARG_hsync_front_porch,
10690
ARG_hsync_back_porch,
@@ -121,24 +105,8 @@
121105
{ MP_QSTR_hsync, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
122106
{ MP_QSTR_vsync, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
123107
{ MP_QSTR_de, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
124-
{ MP_QSTR_disp, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
125108
{ MP_QSTR_pclk, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
126-
{ MP_QSTR_data0, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
127-
{ MP_QSTR_data1, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
128-
{ MP_QSTR_data2, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
129-
{ MP_QSTR_data3, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
130-
{ MP_QSTR_data4, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
131-
{ MP_QSTR_data5, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
132-
{ MP_QSTR_data6, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
133-
{ MP_QSTR_data7, MP_ARG_INT | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
134-
{ MP_QSTR_data8, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
135-
{ MP_QSTR_data9, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
136-
{ MP_QSTR_data10, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
137-
{ MP_QSTR_data11, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
138-
{ MP_QSTR_data12, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
139-
{ MP_QSTR_data13, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
140-
{ MP_QSTR_data14, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
141-
{ MP_QSTR_data15, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = -1 } },
109+
{ MP_QSTR_data_pins, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
142110
{ MP_QSTR_freq, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = 8000000 } },
143111
{ MP_QSTR_hsync_front_porch, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = 0 } },
144112
{ MP_QSTR_hsync_back_porch, MP_ARG_INT | MP_ARG_KW_ONLY, { .u_int = 0 } },
@@ -151,7 +119,6 @@
151119
{ MP_QSTR_de_idle_high, MP_ARG_BOOL | MP_ARG_KW_ONLY, { .u_bool = false } },
152120
{ MP_QSTR_pclk_idle_high, MP_ARG_BOOL | MP_ARG_KW_ONLY, { .u_bool = false } },
153121
{ MP_QSTR_pclk_active_low, MP_ARG_BOOL | MP_ARG_KW_ONLY, { .u_bool = false } },
154-
{ MP_QSTR_disp_active_low, MP_ARG_BOOL | MP_ARG_KW_ONLY, { .u_bool = false } },
155122
{ MP_QSTR_refresh_on_demand, MP_ARG_BOOL | MP_ARG_KW_ONLY, { .u_bool = false } },
156123
};
157124

@@ -183,22 +150,19 @@
183150
self->panel_io_config.vsync_gpio_num = (int)args[ARG_vsync].u_int;
184151
self->panel_io_config.de_gpio_num = (int)args[ARG_de].u_int;
185152
self->panel_io_config.pclk_gpio_num = (int)args[ARG_pclk].u_int;
186-
self->panel_io_config.data_gpio_nums[0] = (int)args[ARG_data0].u_int;
187-
self->panel_io_config.data_gpio_nums[1] = (int)args[ARG_data1].u_int;
188-
self->panel_io_config.data_gpio_nums[2] = (int)args[ARG_data2].u_int;
189-
self->panel_io_config.data_gpio_nums[3] = (int)args[ARG_data3].u_int;
190-
self->panel_io_config.data_gpio_nums[4] = (int)args[ARG_data4].u_int;
191-
self->panel_io_config.data_gpio_nums[5] = (int)args[ARG_data5].u_int;
192-
self->panel_io_config.data_gpio_nums[6] = (int)args[ARG_data6].u_int;
193-
self->panel_io_config.data_gpio_nums[7] = (int)args[ARG_data7].u_int;
194-
self->panel_io_config.data_gpio_nums[8] = (int)args[ARG_data8].u_int;
195-
self->panel_io_config.data_gpio_nums[9] = (int)args[ARG_data9].u_int;
196-
self->panel_io_config.data_gpio_nums[10] = (int)args[ARG_data10].u_int;
197-
self->panel_io_config.data_gpio_nums[11] = (int)args[ARG_data11].u_int;
198-
self->panel_io_config.data_gpio_nums[12] = (int)args[ARG_data12].u_int;
199-
self->panel_io_config.data_gpio_nums[13] = (int)args[ARG_data13].u_int;
200-
self->panel_io_config.data_gpio_nums[14] = (int)args[ARG_data14].u_int;
201-
self->panel_io_config.data_gpio_nums[15] = (int)args[ARG_data15].u_int;
153+
154+
mp_obj_tuple_t *data_pins = MP_OBJ_TO_PTR(args[ARG_data_pins].u_obj);
155+
156+
for (size_t i = 0; i < data_pins->len; i++) {
157+
self->panel_io_config.data_gpio_nums[i] = (int)mp_obj_get_int(data_pins->items[i]);
158+
}
159+
160+
for (size_t i = data_pins->len; i < 16; i++) {
161+
self->panel_io_config.data_gpio_nums[i] = -1;
162+
}
163+
164+
self->panel_io_config.data_width = (size_t)data_pins->len;
165+
202166
self->panel_io_config.disp_gpio_num = (int)args[ARG_disp].u_int;
203167
self->panel_io_config.sram_trans_align = 8;
204168
self->panel_io_config.psram_trans_align = 64;
@@ -207,14 +171,7 @@
207171
self->panel_io_config.flags.fb_in_psram = 0;
208172
self->panel_io_config.flags.double_fb = 0;
209173

210-
int i = 0;
211-
for (; i < 16; i++) {
212-
if (self->panel_io_config.data_gpio_nums[i] == -1) {
213-
break;
214-
}
215-
}
216174

217-
self->panel_io_config.data_width = (size_t) i;
218175

219176
#if CONFIG_LCD_ENABLE_DEBUG_LOG
220177
printf("pclk_hz=%lu\n", self->bus_config.pclk_hz);

0 commit comments

Comments
 (0)