Skip to content

Commit d04cc63

Browse files
committed
feature: Support micropython 1.20.0
Signed-off-by: lbuque <[email protected]>
1 parent 5070a4b commit d04cc63

File tree

10 files changed

+130
-10
lines changed

10 files changed

+130
-10
lines changed

examples/scroll/scroll.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@ def cycle(p):
2727

2828
def main():
2929
colors = cycle([0xe000, 0xece0, 0xe7e0, 0x5e0, 0x00d3, 0x7030])
30+
# colors = cycle([0x00e0, 0xe0ec, 0xe0e7, 0x005e, 0xd300, 0x3070])
3031
foreground = next(colors)
3132
background = 0x0000
3233

3334
tft = tft_config.config()
34-
tft.rotation(2)
35+
tft.rotation(0)
3536

3637
'''The font height of the framebuf is 8 pixels.'''
3738
font_height = const(8)
@@ -62,8 +63,8 @@ def main():
6263

6364
'''Write new line when we have scrolled the height of a character'''
6465
if scroll % font_height == 0:
65-
line = (height - scroll) % height
66-
# line = (scroll + last_line) % height
66+
# line = (height - scroll) % height
67+
line = (scroll + last_line) % height
6768
fbuf.fill(background)
6869
'''write character hex value as a string'''
6970
fbuf.text(

lcd/bus/dpi/dpi_panel.c

+11
Original file line numberDiff line numberDiff line change
@@ -277,10 +277,21 @@ STATIC const mp_rom_map_elem_t mp_lcd_dpi_locals_dict_table[] = {
277277
};
278278
STATIC MP_DEFINE_CONST_DICT(mp_lcd_dpi_locals_dict, mp_lcd_dpi_locals_dict_table);
279279

280+
#ifdef MP_OBJ_TYPE_GET_SLOT
281+
MP_DEFINE_CONST_OBJ_TYPE(
282+
mp_lcd_dpi_type,
283+
MP_QSTR_DPI,
284+
MP_TYPE_FLAG_NONE,
285+
print, mp_lcd_dpi_print,
286+
make_new, mp_lcd_dpi_make_new,
287+
locals_dict, (mp_obj_dict_t *)&mp_lcd_dpi_locals_dict
288+
);
289+
#else
280290
const mp_obj_type_t mp_lcd_dpi_type = {
281291
{ &mp_type_type },
282292
.name = MP_QSTR_DPI,
283293
.print = mp_lcd_dpi_print,
284294
.make_new = mp_lcd_dpi_make_new,
285295
.locals_dict = (mp_obj_dict_t *)&mp_lcd_dpi_locals_dict,
286296
};
297+
#endif

lcd/bus/i80/i80_panel.c

+12-1
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,17 @@ STATIC const mp_lcd_panel_p_t mp_lcd_panel_p = {
173173
.deinit = hal_lcd_i80_deinit
174174
};
175175

176-
176+
#ifdef MP_OBJ_TYPE_GET_SLOT
177+
MP_DEFINE_CONST_OBJ_TYPE(
178+
mp_lcd_i80_type,
179+
MP_QSTR_I8080,
180+
MP_TYPE_FLAG_NONE,
181+
print, mp_lcd_i80_print,
182+
make_new, mp_lcd_i80_make_new,
183+
protocol, &mp_lcd_panel_p,
184+
locals_dict, (mp_obj_dict_t *)&mp_lcd_i80_locals_dict
185+
);
186+
#else
177187
const mp_obj_type_t mp_lcd_i80_type = {
178188
{ &mp_type_type },
179189
.name = MP_QSTR_I8080,
@@ -182,3 +192,4 @@ const mp_obj_type_t mp_lcd_i80_type = {
182192
.protocol = &mp_lcd_panel_p,
183193
.locals_dict = (mp_obj_dict_t *)&mp_lcd_i80_locals_dict,
184194
};
195+
#endif

lcd/bus/qspi/qspi_panel.c

+12
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,17 @@ STATIC const mp_lcd_panel_p_t mp_lcd_panel_p = {
160160
};
161161

162162

163+
#ifdef MP_OBJ_TYPE_GET_SLOT
164+
MP_DEFINE_CONST_OBJ_TYPE(
165+
mp_lcd_qspi_panel_type,
166+
MP_QSTR_QSPI_Panel,
167+
MP_TYPE_FLAG_NONE,
168+
print, mp_lcd_qspi_panel_print,
169+
make_new, mp_lcd_qspi_panel_make_new,
170+
protocol, &mp_lcd_panel_p,
171+
locals_dict, (mp_obj_dict_t *)&mp_lcd_qspi_panel_locals_dict
172+
);
173+
#else
163174
const mp_obj_type_t mp_lcd_qspi_panel_type = {
164175
{ &mp_type_type },
165176
.name = MP_QSTR_QSPI_Panel,
@@ -168,3 +179,4 @@ const mp_obj_type_t mp_lcd_qspi_panel_type = {
168179
.protocol = &mp_lcd_panel_p,
169180
.locals_dict = (mp_obj_dict_t *)&mp_lcd_qspi_panel_locals_dict,
170181
};
182+
#endif

lcd/bus/spi/spi_panel.c

+16-5
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ STATIC mp_obj_t mp_lcd_spi_panel_make_new(const mp_obj_type_t *type,
8282
self->cmd_bits = args[ARG_cmd_bits].u_int;
8383
self->param_bits = args[ARG_param_bits].u_int;
8484

85-
if (mp_obj_is_type(self->spi_obj, &machine_hw_spi_type)) {
85+
if (mp_obj_is_type(self->spi_obj, &machine_spi_type)) {
8686
hal_lcd_spi_panel_construct(&self->base);
8787
} else if (mp_obj_is_type(self->spi_obj, &mp_machine_soft_spi_type)) {
8888
hal_lcd_softspi_panel_construct(&self->base);
@@ -154,7 +154,7 @@ STATIC inline void mp_lcd_spi_panel_p_tx_param(mp_obj_base_t *self,
154154
size_t param_size)
155155
{
156156
mp_lcd_spi_panel_obj_t *spi_panel_obj = (mp_lcd_spi_panel_obj_t *)self;
157-
if (mp_obj_is_type(spi_panel_obj->spi_obj, &machine_hw_spi_type)) {
157+
if (mp_obj_is_type(spi_panel_obj->spi_obj, &machine_spi_type)) {
158158
hal_lcd_spi_panel_tx_param(self, lcd_cmd, param, param_size);
159159
} else if (mp_obj_is_type(spi_panel_obj->spi_obj, &mp_machine_soft_spi_type)) {
160160
hal_lcd_softspi_panel_tx_param(self, lcd_cmd, param, param_size);
@@ -168,7 +168,7 @@ STATIC inline void mp_lcd_spi_panel_p_tx_color(mp_obj_base_t *self,
168168
size_t color_size)
169169
{
170170
mp_lcd_spi_panel_obj_t *spi_panel_obj = (mp_lcd_spi_panel_obj_t *)self;
171-
if (mp_obj_is_type(spi_panel_obj->spi_obj, &machine_hw_spi_type)) {
171+
if (mp_obj_is_type(spi_panel_obj->spi_obj, &machine_spi_type)) {
172172
hal_lcd_spi_panel_tx_color(self, lcd_cmd, color, color_size);
173173
} else if (mp_obj_is_type(spi_panel_obj->spi_obj, &mp_machine_soft_spi_type)) {
174174
hal_lcd_softspi_panel_tx_color(self, lcd_cmd, color, color_size);
@@ -179,7 +179,7 @@ STATIC inline void mp_lcd_spi_panel_p_tx_color(mp_obj_base_t *self,
179179
STATIC inline void mp_lcd_spi_panel_p_deinit(mp_obj_base_t *self)
180180
{
181181
mp_lcd_spi_panel_obj_t *spi_panel_obj = (mp_lcd_spi_panel_obj_t *)self;
182-
if (mp_obj_is_type(spi_panel_obj->spi_obj, &machine_hw_spi_type)) {
182+
if (mp_obj_is_type(spi_panel_obj->spi_obj, &machine_spi_type)) {
183183
hal_lcd_spi_panel_deinit(self);
184184
} else if (mp_obj_is_type(spi_panel_obj->spi_obj, &mp_machine_soft_spi_type)) {
185185
hal_lcd_softspi_panel_deinit(self);
@@ -193,7 +193,17 @@ STATIC const mp_lcd_panel_p_t mp_lcd_panel_p = {
193193
.deinit = mp_lcd_spi_panel_p_deinit
194194
};
195195

196-
196+
#ifdef MP_OBJ_TYPE_GET_SLOT
197+
MP_DEFINE_CONST_OBJ_TYPE(
198+
mp_lcd_spi_panel_type,
199+
MP_QSTR_SPI_Panel,
200+
MP_TYPE_FLAG_NONE,
201+
print, mp_lcd_spi_panel_print,
202+
make_new, mp_lcd_spi_panel_make_new,
203+
protocol, &mp_lcd_panel_p,
204+
locals_dict, (mp_obj_dict_t *)&mp_lcd_spi_panel_locals_dict
205+
);
206+
#else
197207
const mp_obj_type_t mp_lcd_spi_panel_type = {
198208
{ &mp_type_type },
199209
.name = MP_QSTR_SPI_Panel,
@@ -202,3 +212,4 @@ const mp_obj_type_t mp_lcd_spi_panel_type = {
202212
.protocol = &mp_lcd_panel_p,
203213
.locals_dict = (mp_obj_dict_t *)&mp_lcd_spi_panel_locals_dict,
204214
};
215+
#endif

lcd/driver/gc9a01/gc9a01.c

+15
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ mp_obj_t mp_lcd_gc9a01_make_new(const mp_obj_type_t *type,
109109
self->base.type = &mp_lcd_gc9a01_type;
110110

111111
self->bus_obj = (mp_obj_base_t *)MP_OBJ_TO_PTR(args[ARG_bus].u_obj);
112+
#ifdef MP_OBJ_TYPE_GET_SLOT
113+
self->lcd_panel_p = (mp_lcd_panel_p_t *)MP_OBJ_TYPE_GET_SLOT(self->bus_obj->type, protocol);
114+
#else
112115
self->lcd_panel_p = (mp_lcd_panel_p_t *)self->bus_obj->type->protocol;
116+
#endif
113117

114118
if (mp_obj_is_type(self->bus_obj, &mp_lcd_spi_panel_type)) {
115119
self->width = ((mp_lcd_spi_panel_obj_t *)self->bus_obj)->width;
@@ -571,10 +575,21 @@ STATIC const mp_rom_map_elem_t mp_lcd_gc9a01_locals_dict_table[] = {
571575
STATIC MP_DEFINE_CONST_DICT(mp_lcd_gc9a01_locals_dict, mp_lcd_gc9a01_locals_dict_table);
572576

573577

578+
#ifdef MP_OBJ_TYPE_GET_SLOT
579+
MP_DEFINE_CONST_OBJ_TYPE(
580+
mp_lcd_gc9a01_type,
581+
MP_QSTR_GC9A01,
582+
MP_TYPE_FLAG_NONE,
583+
print, mp_lcd_gc9a01_print,
584+
make_new, mp_lcd_gc9a01_make_new,
585+
locals_dict, (mp_obj_dict_t *)&mp_lcd_gc9a01_locals_dict
586+
);
587+
#else
574588
const mp_obj_type_t mp_lcd_gc9a01_type = {
575589
{ &mp_type_type },
576590
.name = MP_QSTR_GC9A01,
577591
.print = mp_lcd_gc9a01_print,
578592
.make_new = mp_lcd_gc9a01_make_new,
579593
.locals_dict = (mp_obj_dict_t *)&mp_lcd_gc9a01_locals_dict,
580594
};
595+
#endif

lcd/driver/ili9488/ili9488.c

+15
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,11 @@ mp_obj_t mp_lcd_ili9488_make_new(const mp_obj_type_t *type,
110110
self->base.type = &mp_lcd_ili9488_type;
111111

112112
self->bus_obj = (mp_obj_base_t *)MP_OBJ_TO_PTR(args[ARG_bus].u_obj);
113+
#ifdef MP_OBJ_TYPE_GET_SLOT
114+
self->lcd_panel_p = (mp_lcd_panel_p_t *)MP_OBJ_TYPE_GET_SLOT(self->bus_obj->type, protocol);
115+
#else
113116
self->lcd_panel_p = (mp_lcd_panel_p_t *)self->bus_obj->type->protocol;
117+
#endif
114118

115119
if (mp_obj_is_type(self->bus_obj, &mp_lcd_spi_panel_type)) {
116120
self->width = ((mp_lcd_spi_panel_obj_t *)self->bus_obj)->width;
@@ -553,10 +557,21 @@ STATIC const mp_rom_map_elem_t mp_lcd_ili9488_locals_dict_table[] = {
553557
STATIC MP_DEFINE_CONST_DICT(mp_lcd_ili9488_locals_dict, mp_lcd_ili9488_locals_dict_table);
554558

555559

560+
#ifdef MP_OBJ_TYPE_GET_SLOT
561+
MP_DEFINE_CONST_OBJ_TYPE(
562+
mp_lcd_ili9488_type,
563+
MP_QSTR_ILI9488,
564+
MP_TYPE_FLAG_NONE,
565+
print, mp_lcd_ili9488_print,
566+
make_new, mp_lcd_ili9488_make_new,
567+
locals_dict, (mp_obj_dict_t *)&mp_lcd_ili9488_locals_dict
568+
);
569+
#else
556570
const mp_obj_type_t mp_lcd_ili9488_type = {
557571
{ &mp_type_type },
558572
.name = MP_QSTR_ILI9488,
559573
.print = mp_lcd_ili9488_print,
560574
.make_new = mp_lcd_ili9488_make_new,
561575
.locals_dict = (mp_obj_dict_t *)&mp_lcd_ili9488_locals_dict,
562576
};
577+
#endif

lcd/driver/rm67162/rm67162.c

+15
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,11 @@ mp_obj_t mp_lcd_rm67162_make_new(const mp_obj_type_t *type,
110110
self->base.type = &mp_lcd_rm67162_type;
111111

112112
self->bus_obj = (mp_obj_base_t *)MP_OBJ_TO_PTR(args[ARG_bus].u_obj);
113+
#ifdef MP_OBJ_TYPE_GET_SLOT
114+
self->lcd_panel_p = (mp_lcd_panel_p_t *)MP_OBJ_TYPE_GET_SLOT(self->bus_obj->type, protocol);
115+
#else
113116
self->lcd_panel_p = (mp_lcd_panel_p_t *)self->bus_obj->type->protocol;
117+
#endif
114118

115119
self->width = ((mp_lcd_qspi_panel_obj_t *)self->bus_obj)->width;
116120
self->height = ((mp_lcd_qspi_panel_obj_t *)self->bus_obj)->height;
@@ -598,10 +602,21 @@ STATIC const mp_rom_map_elem_t mp_lcd_rm67162_locals_dict_table[] = {
598602
STATIC MP_DEFINE_CONST_DICT(mp_lcd_rm67162_locals_dict, mp_lcd_rm67162_locals_dict_table);
599603

600604

605+
#ifdef MP_OBJ_TYPE_GET_SLOT
606+
MP_DEFINE_CONST_OBJ_TYPE(
607+
mp_lcd_rm67162_type,
608+
MP_QSTR_RM67162,
609+
MP_TYPE_FLAG_NONE,
610+
print, mp_lcd_rm67162_print,
611+
make_new, mp_lcd_rm67162_make_new,
612+
locals_dict, (mp_obj_dict_t *)&mp_lcd_rm67162_locals_dict
613+
);
614+
#else
601615
const mp_obj_type_t mp_lcd_rm67162_type = {
602616
{ &mp_type_type },
603617
.name = MP_QSTR_RM67162,
604618
.print = mp_lcd_rm67162_print,
605619
.make_new = mp_lcd_rm67162_make_new,
606620
.locals_dict = (mp_obj_dict_t *)&mp_lcd_rm67162_locals_dict,
607621
};
622+
#endif

lcd/driver/st7735/st7735.c

+15-1
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,11 @@ mp_obj_t mp_lcd_st7735_make_new(const mp_obj_type_t *type,
110110
self->base.type = &mp_lcd_st7735_type;
111111

112112
self->bus_obj = (mp_obj_base_t *)MP_OBJ_TO_PTR(args[ARG_bus].u_obj);
113+
#ifdef MP_OBJ_TYPE_GET_SLOT
114+
self->lcd_panel_p = (mp_lcd_panel_p_t *)MP_OBJ_TYPE_GET_SLOT(self->bus_obj->type, protocol);
115+
#else
113116
self->lcd_panel_p = (mp_lcd_panel_p_t *)self->bus_obj->type->protocol;
114-
117+
#endif
115118
if (mp_obj_is_type(self->bus_obj, &mp_lcd_spi_panel_type)) {
116119
self->width = ((mp_lcd_spi_panel_obj_t *)self->bus_obj)->width;
117120
self->height = ((mp_lcd_spi_panel_obj_t *)self->bus_obj)->height;
@@ -575,10 +578,21 @@ STATIC const mp_rom_map_elem_t mp_lcd_st7735_locals_dict_table[] = {
575578
STATIC MP_DEFINE_CONST_DICT(mp_lcd_st7735_locals_dict, mp_lcd_st7735_locals_dict_table);
576579

577580

581+
#ifdef MP_OBJ_TYPE_GET_SLOT
582+
MP_DEFINE_CONST_OBJ_TYPE(
583+
mp_lcd_st7735_type,
584+
MP_QSTR_ST7735,
585+
MP_TYPE_FLAG_NONE,
586+
print, mp_lcd_st7735_print,
587+
make_new, mp_lcd_st7735_make_new,
588+
locals_dict, (mp_obj_dict_t *)&mp_lcd_st7735_locals_dict
589+
);
590+
#else
578591
const mp_obj_type_t mp_lcd_st7735_type = {
579592
{ &mp_type_type },
580593
.name = MP_QSTR_ST7735,
581594
.print = mp_lcd_st7735_print,
582595
.make_new = mp_lcd_st7735_make_new,
583596
.locals_dict = (mp_obj_dict_t *)&mp_lcd_st7735_locals_dict,
584597
};
598+
#endif

lcd/driver/st7789/st7789.c

+15
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ mp_obj_t mp_lcd_st7789_make_new(const mp_obj_type_t *type,
109109
self->base.type = &mp_lcd_st7789_type;
110110

111111
self->bus_obj = (mp_obj_base_t *)MP_OBJ_TO_PTR(args[ARG_bus].u_obj);
112+
#ifdef MP_OBJ_TYPE_GET_SLOT
113+
self->lcd_panel_p = (mp_lcd_panel_p_t *)MP_OBJ_TYPE_GET_SLOT(self->bus_obj->type, protocol);
114+
#else
112115
self->lcd_panel_p = (mp_lcd_panel_p_t *)self->bus_obj->type->protocol;
116+
#endif
113117

114118
if (mp_obj_is_type(self->bus_obj, &mp_lcd_spi_panel_type)) {
115119
self->width = ((mp_lcd_spi_panel_obj_t *)self->bus_obj)->width;
@@ -585,10 +589,21 @@ STATIC const mp_rom_map_elem_t mp_lcd_st7789_locals_dict_table[] = {
585589
STATIC MP_DEFINE_CONST_DICT(mp_lcd_st7789_locals_dict, mp_lcd_st7789_locals_dict_table);
586590

587591

592+
#ifdef MP_OBJ_TYPE_GET_SLOT
593+
MP_DEFINE_CONST_OBJ_TYPE(
594+
mp_lcd_st7789_type,
595+
MP_QSTR_ST7789,
596+
MP_TYPE_FLAG_NONE,
597+
print, mp_lcd_st7789_print,
598+
make_new, mp_lcd_st7789_make_new,
599+
locals_dict, (mp_obj_dict_t *)&mp_lcd_st7789_locals_dict
600+
);
601+
#else
588602
const mp_obj_type_t mp_lcd_st7789_type = {
589603
{ &mp_type_type },
590604
.name = MP_QSTR_ST7789,
591605
.print = mp_lcd_st7789_print,
592606
.make_new = mp_lcd_st7789_make_new,
593607
.locals_dict = (mp_obj_dict_t *)&mp_lcd_st7789_locals_dict,
594608
};
609+
#endif

0 commit comments

Comments
 (0)