summaryrefslogtreecommitdiff
path: root/src/DisplayApp/DisplayApp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DisplayApp/DisplayApp.cpp')
-rw-r--r--src/DisplayApp/DisplayApp.cpp184
1 files changed, 184 insertions, 0 deletions
diff --git a/src/DisplayApp/DisplayApp.cpp b/src/DisplayApp/DisplayApp.cpp
new file mode 100644
index 00000000..9da2d7ed
--- /dev/null
+++ b/src/DisplayApp/DisplayApp.cpp
@@ -0,0 +1,184 @@
+#include "DisplayApp.h"
+#include <FreeRTOS.h>
+#include <task.h>
+#include <libraries/log/nrf_log.h>
+#include <boards.h>
+#include <libraries/gfx/nrf_gfx.h>
+
+using namespace Pinetime::Applications;
+
+Pinetime::Drivers::st7789 lcd;
+ret_code_t lcd_init() {
+ lcd.Init();
+}
+
+void lcd_dummy() {
+
+};
+
+void lcd_pixel_draw(uint16_t x, uint16_t y, uint32_t color) {
+ lcd.DrawPixel(x, y, color);
+}
+
+
+void lcd_rectangle_draw(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint32_t color) {
+ lcd.FillRectangle(x, y, width, height, color);
+}
+
+void lcd_rotation_set(nrf_lcd_rotation_t rotation) {
+
+}
+
+void lcd_display_invert(bool invert) {
+
+}
+
+static lcd_cb_t st7789_cb = {
+ .height = 240,
+ .width = 240
+};
+
+const nrf_lcd_t nrf_lcd_st7789 = {
+ .lcd_init = lcd_init,
+ .lcd_uninit = lcd_dummy,
+ .lcd_pixel_draw = lcd_pixel_draw,
+ .lcd_rect_draw = lcd_rectangle_draw,
+ .lcd_display = lcd_dummy,
+ .lcd_rotation_set = lcd_rotation_set,
+ .lcd_display_invert = lcd_display_invert,
+ .p_lcd_cb = &st7789_cb
+};
+
+//extern const FONT_INFO orkney_24ptFontInfo;
+//extern const uint_8 lCD_30ptBitmaps[];
+extern const FONT_INFO lCD_70ptFontInfo;
+//extern const FONT_CHAR_INFO lCD_30ptDescriptors[];
+
+void DisplayApp::Start() {
+ if (pdPASS != xTaskCreate(DisplayApp::Process, "DisplayApp", 256, this, 0, &taskHandle))
+ APP_ERROR_HANDLER(NRF_ERROR_NO_MEM);
+
+}
+
+void DisplayApp::Process(void *instance) {
+ auto* app = static_cast<DisplayApp*>(instance);
+
+ NRF_LOG_INFO("DisplayApp task started!");
+ gfx_initialization();
+ uint8_t hour = 0;
+ uint8_t minute = 1;
+ while (1) {
+ NRF_LOG_INFO("BlinkApp task running!");
+
+ nrf_gfx_rect_t rect;
+ rect.height = 74;
+ rect.width = 52;
+ rect.x = 7;
+ rect.y = 78;
+ nrf_gfx_rect_draw(&nrf_lcd_st7789, &rect, 2, 0x00000000, true);
+
+
+
+ nrf_gfx_font_desc_t font;
+ font.charInfo = lCD_70ptFontInfo.charInfo;
+ font.data = lCD_70ptFontInfo.data;
+ font.endChar = lCD_70ptFontInfo.endChar;
+ font.height = lCD_70ptFontInfo.height;
+ font.spacePixels = lCD_70ptFontInfo.spacePixels;
+ font.startChar = lCD_70ptFontInfo.startChar;
+
+
+ char t[2];
+ sprintf(t, "%1d", hour);
+
+ nrf_gfx_point_t point;
+ point.x = 7;
+ point.y = 78;
+ nrf_gfx_print(&nrf_lcd_st7789,
+ &point,
+ 0xffff,
+ t,
+ &font,
+ true);
+
+// point.x = 61;
+// point.y = 78;
+// nrf_gfx_print(&nrf_lcd_st7789,
+// &point,
+// 0xffff,
+// "2",
+// &font,
+// true);
+//
+// point.x = 115;
+// point.y = 78;
+// nrf_gfx_print(&nrf_lcd_st7789,
+// &point,
+// 0xffff,
+// ":",
+// &font,
+// true);
+//
+// point.x = 127;
+// point.y = 78;
+// nrf_gfx_print(&nrf_lcd_st7789,
+// &point,
+// 0xffff,
+// "3",
+// &font,
+// true);
+//
+// point.x = 181;
+// point.y = 78;
+// nrf_gfx_print(&nrf_lcd_st7789,
+// &point,
+// 0xffff,
+// "4",
+// &font,
+// true);
+
+ if(hour < 9)
+ hour++;
+ else hour = 0;
+ vTaskDelay(1000);
+ }
+}
+
+void DisplayApp::gfx_initialization(void)
+{
+ nrf_gpio_cfg_output(14);
+ nrf_gpio_cfg_output(22);
+ nrf_gpio_cfg_output(23);
+ nrf_gpio_pin_clear(14);
+ nrf_gpio_pin_set(22);
+ nrf_gpio_pin_set(23);
+
+ APP_ERROR_CHECK(nrf_gfx_init(&nrf_lcd_st7789));
+ nrf_gfx_rect_t rect;
+ rect.height = 240;
+ rect.width = 240;
+ rect.x = 0;
+ rect.y = 0;
+ nrf_gfx_rect_draw(&nrf_lcd_st7789, &rect, 2, 0x00000000, true);
+
+ nrf_gfx_point_t point;
+ point.x = 7;
+ point.y = 78;
+
+ nrf_gfx_font_desc_t font;
+ font.charInfo = lCD_70ptFontInfo.charInfo;
+ font.data = lCD_70ptFontInfo.data;
+ font.endChar = lCD_70ptFontInfo.endChar;
+ font.height = lCD_70ptFontInfo.height;
+ font.spacePixels = lCD_70ptFontInfo.spacePixels;
+ font.startChar = lCD_70ptFontInfo.startChar;
+
+
+ nrf_gfx_print(&nrf_lcd_st7789,
+ &point,
+ 0xffff,
+ "20:45",
+ &font,
+ true);
+
+}