summaryrefslogtreecommitdiff
path: root/shared-module
diff options
context:
space:
mode:
Diffstat (limited to 'shared-module')
-rw-r--r--shared-module/displayio/Display.c49
-rw-r--r--shared-module/terminalio/Terminal.c1
-rw-r--r--shared-module/terminalio/Terminal.h1
3 files changed, 43 insertions, 8 deletions
diff --git a/shared-module/displayio/Display.c b/shared-module/displayio/Display.c
index 504f130c7..a2a60227d 100644
--- a/shared-module/displayio/Display.c
+++ b/shared-module/displayio/Display.c
@@ -55,6 +55,7 @@ void common_hal_displayio_display_construct(displayio_display_obj_t* self,
self->current_group = NULL;
self->colstart = colstart;
self->rowstart = rowstart;
+ self->auto_brightness = false;
if (MP_OBJ_IS_TYPE(bus, &displayio_parallelbus_type)) {
self->begin_transaction = common_hal_displayio_parallelbus_begin_transaction;
@@ -110,7 +111,6 @@ void common_hal_displayio_display_construct(displayio_display_obj_t* self,
common_hal_pulseio_pwmout_never_reset(&self->backlight_pwm);
}
}
- self->auto_brightness = true;
}
void common_hal_displayio_display_show(displayio_display_obj_t* self, displayio_group_t* root_group) {
@@ -133,6 +133,42 @@ int32_t common_hal_displayio_display_wait_for_frame(displayio_display_obj_t* sel
return 0;
}
+bool common_hal_displayio_display_get_auto_brightness(displayio_display_obj_t* self) {
+ return self->auto_brightness;
+}
+
+void common_hal_displayio_display_set_auto_brightness(displayio_display_obj_t* self, bool auto_brightness) {
+ self->auto_brightness = auto_brightness;
+}
+
+mp_float_t common_hal_displayio_display_get_brightness(displayio_display_obj_t* self) {
+ if (self->backlight_pwm.base.type == &pulseio_pwmout_type) {
+ uint16_t duty_cycle = common_hal_pulseio_pwmout_get_duty_cycle(&self->backlight_pwm);
+ return duty_cycle / ((mp_float_t) 0xffff);
+ } else if (self->backlight_inout.base.type == &digitalio_digitalinout_type) {
+ if (common_hal_digitalio_digitalinout_get_value(&self->backlight_inout)) {
+ return 1.0;
+ } else {
+ return 0.0;
+ }
+ }
+ return -1.0;
+}
+
+bool common_hal_displayio_display_set_brightness(displayio_display_obj_t* self, mp_float_t brightness) {
+ self->updating_backlight = true;
+ bool ok = false;
+ if (self->backlight_pwm.base.type == &pulseio_pwmout_type) {
+ common_hal_pulseio_pwmout_set_duty_cycle(&self->backlight_pwm, (uint16_t) (0xffff * brightness));
+ ok = true;
+ } else if (self->backlight_inout.base.type == &digitalio_digitalinout_type) {
+ common_hal_digitalio_digitalinout_set_value(&self->backlight_inout, brightness > 0.99);
+ ok = true;
+ }
+ self->updating_backlight = false;
+ return ok;
+}
+
void displayio_display_start_region_update(displayio_display_obj_t* self, uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
// TODO(tannewt): Handle displays with single byte bounds.
self->begin_transaction(self->bus);
@@ -181,13 +217,10 @@ void displayio_display_update_backlight(displayio_display_obj_t* self) {
if (ticks_ms - self->last_backlight_refresh < 100) {
return;
}
- self->updating_backlight = true;
- if (self->backlight_pwm.base.type == &pulseio_pwmout_type) {
- common_hal_pulseio_pwmout_set_duty_cycle(&self->backlight_pwm, 0xffff);
- } else if (self->backlight_inout.base.type == &digitalio_digitalinout_type) {
- common_hal_digitalio_digitalinout_set_value(&self->backlight_inout, true);
- }
- self->updating_backlight = false;
+ // TODO(tannewt): Fade the backlight based on it's existing value and a target value. The target
+ // should account for ambient light when possible.
+ common_hal_displayio_display_set_brightness(self, 1.0);
+
self->last_backlight_refresh = ticks_ms;
}
diff --git a/shared-module/terminalio/Terminal.c b/shared-module/terminalio/Terminal.c
index 1cd5d341e..444bf53ad 100644
--- a/shared-module/terminalio/Terminal.c
+++ b/shared-module/terminalio/Terminal.c
@@ -34,6 +34,7 @@ void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, d
self->tilegrid = tilegrid;
self->unicode_characters = unicode_characters;
self->unicode_characters_len = unicode_characters_len;
+ self->first_row = 0;
}
size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, const byte *data, size_t len, int *errcode) {
diff --git a/shared-module/terminalio/Terminal.h b/shared-module/terminalio/Terminal.h
index 1896075f3..fe9dcf0c4 100644
--- a/shared-module/terminalio/Terminal.h
+++ b/shared-module/terminalio/Terminal.h
@@ -40,6 +40,7 @@ typedef struct {
displayio_tilegrid_t* tilegrid;
const byte* unicode_characters;
uint16_t unicode_characters_len;
+ uint16_t first_row;
} terminalio_terminal_obj_t;
#endif /* SHARED_MODULE_TERMINALIO_TERMINAL_H */