From 8dc3851b55fa4bf2674f65e6b83b458c07c0e251 Mon Sep 17 00:00:00 2001 From: gullradriel <3157857+gullradriel@users.noreply.github.com> Date: Mon, 27 Jan 2025 22:10:33 +0100 Subject: [PATCH] externalize wipe sdcard (#2502) --- firmware/application/CMakeLists.txt | 1 - firmware/application/external/external.cmake | 5 ++ firmware/application/external/external.ld | 6 +++ .../external/sd_wipe/.main.cpp.swp | Bin 0 -> 12288 bytes .../external/sd_wipe/.ui_sd_wipe.cpp.swp | Bin 0 -> 12288 bytes .../external/sd_wipe/.ui_sd_wipe.hpp.swp | Bin 0 -> 12288 bytes .../application/external/sd_wipe/main.cpp | 50 ++++++++++++++++++ .../{apps => external/sd_wipe}/ui_sd_wipe.cpp | 6 ++- .../{apps => external/sd_wipe}/ui_sd_wipe.hpp | 6 ++- firmware/application/ui_navigation.cpp | 3 -- 10 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 firmware/application/external/sd_wipe/.main.cpp.swp create mode 100644 firmware/application/external/sd_wipe/.ui_sd_wipe.cpp.swp create mode 100644 firmware/application/external/sd_wipe/.ui_sd_wipe.hpp.swp create mode 100644 firmware/application/external/sd_wipe/main.cpp rename firmware/application/{apps => external/sd_wipe}/ui_sd_wipe.cpp (94%) rename firmware/application/{apps => external/sd_wipe}/ui_sd_wipe.hpp (95%) diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt index d6762f21..05d2b585 100644 --- a/firmware/application/CMakeLists.txt +++ b/firmware/application/CMakeLists.txt @@ -305,7 +305,6 @@ set(CPPSRC apps/ui_recon.cpp apps/ui_scanner.cpp apps/ui_sd_over_usb.cpp - apps/ui_sd_wipe.cpp apps/ui_search.cpp apps/ui_settings.cpp apps/ui_siggen.cpp diff --git a/firmware/application/external/external.cmake b/firmware/application/external/external.cmake index 0aca5875..75ffd606 100644 --- a/firmware/application/external/external.cmake +++ b/firmware/application/external/external.cmake @@ -158,6 +158,10 @@ set(EXTCPPSRC # wav viewer external/wav_view/main.cpp external/wav_view/ui_view_wav.cpp + + # wipe sdcard + external/sd_wipe/main.cpp + external/sd_wipe/ui_sd_wipe.cpp ) set(EXTAPPLIST @@ -199,4 +203,5 @@ set(EXTAPPLIST app_manager antenna_length view_wav + sd_wipe ) diff --git a/firmware/application/external/external.ld b/firmware/application/external/external.ld index 5c571c43..edb82367 100644 --- a/firmware/application/external/external.ld +++ b/firmware/application/external/external.ld @@ -61,6 +61,7 @@ MEMORY ram_external_app_app_manager(rwx) : org = 0xADD40000, len = 32k ram_external_app_antenna_length(rwx) : org = 0xADD50000, len = 32k ram_external_app_view_wav(rwx) : org = 0xADD60000, len = 32k + ram_external_app_sd_wipe(rwx) : org = 0xADD70000, len = 32k } SECTIONS @@ -294,4 +295,9 @@ SECTIONS *(*ui*external_app*view_wav*); } > ram_external_app_view_wav + .external_app_sd_wipe : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_sd_wipe.application_information)); + *(*ui*external_app*sd_wipe*); + } > ram_external_app_sd_wipe } diff --git a/firmware/application/external/sd_wipe/.main.cpp.swp b/firmware/application/external/sd_wipe/.main.cpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..61fed4d3c02fcfec18d531f2cf93fdf79fc8e48e GIT binary patch literal 12288 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 literal 0 HcmV?d00001 diff --git a/firmware/application/external/sd_wipe/.ui_sd_wipe.hpp.swp b/firmware/application/external/sd_wipe/.ui_sd_wipe.hpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..a6f404141476db69907b737940a3307db05db000 GIT binary patch literal 12288 zcmeI2&yOQV6~`+J;`eS4;ea@x7q7Hx&wBi8lW1elj_~|kC%ZG2?a43~nsRrw-Aud7 zsjl|yFxqg6gc2kKNFWi!B|(UPAeZn%oZtcn5dQ&DPRS|aMTZvF!jk10(XIJR z|ESlm-uu3)vPV;+`g7g8^mMhsaD0}r`EPzWUcK}V``O>GuyGs&=JCUhJwK32@GUX_ zV9OVb!`fD7*s1mU`@6N7RGQDYbG$m`rxP))dA^#Sa3yMdHVb@*YhQ*naZd{s@}L&E z_K80ewb-|_%j#q{``|8%)uZ9;e4XcVI4yqfnqwpirPt zpirPtpirPtpirPt;QvGcJ$r^8IRde&l`U?6x=+3KR+y3KR+y3KR+y3KR+y z3KR+y3KR+y3KR-_2o>NiV{d$vv1dPq;PLJ-z&f}E-uo2n!Q0?Z;E&*S@Cx`5P~gj;0=@`74;}-Tz+0bW?9bq3@Dgyq z2z&wj?Guds75o;w23`d(fi1wmzdnwbz>DAvi~$E<19!kR@F=(f-i5Y*0KW%sfLFl} z!1uxTzyyqeslhX#I0^*{1quZ|WC~mrq3e58Te0nfu07bY54*i>`?hVb)EK)@RI5?Q zry|0RFF~>2YAtql+1T#YYGr%6VA^Js9i>w4=B)Wdy+YZ~{YqlA5o;|&a^var^o*Uq zch;m8x>=#d)9JbSRCa#ie&(>J%oA=}@X;KO9%9)e9js>Y3xr;qpEU zXo#dp}QN9)y#B#WD zTP-iDx@umbQS5m_t**OVbE{mTyn)B{h)061lLJZ0^!P36Zx8JKXUj{)7G0<3$p40r zp0$#Ct&WAZ%4Moi_B`++WuHjp+Pa)eXUoTUx&KKNG z`8_MK%Q;;7G7jMH$wsrCjODz-p$&~A42}FlX2hL7>@*>YxPiL$P_6|#n#w>$ln za$G8*N47}bkzu5X$697pMX!-Yt*880*m3ATAB(l*0auEju9*;T+PY#wTVKzQEcCe5 z?UTD4O1T=)9DW;V(_H#4sW`OG#aRwY)Gt;cbUY7Gj=sLSo>(uRCE=nWi4_|+owVkM z*swX+dd?RoC^=W-OxZ{q6PiY2R4Ki&z0fjYtdKEV)F?9?PB0_Tq?2>n>qyD~Wev@y zQQ@Lrj|b60?>#>E$I1Rt)AuzjJaapFZKnJ=*P@lmov0XTg_%y;*MWclsr+&-l=59c zXOsz0GP%%Ti#9RwN^QbIk|>gB=Se4y@bcodG{hH{=`YHXd-8x7Q+a0b2)kcf%n5iD z(ee#yQQAZ%DI?MUu$~&TI5G+5jS>4*KXif^8Ll~y0b^)A_pIc3)k$e-Q%Xg$F~6o< zn|-(WM(oIiz?t9=Xgu*`4fe}7IFu68lgvGu>cRN&X zHX8NS#*KQTLI;CR)impgpdBSpBk5_gjhJ>YXR#n+7jcEUp;I+e1SUK@4*ZY?8paw6 z4~ASIA<&7hC-CA&=_dl8wkd);;}>g@pw0c>QFm{*O4Rizl$deJVoX{ZA4f8#Xd>gl zr3s%43>!!IbBs)mAvHTC=_Q_a_YP=RghKIvdP$+_j_-&t5^!St{C5K~tJ@S?t;rRd z`$3eXeRsQ$Wn^#I+34Qs4vz>nJKf>l_FzCe`+e$AuhSoPHxKS~`qVq<_x1g*lSVW;1RzoT{{h(xQHi!ce^pJHD&Qi8frQJbWUhha`Lf_(U( z!kmI%m_leH-~(); +} +} // namespace ui::external_app::sd_wipe + +extern "C" { + +__attribute__((section(".external_app.app_sd_wipe.application_information"), used)) application_information_t _application_information_sd_wipe = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::sd_wipe::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Wipe SD card", + /*.bitmap_data = */ {0xF0, 0x3F, 0x58, 0x35, 0x5C, 0x35, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x3C, 0x1C, 0xBC, 0xC9, 0xBC, 0xE3, 0x2C, 0x77, 0x5C, 0x3E, 0xAC, 0x1C, 0x5C, 0x3E, 0x2C, 0x77, 0x9C, 0xE3, 0xAC, 0xC1}, + /*.icon_color = */ ui::Color::red().v, + /*.menu_location = */ app_location_t::UTILITIES, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/apps/ui_sd_wipe.cpp b/firmware/application/external/sd_wipe/ui_sd_wipe.cpp similarity index 94% rename from firmware/application/apps/ui_sd_wipe.cpp rename to firmware/application/external/sd_wipe/ui_sd_wipe.cpp index c035691b..a482e784 100644 --- a/firmware/application/apps/ui_sd_wipe.cpp +++ b/firmware/application/external/sd_wipe/ui_sd_wipe.cpp @@ -22,7 +22,9 @@ #include "ui_sd_wipe.hpp" -namespace ui { +using namespace ui; + +namespace ui::external_app::sd_wipe { Thread* WipeSDView::thread{nullptr}; @@ -63,4 +65,4 @@ void WipeSDView::focus() { } } -} /* namespace ui */ +} // namespace ui::external_app::sd_wipe diff --git a/firmware/application/apps/ui_sd_wipe.hpp b/firmware/application/external/sd_wipe/ui_sd_wipe.hpp similarity index 95% rename from firmware/application/apps/ui_sd_wipe.hpp rename to firmware/application/external/sd_wipe/ui_sd_wipe.hpp index d3b87347..886d97d6 100644 --- a/firmware/application/apps/ui_sd_wipe.hpp +++ b/firmware/application/external/sd_wipe/ui_sd_wipe.hpp @@ -30,7 +30,9 @@ #include -namespace ui { +using namespace ui; + +namespace ui::external_app::sd_wipe { class WipeSDView : public View { public: @@ -87,6 +89,6 @@ class WipeSDView : public View { ""}; }; -} /* namespace ui */ +} // namespace ui::external_app::sd_wipe #endif /*__UI_SD_WIPE_H__*/ diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index 5b2a04e8..b8650dfc 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -54,7 +54,6 @@ #include "ui_recon.hpp" #include "ui_scanner.hpp" #include "ui_sd_over_usb.hpp" -#include "ui_sd_wipe.hpp" #include "ui_search.hpp" #include "ui_settings.hpp" #include "ui_siggen.hpp" @@ -151,7 +150,6 @@ const NavigationView::AppList NavigationView::appList = { //{"sstv", "SSTV", RX, Color::dark_grey(), &bitmap_icon_sstv, new ViewFactory()}, //{"tetra", "TETRA", RX, Color::dark_grey(), &bitmap_icon_tetra, new ViewFactory()}, /* TX ********************************************************************/ - //{"adsbtx", "ADS-B TX", TX, ui::Color::green(), &bitmap_icon_adsb, new ViewFactory()}, {"aprstx", "APRS TX", TX, ui::Color::green(), &bitmap_icon_aprs, new ViewFactory()}, {"bht", "BHT Xy/EP", TX, ui::Color::green(), &bitmap_icon_bht, new ViewFactory()}, {"bletx", "BLE Tx", TX, ui::Color::green(), &bitmap_icon_btle, new ViewFactory()}, @@ -170,7 +168,6 @@ const NavigationView::AppList NavigationView::appList = { //{"testapp", "Test App", UTILITIES, Color::dark_grey(), nullptr, new ViewFactory()}, // Dangerous apps. {nullptr, "Flash Utility", UTILITIES, Color::red(), &bitmap_icon_peripherals_details, new ViewFactory()}, - {nullptr, "Wipe SD card", UTILITIES, Color::red(), &bitmap_icon_tools_wipesd, new ViewFactory()}, }; const NavigationView::AppMap NavigationView::appMap = generate_app_map(NavigationView::appList);