From e52b37d0d574a7902e054977c832be5f1d7c8da9 Mon Sep 17 00:00:00 2001 From: Tobias Schramm Date: Mon, 8 Feb 2021 21:03:52 +0100 Subject: [PATCH] Add powersave and string drawing APIs --- src/display.h | 7 +++++- src/display_pinetime.c | 53 +++++++++++------------------------------- src/display_pinetime.h | 3 +++ src/main.c | 2 ++ 4 files changed, 24 insertions(+), 41 deletions(-) diff --git a/src/display.h b/src/display.h index 49671bc..5f2a0f4 100644 --- a/src/display.h +++ b/src/display.h @@ -1,12 +1,17 @@ #pragma once #include +#include #ifdef PLATFORM_PINETIME #include "display_pinetime.h" #define platform_display_init pinetime_display_init #define platform_display_set_brightness pinetime_display_set_brightness +#define platform_display_draw_string pinetime_display_draw_string +#define platform_display_set_powersave pinetime_display_set_powersave #else static inline int platform_display_init() { return 0; } -static inline void platform_display_set_brightness(uint8_t brightness) { } +static inline void platform_display_set_brightness(uint8_t brightness) { (void)brightness; } +static inline void platform_display_draw_string(uint8_t x, uint8_t y, const char *str) { (void)x; (void)y; (void)str; } +static inline void platform_display_set_powersave(bool powersave) { (void)powersave; } #endif \ No newline at end of file diff --git a/src/display_pinetime.c b/src/display_pinetime.c index b4ef7a4..34e99aa 100644 --- a/src/display_pinetime.c +++ b/src/display_pinetime.c @@ -94,17 +94,13 @@ void pinetime_display_set_brightness(const uint8_t brightness) { int pinetime_display_init() { int err; - uint8_t ppt; - + // Get display device pinetime_display.display_dev = device_get_binding("ST7789V"); if (!pinetime_display.display_dev) { return -ENODEV; } - // Patch in gpio based backlight control -// ((struct display_driver_api *)pinetime_display.display_dev->api)->set_brightness = set_brightness; - pinetime_display.backlight_dev = device_get_binding(BACKLIGHT_DEVNAME); if (!pinetime_display.backlight_dev) { return -ENODEV; @@ -127,49 +123,26 @@ int pinetime_display_init() { } pinetime_display_set_brightness(0); -/* - gpio_pin_set(backlight_dev, PIN, 1); - - display_blanking_off(pinetime_display.display_dev); - - - err = cfb_framebuffer_init(pinetime_display.display_dev); - if (err) { - return err; - } - - err = cfb_framebuffer_clear(pinetime_display.display_dev, false); - if (err) { - return err; - } - - ppt = cfb_get_display_parameter(pinetime_display.display_dev, CFB_DISPLAY_PPT); - - err = cfb_print(pinetime_display.display_dev, "Hello World", 0, 0); - if (err) { - return err; - } - - err = cfb_framebuffer_finalize(pinetime_display.display_dev); - if (err) { - return err; - } - display_write(pinetime_display.display_dev, 0, 0, &buffer_desc, white_8x8); - - display_blanking_off(pinetime_display.display_dev); -*/ - // Set up graphics library // Populate all hardware callbacks with dummy functions, we do already have a driver u8x8_Setup(&u8x8, u8x8_cmd_cb, u8x8_dummy_cb, u8x8_dummy_cb, u8x8_dummy_cb); u8x8_InitDisplay(&u8x8); u8x8_ClearDisplay(&u8x8); - u8x8_SetPowerSave(&u8x8, false); + u8x8_SetPowerSave(&u8x8, true); u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_f); - u8x8_DrawString(&u8x8, 0, 0, "Hello World"); - display_blanking_off(pinetime_display.display_dev); return 0; } +void pinetime_display_draw_string(uint8_t x, uint8_t y, const char *str) { + u8x8_DrawString(&u8x8, x, y, str); +} + +void pinetime_display_set_powersave(bool powersave) { + u8x8_SetPowerSave(&u8x8, false); + if (powersave) { + pinetime_display_set_brightness(0); + } +} + #endif \ No newline at end of file diff --git a/src/display_pinetime.h b/src/display_pinetime.h index 2902e8f..2722b5d 100644 --- a/src/display_pinetime.h +++ b/src/display_pinetime.h @@ -1,6 +1,9 @@ #pragma once #include +#include int pinetime_display_init(); void pinetime_display_set_brightness(uint8_t brightness); +void pinetime_display_draw_string(uint8_t x, uint8_t y, const char *str); +void pinetime_display_set_powersave(bool powersave); diff --git a/src/main.c b/src/main.c index 8d890aa..5da5f7f 100644 --- a/src/main.c +++ b/src/main.c @@ -30,7 +30,9 @@ void main(void) return; } + platform_display_set_powersave(false); platform_display_set_brightness(0xff); + platform_display_draw_string(0, 0, "Hello World!"); // first init everything // Use custom randomization as the mbdet_tls context initialization messes with the Zeyhr BLE stack.