diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index d74991b6..0a15dcc3 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -486,7 +486,7 @@ int main(void) { portapack::io.init(); ui::Context context; - context.display.init(); + portapack::display.init(); sdcStart(&SDCD1, nullptr); @@ -503,7 +503,7 @@ int main(void) { context, { 0, 0, 240, 320 } }; - ui::Painter painter { context.display }; + ui::Painter painter; EventDispatcher event_dispatcher { &system_view, painter, context }; context.message_map[Message::ID::FSKPacket] = [](const Message* const p) { diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp index 894b1f0a..99c09162 100644 --- a/firmware/application/portapack.cpp +++ b/firmware/application/portapack.cpp @@ -48,6 +48,8 @@ portapack::IO io { portapack::gpio_unused, }; +lcd::ILI9341 display; + I2C i2c0(&I2CD0); SPI ssp0(&SPID1); SPI ssp1(&SPID2); diff --git a/firmware/application/portapack.hpp b/firmware/application/portapack.hpp index cf885894..939442de 100644 --- a/firmware/application/portapack.hpp +++ b/firmware/application/portapack.hpp @@ -25,6 +25,7 @@ #include "spi_pp.hpp" #include "wm8731.hpp" +#include "lcd_ili9341.hpp" #include "radio.hpp" @@ -32,6 +33,8 @@ namespace portapack { extern portapack::IO io; +extern lcd::ILI9341 display; + extern SPI ssp0; extern SPI ssp1; diff --git a/firmware/application/ui_console.cpp b/firmware/application/ui_console.cpp index 3c44c5c1..2fe99364 100644 --- a/firmware/application/ui_console.cpp +++ b/firmware/application/ui_console.cpp @@ -21,6 +21,9 @@ #include "ui_console.hpp" +#include "portapack.hpp" +using namespace portapack; + namespace ui { void Console::write(const std::string message) { diff --git a/firmware/application/ui_console.hpp b/firmware/application/ui_console.hpp index 53ea3b0f..5722e858 100644 --- a/firmware/application/ui_console.hpp +++ b/firmware/application/ui_console.hpp @@ -26,8 +26,6 @@ #include "ui_painter.hpp" #include "ui_widget.hpp" -#include "lcd_ili9341.hpp" - #include namespace ui { @@ -35,10 +33,8 @@ namespace ui { class Console : public Widget { public: constexpr Console( - const Rect parent_rect, - lcd::ILI9341& display - ) : Widget { parent_rect }, - display(display) + const Rect parent_rect + ) : Widget { parent_rect } { } @@ -52,7 +48,6 @@ private: static constexpr Color foreground { Color::white() }; Point pos { 0, 0 }; - lcd::ILI9341& display; void crlf(); }; diff --git a/firmware/application/ui_spectrum.hpp b/firmware/application/ui_spectrum.hpp index bbc4821e..029c0c5c 100644 --- a/firmware/application/ui_spectrum.hpp +++ b/firmware/application/ui_spectrum.hpp @@ -26,7 +26,9 @@ #include "ui_widget.hpp" #include "spectrum_color_lut.hpp" -#include "lcd_ili9341.hpp" +#include "portapack.hpp" +using namespace portapack; + #include "message.hpp" #include @@ -180,14 +182,14 @@ class WaterfallView : public Widget { public: void on_show() override { const auto screen_r = screen_rect(); - context().display.scroll_set_area(screen_r.top(), screen_r.bottom()); + display.scroll_set_area(screen_r.top(), screen_r.bottom()); } void on_hide() override { /* TODO: Clear region to eliminate brief flash of content at un-shifted * position? */ - context().display.scroll_disable(); + display.scroll_disable(); } void paint(Painter& painter) override { @@ -212,7 +214,6 @@ public: pixel_row[i] = pixel_color; } - auto& display = context().display; const auto draw_y = display.scroll(1); display.draw_pixels( diff --git a/firmware/common/ui_painter.cpp b/firmware/common/ui_painter.cpp index 39874f1c..ef246e5f 100644 --- a/firmware/common/ui_painter.cpp +++ b/firmware/common/ui_painter.cpp @@ -21,6 +21,9 @@ #include "ui_painter.hpp" +#include "portapack.hpp" +using namespace portapack; + namespace ui { Style Style::invert() const { @@ -33,7 +36,7 @@ Style Style::invert() const { size_t Painter::draw_char(const Point p, const Style& style, const char c) { const auto glyph = style.font.glyph(c); - display_.draw_glyph(p, glyph, style.foreground, style.background); + display.draw_glyph(p, glyph, style.foreground, style.background); return glyph.advance().x; } @@ -41,7 +44,7 @@ size_t Painter::draw_string(Point p, const Style& style, const std::string text) size_t width = 0; for(const auto c : text) { const auto glyph = style.font.glyph(c); - display_.draw_glyph(p, glyph, style.foreground, style.background); + display.draw_glyph(p, glyph, style.foreground, style.background); const auto advance = glyph.advance(); p += advance; width += advance.x; @@ -50,11 +53,11 @@ size_t Painter::draw_string(Point p, const Style& style, const std::string text) } void Painter::draw_hline(Point p, size_t width, const Color c) { - display_.fill_rectangle({ p, { static_cast(width), 1 } }, c); + display.fill_rectangle({ p, { static_cast(width), 1 } }, c); } void Painter::draw_vline(Point p, size_t height, const Color c) { - display_.fill_rectangle({ p, { 1, static_cast(height) } }, c); + display.fill_rectangle({ p, { 1, static_cast(height) } }, c); } void Painter::draw_rectangle(const Rect r, const Color c) { @@ -65,7 +68,7 @@ void Painter::draw_rectangle(const Rect r, const Color c) { } void Painter::fill_rectangle(const Rect r, const Color c) { - display_.fill_rectangle(r, c); + display.fill_rectangle(r, c); } } /* namespace ui */ diff --git a/firmware/common/ui_painter.hpp b/firmware/common/ui_painter.hpp index c10b2415..542f3cab 100644 --- a/firmware/common/ui_painter.hpp +++ b/firmware/common/ui_painter.hpp @@ -25,8 +25,6 @@ #include "ui.hpp" #include "ui_text.hpp" -#include "lcd_ili9341.hpp" - #include namespace ui { @@ -41,11 +39,7 @@ struct Style { class Painter { public: - Painter( - lcd::ILI9341& display - ) : display_(display) - { - } + Painter() { }; Painter(const Painter&) = delete; Painter(Painter&&) = delete; @@ -58,8 +52,6 @@ public: void fill_rectangle(const Rect r, const Color c); private: - lcd::ILI9341& display_; - void draw_hline(Point p, size_t width, const Color c); void draw_vline(Point p, size_t height, const Color c); }; diff --git a/firmware/common/ui_widget.hpp b/firmware/common/ui_widget.hpp index 7ab54597..797083cf 100644 --- a/firmware/common/ui_widget.hpp +++ b/firmware/common/ui_widget.hpp @@ -29,7 +29,6 @@ #include "utility.hpp" -#include "lcd_ili9341.hpp" #include "message.hpp" #include @@ -48,7 +47,6 @@ std::string to_string_hex(const uint32_t n, const int32_t l = 0); struct Context { FocusManager focus_manager; - lcd::ILI9341 display; MessageHandlerMap message_map; };