From bb13e44c6dbc0e9d333661c4cc7ba713e76a6d60 Mon Sep 17 00:00:00 2001
From: draradech <kasten.m@gmx.de>
Date: Thu, 22 Aug 2019 15:50:38 +0200
Subject: [PATCH] control display backlight brightness (pyc part)

---
 pycardium/modules/py/display.py | 10 ++++++++++
 pycardium/modules/qstrdefs.h    |  1 +
 pycardium/modules/sys_display.c | 16 ++++++++++++++++
 3 files changed, 27 insertions(+)

diff --git a/pycardium/modules/py/display.py b/pycardium/modules/py/display.py
index 3a93af78..d6b53864 100644
--- a/pycardium/modules/py/display.py
+++ b/pycardium/modules/py/display.py
@@ -91,6 +91,16 @@ class Display:
         sys_display.pixel(x, y, col)
         return self
 
+    def backlight(self, brightness):
+        """
+        Set display backlight brightness
+
+        :param brightness: backlight brightness 0 <= brightness <= 1000
+        """
+
+        sys_display.backlight(brightness)
+        return self
+
     def line(self, xs, ys, xe, ye, *, col=None, dotted=False, size=1):
         """
         Draws a line on the display.
diff --git a/pycardium/modules/qstrdefs.h b/pycardium/modules/qstrdefs.h
index e418c24d..5c9c63a1 100644
--- a/pycardium/modules/qstrdefs.h
+++ b/pycardium/modules/qstrdefs.h
@@ -85,6 +85,7 @@ Q(sys_display)
 Q(display)
 Q(print)
 Q(pixel)
+Q(backlight)
 Q(line)
 Q(rect)
 Q(circ)
diff --git a/pycardium/modules/sys_display.c b/pycardium/modules/sys_display.c
index 835f059f..9762f943 100644
--- a/pycardium/modules/sys_display.c
+++ b/pycardium/modules/sys_display.c
@@ -79,6 +79,21 @@ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
 	display_pixel_obj, 3, 3, mp_display_pixel
 );
 
+/* set display backlight brightness */
+static mp_obj_t mp_display_backlight(size_t n_args, const mp_obj_t *args)
+{
+	uint16_t brightness = mp_obj_get_int(args[0]);
+
+	int res = epic_disp_backlight(brightness);
+	if (res < 0) {
+		mp_raise_OSError(-res);
+	}
+	return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
+	display_backlight_obj, 1, 1, mp_display_backlight
+);
+
 /* draw line on the display */
 static mp_obj_t mp_display_line(size_t n_args, const mp_obj_t *args)
 {
@@ -220,6 +235,7 @@ static const mp_rom_map_elem_t display_module_globals_table[] = {
 	{ MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&display_close_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_print), MP_ROM_PTR(&display_print_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_pixel), MP_ROM_PTR(&display_pixel_obj) },
+	{ MP_ROM_QSTR(MP_QSTR_backlight), MP_ROM_PTR(&display_backlight_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_line), MP_ROM_PTR(&display_line_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_rect), MP_ROM_PTR(&display_rect_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_circ), MP_ROM_PTR(&display_circ_obj) },
-- 
GitLab