Skip to content

Commit e3cae22

Browse files
committed
allow set_root_group for EPaperDisplay instead of show()
1 parent 403e3ef commit e3cae22

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

shared-bindings/displayio/EPaperDisplay.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,30 @@ MP_DEFINE_CONST_FUN_OBJ_1(displayio_epaperdisplay_get_bus_obj, displayio_epaperd
349349
MP_PROPERTY_GETTER(displayio_epaperdisplay_bus_obj,
350350
(mp_obj_t)&displayio_epaperdisplay_get_bus_obj);
351351

352+
//| root_group: Group
353+
//| """The root group on the epaper display."""
354+
//|
355+
STATIC mp_obj_t displayio_epaperdisplay_obj_get_root_group(mp_obj_t self_in) {
356+
displayio_epaperdisplay_obj_t *self = native_display(self_in);
357+
return common_hal_displayio_epaperdisplay_get_root_group(self);
358+
}
359+
MP_DEFINE_CONST_FUN_OBJ_1(displayio_epaperdisplay_get_root_group_obj, displayio_epaperdisplay_obj_get_root_group);
360+
361+
STATIC mp_obj_t displayio_epaperdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) {
362+
displayio_epaperdisplay_obj_t *self = native_display(self_in);
363+
displayio_group_t *group = NULL;
364+
if (group_in != mp_const_none) {
365+
group = MP_OBJ_TO_PTR(native_group(group_in));
366+
}
367+
368+
common_hal_displayio_epaperdisplay_set_root_group(self, group);
369+
return mp_const_none;
370+
}
371+
MP_DEFINE_CONST_FUN_OBJ_2(displayio_epaperdisplay_set_root_group_obj, displayio_epaperdisplay_obj_set_root_group);
372+
373+
MP_PROPERTY_GETSET(displayio_epaperdisplay_root_group_obj,
374+
(mp_obj_t)&displayio_epaperdisplay_get_root_group_obj,
375+
(mp_obj_t)&displayio_epaperdisplay_set_root_group_obj);
352376

353377
STATIC const mp_rom_map_elem_t displayio_epaperdisplay_locals_dict_table[] = {
354378
{ MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&displayio_epaperdisplay_show_obj) },
@@ -361,6 +385,7 @@ STATIC const mp_rom_map_elem_t displayio_epaperdisplay_locals_dict_table[] = {
361385
{ MP_ROM_QSTR(MP_QSTR_bus), MP_ROM_PTR(&displayio_epaperdisplay_bus_obj) },
362386
{ MP_ROM_QSTR(MP_QSTR_busy), MP_ROM_PTR(&displayio_epaperdisplay_busy_obj) },
363387
{ MP_ROM_QSTR(MP_QSTR_time_to_refresh), MP_ROM_PTR(&displayio_epaperdisplay_time_to_refresh_obj) },
388+
{ MP_ROM_QSTR(MP_QSTR_root_group), MP_ROM_PTR(&displayio_epaperdisplay_root_group_obj) },
364389
};
365390
STATIC MP_DEFINE_CONST_DICT(displayio_epaperdisplay_locals_dict, displayio_epaperdisplay_locals_dict_table);
366391

shared-bindings/displayio/EPaperDisplay.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ bool common_hal_displayio_epaperdisplay_refresh(displayio_epaperdisplay_obj_t *s
4848

4949
bool common_hal_displayio_epaperdisplay_show(displayio_epaperdisplay_obj_t *self, displayio_group_t *root_group);
5050

51+
mp_obj_t common_hal_displayio_epaperdisplay_get_root_group(displayio_epaperdisplay_obj_t *self);
52+
bool common_hal_displayio_epaperdisplay_set_root_group(displayio_epaperdisplay_obj_t *self, displayio_group_t *root_group);
53+
5154
// Returns time in milliseconds.
5255
uint32_t common_hal_displayio_epaperdisplay_get_time_to_refresh(displayio_epaperdisplay_obj_t *self);
5356
bool common_hal_displayio_epaperdisplay_get_busy(displayio_epaperdisplay_obj_t *self);

shared-module/displayio/EPaperDisplay.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ bool common_hal_displayio_epaperdisplay_show(displayio_epaperdisplay_obj_t *self
106106
return displayio_display_core_set_root_group(&self->core, root_group);
107107
}
108108

109+
bool common_hal_displayio_epaperdisplay_set_root_group(displayio_epaperdisplay_obj_t *self, displayio_group_t *root_group) {
110+
return displayio_display_core_set_root_group(&self->core, root_group);
111+
}
112+
109113
STATIC const displayio_area_t *displayio_epaperdisplay_get_refresh_areas(displayio_epaperdisplay_obj_t *self) {
110114
if (self->core.full_refresh) {
111115
self->core.area.next = NULL;
@@ -239,6 +243,9 @@ uint16_t common_hal_displayio_epaperdisplay_get_rotation(displayio_epaperdisplay
239243
return self->core.rotation;
240244
}
241245

246+
mp_obj_t common_hal_displayio_epaperdisplay_get_root_group(displayio_epaperdisplay_obj_t *self) {
247+
return self->core.current_group;
248+
}
242249

243250
STATIC bool displayio_epaperdisplay_refresh_area(displayio_epaperdisplay_obj_t *self, const displayio_area_t *area) {
244251
uint16_t buffer_size = 128; // In uint32_ts

0 commit comments

Comments
 (0)