From 2dc6648445bbe9272fe5cabdd4f1f762cae89f9a Mon Sep 17 00:00:00 2001
From: dequis <dx@dxzone.com.ar>
Date: Fri, 9 Jun 2023 20:36:51 +0200
Subject: [PATCH] display: expose backlight as hardware.display_set_backlight()

---
 components/badge23/display.c                 | 4 ++++
 components/badge23/include/badge23/display.h | 1 +
 usermodule/mp_hardware.c                     | 8 ++++++++
 3 files changed, 13 insertions(+)

diff --git a/components/badge23/display.c b/components/badge23/display.c
index 3944dfd7a7..86b88cf639 100644
--- a/components/badge23/display.c
+++ b/components/badge23/display.c
@@ -46,6 +46,10 @@ void display_fill(uint16_t col){
     GC9A01_FillRect(0, 0, 240, 240, col);
 }
 
+void display_set_backlight(uint8_t percent) {
+    GC9A01_SetBL(percent);
+}
+
 void display_init() {
     GC9A01_Init();
     GC9A01_Update();
diff --git a/components/badge23/include/badge23/display.h b/components/badge23/include/badge23/display.h
index e5f2d6e4aa..d6a7e9faff 100644
--- a/components/badge23/include/badge23/display.h
+++ b/components/badge23/include/badge23/display.h
@@ -10,5 +10,6 @@ void display_update();
 void display_draw_pixel(uint8_t x, uint8_t y, uint16_t col);
 uint16_t display_get_pixel(uint8_t x, uint8_t y);
 void display_fill(uint16_t col);
+void display_set_backlight(uint8_t percent);
 
 extern volatile Ctx *the_ctx;
diff --git a/usermodule/mp_hardware.c b/usermodule/mp_hardware.c
index a692e884ec..836a7804d4 100644
--- a/usermodule/mp_hardware.c
+++ b/usermodule/mp_hardware.c
@@ -37,6 +37,13 @@ STATIC mp_obj_t mp_display_update(void) {
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_display_update_obj, mp_display_update);
 
+STATIC mp_obj_t mp_display_set_backlight(mp_obj_t percent_in) {
+    uint8_t percent = mp_obj_get_int(percent_in);
+    display_set_backlight(percent);
+    return mp_const_none;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_display_set_backlight_obj, mp_display_set_backlight);
+
 STATIC mp_obj_t mp_get_captouch(size_t n_args, const mp_obj_t *args) {
     uint16_t captouch = read_captouch();
     uint16_t pad = mp_obj_get_int(args[0]);
@@ -230,6 +237,7 @@ STATIC const mp_rom_map_elem_t mp_module_hardware_globals_table[] = {
     { MP_ROM_QSTR(MP_QSTR_set_led_hsv), MP_ROM_PTR(&mp_set_led_hsv_obj) },
     { MP_ROM_QSTR(MP_QSTR_update_leds), MP_ROM_PTR(&mp_update_leds_obj) },
     { MP_ROM_QSTR(MP_QSTR_display_update), MP_ROM_PTR(&mp_display_update_obj) },
+    { MP_ROM_QSTR(MP_QSTR_display_set_backlight), MP_ROM_PTR(&mp_display_set_backlight_obj) },
     { MP_ROM_QSTR(MP_QSTR_version), MP_ROM_PTR(&mp_version_obj) },
     { MP_ROM_QSTR(MP_QSTR_get_ctx), MP_ROM_PTR(&mp_get_ctx_obj) },
 
-- 
GitLab