diff --git a/firmware/application/apps/ui_standalone_view.cpp b/firmware/application/apps/ui_standalone_view.cpp index ed67317cb..47740e0a9 100644 --- a/firmware/application/apps/ui_standalone_view.cpp +++ b/firmware/application/apps/ui_standalone_view.cpp @@ -233,6 +233,9 @@ standalone_application_api_t api = { .draw_pixels = &ext_draw_pixels, .draw_pixel = &ext_draw_pixel, .exit_app = &exit_app, + // version 4 + .screen_height = &screen_height, + .screen_width = &screen_width, }; StandaloneView::StandaloneView(NavigationView& nav, uint8_t* app_image) diff --git a/firmware/common/standalone_app.hpp b/firmware/common/standalone_app.hpp index d11c575b8..f2c34c19d 100644 --- a/firmware/common/standalone_app.hpp +++ b/firmware/common/standalone_app.hpp @@ -29,7 +29,7 @@ #include "ui.hpp" #include "file.hpp" -#define CURRENT_STANDALONE_APPLICATION_API_VERSION 3 +#define CURRENT_STANDALONE_APPLICATION_API_VERSION 4 struct standalone_application_api_t { // Version 1 @@ -105,6 +105,11 @@ struct standalone_application_api_t { void (*draw_pixels)(const ui::Rect r, const ui::Color* const colors, const size_t count); void (*draw_pixel)(const ui::Point p, const ui::Color color); void (*exit_app)(); + + // Version 4 + uint16_t* screen_height; + uint16_t* screen_width; + // TODO: add baseband access functions // HOW TO extend this interface: diff --git a/firmware/standalone/digitalrain/ui/bmp.hpp b/firmware/standalone/common/ui/bmp.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/bmp.hpp rename to firmware/standalone/common/ui/bmp.hpp diff --git a/firmware/standalone/digitalrain/ui/bmpfile.cpp b/firmware/standalone/common/ui/bmpfile.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/bmpfile.cpp rename to firmware/standalone/common/ui/bmpfile.cpp diff --git a/firmware/standalone/digitalrain/ui/bmpfile.hpp b/firmware/standalone/common/ui/bmpfile.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/bmpfile.hpp rename to firmware/standalone/common/ui/bmpfile.hpp diff --git a/firmware/standalone/digitalrain/ui/circular_buffer.hpp b/firmware/standalone/common/ui/circular_buffer.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/circular_buffer.hpp rename to firmware/standalone/common/ui/circular_buffer.hpp diff --git a/firmware/standalone/digitalrain/ui/complex.hpp b/firmware/standalone/common/ui/complex.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/complex.hpp rename to firmware/standalone/common/ui/complex.hpp diff --git a/firmware/standalone/digitalrain/ui/file.cpp b/firmware/standalone/common/ui/file.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/file.cpp rename to firmware/standalone/common/ui/file.cpp diff --git a/firmware/standalone/digitalrain/ui/file.hpp b/firmware/standalone/common/ui/file.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/file.hpp rename to firmware/standalone/common/ui/file.hpp diff --git a/firmware/standalone/digitalrain/ui/file_path.cpp b/firmware/standalone/common/ui/file_path.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/file_path.cpp rename to firmware/standalone/common/ui/file_path.cpp diff --git a/firmware/standalone/digitalrain/ui/file_path.hpp b/firmware/standalone/common/ui/file_path.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/file_path.hpp rename to firmware/standalone/common/ui/file_path.hpp diff --git a/firmware/standalone/digitalrain/ui/file_reader.cpp b/firmware/standalone/common/ui/file_reader.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/file_reader.cpp rename to firmware/standalone/common/ui/file_reader.cpp diff --git a/firmware/standalone/digitalrain/ui/file_reader.hpp b/firmware/standalone/common/ui/file_reader.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/file_reader.hpp rename to firmware/standalone/common/ui/file_reader.hpp diff --git a/firmware/standalone/digitalrain/ui/file_wrapper.hpp b/firmware/standalone/common/ui/file_wrapper.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/file_wrapper.hpp rename to firmware/standalone/common/ui/file_wrapper.hpp diff --git a/firmware/standalone/digitalrain/ui/mathdef.hpp b/firmware/standalone/common/ui/mathdef.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/mathdef.hpp rename to firmware/standalone/common/ui/mathdef.hpp diff --git a/firmware/standalone/digitalrain/ui/optional.hpp b/firmware/standalone/common/ui/optional.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/optional.hpp rename to firmware/standalone/common/ui/optional.hpp diff --git a/firmware/standalone/digitalrain/ui/result.hpp b/firmware/standalone/common/ui/result.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/result.hpp rename to firmware/standalone/common/ui/result.hpp diff --git a/firmware/standalone/digitalrain/ui/sine_table.hpp b/firmware/standalone/common/ui/sine_table.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/sine_table.hpp rename to firmware/standalone/common/ui/sine_table.hpp diff --git a/firmware/standalone/digitalrain/ui/standalone_application.hpp b/firmware/standalone/common/ui/standalone_application.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/standalone_application.hpp rename to firmware/standalone/common/ui/standalone_application.hpp diff --git a/firmware/standalone/digitalrain/ui/string_format.cpp b/firmware/standalone/common/ui/string_format.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/string_format.cpp rename to firmware/standalone/common/ui/string_format.cpp diff --git a/firmware/standalone/digitalrain/ui/string_format.hpp b/firmware/standalone/common/ui/string_format.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/string_format.hpp rename to firmware/standalone/common/ui/string_format.hpp diff --git a/firmware/standalone/digitalrain/ui/theme.cpp b/firmware/standalone/common/ui/theme.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/theme.cpp rename to firmware/standalone/common/ui/theme.cpp diff --git a/firmware/standalone/digitalrain/ui/theme.hpp b/firmware/standalone/common/ui/theme.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/theme.hpp rename to firmware/standalone/common/ui/theme.hpp diff --git a/firmware/standalone/digitalrain/ui/ui.cpp b/firmware/standalone/common/ui/ui.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui.cpp rename to firmware/standalone/common/ui/ui.cpp diff --git a/firmware/standalone/digitalrain/ui/ui.hpp b/firmware/standalone/common/ui/ui.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui.hpp rename to firmware/standalone/common/ui/ui.hpp diff --git a/firmware/standalone/digitalrain/ui/ui_focus.cpp b/firmware/standalone/common/ui/ui_focus.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_focus.cpp rename to firmware/standalone/common/ui/ui_focus.cpp diff --git a/firmware/standalone/digitalrain/ui/ui_focus.hpp b/firmware/standalone/common/ui/ui_focus.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_focus.hpp rename to firmware/standalone/common/ui/ui_focus.hpp diff --git a/firmware/standalone/digitalrain/ui/ui_font_fixed_5x8.cpp b/firmware/standalone/common/ui/ui_font_fixed_5x8.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_font_fixed_5x8.cpp rename to firmware/standalone/common/ui/ui_font_fixed_5x8.cpp diff --git a/firmware/standalone/digitalrain/ui/ui_font_fixed_5x8.hpp b/firmware/standalone/common/ui/ui_font_fixed_5x8.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_font_fixed_5x8.hpp rename to firmware/standalone/common/ui/ui_font_fixed_5x8.hpp diff --git a/firmware/standalone/digitalrain/ui/ui_font_fixed_8x16.cpp b/firmware/standalone/common/ui/ui_font_fixed_8x16.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_font_fixed_8x16.cpp rename to firmware/standalone/common/ui/ui_font_fixed_8x16.cpp diff --git a/firmware/standalone/digitalrain/ui/ui_font_fixed_8x16.hpp b/firmware/standalone/common/ui/ui_font_fixed_8x16.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_font_fixed_8x16.hpp rename to firmware/standalone/common/ui/ui_font_fixed_8x16.hpp diff --git a/firmware/standalone/digitalrain/ui/ui_geomap.cpp b/firmware/standalone/common/ui/ui_geomap.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_geomap.cpp rename to firmware/standalone/common/ui/ui_geomap.cpp diff --git a/firmware/standalone/digitalrain/ui/ui_geomap.hpp b/firmware/standalone/common/ui/ui_geomap.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_geomap.hpp rename to firmware/standalone/common/ui/ui_geomap.hpp diff --git a/firmware/standalone/digitalrain/ui/ui_painter.cpp b/firmware/standalone/common/ui/ui_painter.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_painter.cpp rename to firmware/standalone/common/ui/ui_painter.cpp diff --git a/firmware/standalone/digitalrain/ui/ui_painter.hpp b/firmware/standalone/common/ui/ui_painter.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_painter.hpp rename to firmware/standalone/common/ui/ui_painter.hpp diff --git a/firmware/standalone/digitalrain/ui/ui_text.cpp b/firmware/standalone/common/ui/ui_text.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_text.cpp rename to firmware/standalone/common/ui/ui_text.cpp diff --git a/firmware/standalone/digitalrain/ui/ui_text.hpp b/firmware/standalone/common/ui/ui_text.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_text.hpp rename to firmware/standalone/common/ui/ui_text.hpp diff --git a/firmware/standalone/digitalrain/ui/ui_widget.cpp b/firmware/standalone/common/ui/ui_widget.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_widget.cpp rename to firmware/standalone/common/ui/ui_widget.cpp diff --git a/firmware/standalone/digitalrain/ui/ui_widget.hpp b/firmware/standalone/common/ui/ui_widget.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/ui_widget.hpp rename to firmware/standalone/common/ui/ui_widget.hpp diff --git a/firmware/standalone/digitalrain/ui/utility.cpp b/firmware/standalone/common/ui/utility.cpp similarity index 100% rename from firmware/standalone/digitalrain/ui/utility.cpp rename to firmware/standalone/common/ui/utility.cpp diff --git a/firmware/standalone/digitalrain/ui/utility.hpp b/firmware/standalone/common/ui/utility.hpp similarity index 100% rename from firmware/standalone/digitalrain/ui/utility.hpp rename to firmware/standalone/common/ui/utility.hpp diff --git a/firmware/standalone/digitalrain/CMakeLists.txt b/firmware/standalone/digitalrain/CMakeLists.txt index b332cd3de..57d48a1e5 100644 --- a/firmware/standalone/digitalrain/CMakeLists.txt +++ b/firmware/standalone/digitalrain/CMakeLists.txt @@ -86,15 +86,17 @@ set(LDSCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/external.ld) # C sources that can be compiled in ARM or THUMB mode depending on the global # setting. FILE(GLOB_RECURSE Sources_C ${CMAKE_CURRENT_LIST_DIR}/*.c) +FILE(GLOB_RECURSE Sources_C_COMMON ${CMAKE_CURRENT_LIST_DIR}/../common/*.c) set(CSRC - ${Sources_C} + ${Sources_C} ${Sources_C_COMMON} ) # C++ sources that can be compiled in ARM or THUMB mode depending on the global # setting. FILE(GLOB_RECURSE Sources_CPP ${CMAKE_CURRENT_LIST_DIR}/*.cpp) +FILE(GLOB_RECURSE Sources_CPP_COMMON ${CMAKE_CURRENT_LIST_DIR}/../common/*.cpp) set(CPPSRC - ${Sources_CPP} + ${Sources_CPP} ${Sources_CPP_COMMON} ) # C sources to be compiled in ARM mode regardless of the global setting. @@ -122,6 +124,8 @@ set(ASMSRC) set(INCDIR ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../common + ${CMAKE_CURRENT_SOURCE_DIR}/../common/ui ${COMMON} ${COMMON}/../application ${COMMON}/../application/hw diff --git a/firmware/standalone/digitalrain/digitalrain.cpp b/firmware/standalone/digitalrain/digitalrain.cpp index fc91e9850..dd1864cd0 100644 --- a/firmware/standalone/digitalrain/digitalrain.cpp +++ b/firmware/standalone/digitalrain/digitalrain.cpp @@ -31,7 +31,9 @@ void initialize(const standalone_application_api_t& api) { _api = &api; context = new ui::Context(); - standaloneViewMirror = new StandaloneViewMirror(*context, {0, 16, 240, 304}); + screen_height = *(_api->screen_height); + screen_width = *(_api->screen_width); + standaloneViewMirror = new StandaloneViewMirror(*context, {0, 16, screen_width, screen_height - 16}); } // event 1 == frame sync. called each 1/60th of second, so 6 = 100ms @@ -78,7 +80,7 @@ ui::Widget* captured_widget{nullptr}; void OnTouchEvent(int, int, uint32_t) { if (standaloneViewMirror) { _api->exit_app(); - /* + /* //left here for example, but not used in digital rain ui::TouchEvent event{{x, y}, static_cast(type)}; if (event.type == ui::TouchEvent::Type::Start) { @@ -105,7 +107,8 @@ bool OnKeyEvent(uint8_t) { // ui::KeyEvent key = (ui::KeyEvent)key_val; if (context) { _api->exit_app(); - /* auto focus_widget = context->focus_manager().focus_widget(); + /* left here for example, but not used in digital rain + auto focus_widget = context->focus_manager().focus_widget(); if (focus_widget) { if (focus_widget->on_key(key)) @@ -130,6 +133,7 @@ bool OnEncoder(int32_t) { if (context) { _api->exit_app(); /* + left here for example, but not used in digital rain auto focus_widget = context->focus_manager().focus_widget(); if (focus_widget) return focus_widget->on_encoder((ui::EncoderEvent)delta); @@ -143,6 +147,7 @@ bool OnKeyboad(uint8_t) { if (context) { _api->exit_app(); /* + left here for example, but not used in digital rain auto focus_widget = context->focus_manager().focus_widget(); if (focus_widget) diff --git a/firmware/standalone/digitalrain/digitalrain.hpp b/firmware/standalone/digitalrain/digitalrain.hpp index 7c5a45bd5..434ba05e1 100644 --- a/firmware/standalone/digitalrain/digitalrain.hpp +++ b/firmware/standalone/digitalrain/digitalrain.hpp @@ -45,17 +45,19 @@ bool OnKeyboad(uint8_t); void PaintViewMirror(); extern const standalone_application_api_t* _api; +extern uint16_t screen_height; +extern uint16_t screen_width; class DigitalRain { private: ui::Painter painter{}; - static const int WIDTH = 240; - static const int HEIGHT = 325; - static const int MARGIN_TOP = 20; - static const int CHAR_WIDTH = 5; - static const int CHAR_HEIGHT = 8; - static const int COLS = WIDTH / CHAR_WIDTH; - static const int ROWS = (HEIGHT - MARGIN_TOP) / CHAR_HEIGHT; + int WIDTH = 0; // 240; + int HEIGHT = 0; // 325; + int MARGIN_TOP = 20; + int CHAR_WIDTH = 5; + int CHAR_HEIGHT = 8; + int COLS = 0; // WIDTH / CHAR_WIDTH; + int ROWS = 0; //(HEIGHT - MARGIN_TOP) / CHAR_HEIGHT; static const int MAX_DROPS = 36; const ui::Font& font = ui::font::fixed_5x8(); @@ -124,7 +126,10 @@ class DigitalRain { public: DigitalRain() { std::srand(0); - + WIDTH = screen_width; + HEIGHT = screen_height + 5; + COLS = WIDTH / CHAR_WIDTH; + ROWS = (HEIGHT - MARGIN_TOP) / CHAR_HEIGHT; for (uint8_t i = 0; i < MAX_DROPS; ++i) { init_drop(i, true); } diff --git a/firmware/standalone/digitalrain/main.cpp b/firmware/standalone/digitalrain/main.cpp index 78772fc31..88c89b9c9 100644 --- a/firmware/standalone/digitalrain/main.cpp +++ b/firmware/standalone/digitalrain/main.cpp @@ -176,3 +176,6 @@ extern "C" int f_printf(FIL* fp, const TCHAR* str, ...) { extern "C" TCHAR* f_gets(TCHAR* buff, int len, FIL* fp) { return _api->f_gets(buff, len, fp); } + +uint16_t screen_height = 320; +uint16_t screen_width = 240;