From e4a482e202f9ea4f2ac8a57e40c54e0234e507e0 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Sun, 25 Dec 2022 03:22:28 +0100 Subject: [PATCH] Massive 12 hour rebase --- components/esp-gui-lib | 2 +- main/CMakeLists.txt | 486 ++++++++---------- main/actions/bluetoothbeginmasteraction.cpp | 0 main/actions/bluetoothconnectbmsaction.cpp | 0 main/actions/bluetoothdisconnectaction.cpp | 0 main/actions/bluetoothendaction.cpp | 0 main/actions/bluetoothflushaction.cpp | 0 main/actions/bmsturnoffchargeaction.cpp | 0 main/actions/bmsturnoffdischargeaction.cpp | 0 main/actions/bmsturnonchargeaction.cpp | 0 main/actions/bmsturnondischargeaction.cpp | 0 main/actions/erasenvsaction.cpp | 0 main/actions/ledstripanimationactions.cpp | 7 - main/actions/ledstripanimationactions.h | 12 +- main/actions/loadsettingsaction.cpp | 0 main/actions/modesettingsaction.cpp | 17 +- main/actions/modesettingsaction.h | 6 +- main/actions/qraction.h | 18 +- main/actions/rebootaction.cpp | 22 - main/actions/rebootaction.h | 10 - main/actions/resetnvsaction.cpp | 0 main/actions/resetnvsaction.h | 24 +- main/actions/savesettingsaction.cpp | 0 main/actions/setupactions.cpp | 9 +- main/actions/setupactions.h | 3 + main/actions/switchprofileaction.cpp | 0 .../tempomatmodeapplycurrentpeedaction.cpp | 0 main/actions/updateswapfrontbackaction.cpp | 0 main/actions/wifiscanaction.cpp | 0 main/ble_bobby.cpp | 4 +- main/bletexthelpers.cpp | 0 main/bluetoothmode.cpp | 0 main/bluetoothtexthelpers.cpp | 0 main/bmsutils.cpp | 0 main/bobbyerrorhandler.cpp | 14 - main/changevaluedisplay_bluetoothmode.cpp | 0 main/cloud.cpp | 8 +- main/debugcolorhelpers.cpp | 0 main/debugcolorhelpers.h | 8 +- main/debuginputhandler.cpp | 12 +- main/debugtexthelpers.cpp | 0 main/displays/batterygraphdisplay.h | 20 - main/displays/gametrakcalibratedisplay.cpp | 0 main/displays/ledstripcolorsdisplay.h | 30 -- main/displays/menudisplaywithtime.cpp | 26 - main/displays/menus/batterymenu.h | 26 - main/displays/menus/bluetoothsettingsmenu.cpp | 0 main/displays/menus/commanddebugmenu.cpp | 0 main/displays/menus/featureflagsmenu.h | 16 - main/displays/menus/feedbackdebugmenu.cpp | 0 .../menus/gametrakmodesettingsmenu.cpp | 0 main/displays/menus/gitmenu.h | 14 - main/displays/menus/ledstripmenu.h | 14 - .../displays/menus/motorfeedbackdebugmenu.cpp | 0 main/displays/menus/motorstatedebugmenu.cpp | 0 main/displays/menus/settingsmenu.h | 14 - main/displays/menus/statisticsmenu.h | 14 - main/displays/menus/timesettingsmenu.h | 14 - main/displays/metersdisplay.cpp | 72 --- main/displays/potiscalibratedisplay.cpp | 324 ------------ main/displays/potiscalibratedisplay.h | 94 ---- main/displays/qrcodedebug.cpp | 50 -- main/displays/qrimportdisplay.h | 35 -- main/displays/speedinfodisplay.cpp | 93 ---- main/displays/statusdisplay.cpp | 352 ------------- main/displays/updatedisplay.cpp | 116 ----- main/dpad.cpp | 0 main/dpad3wire.cpp | 0 main/drivingstatistics.cpp | 2 +- main/esptexthelpers.cpp | 0 main/feedbackparser.cpp | 0 main/globals.h | 2 - .../bobbychangevaluedisplay.cpp | 0 .../bobbychangevaluedisplay.h | 10 +- main/{ => guihelpers}/bobbycheckbox.h | 8 +- .../{displays => guihelpers}/bobbydisplay.cpp | 4 + main/{displays => guihelpers}/bobbydisplay.h | 6 +- .../bobbydisplaywithtitle.cpp | 4 + .../bobbydisplaywithtitle.h | 6 +- main/guihelpers/bobbyerrorhandler.cpp | 20 + main/{ => guihelpers}/bobbyerrorhandler.h | 4 + .../bobbygraphdisplay.cpp | 0 .../bobbygraphdisplay.h | 4 + .../bobbymenudisplay.cpp | 3 + .../bobbymenudisplay.h | 6 +- .../bobbypopupdisplay.cpp | 4 + .../bobbypopupdisplay.h | 6 +- .../bobbysplitgraphdisplay.cpp | 0 .../bobbysplitgraphdisplay.h | 3 + main/guihelpers/menudisplaywithtime.cpp | 26 + .../menudisplaywithtime.h | 12 +- main/ledstripdefines.cpp | 0 main/macros_bobbycar.cpp | 0 main/macros_bobbycar.h | 5 - main/main.cpp | 45 +- main/modeinterface.cpp | 0 main/newsettings.h | 7 +- main/profilesettings.cpp | 0 main/rotary.cpp | 0 main/screens.cpp | 60 ++- main/screens.h | 11 + .../{displays/menus => screens}/aboutmenu.cpp | 22 +- main/{displays/menus => screens}/aboutmenu.h | 6 +- .../menus => screens}/batterydebugmenu.cpp | 14 +- .../menus => screens}/batterydebugmenu.h | 6 +- .../batterygraphdisplay.cpp | 39 +- main/screens/batterygraphdisplay.h | 28 + .../batteryinfodisplay.cpp | 26 +- .../batteryinfodisplay.h | 13 +- .../menus => screens}/batterymenu.cpp | 59 +-- main/screens/batterymenu.h | 33 ++ .../menus => screens}/blesettingsmenu.cpp | 15 +- .../menus => screens}/blesettingsmenu.h | 6 +- .../menus => screens}/bluetoothsettingsmenu.h | 4 +- main/{displays => screens}/bmsdisplay.cpp | 8 +- main/{displays => screens}/bmsdisplay.h | 0 main/{displays/menus => screens}/bmsmenu.cpp | 0 main/{displays/menus => screens}/bmsmenu.h | 2 +- .../boardcomputerhardwaresettingsmenu.cpp | 25 +- .../boardcomputerhardwaresettingsmenu.h | 6 +- .../menus => screens}/buzzermenu.cpp | 9 +- main/{displays/menus => screens}/buzzermenu.h | 6 +- .../calibratevoltagedisplay.cpp | 9 +- .../calibratevoltagedisplay.h | 6 +- .../menus => screens}/candebugmenu.cpp | 19 +- .../menus => screens}/candebugmenu.h | 10 +- .../menus => screens}/cloudsettingsmenu.cpp | 28 +- .../menus => screens}/cloudsettingsmenu.h | 6 +- .../menus => screens}/commanddebugmenu.h | 8 +- .../confiscationdisplay.cpp | 47 +- .../confiscationdisplay.h | 13 +- .../controllerhardwaresettingsmenu.cpp | 14 +- .../controllerhardwaresettingsmenu.h | 6 +- .../{displays/menus => screens}/crashmenu.cpp | 4 + main/{displays/menus => screens}/crashmenu.h | 6 +- .../{displays/menus => screens}/debugmenu.cpp | 60 ++- main/{displays/menus => screens}/debugmenu.h | 6 +- .../defaultmodesettingsmenu.cpp | 21 +- .../defaultmodesettingsmenu.h | 6 +- .../{displays/menus => screens}/demosmenu.cpp | 19 +- main/{displays/menus => screens}/demosmenu.h | 6 +- .../menus => screens}/dynamicdebugmenu.cpp | 32 +- .../menus => screens}/dynamicdebugmenu.h | 6 +- .../menus => screens}/enablemenu.cpp | 6 +- main/{displays/menus => screens}/enablemenu.h | 6 +- .../menus => screens}/espnowmenu.cpp | 17 +- main/{displays/menus => screens}/espnowmenu.h | 6 +- .../menus => screens}/espnowsettingsmenu.cpp | 8 +- .../menus => screens}/espnowsettingsmenu.h | 6 +- .../extrabuttoncalibratemenu.cpp | 23 +- .../extrabuttoncalibratemenu.h | 6 +- .../menus => screens}/featureflagsmenu.cpp | 10 +- main/screens/featureflagsmenu.h | 20 + .../menus => screens}/feedbackdebugmenu.h | 28 +- .../gameoflifedisplay.cpp | 30 +- .../{displays => screens}/gameoflifedisplay.h | 15 +- .../gametrakcalibratedisplay.h | 2 +- .../gametrakmodesettingsmenu.h | 2 +- .../menus => screens}/garagemenu.cpp | 14 +- main/{displays/menus => screens}/garagemenu.h | 6 +- main/{displays/menus => screens}/gitmenu.cpp | 14 +- main/screens/gitmenu.h | 18 + .../menus => screens}/graphsmenu.cpp | 19 +- main/{displays/menus => screens}/graphsmenu.h | 6 +- .../menus => screens}/greenpassmenu.cpp | 15 +- .../menus => screens}/greenpassmenu.h | 6 +- .../handbremssettingsmenu.cpp | 10 +- .../menus => screens}/handbremssettingsmenu.h | 6 +- .../menus => screens}/invertmenu.cpp | 10 +- main/{displays/menus => screens}/invertmenu.h | 6 +- .../joystickdebugdisplay.cpp | 6 +- .../joystickdebugdisplay.h | 2 +- .../larsmmodesettingsmenu.cpp | 20 +- .../menus => screens}/larsmmodesettingsmenu.h | 6 +- .../ledstripcolorsdisplay.cpp | 145 +++--- main/screens/ledstripcolorsdisplay.h | 28 + .../menus => screens}/ledstripmenu.cpp | 18 +- main/screens/ledstripmenu.h | 18 + .../ledstripselectblinkmenu.cpp | 12 +- .../ledstripselectblinkmenu.h | 6 +- .../ledstripselectotamode.cpp | 9 +- .../menus => screens}/ledstripselectotamode.h | 6 +- .../menus => screens}/limitssettingsmenu.cpp | 14 +- .../menus => screens}/limitssettingsmenu.h | 6 +- main/{displays => screens}/lockscreen.cpp | 69 ++- main/{displays => screens}/lockscreen.h | 12 +- .../lockscreensettingsmenu.cpp | 7 +- .../lockscreensettingsmenu.h | 5 +- main/{displays/menus => screens}/mainmenu.cpp | 50 +- main/{displays/menus => screens}/mainmenu.h | 12 +- .../menus => screens}/manageprofilesmenu.cpp | 21 +- .../menus => screens}/manageprofilesmenu.h | 7 +- main/screens/metersdisplay.cpp | 72 +++ main/{displays => screens}/metersdisplay.h | 11 +- .../mickmodesettingsmenu.cpp | 5 +- .../menus => screens}/mickmodesettingsmenu.h | 5 +- .../menus => screens}/modessettingsmenu.cpp | 13 +- .../menus => screens}/modessettingsmenu.h | 6 +- .../menus => screens}/mosfetsmenu.cpp | 0 .../{displays/menus => screens}/mosfetsmenu.h | 2 +- .../motorfeedbackdebugmenu.h | 37 +- .../menus => screens}/motorstatedebugmenu.h | 16 +- .../motortestmodesettingsmenu.cpp | 17 +- .../motortestmodesettingsmenu.h | 5 +- .../menus => screens}/networksettingsmenu.cpp | 5 +- .../menus => screens}/networksettingsmenu.h | 6 +- main/{displays/menus => screens}/otamenu.cpp | 21 +- main/{displays/menus => screens}/otamenu.h | 5 +- .../{displays => screens}/pingpongdisplay.cpp | 66 +-- main/{displays => screens}/pingpongdisplay.h | 21 +- .../{displays => screens}/poweroffdisplay.cpp | 25 +- main/{displays => screens}/poweroffdisplay.h | 7 +- .../powersupplydisplay.cpp | 2 +- .../powersupplydisplay.h | 2 +- .../menus => screens}/profilesmenu.cpp | 11 +- .../menus => screens}/profilesmenu.h | 5 +- main/screens/qrcodedebug.cpp | 56 ++ main/{displays => screens}/qrcodedebug.h | 14 +- main/{displays => screens}/qrdisplay.cpp | 2 + main/{displays => screens}/qrdisplay.h | 16 +- .../{displays => screens}/qrimportdisplay.cpp | 27 +- main/screens/qrimportdisplay.h | 48 ++ main/screens/rebootscreen.cpp | 27 + main/screens/rebootscreen.h | 22 + .../menus => screens}/recoverymenu.cpp | 16 +- .../menus => screens}/recoverymenu.h | 5 +- .../remotecontrolmodesettingsmenu.cpp | 5 +- .../remotecontrolmodesettingsmenu.h | 6 +- main/screens/resetnvsscreen.cpp | 33 ++ main/screens/resetnvsscreen.h | 22 + .../selectbatterytypemenu.cpp | 15 +- .../selectbuildserverbranch.cpp | 21 +- .../selectbuildserverbranch.h | 5 +- .../selectbuildservermenu.cpp | 11 +- .../menus => screens}/selectbuildservermenu.h | 7 +- .../menus => screens}/selectmodemenu.cpp | 3 + .../menus => screens}/selectmodemenu.h | 5 +- .../menus => screens}/selectotabuildmenu.cpp | 30 +- .../menus => screens}/selectotabuildmenu.h | 6 +- .../menus => screens}/settingsmenu.cpp | 42 +- main/screens/settingsmenu.h | 17 + .../setup/ask_calibrate_other_buttons.cpp | 13 +- .../setup/ask_calibrate_other_buttons.h | 7 +- .../setup/ask_setup_clouds.cpp | 13 +- .../setup/ask_setup_clouds.h | 7 +- .../setup/basic_buttons.cpp | 62 ++- .../setup/basic_buttons.h | 16 +- .../setup/calibrate_potis.cpp | 85 ++- .../setup/calibrate_potis.h | 10 +- .../setup/final_information.cpp | 13 +- .../setup/final_information.h | 7 +- .../setup/information.cpp | 27 +- .../{displays => screens}/setup/information.h | 14 +- .../setup/setup_cloud.cpp | 10 +- .../{displays => screens}/setup/setup_cloud.h | 5 +- .../setupquickactionsmenu.cpp | 11 +- .../menus => screens}/setupquickactionsmenu.h | 5 +- main/screens/speedinfodisplay.cpp | 97 ++++ main/{displays => screens}/speedinfodisplay.h | 16 +- main/{displays => screens}/spirodisplay.cpp | 22 +- main/{displays => screens}/spirodisplay.h | 9 +- .../starfielddisplay.cpp | 27 +- main/{displays => screens}/starfielddisplay.h | 13 +- .../menus => screens}/statisticsmenu.cpp | 21 +- main/screens/statisticsmenu.h | 17 + main/screens/statusdisplay.cpp | 319 ++++++++++++ main/{displays => screens}/statusdisplay.h | 17 +- .../menus => screens}/taskmanagermenu.cpp | 9 +- .../menus => screens}/taskmanagermenu.h | 6 +- .../tempomatmodesettingsmenu.cpp | 17 +- .../tempomatmodesettingsmenu.h | 5 +- .../menus => screens}/timersmenu.cpp | 16 +- main/{displays/menus => screens}/timersmenu.h | 6 +- .../menus => screens}/timesettingsmenu.cpp | 29 +- main/screens/timesettingsmenu.h | 17 + .../typesafeenumchangemenu.cpp | 0 .../typesafeenumchangemenu.h | 14 +- .../udpcloudsettingsmenu.cpp | 19 +- .../menus => screens}/udpcloudsettingsmenu.h | 5 +- main/screens/updatedisplay.cpp | 112 ++++ main/{displays => screens}/updatedisplay.h | 15 +- .../menus => screens}/wifiapclientsmenu.cpp | 15 +- .../menus => screens}/wifiapclientsmenu.h | 5 +- .../menus => screens}/wifiapsettingsmenu.cpp | 28 +- .../menus => screens}/wifiapsettingsmenu.h | 5 +- .../wifistaconfigentrymenu.cpp | 20 +- .../wifistaconfigentrymenu.h | 6 +- .../menus => screens}/wifistaconfigsmenu.cpp | 19 +- .../menus => screens}/wifistaconfigsmenu.h | 6 +- .../wifistascanentrymenu.cpp | 19 +- .../menus => screens}/wifistascanentrymenu.h | 7 +- .../menus => screens}/wifistascanmenu.cpp | 15 +- .../menus => screens}/wifistascanmenu.h | 5 +- .../menus => screens}/wifistasettingsmenu.cpp | 19 +- .../menus => screens}/wifistasettingsmenu.h | 5 +- main/{displays => screens}/xydebugdisplay.cpp | 29 +- main/{displays => screens}/xydebugdisplay.h | 13 +- main/statustexthelper.cpp | 0 main/taskmanager.cpp | 4 +- main/{ => texthelpers}/bletexthelpers.h | 0 main/{ => texthelpers}/bluetoothtexthelpers.h | 2 +- main/{ => texthelpers}/cloudtexthelpers.cpp | 2 +- main/{ => texthelpers}/cloudtexthelpers.h | 0 main/{ => texthelpers}/debugtexthelpers.h | 2 +- main/{ => texthelpers}/esptexthelpers.h | 10 +- main/{ => texthelpers}/statustexthelper.h | 0 main/types.cpp | 0 main/utils.cpp | 12 +- main/utils.h | 2 +- main/widgets/doubleprogressbar.cpp | 19 +- main/widgets/doubleprogressbar.h | 11 +- 311 files changed, 3113 insertions(+), 2823 deletions(-) delete mode 100644 main/actions/bluetoothbeginmasteraction.cpp delete mode 100644 main/actions/bluetoothconnectbmsaction.cpp delete mode 100644 main/actions/bluetoothdisconnectaction.cpp delete mode 100644 main/actions/bluetoothendaction.cpp delete mode 100644 main/actions/bluetoothflushaction.cpp delete mode 100644 main/actions/bmsturnoffchargeaction.cpp delete mode 100644 main/actions/bmsturnoffdischargeaction.cpp delete mode 100644 main/actions/bmsturnonchargeaction.cpp delete mode 100644 main/actions/bmsturnondischargeaction.cpp delete mode 100644 main/actions/erasenvsaction.cpp delete mode 100644 main/actions/loadsettingsaction.cpp delete mode 100644 main/actions/rebootaction.cpp delete mode 100644 main/actions/rebootaction.h delete mode 100644 main/actions/resetnvsaction.cpp delete mode 100644 main/actions/savesettingsaction.cpp delete mode 100644 main/actions/switchprofileaction.cpp delete mode 100644 main/actions/tempomatmodeapplycurrentpeedaction.cpp delete mode 100644 main/actions/updateswapfrontbackaction.cpp delete mode 100644 main/actions/wifiscanaction.cpp delete mode 100644 main/bletexthelpers.cpp delete mode 100644 main/bluetoothmode.cpp delete mode 100644 main/bluetoothtexthelpers.cpp delete mode 100644 main/bmsutils.cpp delete mode 100644 main/bobbyerrorhandler.cpp delete mode 100644 main/changevaluedisplay_bluetoothmode.cpp delete mode 100644 main/debugcolorhelpers.cpp delete mode 100644 main/debugtexthelpers.cpp delete mode 100644 main/displays/batterygraphdisplay.h delete mode 100644 main/displays/gametrakcalibratedisplay.cpp delete mode 100644 main/displays/ledstripcolorsdisplay.h delete mode 100644 main/displays/menudisplaywithtime.cpp delete mode 100644 main/displays/menus/batterymenu.h delete mode 100644 main/displays/menus/bluetoothsettingsmenu.cpp delete mode 100644 main/displays/menus/commanddebugmenu.cpp delete mode 100644 main/displays/menus/featureflagsmenu.h delete mode 100644 main/displays/menus/feedbackdebugmenu.cpp delete mode 100644 main/displays/menus/gametrakmodesettingsmenu.cpp delete mode 100644 main/displays/menus/gitmenu.h delete mode 100644 main/displays/menus/ledstripmenu.h delete mode 100644 main/displays/menus/motorfeedbackdebugmenu.cpp delete mode 100644 main/displays/menus/motorstatedebugmenu.cpp delete mode 100644 main/displays/menus/settingsmenu.h delete mode 100644 main/displays/menus/statisticsmenu.h delete mode 100644 main/displays/menus/timesettingsmenu.h delete mode 100644 main/displays/metersdisplay.cpp delete mode 100644 main/displays/potiscalibratedisplay.cpp delete mode 100644 main/displays/potiscalibratedisplay.h delete mode 100644 main/displays/qrcodedebug.cpp delete mode 100644 main/displays/qrimportdisplay.h delete mode 100644 main/displays/speedinfodisplay.cpp delete mode 100644 main/displays/statusdisplay.cpp delete mode 100644 main/displays/updatedisplay.cpp delete mode 100644 main/dpad.cpp delete mode 100644 main/dpad3wire.cpp delete mode 100644 main/esptexthelpers.cpp delete mode 100644 main/feedbackparser.cpp rename main/{displays => guihelpers}/bobbychangevaluedisplay.cpp (100%) rename main/{displays => guihelpers}/bobbychangevaluedisplay.h (90%) rename main/{ => guihelpers}/bobbycheckbox.h (58%) rename main/{displays => guihelpers}/bobbydisplay.cpp (94%) rename main/{displays => guihelpers}/bobbydisplay.h (84%) rename main/{displays => guihelpers}/bobbydisplaywithtitle.cpp (94%) rename main/{displays => guihelpers}/bobbydisplaywithtitle.h (84%) create mode 100644 main/guihelpers/bobbyerrorhandler.cpp rename main/{ => guihelpers}/bobbyerrorhandler.h (83%) rename main/{displays => guihelpers}/bobbygraphdisplay.cpp (100%) rename main/{displays => guihelpers}/bobbygraphdisplay.h (96%) rename main/{displays => guihelpers}/bobbymenudisplay.cpp (94%) rename main/{displays => guihelpers}/bobbymenudisplay.h (84%) rename main/{displays => guihelpers}/bobbypopupdisplay.cpp (94%) rename main/{displays => guihelpers}/bobbypopupdisplay.h (84%) rename main/{displays => guihelpers}/bobbysplitgraphdisplay.cpp (100%) rename main/{displays => guihelpers}/bobbysplitgraphdisplay.h (97%) create mode 100644 main/guihelpers/menudisplaywithtime.cpp rename main/{displays => guihelpers}/menudisplaywithtime.h (64%) delete mode 100644 main/ledstripdefines.cpp delete mode 100644 main/macros_bobbycar.cpp delete mode 100644 main/macros_bobbycar.h delete mode 100644 main/modeinterface.cpp delete mode 100644 main/profilesettings.cpp delete mode 100644 main/rotary.cpp rename main/{displays/menus => screens}/aboutmenu.cpp (93%) rename main/{displays/menus => screens}/aboutmenu.h (67%) rename main/{displays/menus => screens}/batterydebugmenu.cpp (94%) rename main/{displays/menus => screens}/batterydebugmenu.h (69%) rename main/{displays => screens}/batterygraphdisplay.cpp (77%) create mode 100644 main/screens/batterygraphdisplay.h rename main/{displays => screens}/batteryinfodisplay.cpp (79%) rename main/{displays => screens}/batteryinfodisplay.h (52%) rename main/{displays/menus => screens}/batterymenu.cpp (80%) create mode 100644 main/screens/batterymenu.h rename main/{displays/menus => screens}/blesettingsmenu.cpp (90%) rename main/{displays/menus => screens}/blesettingsmenu.h (69%) rename main/{displays/menus => screens}/bluetoothsettingsmenu.h (97%) rename main/{displays => screens}/bmsdisplay.cpp (95%) rename main/{displays => screens}/bmsdisplay.h (100%) rename main/{displays/menus => screens}/bmsmenu.cpp (100%) rename main/{displays/menus => screens}/bmsmenu.h (85%) rename main/{displays/menus => screens}/boardcomputerhardwaresettingsmenu.cpp (97%) rename main/{displays/menus => screens}/boardcomputerhardwaresettingsmenu.h (72%) rename main/{displays/menus => screens}/buzzermenu.cpp (97%) rename main/{displays/menus => screens}/buzzermenu.h (67%) rename main/{displays => screens}/calibratevoltagedisplay.cpp (97%) rename main/{displays => screens}/calibratevoltagedisplay.h (70%) rename main/{displays/menus => screens}/candebugmenu.cpp (97%) rename main/{displays/menus => screens}/candebugmenu.h (74%) rename main/{displays/menus => screens}/cloudsettingsmenu.cpp (90%) rename main/{displays/menus => screens}/cloudsettingsmenu.h (69%) rename main/{displays/menus => screens}/commanddebugmenu.h (91%) rename main/{displays => screens}/confiscationdisplay.cpp (64%) rename main/{displays => screens}/confiscationdisplay.h (78%) rename main/{displays/menus => screens}/controllerhardwaresettingsmenu.cpp (95%) rename main/{displays/menus => screens}/controllerhardwaresettingsmenu.h (72%) rename main/{displays/menus => screens}/crashmenu.cpp (95%) rename main/{displays/menus => screens}/crashmenu.h (67%) rename main/{displays/menus => screens}/debugmenu.cpp (88%) rename main/{displays/menus => screens}/debugmenu.h (67%) rename main/{displays/menus => screens}/defaultmodesettingsmenu.cpp (98%) rename main/{displays/menus => screens}/defaultmodesettingsmenu.h (70%) rename main/{displays/menus => screens}/demosmenu.cpp (78%) rename main/{displays/menus => screens}/demosmenu.h (67%) rename main/{displays/menus => screens}/dynamicdebugmenu.cpp (93%) rename main/{displays/menus => screens}/dynamicdebugmenu.h (86%) rename main/{displays/menus => screens}/enablemenu.cpp (94%) rename main/{displays/menus => screens}/enablemenu.h (67%) rename main/{displays/menus => screens}/espnowmenu.cpp (91%) rename main/{displays/menus => screens}/espnowmenu.h (67%) rename main/{displays/menus => screens}/espnowsettingsmenu.cpp (92%) rename main/{displays/menus => screens}/espnowsettingsmenu.h (69%) rename main/{displays/menus => screens}/extrabuttoncalibratemenu.cpp (95%) rename main/{displays/menus => screens}/extrabuttoncalibratemenu.h (92%) rename main/{displays/menus => screens}/featureflagsmenu.cpp (95%) create mode 100644 main/screens/featureflagsmenu.h rename main/{displays/menus => screens}/feedbackdebugmenu.h (71%) rename main/{displays => screens}/gameoflifedisplay.cpp (85%) rename main/{displays => screens}/gameoflifedisplay.h (83%) rename main/{displays => screens}/gametrakcalibratedisplay.h (98%) rename main/{displays/menus => screens}/gametrakmodesettingsmenu.h (93%) rename main/{displays/menus => screens}/garagemenu.cpp (91%) rename main/{displays/menus => screens}/garagemenu.h (67%) rename main/{displays/menus => screens}/gitmenu.cpp (88%) create mode 100644 main/screens/gitmenu.h rename main/{displays/menus => screens}/graphsmenu.cpp (97%) rename main/{displays/menus => screens}/graphsmenu.h (67%) rename main/{displays/menus => screens}/greenpassmenu.cpp (94%) rename main/{displays/menus => screens}/greenpassmenu.h (68%) rename main/{displays/menus => screens}/handbremssettingsmenu.cpp (92%) rename main/{displays/menus => screens}/handbremssettingsmenu.h (70%) rename main/{displays/menus => screens}/invertmenu.cpp (91%) rename main/{displays/menus => screens}/invertmenu.h (67%) rename main/{displays => screens}/joystickdebugdisplay.cpp (93%) rename main/{displays => screens}/joystickdebugdisplay.h (93%) rename main/{displays/menus => screens}/larsmmodesettingsmenu.cpp (89%) rename main/{displays/menus => screens}/larsmmodesettingsmenu.h (70%) rename main/{displays => screens}/ledstripcolorsdisplay.cpp (53%) create mode 100644 main/screens/ledstripcolorsdisplay.h rename main/{displays/menus => screens}/ledstripmenu.cpp (96%) create mode 100644 main/screens/ledstripmenu.h rename main/{displays/menus => screens}/ledstripselectblinkmenu.cpp (94%) rename main/{displays/menus => screens}/ledstripselectblinkmenu.h (70%) rename main/{displays/menus => screens}/ledstripselectotamode.cpp (91%) rename main/{displays/menus => screens}/ledstripselectotamode.h (72%) rename main/{displays/menus => screens}/limitssettingsmenu.cpp (97%) rename main/{displays/menus => screens}/limitssettingsmenu.h (69%) rename main/{displays => screens}/lockscreen.cpp (67%) rename main/{displays => screens}/lockscreen.h (81%) rename main/{displays/menus => screens}/lockscreensettingsmenu.cpp (96%) rename main/{displays/menus => screens}/lockscreensettingsmenu.h (70%) rename main/{displays/menus => screens}/mainmenu.cpp (85%) rename main/{displays/menus => screens}/mainmenu.h (62%) rename main/{displays/menus => screens}/manageprofilesmenu.cpp (95%) rename main/{displays/menus => screens}/manageprofilesmenu.h (89%) create mode 100644 main/screens/metersdisplay.cpp rename main/{displays => screens}/metersdisplay.h (85%) rename main/{displays/menus => screens}/mickmodesettingsmenu.cpp (95%) rename main/{displays/menus => screens}/mickmodesettingsmenu.h (70%) rename main/{displays/menus => screens}/modessettingsmenu.cpp (86%) rename main/{displays/menus => screens}/modessettingsmenu.h (69%) rename main/{displays/menus => screens}/mosfetsmenu.cpp (100%) rename main/{displays/menus => screens}/mosfetsmenu.h (83%) rename main/{displays/menus => screens}/motorfeedbackdebugmenu.h (74%) rename main/{displays/menus => screens}/motorstatedebugmenu.h (91%) rename main/{displays/menus => screens}/motortestmodesettingsmenu.cpp (87%) rename main/{displays/menus => screens}/motortestmodesettingsmenu.h (71%) rename main/{displays/menus => screens}/networksettingsmenu.cpp (96%) rename main/{displays/menus => screens}/networksettingsmenu.h (79%) rename main/{displays/menus => screens}/otamenu.cpp (79%) rename main/{displays/menus => screens}/otamenu.h (67%) rename main/{displays => screens}/pingpongdisplay.cpp (70%) rename main/{displays => screens}/pingpongdisplay.h (75%) rename main/{displays => screens}/poweroffdisplay.cpp (51%) rename main/{displays => screens}/poweroffdisplay.h (70%) rename main/{displays => screens}/powersupplydisplay.cpp (97%) rename main/{displays => screens}/powersupplydisplay.h (92%) rename main/{displays/menus => screens}/profilesmenu.cpp (87%) rename main/{displays/menus => screens}/profilesmenu.h (68%) create mode 100644 main/screens/qrcodedebug.cpp rename main/{displays => screens}/qrcodedebug.h (54%) rename main/{displays => screens}/qrdisplay.cpp (98%) rename main/{displays => screens}/qrdisplay.h (81%) rename main/{displays => screens}/qrimportdisplay.cpp (77%) create mode 100644 main/screens/qrimportdisplay.h create mode 100644 main/screens/rebootscreen.cpp create mode 100644 main/screens/rebootscreen.h rename main/{displays/menus => screens}/recoverymenu.cpp (78%) rename main/{displays/menus => screens}/recoverymenu.h (72%) rename main/{displays/menus => screens}/remotecontrolmodesettingsmenu.cpp (94%) rename main/{displays/menus => screens}/remotecontrolmodesettingsmenu.h (72%) create mode 100644 main/screens/resetnvsscreen.cpp create mode 100644 main/screens/resetnvsscreen.h rename main/{displays/menus => screens}/selectbatterytypemenu.cpp (96%) rename main/{displays/menus => screens}/selectbuildserverbranch.cpp (91%) rename main/{displays/menus => screens}/selectbuildserverbranch.h (77%) rename main/{displays/menus => screens}/selectbuildservermenu.cpp (93%) rename main/{displays/menus => screens}/selectbuildservermenu.h (71%) rename main/{displays/menus => screens}/selectmodemenu.cpp (99%) rename main/{displays/menus => screens}/selectmodemenu.h (75%) rename main/{displays/menus => screens}/selectotabuildmenu.cpp (88%) rename main/{displays/menus => screens}/selectotabuildmenu.h (77%) rename main/{displays/menus => screens}/settingsmenu.cpp (89%) create mode 100644 main/screens/settingsmenu.h rename main/{displays => screens}/setup/ask_calibrate_other_buttons.cpp (78%) rename main/{displays => screens}/setup/ask_calibrate_other_buttons.h (70%) rename main/{displays => screens}/setup/ask_setup_clouds.cpp (81%) rename main/{displays => screens}/setup/ask_setup_clouds.h (67%) rename main/{displays => screens}/setup/basic_buttons.cpp (74%) rename main/{displays => screens}/setup/basic_buttons.h (74%) rename main/{displays => screens}/setup/calibrate_potis.cpp (74%) rename main/{displays => screens}/setup/calibrate_potis.h (89%) rename main/{displays => screens}/setup/final_information.cpp (79%) rename main/{displays => screens}/setup/final_information.h (72%) rename main/{displays => screens}/setup/information.cpp (65%) rename main/{displays => screens}/setup/information.h (58%) rename main/{displays => screens}/setup/setup_cloud.cpp (94%) rename main/{displays => screens}/setup/setup_cloud.h (82%) rename main/{displays/menus => screens}/setupquickactionsmenu.cpp (94%) rename main/{displays/menus => screens}/setupquickactionsmenu.h (70%) create mode 100644 main/screens/speedinfodisplay.cpp rename main/{displays => screens}/speedinfodisplay.h (60%) rename main/{displays => screens}/spirodisplay.cpp (84%) rename main/{displays => screens}/spirodisplay.h (71%) rename main/{displays => screens}/starfielddisplay.cpp (82%) rename main/{displays => screens}/starfielddisplay.h (64%) rename main/{displays/menus => screens}/statisticsmenu.cpp (97%) create mode 100644 main/screens/statisticsmenu.h create mode 100644 main/screens/statusdisplay.cpp rename main/{displays => screens}/statusdisplay.h (83%) rename main/{displays/menus => screens}/taskmanagermenu.cpp (96%) rename main/{displays/menus => screens}/taskmanagermenu.h (69%) rename main/{displays/menus => screens}/tempomatmodesettingsmenu.cpp (96%) rename main/{displays/menus => screens}/tempomatmodesettingsmenu.h (71%) rename main/{displays/menus => screens}/timersmenu.cpp (79%) rename main/{displays/menus => screens}/timersmenu.h (67%) rename main/{displays/menus => screens}/timesettingsmenu.cpp (91%) create mode 100644 main/screens/timesettingsmenu.h rename main/{displays/menus => screens}/typesafeenumchangemenu.cpp (100%) rename main/{displays/menus => screens}/typesafeenumchangemenu.h (96%) rename main/{displays/menus => screens}/udpcloudsettingsmenu.cpp (88%) rename main/{displays/menus => screens}/udpcloudsettingsmenu.h (70%) create mode 100644 main/screens/updatedisplay.cpp rename main/{displays => screens}/updatedisplay.h (59%) rename main/{displays/menus => screens}/wifiapclientsmenu.cpp (97%) rename main/{displays/menus => screens}/wifiapclientsmenu.h (84%) rename main/{displays/menus => screens}/wifiapsettingsmenu.cpp (97%) rename main/{displays/menus => screens}/wifiapsettingsmenu.h (70%) rename main/{displays/menus => screens}/wifistaconfigentrymenu.cpp (98%) rename main/{displays/menus => screens}/wifistaconfigentrymenu.h (74%) rename main/{displays/menus => screens}/wifistaconfigsmenu.cpp (98%) rename main/{displays/menus => screens}/wifistaconfigsmenu.h (69%) rename main/{displays/menus => screens}/wifistascanentrymenu.cpp (99%) rename main/{displays/menus => screens}/wifistascanentrymenu.h (72%) rename main/{displays/menus => screens}/wifistascanmenu.cpp (99%) rename main/{displays/menus => screens}/wifistascanmenu.h (79%) rename main/{displays/menus => screens}/wifistasettingsmenu.cpp (96%) rename main/{displays/menus => screens}/wifistasettingsmenu.h (70%) rename main/{displays => screens}/xydebugdisplay.cpp (64%) rename main/{displays => screens}/xydebugdisplay.h (63%) delete mode 100644 main/statustexthelper.cpp rename main/{ => texthelpers}/bletexthelpers.h (100%) rename main/{ => texthelpers}/bluetoothtexthelpers.h (98%) rename main/{ => texthelpers}/cloudtexthelpers.cpp (96%) rename main/{ => texthelpers}/cloudtexthelpers.h (100%) rename main/{ => texthelpers}/debugtexthelpers.h (99%) rename main/{ => texthelpers}/esptexthelpers.h (97%) rename main/{ => texthelpers}/statustexthelper.h (100%) delete mode 100644 main/types.cpp diff --git a/components/esp-gui-lib b/components/esp-gui-lib index 0f89f6c..cc95378 160000 --- a/components/esp-gui-lib +++ b/components/esp-gui-lib @@ -1 +1 @@ -Subproject commit 0f89f6c994d8b43d5c7759f4ac109baf80bbec7f +Subproject commit cc95378d7a9a06a39d65c71bd3b0d07e4f4d2248 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index ffb26d6..595a78d 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -23,7 +23,6 @@ set(BOBBY_HEADERS actions/loadsettingsaction.h actions/modesettingsaction.h actions/qraction.h - actions/rebootaction.h actions/resetnvsaction.h actions/savesettingsaction.h actions/setupactions.h @@ -35,15 +34,11 @@ set(BOBBY_HEADERS actions/wifistascanclearaction.h battery.h ble_bobby.h - bletexthelpers.h bluetooth_bobby.h bluetoothmode.h - bluetoothtexthelpers.h bmsutils.h bobbyblinker.h bobbybuttons.h - bobbycheckbox.h - bobbyerrorhandler.h bobbyhupe.h bobbyquickactions.h bobbyschedulertask.h @@ -57,121 +52,10 @@ set(BOBBY_HEADERS changevaluedisplay_larsmmode_mode.h changevaluedisplay_unifiedmodelmode.h cloud.h - cloudtexthelpers.h configutils_bobby.h controller.h debugcolorhelpers.h debuginputhandler.h - debugtexthelpers.h - displays/batterygraphdisplay.h - displays/batteryinfodisplay.h - displays/bmsdisplay.h - displays/bobbychangevaluedisplay.h - displays/bobbydisplay.h - displays/bobbydisplaywithtitle.h - displays/bobbygraphdisplay.h - displays/bobbymenudisplay.h - displays/bobbypopupdisplay.h - displays/bobbysplitgraphdisplay.h - displays/calibratevoltagedisplay.h - displays/confiscationdisplay.h - displays/gameoflifedisplay.h - displays/gametrakcalibratedisplay.h - displays/joystickdebugdisplay.h - displays/ledstripcolorsdisplay.h - displays/lockscreen.h - displays/menudisplaywithtime.cpp - displays/menudisplaywithtime.h - displays/menus/aboutmenu.h - displays/menus/batterydebugmenu.h - displays/menus/batterymenu.h - displays/menus/blesettingsmenu.h - displays/menus/bluetoothsettingsmenu.h - displays/menus/bmsmenu.h - displays/menus/boardcomputerhardwaresettingsmenu.h - displays/menus/buzzermenu.h - displays/menus/candebugmenu.h - displays/menus/cloudsettingsmenu.h - displays/menus/commanddebugmenu.h - displays/menus/controllerhardwaresettingsmenu.h - displays/menus/crashmenu.h - displays/menus/debugmenu.h - displays/menus/defaultmodesettingsmenu.h - displays/menus/demosmenu.h - displays/menus/dynamicdebugmenu.h - displays/menus/enablemenu.h - displays/menus/espnowmenu.h - displays/menus/espnowsettingsmenu.h - displays/menus/extrabuttoncalibratemenu.h - displays/menus/featureflagsmenu.h - displays/menus/feedbackdebugmenu.h - displays/menus/gametrakmodesettingsmenu.h - displays/menus/garagemenu.h - displays/menus/gitmenu.h - displays/menus/graphsmenu.h - displays/menus/greenpassmenu.h - displays/menus/handbremssettingsmenu.h - displays/menus/invertmenu.h - displays/menus/larsmmodesettingsmenu.h - displays/menus/ledstripmenu.h - displays/menus/ledstripselectblinkmenu.h - displays/menus/ledstripselectotamode.h - displays/menus/limitssettingsmenu.h - displays/menus/lockscreensettingsmenu.h - displays/menus/mainmenu.h - displays/menus/manageprofilesmenu.h - displays/menus/mickmodesettingsmenu.h - displays/menus/modessettingsmenu.h - displays/menus/mosfetsmenu.h - displays/menus/motorfeedbackdebugmenu.h - displays/menus/motorstatedebugmenu.h - displays/menus/motortestmodesettingsmenu.h - displays/menus/networksettingsmenu.h - displays/menus/otamenu.h - displays/menus/profilesmenu.h - displays/menus/recoverymenu.h - displays/menus/remotecontrolmodesettingsmenu.h - displays/menus/selectbuildserverbranch.h - displays/menus/selectbuildservermenu.h - displays/menus/selectmodemenu.h - displays/menus/selectotabuildmenu.h - displays/menus/settingsmenu.h - displays/menus/setupquickactionsmenu.h - displays/menus/statisticsmenu.h - displays/menus/taskmanagermenu.h - displays/menus/tempomatmodesettingsmenu.h - displays/menus/timersmenu.h - displays/menus/timesettingsmenu.h - displays/menus/typesafeenumchangemenu.h - displays/menus/udpcloudsettingsmenu.h - displays/menus/wifiapclientsmenu.h - displays/menus/wifiapsettingsmenu.h - displays/menus/wifistaconfigentrymenu.h - displays/menus/wifistaconfigsmenu.h - displays/menus/wifistascanentrymenu.h - displays/menus/wifistascanmenu.h - displays/menus/wifistasettingsmenu.h - displays/metersdisplay.h - displays/pingpongdisplay.h - displays/potiscalibratedisplay.h - displays/poweroffdisplay.h - displays/powersupplydisplay.h - displays/qrcodedebug.h - displays/qrdisplay.h - displays/qrimportdisplay.h - displays/setup/ask_calibrate_other_buttons.h - displays/setup/ask_setup_clouds.h - displays/setup/basic_buttons.h - displays/setup/calibrate_potis.h - displays/setup/final_information.h - displays/setup/information.h - displays/setup/setup_cloud.h - displays/speedinfodisplay.h - displays/spirodisplay.h - displays/starfielddisplay.h - displays/statusdisplay.h - displays/updatedisplay.h - displays/xydebugdisplay.h dnsannounce.h dpad.h dpad3wire.h @@ -181,10 +65,16 @@ set(BOBBY_HEADERS dpad_boardcomputer_v2.h drivingstatistics.h espnowfunctions.h - esptexthelpers.h feedbackemulator.h feedbackparser.h globals.h + guihelpers/bobbychangevaluedisplay.h + guihelpers/bobbycheckbox.h + guihelpers/bobbydisplay.h + guihelpers/bobbydisplaywithtitle.h + guihelpers/bobbyerrorhandler.h + guihelpers/bobbymenudisplay.h + guihelpers/bobbypopupdisplay.h handbremse.h icons/alert.h icons/battery.h @@ -215,7 +105,6 @@ set(BOBBY_HEADERS icons/wifi.h ledstrip.h ledstripdefines.h - macros_bobbycar.h modeinterface.h modes.h modes/defaultmode.h @@ -237,16 +126,126 @@ set(BOBBY_HEADERS qrimport.h rotary.h screens.h + screens/aboutmenu.h + screens/batterydebugmenu.h + screens/batterygraphdisplay.h + screens/batteryinfodisplay.h + screens/batterymenu.h + screens/blesettingsmenu.h + screens/bluetoothsettingsmenu.h + screens/bmsdisplay.h + screens/bmsmenu.h + screens/boardcomputerhardwaresettingsmenu.h + guihelpers/bobbygraphdisplay.h + guihelpers/bobbysplitgraphdisplay.h + screens/buzzermenu.h + screens/calibratevoltagedisplay.h + screens/candebugmenu.h + screens/cloudsettingsmenu.h + screens/commanddebugmenu.h + screens/confiscationdisplay.h + screens/controllerhardwaresettingsmenu.h + screens/crashmenu.h + screens/debugmenu.h + screens/defaultmodesettingsmenu.h + screens/demosmenu.h + screens/dynamicdebugmenu.h + screens/enablemenu.h + screens/espnowmenu.h + screens/espnowsettingsmenu.h + screens/extrabuttoncalibratemenu.h + screens/featureflagsmenu.h + screens/feedbackdebugmenu.h + screens/gameoflifedisplay.h + screens/gametrakcalibratedisplay.h + screens/gametrakmodesettingsmenu.h + screens/garagemenu.h + screens/gitmenu.h + screens/graphsmenu.h + screens/greenpassmenu.h + screens/handbremssettingsmenu.h + screens/invertmenu.h + screens/joystickdebugdisplay.h + screens/larsmmodesettingsmenu.h + screens/ledstripcolorsdisplay.h + screens/ledstripmenu.h + screens/ledstripselectblinkmenu.h + screens/ledstripselectotamode.h + screens/limitssettingsmenu.h + screens/lockscreen.h + screens/lockscreensettingsmenu.h + screens/mainmenu.h + screens/manageprofilesmenu.h + guihelpers/menudisplaywithtime.cpp + guihelpers/menudisplaywithtime.h + screens/metersdisplay.h + screens/mickmodesettingsmenu.h + screens/modessettingsmenu.h + screens/mosfetsmenu.h + screens/motorfeedbackdebugmenu.h + screens/motorstatedebugmenu.h + screens/motortestmodesettingsmenu.h + screens/networksettingsmenu.h + screens/otamenu.h + screens/pingpongdisplay.h + screens/poweroffdisplay.h + screens/powersupplydisplay.h + screens/profilesmenu.h + screens/qrcodedebug.h + screens/qrdisplay.h + screens/qrimportdisplay.h + screens/rebootscreen.h + screens/recoverymenu.h + screens/remotecontrolmodesettingsmenu.h + screens/resetnvsscreen.h + screens/selectbuildserverbranch.h + screens/selectbuildservermenu.h + screens/selectmodemenu.h + screens/selectotabuildmenu.h + screens/settingsmenu.h + screens/setup/ask_calibrate_other_buttons.h + screens/setup/ask_setup_clouds.h + screens/setup/basic_buttons.h + screens/setup/calibrate_potis.h + screens/setup/final_information.h + screens/setup/information.h + screens/setup/setup_cloud.h + screens/setupquickactionsmenu.h + screens/speedinfodisplay.h + screens/spirodisplay.h + screens/starfielddisplay.h + screens/statisticsmenu.h + screens/statusdisplay.h + screens/taskmanagermenu.h + screens/tempomatmodesettingsmenu.h + screens/timersmenu.h + screens/timesettingsmenu.h + screens/typesafeenumchangemenu.h + screens/udpcloudsettingsmenu.h + screens/updatedisplay.h + screens/wifiapclientsmenu.h + screens/wifiapsettingsmenu.h + screens/wifistaconfigentrymenu.h + screens/wifistaconfigsmenu.h + screens/wifistascanentrymenu.h + screens/wifistascanmenu.h + screens/wifistasettingsmenu.h + screens/xydebugdisplay.h serial_bobby.h settingspersister.h settingsutils.h setup.h softpwmlimiter.h statistics.h - statustexthelper.h taskmanager.h tempomat.h + texthelpers/bletexthelpers.h + texthelpers/bluetoothtexthelpers.h + texthelpers/cloudtexthelpers.h + texthelpers/debugtexthelpers.h + texthelpers/esptexthelpers.h texthelpers/networktexthelpers.h + texthelpers/statustexthelper.h texthelpers/wifiaptexthelpers.h texthelpers/wifistatexthelpers.h time_bobbycar.h @@ -270,180 +269,47 @@ set(BOBBY_HEADERS set(BOBBY_SOURCES accessors/wifistaconfigaccessors.cpp actions/assertaction.cpp - actions/bluetoothbeginaction.cpp - actions/bluetoothbeginmasteraction.cpp - actions/bluetoothconnectbmsaction.cpp - actions/bluetoothdisconnectaction.cpp - actions/bluetoothendaction.cpp - actions/bluetoothflushaction.cpp - actions/bmsturnoffchargeaction.cpp - actions/bmsturnoffdischargeaction.cpp - actions/bmsturnonchargeaction.cpp - actions/bmsturnondischargeaction.cpp actions/dividebyzeroaction.cpp - actions/erasenvsaction.cpp actions/ledstripanimationactions.cpp actions/ledstripblinkactions.cpp - actions/loadsettingsaction.cpp actions/modesettingsaction.cpp actions/qraction.cpp - actions/rebootaction.cpp - actions/resetnvsaction.cpp - actions/savesettingsaction.cpp actions/setupactions.cpp - actions/switchprofileaction.cpp - actions/tempomatmodeapplycurrentpeedaction.cpp - actions/updateswapfrontbackaction.cpp - actions/wifiscanaction.cpp actions/wifistascanaction.cpp actions/wifistascanclearaction.cpp battery.cpp ble_bobby.cpp - bletexthelpers.cpp bluetooth_bobby.cpp - bluetoothmode.cpp - bluetoothtexthelpers.cpp - bmsutils.cpp bobbyblinker.cpp bobbybuttons.cpp - bobbyerrorhandler.cpp bobbyhupe.cpp bobbyquickactions.cpp buildserver.cpp can.cpp - changevaluedisplay_bluetoothmode.cpp changevaluedisplay_bobbyquickactions.cpp changevaluedisplay_controlmode.cpp changevaluedisplay_controltype.cpp changevaluedisplay_larsmmode_mode.cpp changevaluedisplay_unifiedmodelmode.cpp cloud.cpp - cloudtexthelpers.cpp configwrapper_bobby.cpp controller.cpp - debugcolorhelpers.cpp debuginputhandler.cpp - debugtexthelpers.cpp - displays/batterygraphdisplay.cpp - displays/batteryinfodisplay.cpp - displays/bmsdisplay.cpp - displays/bobbychangevaluedisplay.cpp - displays/bobbydisplay.cpp - displays/bobbydisplaywithtitle.cpp - displays/bobbygraphdisplay.cpp - displays/bobbymenudisplay.cpp - displays/bobbypopupdisplay.cpp - displays/bobbysplitgraphdisplay.cpp - displays/calibratevoltagedisplay.cpp - displays/confiscationdisplay.cpp - displays/gameoflifedisplay.cpp - displays/gametrakcalibratedisplay.cpp - displays/joystickdebugdisplay.cpp - displays/ledstripcolorsdisplay.cpp - displays/lockscreen.cpp - displays/menus/aboutmenu.cpp - displays/menus/batterydebugmenu.cpp - displays/menus/batterymenu.cpp - displays/menus/blesettingsmenu.cpp - displays/menus/bluetoothsettingsmenu.cpp - displays/menus/bmsmenu.cpp - displays/menus/boardcomputerhardwaresettingsmenu.cpp - displays/menus/buzzermenu.cpp - displays/menus/candebugmenu.cpp - displays/menus/cloudsettingsmenu.cpp - displays/menus/commanddebugmenu.cpp - displays/menus/controllerhardwaresettingsmenu.cpp - displays/menus/crashmenu.cpp - displays/menus/debugmenu.cpp - displays/menus/defaultmodesettingsmenu.cpp - displays/menus/demosmenu.cpp - displays/menus/dynamicdebugmenu.cpp - displays/menus/enablemenu.cpp - displays/menus/espnowmenu.cpp - displays/menus/espnowsettingsmenu.cpp - displays/menus/extrabuttoncalibratemenu.cpp - displays/menus/featureflagsmenu.cpp - displays/menus/feedbackdebugmenu.cpp - displays/menus/gametrakmodesettingsmenu.cpp - displays/menus/garagemenu.cpp - displays/menus/gitmenu.cpp - displays/menus/graphsmenu.cpp - displays/menus/greenpassmenu.cpp - displays/menus/handbremssettingsmenu.cpp - displays/menus/invertmenu.cpp - displays/menus/larsmmodesettingsmenu.cpp - displays/menus/ledstripmenu.cpp - displays/menus/ledstripselectblinkmenu.cpp - displays/menus/ledstripselectotamode.cpp - displays/menus/limitssettingsmenu.cpp - displays/menus/lockscreensettingsmenu.cpp - displays/menus/mainmenu.cpp - displays/menus/manageprofilesmenu.cpp - displays/menus/mickmodesettingsmenu.cpp - displays/menus/modessettingsmenu.cpp - displays/menus/mosfetsmenu.cpp - displays/menus/motorfeedbackdebugmenu.cpp - displays/menus/motorstatedebugmenu.cpp - displays/menus/motortestmodesettingsmenu.cpp - displays/menus/networksettingsmenu.cpp - displays/menus/otamenu.cpp - displays/menus/profilesmenu.cpp - displays/menus/recoverymenu.cpp - displays/menus/remotecontrolmodesettingsmenu.cpp - displays/menus/selectbuildserverbranch.cpp - displays/menus/selectbuildservermenu.cpp - displays/menus/selectmodemenu.cpp - displays/menus/selectotabuildmenu.cpp - displays/menus/settingsmenu.cpp - displays/menus/setupquickactionsmenu.cpp - displays/menus/statisticsmenu.cpp - displays/menus/taskmanagermenu.cpp - displays/menus/tempomatmodesettingsmenu.cpp - displays/menus/timersmenu.cpp - displays/menus/timesettingsmenu.cpp - displays/menus/typesafeenumchangemenu.cpp - displays/menus/udpcloudsettingsmenu.cpp - displays/menus/wifiapclientsmenu.cpp - displays/menus/wifiapsettingsmenu.cpp - displays/menus/wifistaconfigentrymenu.cpp - displays/menus/wifistaconfigsmenu.cpp - displays/menus/wifistascanentrymenu.cpp - displays/menus/wifistascanmenu.cpp - displays/menus/wifistasettingsmenu.cpp - displays/metersdisplay.cpp - displays/pingpongdisplay.cpp - displays/potiscalibratedisplay.cpp - displays/poweroffdisplay.cpp - displays/powersupplydisplay.cpp - displays/qrcodedebug.cpp - displays/qrdisplay.cpp - displays/qrimportdisplay.cpp - displays/setup/ask_calibrate_other_buttons.cpp - displays/setup/ask_setup_clouds.cpp - displays/setup/basic_buttons.cpp - displays/setup/calibrate_potis.cpp - displays/setup/final_information.cpp - displays/setup/information.cpp - displays/setup/setup_cloud.cpp - displays/speedinfodisplay.cpp - displays/spirodisplay.cpp - displays/starfielddisplay.cpp - displays/statusdisplay.cpp - displays/updatedisplay.cpp - displays/xydebugdisplay.cpp dnsannounce.cpp - dpad.cpp - dpad3wire.cpp dpad5wire.cpp dpad5wire_2out.cpp dpad6wire.cpp dpad_boardcomputer_v2.cpp drivingstatistics.cpp espnowfunctions.cpp - esptexthelpers.cpp feedbackemulator.cpp - feedbackparser.cpp globals.cpp + guihelpers/bobbychangevaluedisplay.cpp + guihelpers/bobbydisplay.cpp + guihelpers/bobbydisplaywithtitle.cpp + guihelpers/bobbyerrorhandler.cpp + guihelpers/bobbymenudisplay.cpp + guihelpers/bobbypopupdisplay.cpp handbremse.cpp icons/alert.cpp icons/battery.cpp @@ -473,10 +339,7 @@ set(BOBBY_SOURCES icons/update.cpp icons/wifi.cpp ledstrip.cpp - ledstripdefines.cpp - macros_bobbycar.cpp main.cpp - modeinterface.cpp modes.cpp modes/defaultmode.cpp modes/gametrakmode.cpp @@ -493,24 +356,117 @@ set(BOBBY_SOURCES ota.cpp potis.cpp presets.cpp - profilesettings.cpp qrimport.cpp - rotary.cpp screens.cpp + screens/aboutmenu.cpp + screens/batterydebugmenu.cpp + screens/batterygraphdisplay.cpp + screens/batteryinfodisplay.cpp + screens/batterymenu.cpp + screens/blesettingsmenu.cpp + screens/bmsdisplay.cpp + screens/bmsmenu.cpp + screens/boardcomputerhardwaresettingsmenu.cpp + guihelpers/bobbygraphdisplay.cpp + guihelpers/bobbysplitgraphdisplay.cpp + screens/buzzermenu.cpp + screens/calibratevoltagedisplay.cpp + screens/candebugmenu.cpp + screens/cloudsettingsmenu.cpp + screens/confiscationdisplay.cpp + screens/controllerhardwaresettingsmenu.cpp + screens/crashmenu.cpp + screens/debugmenu.cpp + screens/defaultmodesettingsmenu.cpp + screens/demosmenu.cpp + screens/dynamicdebugmenu.cpp + screens/enablemenu.cpp + screens/espnowmenu.cpp + screens/espnowsettingsmenu.cpp + screens/extrabuttoncalibratemenu.cpp + screens/featureflagsmenu.cpp + screens/gameoflifedisplay.cpp + screens/garagemenu.cpp + screens/gitmenu.cpp + screens/graphsmenu.cpp + screens/greenpassmenu.cpp + screens/handbremssettingsmenu.cpp + screens/invertmenu.cpp + screens/joystickdebugdisplay.cpp + screens/larsmmodesettingsmenu.cpp + screens/ledstripcolorsdisplay.cpp + screens/ledstripmenu.cpp + screens/ledstripselectblinkmenu.cpp + screens/ledstripselectotamode.cpp + screens/limitssettingsmenu.cpp + screens/lockscreen.cpp + screens/lockscreensettingsmenu.cpp + screens/mainmenu.cpp + screens/manageprofilesmenu.cpp + screens/metersdisplay.cpp + screens/mickmodesettingsmenu.cpp + screens/modessettingsmenu.cpp + screens/mosfetsmenu.cpp + screens/motortestmodesettingsmenu.cpp + screens/networksettingsmenu.cpp + screens/otamenu.cpp + screens/pingpongdisplay.cpp + screens/poweroffdisplay.cpp + screens/powersupplydisplay.cpp + screens/profilesmenu.cpp + screens/qrcodedebug.cpp + screens/qrdisplay.cpp + screens/qrimportdisplay.cpp + screens/rebootscreen.cpp + screens/recoverymenu.cpp + screens/remotecontrolmodesettingsmenu.cpp + screens/resetnvsscreen.cpp + screens/selectbuildserverbranch.cpp + screens/selectbuildservermenu.cpp + screens/selectmodemenu.cpp + screens/selectotabuildmenu.cpp + screens/settingsmenu.cpp + screens/setup/ask_calibrate_other_buttons.cpp + screens/setup/ask_setup_clouds.cpp + screens/setup/basic_buttons.cpp + screens/setup/calibrate_potis.cpp + screens/setup/final_information.cpp + screens/setup/information.cpp + screens/setup/setup_cloud.cpp + screens/setupquickactionsmenu.cpp + screens/speedinfodisplay.cpp + screens/spirodisplay.cpp + screens/starfielddisplay.cpp + screens/statisticsmenu.cpp + screens/statusdisplay.cpp + screens/taskmanagermenu.cpp + screens/tempomatmodesettingsmenu.cpp + screens/timersmenu.cpp + screens/timesettingsmenu.cpp + screens/typesafeenumchangemenu.cpp + screens/udpcloudsettingsmenu.cpp + screens/updatedisplay.cpp + screens/wifiapclientsmenu.cpp + screens/wifiapsettingsmenu.cpp + screens/wifistaconfigentrymenu.cpp + screens/wifistaconfigsmenu.cpp + screens/wifistascanentrymenu.cpp + screens/wifistascanmenu.cpp + screens/wifistasettingsmenu.cpp + screens/xydebugdisplay.cpp serial_bobby.cpp settingspersister.cpp settingsutils.cpp setup.cpp softpwmlimiter.cpp statistics.cpp - statustexthelper.cpp taskmanager.cpp tempomat.cpp + texthelpers/cloudtexthelpers.cpp texthelpers/networktexthelpers.cpp texthelpers/wifiaptexthelpers.cpp texthelpers/wifistatexthelpers.cpp time_bobbycar.cpp - types.cpp udpcloud.cpp unifiedmodelmode.cpp utils.cpp diff --git a/main/actions/bluetoothbeginmasteraction.cpp b/main/actions/bluetoothbeginmasteraction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bluetoothconnectbmsaction.cpp b/main/actions/bluetoothconnectbmsaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bluetoothdisconnectaction.cpp b/main/actions/bluetoothdisconnectaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bluetoothendaction.cpp b/main/actions/bluetoothendaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bluetoothflushaction.cpp b/main/actions/bluetoothflushaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bmsturnoffchargeaction.cpp b/main/actions/bmsturnoffchargeaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bmsturnoffdischargeaction.cpp b/main/actions/bmsturnoffdischargeaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bmsturnonchargeaction.cpp b/main/actions/bmsturnonchargeaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/bmsturnondischargeaction.cpp b/main/actions/bmsturnondischargeaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/erasenvsaction.cpp b/main/actions/erasenvsaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/ledstripanimationactions.cpp b/main/actions/ledstripanimationactions.cpp index 4f39d63..03ecc4e 100644 --- a/main/actions/ledstripanimationactions.cpp +++ b/main/actions/ledstripanimationactions.cpp @@ -1,8 +1 @@ #include "ledstripanimationactions.h" -#ifdef FEATURE_LEDSTRIP -void LedStripSetAnimationAction::triggered() -{ - if (auto result = configs.write_config(configs.ledstrip.animationType, m_animation); !result) - BobbyErrorHandler{}.errorOccured(std::move(result).error()); -} -#endif diff --git a/main/actions/ledstripanimationactions.h b/main/actions/ledstripanimationactions.h index 668b1ce..d6a5a43 100644 --- a/main/actions/ledstripanimationactions.h +++ b/main/actions/ledstripanimationactions.h @@ -7,7 +7,9 @@ #include "ledstrip.h" #include "ledstripdefines.h" #include "newsettings.h" -#include "bobbyerrorhandler.h" +#include "guihelpers/bobbyerrorhandler.h" + +namespace bobby { template class LedStripSetAnimationActionStatic : public virtual espgui::ActionInterface @@ -24,7 +26,13 @@ class LedStripSetAnimationAction : public virtual espgui::ActionInterface { public: LedStripSetAnimationAction(LedstripAnimation animation) : m_animation{animation} {}; - void triggered() override; + void triggered() + { + if (auto result = configs.write_config(configs.ledstrip.animationType, m_animation); !result) + BobbyErrorHandler{}.errorOccurred(std::move(result).error()); + } private: const LedstripAnimation m_animation; }; + +} // namespace bobby diff --git a/main/actions/loadsettingsaction.cpp b/main/actions/loadsettingsaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/modesettingsaction.cpp b/main/actions/modesettingsaction.cpp index e694a24..51df90c 100644 --- a/main/actions/modesettingsaction.cpp +++ b/main/actions/modesettingsaction.cpp @@ -17,15 +17,17 @@ #include "modes/wheelchairmode.h" #endif #include "modes/remotecontrolmode.h" -#include "displays/menus/defaultmodesettingsmenu.h" -#include "displays/menus/tempomatmodesettingsmenu.h" -#include "displays/menus/larsmmodesettingsmenu.h" +#include "screens/defaultmodesettingsmenu.h" +#include "screens/tempomatmodesettingsmenu.h" +#include "screens/larsmmodesettingsmenu.h" #ifdef FEATURE_GAMETRAK -#include "displays/menus/gametrakmodesettingsmenu.h" +#include "screens/gametrakmodesettingsmenu.h" #endif -#include "displays/menus/mickmodesettingsmenu.h" -#include "displays/menus/motortestmodesettingsmenu.h" -#include "displays/menus/remotecontrolmodesettingsmenu.h" +#include "screens/mickmodesettingsmenu.h" +#include "screens/motortestmodesettingsmenu.h" +#include "screens/remotecontrolmodesettingsmenu.h" + +namespace bobby { void ModeSettingsAction::triggered() { @@ -54,3 +56,4 @@ void ModeSettingsAction::triggered() //Serial.println("Unknown mode, cannot open settings for it"); } } +} // namespace bobby diff --git a/main/actions/modesettingsaction.h b/main/actions/modesettingsaction.h index b930b50..6710e01 100644 --- a/main/actions/modesettingsaction.h +++ b/main/actions/modesettingsaction.h @@ -1,6 +1,9 @@ #pragma once -#include "actioninterface.h" +// 3rdparty lib includes +#include + +namespace bobby { using namespace espgui; @@ -9,3 +12,4 @@ class ModeSettingsAction : public virtual ActionInterface public: void triggered() override; }; +} // namespace bobby diff --git a/main/actions/qraction.h b/main/actions/qraction.h index 4ed0f0d..f16212e 100644 --- a/main/actions/qraction.h +++ b/main/actions/qraction.h @@ -7,9 +7,8 @@ #include // local includes -#include "actions/qraction.h" -#include "displays/qrdisplay.h" -#include "displays/qrimportdisplay.h" +#include "screens/qrdisplay.h" +#include "screens/qrimportdisplay.h" namespace qraction { struct QrMenu { @@ -26,7 +25,7 @@ public: void triggered() override { - espgui::pushScreen(m_msg); + espgui::pushScreen(m_msg); } private: std::string m_msg; @@ -40,7 +39,16 @@ public: void triggered() override { - espgui::pushScreen(std::move(m_nvskey)); + espgui::changeScreenCallback = [&](espgui::TftInterface &tft){ + espgui::pushScreenInternal(); + + auto newDisplay = std::make_unique(std::move(m_nvskey), tft); + newDisplay->start(); + newDisplay->initScreen(tft); + newDisplay->update(); + newDisplay->redraw(tft); + espgui::currentDisplay = std::move(newDisplay); + }; } private: std::string m_nvskey; diff --git a/main/actions/rebootaction.cpp b/main/actions/rebootaction.cpp deleted file mode 100644 index 138fa76..0000000 --- a/main/actions/rebootaction.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "rebootaction.h" - -// esp-idf includes -#include - -// 3rdparty lib includes -#include - -void RebootAction::triggered() -{ - espgui::tft.fillScreen(TFT_BLACK); - espgui::tft.setTextColor(TFT_YELLOW); - - espgui::tft.drawString("Reboot", 5, 5, 4); - - espgui::tft.fillRect(0, 34, espgui::tft.width(), 3, TFT_WHITE); - - espgui::tft.setTextColor(TFT_WHITE); - espgui::tft.drawString("Rebooting now...", 0, 50, 4); - - esp_restart(); -} diff --git a/main/actions/rebootaction.h b/main/actions/rebootaction.h deleted file mode 100644 index 757ba3c..0000000 --- a/main/actions/rebootaction.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -// 3rdparty lib includes -#include - -class RebootAction : public virtual espgui::ActionInterface -{ -public: - void triggered() override; -}; diff --git a/main/actions/resetnvsaction.cpp b/main/actions/resetnvsaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/resetnvsaction.h b/main/actions/resetnvsaction.h index 1ac898e..b511cb3 100644 --- a/main/actions/resetnvsaction.h +++ b/main/actions/resetnvsaction.h @@ -5,36 +5,16 @@ // 3rdparty lib includes #include -#include + // local includes #include "newsettings.h" -template class ResetNVSAction : public virtual espgui::ActionInterface { public: void triggered() override { - if (reboot) - { - espgui::tft.fillScreen(TFT_BLACK); - espgui::tft.setTextColor(TFT_YELLOW); - - espgui::tft.drawString("Reboot", 5, 5, 4); - - espgui::tft.fillRect(0, 34, espgui::tft.width(), 3, TFT_WHITE); - - espgui::tft.setTextColor(TFT_WHITE); - espgui::tft.drawString("Rebooting now...", 0, 50, 4); - - configs.reset(); - - esp_restart(); - } - else - { - configs.reset(); - } + configs.reset(); } }; diff --git a/main/actions/savesettingsaction.cpp b/main/actions/savesettingsaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/setupactions.cpp b/main/actions/setupactions.cpp index 1bd1488..95134fa 100644 --- a/main/actions/setupactions.cpp +++ b/main/actions/setupactions.cpp @@ -4,8 +4,10 @@ #include // local includes -#include "displays/setup/basic_buttons.h" -#include "displays/setup/calibrate_potis.h" +#include "screens/setup/basic_buttons.h" +#include "screens/setup/calibrate_potis.h" + +namespace bobby { PushButtonCalibrateDisplayAction::PushButtonCalibrateDisplayAction(const bool early_return) : m_early_return{early_return} @@ -22,5 +24,6 @@ PushPotiCalibrateDisplayAction::PushPotiCalibrateDisplayAction(const bool early_ void PushPotiCalibrateDisplayAction::triggered() { - // espgui::pushScreen(m_early_return); // commented out until implemented + espgui::pushScreen(m_early_return); } +} // namespace bobby diff --git a/main/actions/setupactions.h b/main/actions/setupactions.h index bd3fd43..a8e0b1e 100644 --- a/main/actions/setupactions.h +++ b/main/actions/setupactions.h @@ -3,6 +3,8 @@ // 3rdparty lib includes #include +namespace bobby { + class PushButtonCalibrateDisplayAction : public virtual espgui::ActionInterface { public: @@ -22,3 +24,4 @@ public: private: const bool m_early_return; }; +} // namespace bobby diff --git a/main/actions/switchprofileaction.cpp b/main/actions/switchprofileaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/tempomatmodeapplycurrentpeedaction.cpp b/main/actions/tempomatmodeapplycurrentpeedaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/updateswapfrontbackaction.cpp b/main/actions/updateswapfrontbackaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/actions/wifiscanaction.cpp b/main/actions/wifiscanaction.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/ble_bobby.cpp b/main/ble_bobby.cpp index 74c7ef9..51a2f23 100644 --- a/main/ble_bobby.cpp +++ b/main/ble_bobby.cpp @@ -8,12 +8,12 @@ #include // local includes -#include "ledstrip.h" #include "globals.h" +#include "ledstrip.h" #include "modes/defaultmode.h" #include "modes/remotecontrolmode.h" -#include "utils.h" #include "newsettings.h" +#include "utils.h" namespace { constexpr const char * const TAG = "BOBBYBLE"; diff --git a/main/bletexthelpers.cpp b/main/bletexthelpers.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/bluetoothmode.cpp b/main/bluetoothmode.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/bluetoothtexthelpers.cpp b/main/bluetoothtexthelpers.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/bmsutils.cpp b/main/bmsutils.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/bobbyerrorhandler.cpp b/main/bobbyerrorhandler.cpp deleted file mode 100644 index a8cb145..0000000 --- a/main/bobbyerrorhandler.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "bobbyerrorhandler.h" - -// 3rdparty lib includes -#include - -// local includes -#include "displays/bobbypopupdisplay.h" - -void BobbyErrorHandler::errorOccurred(std::string &&error) -{ - auto newDisplay = std::make_unique(std::move(error), std::move(espgui::currentDisplay)); - newDisplay->initOverlay(); - espgui::currentDisplay = std::move(newDisplay); -} diff --git a/main/changevaluedisplay_bluetoothmode.cpp b/main/changevaluedisplay_bluetoothmode.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/cloud.cpp b/main/cloud.cpp index 6ff03e9..8ec95e0 100644 --- a/main/cloud.cpp +++ b/main/cloud.cpp @@ -13,15 +13,15 @@ #include #include #include -#include #include #include // local includes -#include "bobbyerrorhandler.h" #include "globals.h" +#include "guihelpers/bobbyerrorhandler.h" #include "newsettings.h" #include "ota.h" +#include "screens.h" #include "typeutils.h" #include "utils.h" @@ -770,7 +770,7 @@ std::string getLoginMessage() { using namespace espgui; return fmt::format(R"({{"type": "hello", "name": "{}", "res": "{}x{}", "pass": "{}", "key": "{}"}})", - configs.otaUsername.value(), tft.width(), tft.height(), configs.webserverPassword.value(), configs.cloudSettings.cloudKey.value()); + configs.otaUsername.value(), bobby::getScreenWidth(), bobby::getScreenHeight(), configs.webserverPassword.value(), configs.cloudSettings.cloudKey.value()); } void cloudEventHandler(void *event_handler_arg, esp_event_base_t event_base, int32_t event_id, void *event_data) @@ -810,7 +810,7 @@ void cloudEventHandler(void *event_handler_arg, esp_event_base_t event_base, int std::string id = doc["id"]; doc.clear(); ESP_LOGI(TAG, "popup: %s, id: %s", text.c_str(), id.c_str()); - BobbyErrorHandler{}.errorOccurred(std::move(text)); + bobby::BobbyErrorHandler{}.errorOccurred(std::move(text)); if (id.empty()) return; diff --git a/main/debugcolorhelpers.cpp b/main/debugcolorhelpers.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/debugcolorhelpers.h b/main/debugcolorhelpers.h index 0d20cde..445cb38 100644 --- a/main/debugcolorhelpers.h +++ b/main/debugcolorhelpers.h @@ -1,11 +1,15 @@ #pragma once -#include "colorinterface.h" +// 3rdparty lib includes +#include +#include + +// local includes #include "globals.h" namespace { template -class FeedbackColor : public virtual ColorInterface { public: int color() const { return Tcontroller::get().feedbackValid ? TsuccessColor : TFT_RED; } }; +class FeedbackColor : public virtual ColorInterface { public: int color() const { return Tcontroller::get().feedbackValid ? TsuccessColor : espgui::TFT_RED; } }; template using FrontFeedbackColor = FeedbackColor; diff --git a/main/debuginputhandler.cpp b/main/debuginputhandler.cpp index d82c104..06f4f57 100644 --- a/main/debuginputhandler.cpp +++ b/main/debuginputhandler.cpp @@ -8,17 +8,17 @@ #include // 3rdparty lib includes -#include -#include -#include #include #include +#include +#include // local includes -#include "globals.h" -#include "utils.h" #include "bobbybuttons.h" #include "bobbyquickactions.h" +#include "globals.h" +#include "screens.h" +#include "utils.h" namespace { constexpr const char * const TAG = "DEBUG"; @@ -117,7 +117,7 @@ void handleNormalChar(char c) { case 'i': case 'I': - espgui::tft.init(); + bobby::tft_init(); break; case 'p': case 'P': diff --git a/main/debugtexthelpers.cpp b/main/debugtexthelpers.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/batterygraphdisplay.h b/main/displays/batterygraphdisplay.h deleted file mode 100644 index df2723e..0000000 --- a/main/displays/batterygraphdisplay.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -// local includes -#include "bobbydisplaywithtitle.h" - -class BatteryGraphDisplay : public BobbyDisplayWithTitle { - using Base = BobbyDisplayWithTitle; - -public: - std::string text() const override; - void initScreen() override; - void redraw() override; - - void buttonPressed(espgui::Button button) override; - - static void drawBatteryCurve(); - -private: - float m_lastBatVoltage{0}; -}; diff --git a/main/displays/gametrakcalibratedisplay.cpp b/main/displays/gametrakcalibratedisplay.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/ledstripcolorsdisplay.h b/main/displays/ledstripcolorsdisplay.h deleted file mode 100644 index 2823d14..0000000 --- a/main/displays/ledstripcolorsdisplay.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -// system includes -#include - -// 3rdparty lib includes -#include - -// local includes -#include "bobbydisplaywithtitle.h" -#include "ledstrip.h" - -class LedstripColorsDisplay : public BobbyDisplayWithTitle -{ - using Base = BobbyDisplayWithTitle; - -public: - std::string text() const override; - void initScreen() override; - void redraw() override; - - void buttonPressed(espgui::Button button) override; - - void drawColors(); - void drawSide(Bobbycar_Side side, unsigned int color); - void clearSides(); - -private: - bool already_drew_circle{false}; -}; diff --git a/main/displays/menudisplaywithtime.cpp b/main/displays/menudisplaywithtime.cpp deleted file mode 100644 index c3be460..0000000 --- a/main/displays/menudisplaywithtime.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "menudisplaywithtime.h" - -// 3rdparty lib includes -#include -#include - -// local includes -#include "utils.h" - -using namespace espgui; - -namespace bobbygui { -void MenuDisplayWithTime::start() -{ - Base::start(); - m_label_currentTime.start(); -} - -void MenuDisplayWithTime::redraw() -{ - Base::redraw(); - tft.setTextFont(use_big_font() ? 4 : 2); - m_label_currentTime.redraw(fmt::format("&7Time: {}", local_clock_string())); -} - -} // namespace diff --git a/main/displays/menus/batterymenu.h b/main/displays/menus/batterymenu.h deleted file mode 100644 index d6912b4..0000000 --- a/main/displays/menus/batterymenu.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -// local includes -#include "displays/bobbymenudisplay.h" -#include "widgets/doubleprogressbar.h" -#include "widgets/label.h" - -class BatteryMenu : public BobbyMenuDisplay -{ - using Base = BobbyMenuDisplay; - -public: - BatteryMenu(); - - std::string text() const override; - - void initScreen() override; - void start() override; - void redraw() override; - void back() override; - -private: - bobbygui::DoubleProgressBar m_doubleProgressBarBatPercentage{75, 68, 90, 24, 0, 100, TFT_RED, TFT_GREEN}; - espgui::Label m_batPercentNowLabel {170, 68}; - espgui::Label m_batPercentBootLabel{170, 82}; -}; diff --git a/main/displays/menus/bluetoothsettingsmenu.cpp b/main/displays/menus/bluetoothsettingsmenu.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/menus/commanddebugmenu.cpp b/main/displays/menus/commanddebugmenu.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/menus/featureflagsmenu.h b/main/displays/menus/featureflagsmenu.h deleted file mode 100644 index 89497d0..0000000 --- a/main/displays/menus/featureflagsmenu.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -// local includes -#include "displays/menudisplaywithtime.h" - -class FeatureFlagsMenu : public bobbygui::MenuDisplayWithTime -{ - using Base = bobbygui::MenuDisplayWithTime; -public: - FeatureFlagsMenu(); - void start() override; - - std::string text() const override; - - void back() override; -}; diff --git a/main/displays/menus/feedbackdebugmenu.cpp b/main/displays/menus/feedbackdebugmenu.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/menus/gametrakmodesettingsmenu.cpp b/main/displays/menus/gametrakmodesettingsmenu.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/menus/gitmenu.h b/main/displays/menus/gitmenu.h deleted file mode 100644 index f733520..0000000 --- a/main/displays/menus/gitmenu.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -// local includes -#include "displays/menudisplaywithtime.h" - -class GitMenu : public bobbygui::MenuDisplayWithTime -{ -public: - GitMenu(); - - std::string text() const override; - - void back() override; -}; diff --git a/main/displays/menus/ledstripmenu.h b/main/displays/menus/ledstripmenu.h deleted file mode 100644 index 2b8dce0..0000000 --- a/main/displays/menus/ledstripmenu.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -// local includes -#include "displays/menudisplaywithtime.h" - -class LedstripMenu : public bobbygui::MenuDisplayWithTime -{ -public: - LedstripMenu(); - - std::string text() const override; - - void back() override; -}; diff --git a/main/displays/menus/motorfeedbackdebugmenu.cpp b/main/displays/menus/motorfeedbackdebugmenu.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/menus/motorstatedebugmenu.cpp b/main/displays/menus/motorstatedebugmenu.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/displays/menus/settingsmenu.h b/main/displays/menus/settingsmenu.h deleted file mode 100644 index 436efce..0000000 --- a/main/displays/menus/settingsmenu.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -// local includes -#include "displays/menudisplaywithtime.h" - -class SettingsMenu : public bobbygui::MenuDisplayWithTime -{ -public: - SettingsMenu(); - - std::string text() const override; - - void back() override; -}; diff --git a/main/displays/menus/statisticsmenu.h b/main/displays/menus/statisticsmenu.h deleted file mode 100644 index fd5b59d..0000000 --- a/main/displays/menus/statisticsmenu.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -// Local includes -#include "displays/menudisplaywithtime.h" - -class StatisticsMenu : public bobbygui::MenuDisplayWithTime -{ -public: - StatisticsMenu(); - - std::string text() const override; - - void back() override; -}; diff --git a/main/displays/menus/timesettingsmenu.h b/main/displays/menus/timesettingsmenu.h deleted file mode 100644 index 764825f..0000000 --- a/main/displays/menus/timesettingsmenu.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -// local includes -#include "displays/menudisplaywithtime.h" - -class TimeSettingsMenu : public bobbygui::MenuDisplayWithTime -{ -public: - TimeSettingsMenu(); - - std::string text() const override; - - void back() override; -}; diff --git a/main/displays/metersdisplay.cpp b/main/displays/metersdisplay.cpp deleted file mode 100644 index e71941f..0000000 --- a/main/displays/metersdisplay.cpp +++ /dev/null @@ -1,72 +0,0 @@ -#include "metersdisplay.h" - -// 3rdparty lib includes -#include -#include - -// local includes -#include "displays/batteryinfodisplay.h" -#include "displays/menus/mainmenu.h" -#include "displays/statusdisplay.h" -#include "globals.h" -#include "utils.h" - -using namespace espgui; - -void MetersDisplay::initScreen() -{ - Base::initScreen(); - - tft.fillScreen(TFT_BLACK); - - m_vuMeter.start(); - - m_dischargingBar.start(); - m_chargingBar.start(); - - m_sumCurrentLabel.start(); - - for (auto &meter : meters) - meter.start(); -} - -void MetersDisplay::redraw() -{ - Base::redraw(); - - m_vuMeter.redraw(avgSpeedKmh); - - m_dischargingBar.redraw(sumCurrent<0.f?(-sumCurrent):0.f); - m_chargingBar.redraw(sumCurrent>0.f?sumCurrent:0.f); - - tft.setTextColor(TFT_WHITE, TFT_BLACK); - tft.setTextFont(2); - m_sumCurrentLabel.redraw(fmt::format("{:.02f}A", sumCurrent)); - - meters[0].redraw(controllers.front.getCalibratedVoltage(), 35, 50); - meters[1].redraw(controllers.back.getCalibratedVoltage(), 35, 50); - meters[2].redraw(fixCurrent(controllers.front.feedback.left.dcLink), -10, 10); - meters[3].redraw(fixCurrent(controllers.front.feedback.right.dcLink), -10, 10); - meters[4].redraw(fixCurrent(controllers.back.feedback.left.dcLink), -10, 10); - meters[5].redraw(fixCurrent(controllers.back.feedback.right.dcLink), -10, 10); -} - -void MetersDisplay::buttonPressed(espgui::Button button) -{ - Base::buttonPressed(button); - - switch (button) - { - using espgui::Button; - case Button::Right: - pushScreen(); - break; - case Button::Up: - switchScreen(); - break; - case Button::Down: - switchScreen(); - break; - default:; - } -} diff --git a/main/displays/potiscalibratedisplay.cpp b/main/displays/potiscalibratedisplay.cpp deleted file mode 100644 index 0b75e91..0000000 --- a/main/displays/potiscalibratedisplay.cpp +++ /dev/null @@ -1,324 +0,0 @@ -#include "potiscalibratedisplay.h" - -// 3rdparty lib includes -#include - -// local includes -#include "actions/switchscreenaction.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" -#include "displays/menus/mainmenu.h" -#include "displays/statusdisplay.h" -#include "globals.h" -#include "newsettings.h" -#include "utils.h" - -namespace { -constexpr char TEXT_CALIBRATE[] = "Potis Calibrate"; -} // namespace - -/* -std::string PotisCalibrateDisplay::text() const -{ - return TEXT_CALIBRATE; -} - -void PotisCalibrateDisplay::start() -{ - Base::start(); - - m_oldMode = currentMode; - currentMode = &m_mode; - m_selectedButton = 0; - m_status = Status::Begin; - copyFromSettings(); - m_gas = std::nullopt; - m_brems = std::nullopt; -} - -void PotisCalibrateDisplay::initScreen() -{ - Base::initScreen(); - - espgui::tft.setTextFont(4); - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - - espgui::tft.drawString("gas:", 25, 47); - espgui::tft.drawString("brems:", 25, 147); - - for (auto &label : m_labels) - label.start(); - - for (auto &progressBar : m_progressBars) - progressBar.start(); - - m_renderedButton = -1; -} - -void PotisCalibrateDisplay::update() -{ - Base::update(); - - if (raw_gas) - m_gas = cpputils::mapValueClamped(*raw_gas, m_gasMin, m_gasMax, 0.f, 1000.f); - else - m_gas = std::nullopt; - - if (raw_brems) - m_brems = cpputils::mapValueClamped(*raw_brems, m_bremsMin, m_bremsMax, 0.f, 1000.f); - else - m_brems = std::nullopt; -} - -void PotisCalibrateDisplay::redraw() -{ - Base::redraw(); - - m_labels[0].redraw(m_gas ? fmt::format("{:.02f}", *m_gas) : "?"); - m_labels[1].redraw(raw_gas ? std::to_string(*raw_gas) : "?"); - if (m_status == Status::GasMin) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[2].redraw(std::to_string(m_gasMin)); - if (m_status == Status::GasMin) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - if (m_status == Status::GasMax) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[3].redraw(std::to_string(m_gasMax)); - if (m_status == Status::GasMax) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - - m_progressBars[0].redraw(m_gas ? *m_gas : 0); - - m_labels[4].redraw(m_brems ? fmt::format("{:.02f}", *m_brems) : "?"); - m_labels[5].redraw(raw_brems ? std::to_string(*raw_brems) : "?"); - if (m_status == Status::BremsMin) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[6].redraw(std::to_string(m_bremsMin)); - if (m_status == Status::BremsMin) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - if (m_status == Status::BremsMax) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[7].redraw(std::to_string(m_bremsMax)); - if (m_status == Status::BremsMax) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - - m_progressBars[1].redraw(m_brems ? *m_brems : 0); - - m_labels[8].redraw([&](){ - switch (m_status) - { - case Status::Begin: return "Start calibrating?"; -#ifdef FEATURE_JOYSTICK - case Status::Mitte: return "Release joystick"; -#endif - case Status::GasMin: return "Release gas"; - case Status::GasMax: return "Press gas"; - case Status::BremsMin: return "Release brems"; - case Status::BremsMax: return "Press brems"; - case Status::Confirm: return "Verify"; - } - __builtin_unreachable(); - }()); - - { - const auto failed = !m_gas || !m_brems || (m_status == Status::Confirm && (*m_gas > 100 || *m_brems > 100)); - const auto color = failed ? TFT_DARKGREY : TFT_WHITE; - espgui::tft.setTextColor(color, TFT_BLACK); - m_labels[9].redraw([&](){ - switch (m_status) - { - case Status::Begin: return "Yes"; -#ifdef FEATURE_JOYSTICK - case Status::Mitte: -#endif - case Status::GasMin: - case Status::GasMax: - case Status::BremsMin: - case Status::BremsMax: return "Next"; - case Status::Confirm: return "Save"; - } - __builtin_unreachable(); - }()); - - if (m_selectedButton != m_renderedButton && (m_selectedButton == 0 || m_renderedButton == 0)) - espgui::tft.drawRect(3, 275, 100, 27, m_selectedButton == 0 ? color : TFT_BLACK); - } - - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - m_labels[10].redraw([&](){ - switch (m_status) - { - case Status::Begin: return "No"; -#ifdef FEATURE_JOYSTICK - case Status::Mitte: -#endif - case Status::GasMin: - case Status::GasMax: - case Status::BremsMin: - case Status::BremsMax: - case Status::Confirm: return "Abort"; - } - __builtin_unreachable(); - }()); - - if (m_selectedButton != m_renderedButton && (m_selectedButton == 1 || m_renderedButton == 1)) - espgui::tft.drawRect(123, 275, 100, 27, m_selectedButton == 1 ? TFT_WHITE : TFT_BLACK); - - m_renderedButton = m_selectedButton; -} - -void PotisCalibrateDisplay::stop() -{ - Base::stop(); - - if (currentMode == &m_mode) - { - // to avoid crash after deconstruction - m_mode.stop(); - lastMode = nullptr; - - currentMode = m_oldMode; - } -} - -void PotisCalibrateDisplay::buttonPressed(espgui::Button button) -{ - Base::buttonPressed(button); - - switch (button) - { - using espgui::Button; - case Button::Up: - m_selectedButton--; - - if (m_selectedButton < 0) - m_selectedButton = 1; - - break; - case Button::Down: - m_selectedButton++; - - if (m_selectedButton > 1) - m_selectedButton = 0; - - break; - case Button::Left: - back: - switch (m_status) - { - case Status::Begin: - if (m_bootup) - espgui::switchScreen(); - else if (configs.lockscreen.keepLockedAfterReboot.value() && configs.lockscreen.locked.value()) - { - espgui::switchScreen(); - configs.write_config(configs.lockscreen.locked, false); - } - else - espgui::switchScreen(); - break; -#ifdef FEATURE_JOYSTICK - case Status::Mitte: -#endif - case Status::GasMin: - case Status::GasMax: - case Status::BremsMin: - case Status::BremsMax: - case Status::Confirm: - m_selectedButton = 0; - m_status = Status::Begin; - copyFromSettings(); - } - - break; - case Button::Right: - switch (m_selectedButton) - { - case 0: // left button pressed - if (!raw_gas || !raw_brems || !m_gas || !m_brems) - return; - - switch (m_status) - { -#ifndef FEATURE_JOYSTICK - case Status::Begin: - m_status = Status::GasMin; - break; -#else - case Status::Begin: - m_status = Status::Mitte; - break; - - case Status::Mitte: - m_gasMitte = *raw_gas; - m_bremsMitte = *raw_brems; - m_status = Status::GasMin; - break; -#endif - case Status::GasMin: - m_gasMin = *raw_gas; - m_status = Status::GasMax; - break; - case Status::GasMax: - m_gasMax = *raw_gas; - m_status = Status::BremsMin; - { - const auto dead = (m_gasMax - m_gasMin)/20; - m_gasMin += dead; - m_gasMax -= dead; - } - break; - case Status::BremsMin: - m_bremsMin = *raw_brems; - m_status = Status::BremsMax; - break; - case Status::BremsMax: - m_bremsMax = *raw_brems; - m_status = Status::Confirm; - { - const auto dead = (m_bremsMax - m_bremsMin)/20; - m_bremsMin += dead; - m_bremsMax -= dead; - } - break; - case Status::Confirm: - if (*m_gas > 100 || *m_brems > 100) - return; - copyToSettings(); - saveProfileSettings(); - if (m_bootup) - espgui::switchScreen(); - else - espgui::switchScreen(); - } - break; - case 1: // right button pressed - goto back; - } - break; - } -} - -void PotisCalibrateDisplay::copyFromSettings() -{ -#ifdef FEATURE_JOYSTICK - m_gasMitte = configs.gasMitte.value(); - m_bremsMitte = configs.bremsMitte.value(); -#endif - m_gasMin = configs.gasMin.value(); - m_gasMax = configs.gasMax.value(); - m_bremsMin = configs.bremsMin.value(); - m_bremsMax = configs.bremsMax.value(); -} - -void PotisCalibrateDisplay::copyToSettings() -{ -#ifdef FEATURE_JOYSTICK - configs.write_config(configs.gasMitte, m_gasMitte); - configs.write_config(configs.bremsMitte, m_bremsMitte); -#endif - configs.write_config(configs.gasMin, m_gasMin); - configs.write_config(configs.gasMax, m_gasMax); - configs.write_config(configs.bremsMin, m_bremsMin); - configs.write_config(configs.bremsMax, m_bremsMax); -} -*/ diff --git a/main/displays/potiscalibratedisplay.h b/main/displays/potiscalibratedisplay.h deleted file mode 100644 index 82c6b86..0000000 --- a/main/displays/potiscalibratedisplay.h +++ /dev/null @@ -1,94 +0,0 @@ -#pragma once - -// system includes -#include -#include -#include - -// 3rdparty lib includes -#include -#include -#include -#include - -// local includes -#include "bobbydisplaywithtitle.h" -#include "modeinterface.h" -#include "modes/ignoreinputmode.h" - -/* -class PotisCalibrateDisplay : public BobbyDisplayWithTitle -{ - using Base = BobbyDisplayWithTitle; - -public: - PotisCalibrateDisplay() = default; - explicit PotisCalibrateDisplay(bool bootup) : m_bootup{bootup} {} - - std::string text() const override; - void start() override; - void initScreen() override; - void update() override; - void redraw() override; - void stop() override; - - void buttonPressed(espgui::Button button) override; - -private: - void copyFromSettings(); - void copyToSettings(); - - const bool m_bootup{false}; - ModeInterface *m_oldMode; - IgnoreInputMode m_mode{0, bobbycar::protocol::ControlType::FieldOrientedControl, bobbycar::protocol::ControlMode::Torque}; - - std::array m_labels {{ - espgui::Label{25, 72}, // 100, 23 - espgui::Label{145, 72}, // 100, 23 - espgui::Label{25, 97}, // 100, 23 - espgui::Label{145, 97}, // 100, 23 - - espgui::Label{25, 172}, // 100, 23 - espgui::Label{145, 172}, // 100, 23 - espgui::Label{25, 197}, // 100, 23 - espgui::Label{145, 197}, // 100, 23 - - espgui::Label{25, 247}, // 190, 23 - - espgui::Label{25, 277}, // 100, 23 - espgui::Label{145, 277}, // 100, 23 - }}; - - std::array m_progressBars {{ - espgui::ProgressBar{20, 129, 200, 10, 0, 1000}, - espgui::ProgressBar{20, 229, 200, 10, 0, 1000} - }}; - - enum Status { - Begin, -#ifdef FEATURE_JOYSTICK - Mitte, -#endif - GasMin, - GasMax, - BremsMin, - BremsMax, - Confirm - }; - - int8_t m_selectedButton, m_renderedButton; - - Status m_status; - int16_t - m_gasMin, - m_gasMax, - m_bremsMin, - m_bremsMax -#ifdef FEATURE_JOYSTICK - ,m_gasMitte - ,m_bremsMitte -#endif - ; - std::optional m_gas, m_brems; -}; -*/ diff --git a/main/displays/qrcodedebug.cpp b/main/displays/qrcodedebug.cpp deleted file mode 100644 index 3861478..0000000 --- a/main/displays/qrcodedebug.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "qrcodedebug.h" - -// 3rdparty lib includes -#include -#include - -// local includes -#include "globals.h" -#include "screenmanager.h" -#include "newsettings.h" - -using namespace espgui; - -QrCodeDebugDisplay::QrCodeDebugDisplay() -{ -} - -void QrCodeDebugDisplay::initScreen() -{ - Base::initScreen(); -} - -void QrCodeDebugDisplay::buttonPressed(espgui::Button button) -{ - Base::buttonPressed(button); - - switch (button) - { - using espgui::Button; - case Button::Left: popScreen(); break; - case Button::Right: - { - uint8_t qrcodeBytes[qrcode_getBufferSize(7)]; - qrcode_initText(&m_qrcode, qrcodeBytes, 7, ECC_MEDIUM, fmt::format("WIFI:T:WPA;S:{};P:{};", configs.wifiApName.value(), configs.wifiApKey.value()).c_str()); - - for (uint8_t y = 0; y < m_qrcode.size; y++) { - for (uint8_t x = 0; x < m_qrcode.size; x++) { - if (qrcode_getModule(&m_qrcode, x, y)) - { - tft.drawPixel(x+2,y+2, TFT_BLACK); - } else { - tft.drawPixel(x+2,y+2, TFT_WHITE); - } - } - } - break; - } - default:; - } -} diff --git a/main/displays/qrimportdisplay.h b/main/displays/qrimportdisplay.h deleted file mode 100644 index 0605397..0000000 --- a/main/displays/qrimportdisplay.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -// 3rd party includes -#include -#include -#include -#include -#include - -// local includes -#include "bobbydisplay.h" -#include "bobbyerrorhandler.h" -#include "qrimport.h" -#include "screenmanager.h" - -class QrImportDisplay : public BobbyDisplay -{ - using Base = BobbyDisplay; - -public: - explicit QrImportDisplay(const std::string &nvs_key) : m_nvs_key{nvs_key} {} - explicit QrImportDisplay(std::string &&nvs_key) : m_nvs_key{std::move(nvs_key)} {} - - void start() override; - void update() override; - void redraw() override; - void buttonPressed(espgui::Button button) override; - -private: - bool m_waitingForResult{false}; - espgui::Label m_statuslabel{5,(espgui::tft.height() / 2)-espgui::tft.fontHeight(4)}; - - tl::expected m_result; - std::string m_nvs_key; -}; diff --git a/main/displays/speedinfodisplay.cpp b/main/displays/speedinfodisplay.cpp deleted file mode 100644 index 1a46cea..0000000 --- a/main/displays/speedinfodisplay.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include "speedinfodisplay.h" - -// 3rdparty lib includes -#include -#include - -// local includes -#include "displays/batteryinfodisplay.h" -#include "displays/menus/mainmenu.h" -#include "displays/statusdisplay.h" -#include "drivingstatistics.h" - -void SpeedInfoDisplay::initScreen() -{ - Base::initScreen(); - - m_labelSpeed.start(); - - m_dischargingBar.start(); - m_chargingBar.start(); - - m_batteryPercentLabel.start(); - m_voltageLabel.start(); - m_distanceLabel.start(); - m_currentPowerLabel.start(); -} - -void SpeedInfoDisplay::redraw() -{ - using namespace espgui; - - Base::redraw(); - - tft.setTextColor(TFT_WHITE, TFT_BLACK); - tft.setTextFont(4); - - tft.setTextSize(4); - - m_labelSpeed.redraw( - std::abs(avgSpeedKmh) < 10 ? fmt::format("{:.2f}", avgSpeedKmh) : - (std::abs(avgSpeedKmh) < 100 ? fmt::format("{:.1f}", avgSpeedKmh) : fmt::format("{:.0f}", avgSpeedKmh))); - - tft.setTextSize(1); - m_batteryPercentLabel.redraw(getBatteryPercentageString()); - - if (const auto avgVoltage = controllers.getAvgVoltage(); avgVoltage) - { - auto watt = sumCurrent * *avgVoltage; - - m_voltageLabel.redraw(fmt::format("{:.1f} V", avgVoltage.value())); - tft.setTextSize(2); - m_currentPowerLabel.redraw(fmt::format("{:.0f} W", watt)); - tft.setTextSize(1); - } - else - { - m_voltageLabel.redraw("No voltage"); - m_currentPowerLabel.redraw("No power"); - } - - m_distanceLabel.redraw( - drivingStatistics.meters_driven > 1000 ? fmt::format("{:.3f} km", drivingStatistics.meters_driven / 1000) : - (drivingStatistics.meters_driven > 100 ? fmt::format("{:.1f} m", drivingStatistics.meters_driven) : fmt::format("{:.2f} m", drivingStatistics.meters_driven))); - - tft.setTextSize(1); - - m_dischargingBar.redraw(sumCurrent < 0.f ? (-sumCurrent) : 0.f); - m_chargingBar.redraw(sumCurrent > 0.f ? sumCurrent : 0.f); -} - -void SpeedInfoDisplay::buttonPressed(espgui::Button button) -{ - Base::buttonPressed(button); - - switch (button) - { - using espgui::Button; - case Button::Right: - espgui::pushScreen(); - break; - case Button::Up: - espgui::switchScreen(); - break; - case Button::Down: -#ifdef FEATURE_BMS - espgui::switchScreen(); -#else - espgui::switchScreen(); -#endif - break; - default:; - } -} diff --git a/main/displays/statusdisplay.cpp b/main/displays/statusdisplay.cpp deleted file mode 100644 index 4177938..0000000 --- a/main/displays/statusdisplay.cpp +++ /dev/null @@ -1,352 +0,0 @@ -#include "statusdisplay.h" - -// esp-idf includes -#include - -// 3rdparty lib includes -#include -#include -#include - -// local includes -#include "displays/batteryinfodisplay.h" -#include "displays/speedinfodisplay.h" -#ifdef FEATURE_BMS -#include "displays/bmsdisplay.h" -#endif -#include "displays/menus/mainmenu.h" -#include "displays/metersdisplay.h" -#include "drivingstatistics.h" -#include "modes/defaultmode.h" -#include "newsettings.h" -#include "taskmanager.h" -#include "udpcloud.h" - -using namespace std::chrono_literals; -using namespace espgui; - -namespace { -constexpr const char * const TAG = "STATUS"; -} // namespace - -void StatusDisplay::initScreen() -{ - Base::initScreen(); - - tft.setTextFont(2); - tft.setTextColor(TFT_WHITE); - - tft.drawString("gas", 0, 0); - m_labelRawGas.start(); - m_labelGas.start(); - m_progressBarGas.start(); - tft.drawString("brems", 0, 15); - m_labelRawBrems.start(); - m_labelBrems.start(); - m_progressBarBrems.start(); - - m_batterypercent.start(); - m_watthoursleft.start(); - m_kilometersleft.start(); - - m_frontStatus.start(); - m_backStatus.start(); - - tft.setTextFont(2); - tft.drawString("WiFi:", 0, bottomLines[0]); - m_labelWifiStatus.start(); - tft.drawString("Lim0:", 173, bottomLines[0]); - m_labelLimit0.start(); - tft.drawString("IP:", 0, bottomLines[1]); - m_labelIpAddress.start(); - m_labelSignal.start(); - tft.drawString("Lim1:", 173, bottomLines[1]); - m_labelLimit1.start(); - tft.drawString("Perf:", 0, bottomLines[2]); - m_labelPerformance.start(); - m_labelFreeMem.start(); - tft.drawString("Mode:", 125, bottomLines[2]); - m_labelMode.start(); - tft.drawString("Name:", 0, bottomLines[3]); - m_labelName.start(); - m_labelProfile.start(); - - tft.setTextColor(TFT_WHITE, TFT_BLACK); -} - -void StatusDisplay::redraw() -{ - Base::redraw(); - - { - const auto now = espchrono::millis_clock::now(); - if (now - lastRedraw < 50ms) - return; - lastRedraw = now; - } - - { - static bool handbremse_fill_with_black; - if (configs.handbremse.enable.value() && configs.handbremse.visualize.value() && handbremse::angezogen) - { - tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_RED); - handbremse_fill_with_black = true; - } - else if (configs.handbremse.enable.value() && configs.handbremse.visualize.value() && handbremse::stateWish == handbremse::StateWish::brake) - { - tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_YELLOW); - handbremse_fill_with_black = true; - } - else if (handbremse_fill_with_black) - { - handbremse_fill_with_black = false; - tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_BLACK); - } - } - - if(configs.feature.ledstrip.isEnabled.value()) - { - static bool blink_fill_with_black; - if (configs.ledstrip.enableVisualizeBlink.value() && (espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) && (blinkAnimation > 0)) - { - if (BLINK_LEFT_EXPR) - tft.fillRect(0, 0, tft.width() / 2, 6, TFT_YELLOW); - if (BLINK_RIGHT_EXPR) - tft.fillRect(tft.width() / 2, 0, tft.width() / 2, 6, TFT_YELLOW); - - blink_fill_with_black = true; - } - else if (blink_fill_with_black) - { - blink_fill_with_black = false; - tft.fillRect(0, 0, tft.width(), 6, TFT_BLACK); - tft.setTextFont(2); - tft.drawString("gas", 0, 0); - m_labelRawGas.start(); - m_labelGas.start(); - m_progressBarGas.start(); - } - } - - tft.setTextFont(2); - m_labelRawGas.redraw(raw_gas ? std::to_string(*raw_gas) : "?"); - m_labelGas.redraw(gas ? fmt::format("{:.2f}", *gas) : "?"); - m_progressBarGas.redraw(gas ? *gas : 0); - m_labelRawBrems.redraw(raw_brems ? std::to_string(*raw_brems) : "?"); - m_labelBrems.redraw(brems ? fmt::format("{:.2f}", *brems) : "?"); - m_progressBarBrems.redraw(brems ? *brems : 0); - - m_batterypercent.redraw(getBatteryPercentageString()); - m_watthoursleft.redraw(getBatteryRemainingWattHoursString()); - const uint16_t efficiencyColor = getEfficiencyClassColor(); -// if (abs(avgSpeedKmh) > 2) - { - tft.setTextColor(efficiencyColor, TFT_BLACK); - } - m_kilometersleft.redraw(getRemainingRangeString()); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - - m_frontStatus.redraw(controllers.front); - m_backStatus.redraw(controllers.back); - - tft.setTextFont(2); - - if (configs.feature.udpcloud.isEnabled.value()) - { - if(configs.udpCloudSettings.udpCloudEnabled.value() && configs.udpCloudSettings.enableCloudDebug.value()) - { - tft.fillRect(125, 258, 8, 8, (visualSendUdpPacket) ? TFT_DARKGREY : TFT_BLACK); - } -// else // is not needed because of redraw -// { -// tft.fillRect(125, 258, 8, 8, TFT_BLACK); -// } - } - - const auto staStatus = wifi_stack::get_sta_status(); - if (staStatus == wifi_stack::WiFiStaStatus::CONNECTED) - { - if (const auto result = wifi_stack::get_sta_ap_info(); result) - { - m_labelWifiStatus.redraw(std::string_view{reinterpret_cast(result->ssid)}); - tft.setTextColor(result->rssi < -80 ? TFT_ORANGE : TFT_WHITE, TFT_BLACK); - m_labelSignal.redraw(fmt::format("{}dB", result->rssi)); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - } - else - { - ESP_LOGW(TAG, "get_sta_ap_info() failed with %.*s", result.error().size(), result.error().data()); - goto showStaStatus; - } - } - else - { -showStaStatus: - m_labelWifiStatus.redraw(wifi_stack::toString(staStatus)); - m_labelSignal.clear(); - } - - m_labelLimit0.redraw(fmt::format("{}A", controllers.front.command.left.iMotMax)); - - if (staStatus == wifi_stack::WiFiStaStatus::CONNECTED) - { - if (const auto result = wifi_stack::get_ip_info(wifi_stack::esp_netifs[ESP_IF_WIFI_STA]); result) - m_labelIpAddress.redraw(wifi_stack::toString(result->ip)); - else - { - ESP_LOGW(TAG, "get_ip_info() failed with %.*s", result.error().size(), result.error().data()); - goto clearIp; - } - } - else - { -clearIp: - m_labelIpAddress.clear(); - } - - m_labelLimit1.redraw(fmt::format("{}A", controllers.front.command.left.iDcMax)); - - tft.setTextColor(drivingModeTask.callCount() < 35 ? TFT_ORANGE : TFT_WHITE, TFT_BLACK); - m_labelPerformance.redraw(std::to_string(drivingModeTask.callCount())); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - - { - const auto freeMem = heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT); - tft.setTextColor(freeMem < 70000 ? TFT_ORANGE : TFT_WHITE, TFT_BLACK); - m_labelFreeMem.redraw(fmt::format("{}K", freeMem/1000)); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - } - - m_labelMode.redraw(currentMode->displayName()); - m_labelName.redraw(configs.wifiApName.value()); - const auto profile = settingsPersister.currentlyOpenProfileIndex(); - m_labelProfile.redraw(profile ? std::to_string(*profile) : "-"); -} - -void StatusDisplay::buttonPressed(espgui::Button button) -{ - Base::buttonPressed(button); - - switch (button) - { - using espgui::Button; - case Button::Right: - pushScreen(); - break; - case Button::Up: - if (simplified) - return; -#ifdef FEATURE_BMS - switchScreen(); -#else - switchScreen(); -#endif - break; - case Button::Down: - if (simplified) - return; - switchScreen(); - break; - default:; - } -} - -StatusDisplay::BoardStatus::BoardStatus(int y) : - m_y{y}, - m_labelLeftPwm{65, y}, // 80, 22 - m_labelRightPwm{155, y}, // 80, 22 - m_labelVoltage{30, y+25}, // 85, 22 - m_labelTemperature{150, y+25}, // 85, 22 - m_leftMotor{y+50}, - m_rightMotor{y+75} -{} - -void StatusDisplay::BoardStatus::start() -{ - tft.setTextFont(4); - tft.drawString("pwm:", 0, m_y); - m_labelLeftPwm.start(); - m_labelRightPwm.start(); - m_initialRedraw = true; -} - -void StatusDisplay::BoardStatus::redraw(const Controller &controller) -{ - tft.setTextFont(4); - - m_labelLeftPwm.redraw(std::to_string(controller.command.left.pwm)); - m_labelRightPwm.redraw(std::to_string(controller.command.right.pwm)); - - if (controller.feedbackValid != m_lastFeedbackValid || m_initialRedraw) - { - tft.fillRect(0, m_y+25, tft.width(), 75, TFT_BLACK); - - if (controller.feedbackValid) - { - tft.setTextColor(TFT_WHITE); - - tft.drawString("U=", 0, m_y+25, 4); - m_labelVoltage.start(); - tft.drawString("T=", 120, m_y+25, 4); - m_labelTemperature.start(); - tft.drawString("l:", 0, m_y+50, 4); - m_leftMotor.start(); - tft.drawString("r:", 0, m_y+75, 4); - m_rightMotor.start(); - - tft.setTextColor(TFT_WHITE, TFT_BLACK); - } - else - { - tft.setTextColor(TFT_RED); - tft.drawString("No data!", 60, m_y+50, 4); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - - tft.setSwapBytes(true); - tft.pushImage(10, m_y+40, bobbyicons::alert.WIDTH, bobbyicons::alert.HEIGHT, bobbyicons::alert.buffer); - tft.setSwapBytes(false); - } - - m_lastFeedbackValid = controller.feedbackValid; - m_initialRedraw = false; - } - - if (controller.feedbackValid) - { - m_labelVoltage.redraw(fmt::format("{:.2f}V", controller.getCalibratedVoltage())); - m_labelTemperature.redraw(fmt::format("{:.2f}C", fixBoardTemp(controller.feedback.boardTemp))); - m_leftMotor.redraw(controller.feedback.left); - m_rightMotor.redraw(controller.feedback.right); - } -} - -StatusDisplay::BoardStatus::MotorStatus::MotorStatus(int y) : - m_labelError{18, y}, // 18, 22, - m_labelCurrent{40, y}, // 85, 22 - m_labelSpeed{135, y}, // 75, 22 - m_labelHallSensors{210, y} // 30, 15 -{} - -void StatusDisplay::BoardStatus::MotorStatus::start() -{ - m_labelError.start(); - m_labelCurrent.start(); - m_labelSpeed.start(); - m_labelHallSensors.start(); -} - -void StatusDisplay::BoardStatus::MotorStatus::redraw(const bobbycar::protocol::serial::MotorFeedback &motor) -{ - tft.setTextFont(4); - tft.setTextColor(motor.error?TFT_RED:TFT_GREEN, TFT_BLACK); - m_labelError.redraw(std::to_string(motor.error)); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - - m_labelCurrent.redraw(fmt::format("{:.2f}A", fixCurrent(motor.dcLink))); - m_labelSpeed.redraw(fmt::format("{:.2f}", convertToKmh(motor.speed))); - - tft.setTextFont(2); - m_labelHallSensors.redraw(hallString(motor)); - - tft.setTextColor(TFT_WHITE, TFT_BLACK); -} diff --git a/main/displays/updatedisplay.cpp b/main/displays/updatedisplay.cpp deleted file mode 100644 index 981a119..0000000 --- a/main/displays/updatedisplay.cpp +++ /dev/null @@ -1,116 +0,0 @@ -#include "updatedisplay.h" - -// system includes -#include -#include - -// esp-idf includes -#include - -// 3rdparty lib includes -#include -#include -#include -#include - -// local includes -#include "globals.h" -#include "ota.h" -#include "newsettings.h" - -void UpdateDisplay::initScreen() -{ - Base::initScreen(); - - espgui::tft.setTextFont(4); - espgui::tft.setTextColor(TFT_YELLOW); - - espgui::tft.drawString("Update", 5, 5, 4); - - espgui::tft.fillRect(0, 34, espgui::tft.width(), 3, TFT_WHITE); - - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - - espgui::tft.drawString("Status:", 20, m_statusLabel.y()); - m_statusLabel.start(); - - espgui::tft.drawString("Progress:", 20, m_progressLabel.y()); - m_progressLabel.start(); - - espgui::tft.drawString("Total:", 20, m_totalLabel.y()); - m_totalLabel.start(); - - m_messageLabel.start(); - - m_progressBar.start(); - - if (const esp_app_desc_t *app_desc = esp_ota_get_app_description()) - { - espgui::tft.setTextColor(TFT_ORANGE, TFT_BLACK); - espgui::tft.drawString(app_desc->version, 20, 250); - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - } - - m_newVersionLabel.start(); -} - -void UpdateDisplay::redraw() -{ - Base::redraw(); - - if (asyncOta) - { - m_statusLabel.redraw(toString(asyncOta->status())); - const auto progress = asyncOta->progress(); - m_progressLabel.redraw(std::to_string(progress)); - if (const auto totalSize = asyncOta->totalSize(); totalSize && *totalSize > 0) - { - m_totalLabel.redraw(std::to_string(*totalSize)); - m_progressBar.redraw(float(progress) / *totalSize * 100); - } - else - { - m_totalLabel.clear(); - m_progressBar.redraw(0); - } - m_messageLabel.redraw(asyncOta->message()); - - if (const auto &appDesc = asyncOta->appDesc()) - { - espgui::tft.setTextColor(TFT_GREEN, TFT_BLACK); - m_newVersionLabel.redraw(appDesc->version); - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - } - else - m_newVersionLabel.clear(); - } - else - { - m_statusLabel.clear(); - m_progressLabel.clear(); - m_totalLabel.clear(); - m_messageLabel.clear(); - - m_progressBar.redraw(0); - - m_newVersionLabel.clear(); - } -} - -void UpdateDisplay::buttonPressed(espgui::Button button) -{ - Base::buttonPressed(button); - - switch (button) - { - using espgui::Button; - case Button::Left: - espgui::popScreen(); - break; - case Button::Right: - if (const auto result = triggerOta(configs.otaUrl.value()); !result) - ESP_LOGE("BOBBY", "triggerOta() failed with %.*s", result.error().size(), result.error().data()); - break; - default:; - } -} diff --git a/main/dpad.cpp b/main/dpad.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/dpad3wire.cpp b/main/dpad3wire.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/drivingstatistics.cpp b/main/drivingstatistics.cpp index 0670c50..414e008 100644 --- a/main/drivingstatistics.cpp +++ b/main/drivingstatistics.cpp @@ -2,8 +2,8 @@ // 3rdparty lib includes #include -#include #include +#include // Local #include "globals.h" diff --git a/main/esptexthelpers.cpp b/main/esptexthelpers.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/feedbackparser.cpp b/main/feedbackparser.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/globals.h b/main/globals.h index ecf7c5e..98a5e1b 100644 --- a/main/globals.h +++ b/main/globals.h @@ -21,12 +21,10 @@ // 3rdparty lib includes #include -#include // local includes #include "controller.h" #include "display.h" -#include "macros_bobbycar.h" #include "modeinterface.h" #include "newsettings.h" #include "profilesettings.h" diff --git a/main/displays/bobbychangevaluedisplay.cpp b/main/guihelpers/bobbychangevaluedisplay.cpp similarity index 100% rename from main/displays/bobbychangevaluedisplay.cpp rename to main/guihelpers/bobbychangevaluedisplay.cpp diff --git a/main/displays/bobbychangevaluedisplay.h b/main/guihelpers/bobbychangevaluedisplay.h similarity index 90% rename from main/displays/bobbychangevaluedisplay.h rename to main/guihelpers/bobbychangevaluedisplay.h index c3756ad..370bc01 100644 --- a/main/displays/bobbychangevaluedisplay.h +++ b/main/guihelpers/bobbychangevaluedisplay.h @@ -7,18 +7,22 @@ #include "bobbybuttons.h" #include "bobbyerrorhandler.h" +namespace bobby { + template class BobbyChangeValueDisplay : - public espgui::ChangeValueDisplay, - public virtual BobbyErrorHandler + public espgui::ChangeValueDisplay, + public virtual BobbyErrorHandler { using Base = espgui::ChangeValueDisplay; public: void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; }; @@ -51,3 +55,5 @@ void BobbyChangeValueDisplay::buttonReleased(espgui::Button button) Base::buttonReleased(button); buttonReleasedCommon(button); } + +} // namespace bobby diff --git a/main/bobbycheckbox.h b/main/guihelpers/bobbycheckbox.h similarity index 58% rename from main/bobbycheckbox.h rename to main/guihelpers/bobbycheckbox.h index 280c0e7..e40d7b9 100644 --- a/main/bobbycheckbox.h +++ b/main/guihelpers/bobbycheckbox.h @@ -1,15 +1,19 @@ #pragma once // 3rdparty lib includes -#include -#include +#include "../../components/esp-gui-lib/src/actions/toggleboolaction.h" +#include "../../components/esp-gui-lib/src/checkboxicon.h" // local includes #include "bobbyerrorhandler.h" +namespace bobby { + class BobbyCheckbox : public virtual espgui::ToggleBoolAction, public virtual espgui::CheckboxIcon, public virtual BobbyErrorHandler { }; + +} // namespace bobby diff --git a/main/displays/bobbydisplay.cpp b/main/guihelpers/bobbydisplay.cpp similarity index 94% rename from main/displays/bobbydisplay.cpp rename to main/guihelpers/bobbydisplay.cpp index 562882b..b86df88 100644 --- a/main/displays/bobbydisplay.cpp +++ b/main/guihelpers/bobbydisplay.cpp @@ -3,6 +3,8 @@ // local includes #include "bobbybuttons.h" +namespace bobby { + void BobbyDisplay::rawButtonPressed(uint8_t button) { //Base::rawButtonPressed(button); @@ -28,3 +30,5 @@ void BobbyDisplay::buttonReleased(espgui::Button button) //Base::buttonReleased(button); buttonReleasedCommon(button); } + +} // namespace bobby diff --git a/main/displays/bobbydisplay.h b/main/guihelpers/bobbydisplay.h similarity index 84% rename from main/displays/bobbydisplay.h rename to main/guihelpers/bobbydisplay.h index 60c1e70..c43d78c 100644 --- a/main/displays/bobbydisplay.h +++ b/main/guihelpers/bobbydisplay.h @@ -1,7 +1,9 @@ #pragma once // 3rdparty lib includes -#include +#include "display.h" + +namespace bobby { class BobbyDisplay : public espgui::Display { @@ -14,3 +16,5 @@ public: void buttonPressed(espgui::Button button) override; void buttonReleased(espgui::Button button) override; }; + +} // namespace bobby diff --git a/main/displays/bobbydisplaywithtitle.cpp b/main/guihelpers/bobbydisplaywithtitle.cpp similarity index 94% rename from main/displays/bobbydisplaywithtitle.cpp rename to main/guihelpers/bobbydisplaywithtitle.cpp index 3c9ccdc..4f416c0 100644 --- a/main/displays/bobbydisplaywithtitle.cpp +++ b/main/guihelpers/bobbydisplaywithtitle.cpp @@ -3,6 +3,8 @@ // local includes #include "bobbybuttons.h" +namespace bobby { + void BobbyDisplayWithTitle::rawButtonPressed(uint8_t button) { //Base::rawButtonPressed(button); @@ -28,3 +30,5 @@ void BobbyDisplayWithTitle::buttonReleased(espgui::Button button) //Base::buttonReleased(button); buttonReleasedCommon(button); } + +} // namespace bobby diff --git a/main/displays/bobbydisplaywithtitle.h b/main/guihelpers/bobbydisplaywithtitle.h similarity index 84% rename from main/displays/bobbydisplaywithtitle.h rename to main/guihelpers/bobbydisplaywithtitle.h index 0edb868..08ad613 100644 --- a/main/displays/bobbydisplaywithtitle.h +++ b/main/guihelpers/bobbydisplaywithtitle.h @@ -1,7 +1,9 @@ #pragma once // 3rdparty lib includes -#include +#include "displaywithtitle.h" + +namespace bobby { class BobbyDisplayWithTitle : public espgui::DisplayWithTitle { @@ -14,3 +16,5 @@ public: void buttonPressed(espgui::Button button) override; void buttonReleased(espgui::Button button) override; }; + +} // namespace bobby diff --git a/main/guihelpers/bobbyerrorhandler.cpp b/main/guihelpers/bobbyerrorhandler.cpp new file mode 100644 index 0000000..7a279c5 --- /dev/null +++ b/main/guihelpers/bobbyerrorhandler.cpp @@ -0,0 +1,20 @@ +#include "bobbyerrorhandler.h" + +// 3rdparty lib includes +#include +#include + +// local includes +#include "guihelpers/bobbypopupdisplay.h" + +namespace bobby { + +void BobbyErrorHandler::errorOccurred(std::string &&error) +{ + espgui::changeScreenCallback = [error_ = std::move(error)](espgui::TftInterface &tft){ + auto newDisplay = std::make_unique(std::string{error_}, std::move(espgui::currentDisplay)); + newDisplay->initOverlay(tft); + espgui::currentDisplay = std::move(newDisplay); + }; +} +} // namespace bobby diff --git a/main/bobbyerrorhandler.h b/main/guihelpers/bobbyerrorhandler.h similarity index 83% rename from main/bobbyerrorhandler.h rename to main/guihelpers/bobbyerrorhandler.h index 0f24932..0e6aa34 100644 --- a/main/bobbyerrorhandler.h +++ b/main/guihelpers/bobbyerrorhandler.h @@ -3,7 +3,11 @@ // 3rdparty lib includes #include +namespace bobby { + struct BobbyErrorHandler : public virtual espgui::ErrorHandlerInterface { void errorOccurred(std::string &&error) override; }; + +} // namespace bobby diff --git a/main/displays/bobbygraphdisplay.cpp b/main/guihelpers/bobbygraphdisplay.cpp similarity index 100% rename from main/displays/bobbygraphdisplay.cpp rename to main/guihelpers/bobbygraphdisplay.cpp diff --git a/main/displays/bobbygraphdisplay.h b/main/guihelpers/bobbygraphdisplay.h similarity index 96% rename from main/displays/bobbygraphdisplay.h rename to main/guihelpers/bobbygraphdisplay.h index 3ca683b..8ffabee 100644 --- a/main/displays/bobbygraphdisplay.h +++ b/main/guihelpers/bobbygraphdisplay.h @@ -6,6 +6,8 @@ // local includes #include "bobbybuttons.h" +namespace bobby { + template class BobbyGraphDisplay : public espgui::GraphDisplay { @@ -48,3 +50,5 @@ void BobbyGraphDisplay::buttonReleased(espgui::Button button) //Base::buttonReleased(button); buttonReleasedCommon(button); } + +} // namespace bobby diff --git a/main/displays/bobbymenudisplay.cpp b/main/guihelpers/bobbymenudisplay.cpp similarity index 94% rename from main/displays/bobbymenudisplay.cpp rename to main/guihelpers/bobbymenudisplay.cpp index 6a78223..92af114 100644 --- a/main/displays/bobbymenudisplay.cpp +++ b/main/guihelpers/bobbymenudisplay.cpp @@ -4,6 +4,8 @@ #include "esp_log.h" #include "bobbybuttons.h" +namespace bobby { + void BobbyMenuDisplay::rawButtonPressed(uint8_t button) { //Base::rawButtonPressed(button); @@ -29,3 +31,4 @@ void BobbyMenuDisplay::buttonReleased(espgui::Button button) Base::buttonReleased(button); buttonReleasedCommon(button); } +} // namespace bobby diff --git a/main/displays/bobbymenudisplay.h b/main/guihelpers/bobbymenudisplay.h similarity index 84% rename from main/displays/bobbymenudisplay.h rename to main/guihelpers/bobbymenudisplay.h index 4e92c1b..476ccef 100644 --- a/main/displays/bobbymenudisplay.h +++ b/main/guihelpers/bobbymenudisplay.h @@ -1,7 +1,9 @@ #pragma once // 3rdparty lib includes -#include +#include "menudisplay.h" + +namespace bobby { class BobbyMenuDisplay : public espgui::MenuDisplay { @@ -14,3 +16,5 @@ public: void buttonPressed(espgui::Button button) override; void buttonReleased(espgui::Button button) override; }; + +} // namespace bobby diff --git a/main/displays/bobbypopupdisplay.cpp b/main/guihelpers/bobbypopupdisplay.cpp similarity index 94% rename from main/displays/bobbypopupdisplay.cpp rename to main/guihelpers/bobbypopupdisplay.cpp index 47df3b8..3fde6ea 100644 --- a/main/displays/bobbypopupdisplay.cpp +++ b/main/guihelpers/bobbypopupdisplay.cpp @@ -3,6 +3,8 @@ // local includes #include "bobbybuttons.h" +namespace bobby { + void BobbyPopupDisplay::rawButtonPressed(uint8_t button) { //Base::rawButtonPressed(button); @@ -28,3 +30,5 @@ void BobbyPopupDisplay::buttonReleased(espgui::Button button) //Base::buttonReleased(button); buttonReleasedCommon(button); } + +} // namespace bobby diff --git a/main/displays/bobbypopupdisplay.h b/main/guihelpers/bobbypopupdisplay.h similarity index 84% rename from main/displays/bobbypopupdisplay.h rename to main/guihelpers/bobbypopupdisplay.h index 0220fce..8685b1c 100644 --- a/main/displays/bobbypopupdisplay.h +++ b/main/guihelpers/bobbypopupdisplay.h @@ -1,7 +1,9 @@ #pragma once // 3rdparty lib includes -#include +#include "messagepopupdisplay.h" + +namespace bobby { class BobbyPopupDisplay : public espgui::MessagePopupDisplay { @@ -16,3 +18,5 @@ public: void buttonPressed(espgui::Button button) override; void buttonReleased(espgui::Button button) override; }; + +} // namespace bobby diff --git a/main/displays/bobbysplitgraphdisplay.cpp b/main/guihelpers/bobbysplitgraphdisplay.cpp similarity index 100% rename from main/displays/bobbysplitgraphdisplay.cpp rename to main/guihelpers/bobbysplitgraphdisplay.cpp diff --git a/main/displays/bobbysplitgraphdisplay.h b/main/guihelpers/bobbysplitgraphdisplay.h similarity index 97% rename from main/displays/bobbysplitgraphdisplay.h rename to main/guihelpers/bobbysplitgraphdisplay.h index 35b14f4..2251be9 100644 --- a/main/displays/bobbysplitgraphdisplay.h +++ b/main/guihelpers/bobbysplitgraphdisplay.h @@ -6,6 +6,8 @@ // local includes #include "bobbybuttons.h" +namespace bobby { + template class BobbySplitGraphDisplay : public espgui::SplitGraphDisplay { @@ -48,4 +50,5 @@ void BobbySplitGraphDisplay::buttonReleased(espgui::Button butto //Base::buttonReleased(button); buttonReleasedCommon(button); } +} // namespace bobby diff --git a/main/guihelpers/menudisplaywithtime.cpp b/main/guihelpers/menudisplaywithtime.cpp new file mode 100644 index 0000000..d558d9c --- /dev/null +++ b/main/guihelpers/menudisplaywithtime.cpp @@ -0,0 +1,26 @@ +#include "menudisplaywithtime.h" + +// 3rdparty lib includes +#include +#include +#include + +// local includes +#include "utils.h" + +namespace bobby { + +using namespace espgui; + +void MenuDisplayWithTime::initScreen(espgui::TftInterface &tft) +{ + Base::initScreen(tft); + m_label_currentTime.start(tft); +} + +void MenuDisplayWithTime::redraw(espgui::TftInterface &tft) +{ + Base::redraw(tft); + m_label_currentTime.redraw(tft, fmt::format("&7Time: {}", local_clock_string()), espgui::TFT_WHITE, espgui::TFT_BLACK, use_big_font() ? 4 : 2); +} +} // namespace bobby diff --git a/main/displays/menudisplaywithtime.h b/main/guihelpers/menudisplaywithtime.h similarity index 64% rename from main/displays/menudisplaywithtime.h rename to main/guihelpers/menudisplaywithtime.h index 97d8d2a..7cf4241 100644 --- a/main/displays/menudisplaywithtime.h +++ b/main/guihelpers/menudisplaywithtime.h @@ -1,17 +1,18 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "bobbymenudisplay.h" + +namespace bobby { -namespace bobbygui { class MenuDisplayWithTime : public BobbyMenuDisplay { using Base = BobbyMenuDisplay; public: - void start() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; espgui::Label m_label_currentTime{145, 6}; private: @@ -24,4 +25,5 @@ private: #endif } }; -} // namespace + +} // namespace bobby diff --git a/main/ledstripdefines.cpp b/main/ledstripdefines.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/macros_bobbycar.cpp b/main/macros_bobbycar.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/macros_bobbycar.h b/main/macros_bobbycar.h deleted file mode 100644 index 13fdd05..0000000 --- a/main/macros_bobbycar.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -// macros are a shit piece of software -#define STRING2(s) #s -#define STRING(s) STRING2(s) diff --git a/main/main.cpp b/main/main.cpp index 0d2ab78..670b6a7 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1,10 +1,6 @@ constexpr const char * const TAG = "BOBBY"; -// system includes -#include - // esp-idf includes -#include #include #include #include @@ -13,15 +9,11 @@ constexpr const char * const TAG = "BOBBY"; #include using namespace std::chrono_literals; #include -#include -#include #include #include +#include // local includes -#include "bobbycar-common.h" -#include "bobbycar-serial.h" -#include "macros_bobbycar.h" #include "globals.h" #include "screens.h" #include "presets.h" @@ -31,18 +23,17 @@ using namespace std::chrono_literals; #else #include "modes/defaultmode.h" #endif -#include "displays/lockscreen.h" -#include "displays/menus/recoverymenu.h" -#include "displays/potiscalibratedisplay.h" -#include "displays/setup/information.h" -#include "displays/setup/basic_buttons.h" -#include "displays/setup/calibrate_potis.h" -#include "displays/statusdisplay.h" +#include "screens/lockscreen.h" +#include "screens/recoverymenu.h" +#include "screens/setup/information.h" +#include "screens/setup/basic_buttons.h" +#include "screens/setup/calibrate_potis.h" +#include "screens/statusdisplay.h" #include "newsettings.h" #include "taskmanager.h" #define BOOT_PROGRESS(s) \ - bootLabel.redraw(s); \ + bobby::set_boot_msg(s); \ ESP_LOGI("BOOT", "%s", s); namespace { @@ -65,10 +56,10 @@ extern "C" void app_main() if (recovery) { - initScreen(); + bobby::initScreen(); ESP_LOGE(TAG, "Recovery mode (%s)", espcpputils::toString(esp_reset_reason()).c_str()); - bootLabel.redraw("Entering recovery mode"); + BOOT_PROGRESS("Entering recovery mode"); if (const auto result = configs.init("bobbycar"); result != ESP_OK) ESP_LOGE(TAG, "config_init_settings() failed with %s", esp_err_to_name(result)); @@ -78,7 +69,7 @@ extern "C" void app_main() task.setup(recovery); } - espgui::switchScreen(); + espgui::switchScreen(); recovery = false; @@ -105,7 +96,7 @@ extern "C" void app_main() if (const auto result = configs.init("bobbycar"); result != ESP_OK) ESP_LOGE(TAG, "config_init_settings() failed with %s", esp_err_to_name(result)); - initScreen(); + bobby::initScreen(); profileSettings = presets::defaultProfileSettings; @@ -142,14 +133,14 @@ extern "C" void app_main() { case SetupStep::INFORMATION: BOOT_PROGRESS("Calibtration"); - espgui::switchScreen(); + espgui::switchScreen(); break; case SetupStep::BASIC_BUTTONS: BOOT_PROGRESS("Calibtration"); - espgui::switchScreen(true); + espgui::switchScreen(true); break; case SetupStep::CALIBRATE_POTIS: - espgui::switchScreen(true); + espgui::switchScreen(true); break; default:; } @@ -157,13 +148,13 @@ extern "C" void app_main() else if (configs.lockscreen.keepLockedAfterReboot.value() && configs.lockscreen.locked.value()) { BOOT_PROGRESS("Locked"); - espgui::switchScreen(); - espgui::pushScreen(); + espgui::switchScreen(); + espgui::pushScreen(); } else { BOOT_PROGRESS("StatusDisplay") - espgui::switchScreen(); + espgui::switchScreen(); } esp_chip_info(&chip_info); diff --git a/main/modeinterface.cpp b/main/modeinterface.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/newsettings.h b/main/newsettings.h index 2a2f6e2..c6b213b 100644 --- a/main/newsettings.h +++ b/main/newsettings.h @@ -23,14 +23,11 @@ // local includes #include "battery.h" #include "bobbyquickactions.h" -#include "displays/lockscreen.h" +#include "cloud.h" #include "handbremse.h" #include "ledstrip.h" +#include "screens/lockscreen.h" #include "unifiedmodelmode.h" -#include "displays/lockscreen.h" -#include "handbremse.h" -#include "bobbyquickactions.h" -#include "cloud.h" using namespace espconfig; diff --git a/main/profilesettings.cpp b/main/profilesettings.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/rotary.cpp b/main/rotary.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/screens.cpp b/main/screens.cpp index 65b94ba..ead03db 100644 --- a/main/screens.cpp +++ b/main/screens.cpp @@ -1,40 +1,46 @@ #include "screens.h" // 3rdparty lib includes -#include #include +#include +#include // local includes -#include "esptexthelpers.h" #include "globals.h" #include "icons/logo.h" +#include "texthelpers/esptexthelpers.h" + +namespace bobby { using namespace espgui; -Label bootLabel{32, 250}; +espgui::Label bootLabel{32, 250}; namespace { bool disable_screen_flip{false}; + +espgui::TftESpiImpl tft; +} + +void tft_init() +{ + tft.init(); } void initScreen() { // vertical screen tft.init(); - tft.fillScreen(TFT_WHITE); - tft.setTextColor(TFT_BLACK, TFT_WHITE); - tft.setTextFont(4); + tft.fillScreen(espgui::TFT_WHITE); tft.setRotation(configs.boardcomputerHardware.flipScreen.value() ? 2 : 0); - espgui::tft.setSwapBytes(true); + tft.setSwapBytes(true); tft.pushImage(0, 40, bobbyicons::logo.WIDTH, bobbyicons::logo.HEIGHT, bobbyicons::logo.buffer); - espgui::tft.setSwapBytes(false); - tft.drawString("Bobbycar-OS", 32, 200); - tft.drawString("booting...", 32, 225); - tft.setTextFont(2); - tft.drawString("last reboot reason:", 32, 275); - tft.drawString(espcpputils::toString(esp_reset_reason()), 32, 295); - tft.setTextFont(4); - bootLabel.start(); + tft.setSwapBytes(false); + tft.drawString("Bobbycar-OS", 32, 200, espgui::TFT_BLACK, espgui::TFT_WHITE, 4); + tft.drawString("booting...", 32, 225, espgui::TFT_BLACK, espgui::TFT_WHITE, 4); + tft.drawString("last reboot reason:", 32, 275, espgui::TFT_BLACK, espgui::TFT_WHITE, 2); + tft.drawString(espcpputils::toString(esp_reset_reason()), 32, 295, espgui::TFT_BLACK, espgui::TFT_WHITE, 2); + bootLabel.start(tft); } void updateRotation() @@ -43,7 +49,7 @@ void updateRotation() { tft.setRotation(configs.boardcomputerHardware.flipScreen.value() ? 2 : 0); if (currentDisplay) - currentDisplay->initScreen(); + currentDisplay->initScreen(tft); } } @@ -54,7 +60,7 @@ void updateDisplay() if (changeScreenCallback) { - changeScreenCallback(); + changeScreenCallback(tft); changeScreenCallback = {}; } @@ -78,7 +84,7 @@ void updateDisplay() if (initScreenRequest && currentDisplay) { - currentDisplay->initScreen(); + currentDisplay->initScreen(tft); initScreenRequest = false; } } @@ -87,7 +93,7 @@ void redrawDisplay() { if (currentDisplay) { - currentDisplay->redraw(); + currentDisplay->redraw(tft); } } @@ -95,3 +101,19 @@ void disableScreenFlip(bool enable) { disable_screen_flip = enable; } + +void set_boot_msg(std::string_view msg) +{ + bootLabel.redraw(tft, msg, espgui::TFT_BLACK, espgui::TFT_WHITE, 4); +} + +uint16_t getScreenWidth() +{ + return tft.width(); +} + +uint16_t getScreenHeight() +{ + return tft.height(); +} +} // namespace bobby diff --git a/main/screens.h b/main/screens.h index 53be905..a02ae0b 100644 --- a/main/screens.h +++ b/main/screens.h @@ -1,12 +1,23 @@ #pragma once +// system includes +#include + // 3rdparty lib includes #include +namespace bobby { + extern espgui::Label bootLabel; +void tft_init(); void initScreen(); void updateDisplay(); void updateRotation(); void redrawDisplay(); void disableScreenFlip(bool enable); + +void set_boot_msg(std::string_view msg); +uint16_t getScreenWidth(); +uint16_t getScreenHeight(); +} // namespace bobby diff --git a/main/displays/menus/aboutmenu.cpp b/main/screens/aboutmenu.cpp similarity index 93% rename from main/displays/menus/aboutmenu.cpp rename to main/screens/aboutmenu.cpp index da28283..07ffc35 100644 --- a/main/displays/menus/aboutmenu.cpp +++ b/main/screens/aboutmenu.cpp @@ -1,15 +1,19 @@ #include "aboutmenu.h" -// local includes -#include "utils.h" -#include "actions/dummyaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" -#include "esptexthelpers.h" - +// esp-idf includes #include -#include "fmt/core.h" +// 3rdparty lib includes +#include +#include +#include +#include + +// local includes +#include "texthelpers/esptexthelpers.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_ABOUT[] = "About"; constexpr char TEXT_BACK[] = "Back"; @@ -67,3 +71,5 @@ void AboutMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/aboutmenu.h b/main/screens/aboutmenu.h similarity index 67% rename from main/displays/menus/aboutmenu.h rename to main/screens/aboutmenu.h index 3937122..0bc0a05 100644 --- a/main/displays/menus/aboutmenu.h +++ b/main/screens/aboutmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class AboutMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/batterydebugmenu.cpp b/main/screens/batterydebugmenu.cpp similarity index 94% rename from main/displays/menus/batterydebugmenu.cpp rename to main/screens/batterydebugmenu.cpp index 92caeb3..8e78913 100644 --- a/main/displays/menus/batterydebugmenu.cpp +++ b/main/screens/batterydebugmenu.cpp @@ -1,11 +1,11 @@ #include "batterydebugmenu.h" // 3rdparty lib includes -#include -#include -#include -#include -#include +#include "menuitem.h" +#include "icons/back.h" +#include "actions/dummyaction.h" +#include "actions/popscreenaction.h" +#include "fmt/core.h" // local includes #include "accessors/settingsaccessors.h" @@ -13,6 +13,8 @@ #include "icons/settings.h" #include "battery.h" +namespace bobby { + namespace { constexpr char TEXT_BATTERYDEBUG[] = "Bat Debug Menu"; constexpr char TEXT_BACK[] = "Back"; @@ -93,3 +95,5 @@ void BatteryDebugMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/batterydebugmenu.h b/main/screens/batterydebugmenu.h similarity index 69% rename from main/displays/menus/batterydebugmenu.h rename to main/screens/batterydebugmenu.h index e351982..8e3fc57 100644 --- a/main/displays/menus/batterydebugmenu.h +++ b/main/screens/batterydebugmenu.h @@ -1,7 +1,9 @@ #pragma once // Local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class BatteryDebugMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/batterygraphdisplay.cpp b/main/screens/batterygraphdisplay.cpp similarity index 77% rename from main/displays/batterygraphdisplay.cpp rename to main/screens/batterygraphdisplay.cpp index aef725d..cda75d1 100644 --- a/main/displays/batterygraphdisplay.cpp +++ b/main/screens/batterygraphdisplay.cpp @@ -3,25 +3,28 @@ constexpr const char * const TAG = "BatteryGraphDisplay"; // 3rdparty lib includes #include -#include +#include +#include // local includes #include "battery.h" -#include "displays/menus/batterymenu.h" #include "globals.h" #include "newsettings.h" +#include "screens/batterymenu.h" #include "utils.h" -#include "actions/bluetoothbeginmasteraction.h" + +namespace bobby { namespace { - constexpr char TEXT_BATTERY_GRAPH[] = "Battery Level"; - constexpr const uint8_t TOP_OFFSET = 40; +constexpr char TEXT_BATTERY_GRAPH[] = "Battery Level"; +constexpr const uint8_t TOP_OFFSET = 40; } // namespace -void BatteryGraphDisplay::initScreen() +void BatteryGraphDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); - drawBatteryCurve(); + Base::initScreen(tft); + + drawBatteryCurve(tft); } std::string BatteryGraphDisplay::text() const @@ -33,10 +36,10 @@ std::string BatteryGraphDisplay::text() const return TEXT_BATTERY_GRAPH; } -void BatteryGraphDisplay::redraw() +void BatteryGraphDisplay::redraw(espgui::TftInterface &tft) { using namespace espgui; - Base::redraw(); + Base::redraw(tft); if (const auto avgVoltage = controllers.getAvgVoltage(); avgVoltage) { @@ -50,10 +53,10 @@ void BatteryGraphDisplay::redraw() const uint16_t lastXOffset = onePercent * (100 - getBatteryPercentage(m_lastBatVoltage, cellType)); // clear the old one and draw the new one - tft.fillRect(lastXOffset + 2, TOP_OFFSET, onePercent, tft.height() - TOP_OFFSET, TFT_BLACK); - tft.fillRect(xOffset + 2, TOP_OFFSET, onePercent, tft.height() - TOP_OFFSET, TFT_WHITE); + tft.fillRect(lastXOffset + 2, TOP_OFFSET, onePercent, tft.height() - TOP_OFFSET, espgui::TFT_BLACK); + tft.fillRect(xOffset + 2, TOP_OFFSET, onePercent, tft.height() - TOP_OFFSET, espgui::TFT_WHITE); m_lastBatVoltage = *avgVoltage; - drawBatteryCurve(); + drawBatteryCurve(tft); } // tft.drawLine() code } @@ -73,11 +76,11 @@ void BatteryGraphDisplay::buttonPressed(espgui::Button button) } } -void BatteryGraphDisplay::drawBatteryCurve() +void BatteryGraphDisplay::drawBatteryCurve(espgui::TftInterface &tft) { const auto points = count_curve_points(configs.battery.cellType.value()); - const auto max_height = espgui::tft.height() - 1; - const auto max_width = espgui::tft.width() - 4; + const auto max_height = tft.height() - 1; + const auto max_width = tft.width() - 4; const uint16_t part = max_width / points; const auto min_voltage = getMinBatCellVoltage(configs.battery.cellType.value()); const auto max_voltage = getMaxBatCellVoltage(configs.battery.cellType.value()); @@ -89,7 +92,9 @@ void BatteryGraphDisplay::drawBatteryCurve() const int y1 = float_map(point->minVoltage / 100.f, min_voltage, max_voltage, max_height, TOP_OFFSET); const int x2 = 2 + part * (points - i); const int y2 = float_map(point->maxVoltage / 100.f, min_voltage, max_voltage, max_height, TOP_OFFSET); - espgui::tft.drawLine(x1, y1, x2, y2, TFT_WHITE); + tft.drawLine(x1, y1, x2, y2, espgui::TFT_WHITE); } } } + +} // namespace bobby diff --git a/main/screens/batterygraphdisplay.h b/main/screens/batterygraphdisplay.h new file mode 100644 index 0000000..36cacc8 --- /dev/null +++ b/main/screens/batterygraphdisplay.h @@ -0,0 +1,28 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { + +class BatteryGraphDisplay : public BobbyDisplayWithTitle { + using Base = BobbyDisplayWithTitle; + +public: + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; + + std::string text() const override; + + void buttonPressed(espgui::Button button) override; + + static void drawBatteryCurve(espgui::TftInterface &tft); + +private: + float m_lastBatVoltage{0}; +}; + +} // namespace bobby diff --git a/main/displays/batteryinfodisplay.cpp b/main/screens/batteryinfodisplay.cpp similarity index 79% rename from main/displays/batteryinfodisplay.cpp rename to main/screens/batteryinfodisplay.cpp index a0ff6ce..3d52fce 100644 --- a/main/displays/batteryinfodisplay.cpp +++ b/main/screens/batteryinfodisplay.cpp @@ -2,32 +2,34 @@ // 3rdparty lib includes #include -#include +#include // local includes #include "battery.h" -#include "displays/menus/mainmenu.h" -#include "displays/metersdisplay.h" -#include "displays/speedinfodisplay.h" +#include "screens/mainmenu.h" +#include "screens/metersdisplay.h" +#include "screens/speedinfodisplay.h" #include "globals.h" #include "newsettings.h" // display with big battery and ten bars (0-100%) -void BatteryInfoDisplay::initScreen() +namespace bobby { + +void BatteryInfoDisplay::initScreen(espgui::TftInterface &tft) { using namespace espgui; - Base::initScreen(); + Base::initScreen(tft); - tft.drawRoundRect(m_offset, m_offset, tft.width() - (m_offset * 2), tft.height() - (m_offset * 2), 10, TFT_WHITE); - tft.drawRoundRect((tft.width() / 2) - (m_offset / 2), m_offset / 2, m_offset, m_offset / 2, 3, TFT_WHITE); + tft.drawRoundRect(m_offset, m_offset, tft.width() - (m_offset * 2), tft.height() - (m_offset * 2), 10, espgui::TFT_WHITE); + tft.drawRoundRect((tft.width() / 2) - (m_offset / 2), m_offset / 2, m_offset, m_offset / 2, 3, espgui::TFT_WHITE); m_lastBarCount = 0; } -void BatteryInfoDisplay::redraw() +void BatteryInfoDisplay::redraw(espgui::TftInterface &tft) { using namespace espgui; - Base::redraw(); + Base::redraw(tft); // calculate height of space available for all bars const auto min_x = m_offset + 3; // leave 2 pixels + 1 pixel for border @@ -51,7 +53,7 @@ void BatteryInfoDisplay::redraw() for (auto i = 0; i < 10; ++i) { const auto y = bottomY - (i * segment_height) - segment_height; - tft.fillRoundRect(min_x, y, width, segment_height - 2, 10, segment_count > i ? TFT_GREEN : TFT_DARKGREY); + tft.fillRoundRect(min_x, y, width, segment_height - 2, 10, segment_count > i ? espgui::TFT_GREEN : espgui::TFT_DARKGREY); } } } @@ -78,3 +80,5 @@ void BatteryInfoDisplay::buttonPressed(espgui::Button button) default:; } } + +} // namespace bobby diff --git a/main/displays/batteryinfodisplay.h b/main/screens/batteryinfodisplay.h similarity index 52% rename from main/displays/batteryinfodisplay.h rename to main/screens/batteryinfodisplay.h index 3e68fc8..f7bca85 100644 --- a/main/displays/batteryinfodisplay.h +++ b/main/screens/batteryinfodisplay.h @@ -1,18 +1,25 @@ #pragma once +// 3rdparty lib includes +#include + // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class BatteryInfoDisplay : public BobbyDisplay { using Base = BobbyDisplay; public: - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void buttonPressed(espgui::Button button) override; private: static constexpr const auto m_offset = 40; uint16_t m_lastBarCount{0}; }; + +} // namespace bobby diff --git a/main/displays/menus/batterymenu.cpp b/main/screens/batterymenu.cpp similarity index 80% rename from main/displays/menus/batterymenu.cpp rename to main/screens/batterymenu.cpp index 809eee9..f0f38d2 100644 --- a/main/displays/menus/batterymenu.cpp +++ b/main/screens/batterymenu.cpp @@ -1,34 +1,29 @@ #include "batterymenu.h" // 3rdparty lib includes -#include -#include #include -#include #include -#include -#include +#include #include - -#include +#include +#include +#include +#include +#include // Local includes -#include "utils.h" -#include "icons/settings.h" -#include "battery.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/calibratevoltagedisplay.h" #include "accessors/settingsaccessors.h" #include "battery.h" -#include "displays/batterygraphdisplay.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/calibratevoltagedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" #include "icons/graph.h" #include "icons/settings.h" -#include "mainmenu.h" +#include "screens/batterygraphdisplay.h" +#include "screens/calibratevoltagedisplay.h" #include "typesafeenumchangemenu.h" #include "utils.h" +namespace bobby { + namespace { constexpr char TEXT_BATTERY[] = "Battery"; constexpr char TEXT_CELL_SERIES[] = "Cells (Series)"; @@ -98,36 +93,28 @@ std::string BatteryMenu::text() const return TEXT_BATTERY; } -void BatteryMenu::initScreen() +void BatteryMenu::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); - m_batPercentBootLabel.start(); - m_batPercentNowLabel.start(); + Base::initScreen(tft); + m_batPercentBootLabel.start(tft); + m_batPercentNowLabel.start(tft); + + m_doubleProgressBarBatPercentage.start(tft); } -void BatteryMenu::start() +void BatteryMenu::redraw(espgui::TftInterface &tft) { - Base::start(); - m_doubleProgressBarBatPercentage.start(); -} - -void BatteryMenu::redraw() -{ - Base::redraw(); + Base::redraw(tft); if (const auto avgVoltage = controllers.getAvgVoltage(); avgVoltage) { const auto batPercent = getBatteryPercentage(*avgVoltage, BatteryCellType(configs.battery.cellType.value())); if (battery::bootBatPercentage) { - m_doubleProgressBarBatPercentage.redraw(batPercent, *battery::bootBatPercentage); + m_doubleProgressBarBatPercentage.redraw(tft, batPercent, *battery::bootBatPercentage); - tft.setTextFont(2); - tft.setTextColor(TFT_DARKGREY, TFT_BLACK); - m_batPercentNowLabel.redraw(fmt::format("{:.2f} %", batPercent)); - m_batPercentBootLabel.redraw(fmt::format("{:.2f} %", *battery::bootBatPercentage)); - tft.setTextFont(4); - tft.setTextColor(TFT_WHITE, TFT_BLACK); + m_batPercentNowLabel.redraw(tft, fmt::format("{:.2f} %", batPercent), espgui::TFT_DARKGREY, espgui::TFT_BLACK, 2); + m_batPercentBootLabel.redraw(tft, fmt::format("{:.2f} %", *battery::bootBatPercentage), espgui::TFT_DARKGREY, espgui::TFT_BLACK, 2); } } } @@ -136,3 +123,5 @@ void BatteryMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/screens/batterymenu.h b/main/screens/batterymenu.h new file mode 100644 index 0000000..e9cd7be --- /dev/null +++ b/main/screens/batterymenu.h @@ -0,0 +1,33 @@ +#pragma once + +// 3rdparty lib includes +#include +#include +#include +#include + +// local includes +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { + +class BatteryMenu : public BobbyMenuDisplay +{ + using Base = BobbyMenuDisplay; + +public: + BatteryMenu(); + + std::string text() const override; + + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; + void back() override; + +private: + bobby::DoubleProgressBar m_doubleProgressBarBatPercentage{75, 68, 90, 24, 0, 100, espgui::TFT_RED, espgui::TFT_GREEN}; + espgui::Label m_batPercentNowLabel {170, 68}; + espgui::Label m_batPercentBootLabel{170, 82}; +}; + +} // namespace bobby diff --git a/main/displays/menus/blesettingsmenu.cpp b/main/screens/blesettingsmenu.cpp similarity index 90% rename from main/displays/menus/blesettingsmenu.cpp rename to main/screens/blesettingsmenu.cpp index c98a0b1..013f8bd 100644 --- a/main/displays/menus/blesettingsmenu.cpp +++ b/main/screens/blesettingsmenu.cpp @@ -2,19 +2,21 @@ // 3rdparty lib includes #include -#include #include -#include +#include #include #include +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" #include "accessors/settingsaccessors.h" -#include "bletexthelpers.h" -#include "displays/menus/settingsmenu.h" -#include "bobbycheckbox.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/settingsmenu.h" +#include "guihelpers/bobbycheckbox.h" +#include "texthelpers/bletexthelpers.h" + +namespace bobby { namespace { constexpr char TEXT_BLESETTINGS[] = "BLE settings"; @@ -53,3 +55,4 @@ void BleSettingsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/blesettingsmenu.h b/main/screens/blesettingsmenu.h similarity index 69% rename from main/displays/menus/blesettingsmenu.h rename to main/screens/blesettingsmenu.h index 2030627..6f2abac 100644 --- a/main/displays/menus/blesettingsmenu.h +++ b/main/screens/blesettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class BleSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/bluetoothsettingsmenu.h b/main/screens/bluetoothsettingsmenu.h similarity index 97% rename from main/displays/menus/bluetoothsettingsmenu.h rename to main/screens/bluetoothsettingsmenu.h index 0dd8b66..e2042ec 100644 --- a/main/displays/menus/bluetoothsettingsmenu.h +++ b/main/screens/bluetoothsettingsmenu.h @@ -7,7 +7,7 @@ #ifdef FEATURE_BLUETOOTH #include "changevaluedisplay_bluetoothmode.h" #endif -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" #include "menuitem.h" #include "actions/dummyaction.h" #ifdef FEATURE_BLUETOOTH @@ -18,7 +18,7 @@ #include "actions/bluetoothdisconnectaction.h" #endif #include "actions/switchscreenaction.h" -#include "bluetoothtexthelpers.h" +#include "texthelpers/bluetoothtexthelpers.h" #include "accessors/settingsaccessors.h" #include "icons/back.h" diff --git a/main/displays/bmsdisplay.cpp b/main/screens/bmsdisplay.cpp similarity index 95% rename from main/displays/bmsdisplay.cpp rename to main/screens/bmsdisplay.cpp index e2e7d24..af05531 100644 --- a/main/displays/bmsdisplay.cpp +++ b/main/screens/bmsdisplay.cpp @@ -1,11 +1,11 @@ #include "bmsdisplay.h" #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) -#include "displays/menus/mainmenu.h" -#include "displays/speedinfodisplay.h" -#include "displays/statusdisplay.h" +#include "screens/mainmenu.h" +#include "screens/speedinfodisplay.h" +#include "screens/statusdisplay.h" #include "screenmanager.h" -#include "tftinstance.h" +#include "guihelpers/bobbymenudisplay.h" using namespace espgui; diff --git a/main/displays/bmsdisplay.h b/main/screens/bmsdisplay.h similarity index 100% rename from main/displays/bmsdisplay.h rename to main/screens/bmsdisplay.h diff --git a/main/displays/menus/bmsmenu.cpp b/main/screens/bmsmenu.cpp similarity index 100% rename from main/displays/menus/bmsmenu.cpp rename to main/screens/bmsmenu.cpp diff --git a/main/displays/menus/bmsmenu.h b/main/screens/bmsmenu.h similarity index 85% rename from main/displays/menus/bmsmenu.h rename to main/screens/bmsmenu.h index ab4177e..d6e300a 100644 --- a/main/displays/menus/bmsmenu.h +++ b/main/screens/bmsmenu.h @@ -2,7 +2,7 @@ #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" class BmsMenu : public BobbyMenuDisplay { diff --git a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp b/main/screens/boardcomputerhardwaresettingsmenu.cpp similarity index 97% rename from main/displays/menus/boardcomputerhardwaresettingsmenu.cpp rename to main/screens/boardcomputerhardwaresettingsmenu.cpp index a2c4893..822e27d 100644 --- a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp +++ b/main/screens/boardcomputerhardwaresettingsmenu.cpp @@ -1,30 +1,31 @@ #include "boardcomputerhardwaresettingsmenu.h" // 3rdparty lib includes -#include -#include #include -#include #include +#include +#include +#include #include #include // local includes #include "accessors/settingsaccessors.h" #include "actions/setupactions.h" -#include "bobbycheckbox.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/menus/extrabuttoncalibratemenu.h" -#include "displays/menus/lockscreensettingsmenu.h" -#include "displays/menus/setupquickactionsmenu.h" -#include "displays/menus/timersmenu.h" -#include "displays/potiscalibratedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "guihelpers/bobbycheckbox.h" #include "icons/lock.h" +#include "screens/extrabuttoncalibratemenu.h" +#include "screens/lockscreensettingsmenu.h" +#include "screens/setupquickactionsmenu.h" +#include "screens/timersmenu.h" #ifdef FEATURE_JOYSTICK -#include "displays/joystickdebugdisplay.h" +#include "screens/joystickdebugdisplay.h" #endif +namespace bobby { + namespace { constexpr char TEXT_BOARDCOMPUTERHARDWARESETTINGS[] = "Boardcomputer H/W settings"; constexpr char TEXT_BUTTONCALIBRATE[] = "Button Calibrate"; @@ -238,3 +239,5 @@ void BoardcomputerHardwareSettingsMenu::back() { popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/boardcomputerhardwaresettingsmenu.h b/main/screens/boardcomputerhardwaresettingsmenu.h similarity index 72% rename from main/displays/menus/boardcomputerhardwaresettingsmenu.h rename to main/screens/boardcomputerhardwaresettingsmenu.h index 3401014..575d7d2 100644 --- a/main/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/main/screens/boardcomputerhardwaresettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class BoardcomputerHardwareSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/buzzermenu.cpp b/main/screens/buzzermenu.cpp similarity index 97% rename from main/displays/menus/buzzermenu.cpp rename to main/screens/buzzermenu.cpp index 5c51e0c..1741034 100644 --- a/main/displays/menus/buzzermenu.cpp +++ b/main/screens/buzzermenu.cpp @@ -8,12 +8,14 @@ #include "icons/back.h" // local includes -#include "displays/bobbychangevaluedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" #include "utils.h" #include "globals.h" #include "accessors/settingsaccessors.h" -#include "displays/menus/settingsmenu.h" -#include "bobbycheckbox.h" +#include "screens/settingsmenu.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_BUZZER[] = "Buzzer"; @@ -119,3 +121,4 @@ void BuzzerMenu::back() { popScreen(); } +} // namespace bobinette diff --git a/main/displays/menus/buzzermenu.h b/main/screens/buzzermenu.h similarity index 67% rename from main/displays/menus/buzzermenu.h rename to main/screens/buzzermenu.h index cfdc0bd..77af208 100644 --- a/main/displays/menus/buzzermenu.h +++ b/main/screens/buzzermenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class BuzzerMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/calibratevoltagedisplay.cpp b/main/screens/calibratevoltagedisplay.cpp similarity index 97% rename from main/displays/calibratevoltagedisplay.cpp rename to main/screens/calibratevoltagedisplay.cpp index abe673e..27689d2 100644 --- a/main/displays/calibratevoltagedisplay.cpp +++ b/main/screens/calibratevoltagedisplay.cpp @@ -12,11 +12,13 @@ #include "utils.h" #include "icons/settings.h" #include "battery.h" -#include "menus/batterymenu.h" +#include "batterymenu.h" #include "newsettings.h" -#include "displays/menus/batterymenu.h" +#include "screens/batterymenu.h" #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_BATTERY_CALIBRATE[] = "Calibrate Voltages"; @@ -143,3 +145,4 @@ void CalibrateVoltageDisplay::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/calibratevoltagedisplay.h b/main/screens/calibratevoltagedisplay.h similarity index 70% rename from main/displays/calibratevoltagedisplay.h rename to main/screens/calibratevoltagedisplay.h index 1efa967..0bf6ef6 100644 --- a/main/displays/calibratevoltagedisplay.h +++ b/main/screens/calibratevoltagedisplay.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class CalibrateVoltageDisplay : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/candebugmenu.cpp b/main/screens/candebugmenu.cpp similarity index 97% rename from main/displays/menus/candebugmenu.cpp rename to main/screens/candebugmenu.cpp index 530feb6..2a5a433 100644 --- a/main/displays/menus/candebugmenu.cpp +++ b/main/screens/candebugmenu.cpp @@ -6,20 +6,22 @@ #include // esp-idf includes -#include +#include "esp_log.h" // 3rdparty lib includes -#include +#include "fmt/core.h" // 3rdparty lib includes -#include -#include -#include -#include -#include +#include "menuitem.h" +#include "actions/popscreenaction.h" +#include "actions/dummyaction.h" +#include "icons/back.h" +#include "screenmanager.h" // local includes -#include "bobbyerrorhandler.h" +#include "guihelpers/bobbyerrorhandler.h" + +namespace bobby { namespace { constexpr char TAG[] = "CANDEBUG"; @@ -288,5 +290,6 @@ void CanDebugMenu::back() { espgui::popScreen(); } +} // namespace bobby #endif diff --git a/main/displays/menus/candebugmenu.h b/main/screens/candebugmenu.h similarity index 74% rename from main/displays/menus/candebugmenu.h rename to main/screens/candebugmenu.h index cd9cf32..a49588c 100644 --- a/main/displays/menus/candebugmenu.h +++ b/main/screens/candebugmenu.h @@ -1,15 +1,17 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" #ifdef FEATURE_CAN // esp-idf includes -#include +#include "driver/twai.h" // 3rdparty lib includes -#include +#include "tl/expected.hpp" + +namespace bobby { class CanDebugMenu : public BobbyMenuDisplay { @@ -28,4 +30,6 @@ private: tl::expected m_last_can_status_info; }; +} // namespace bobby + #endif diff --git a/main/displays/menus/cloudsettingsmenu.cpp b/main/screens/cloudsettingsmenu.cpp similarity index 90% rename from main/displays/menus/cloudsettingsmenu.cpp rename to main/screens/cloudsettingsmenu.cpp index 10555c1..2bb3ff6 100644 --- a/main/displays/menus/cloudsettingsmenu.cpp +++ b/main/screens/cloudsettingsmenu.cpp @@ -1,23 +1,25 @@ #include "cloudsettingsmenu.h" // 3rdparty lib includes -#include -#include -#include -#include -#include -#include -#include -#include +#include "actions/dummyaction.h" +#include "actions/popscreenaction.h" +#include "actions/pushscreenaction.h" +#include "changevaluedisplay.h" +#include "changevaluedisplay_string.h" +#include "fmt/core.h" +#include "icons/back.h" +#include "menuitem.h" // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" +#include "guihelpers/bobbycheckbox.h" #include "cloud.h" -#include "cloudtexthelpers.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/menus/settingsmenu.h" +#include "texthelpers/cloudtexthelpers.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/settingsmenu.h" + +namespace bobby { namespace { constexpr char TEXT_CLOUDSETTINGS[] = "Cloud settings"; @@ -107,3 +109,5 @@ void CloudSettingsMenu::back() { popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/cloudsettingsmenu.h b/main/screens/cloudsettingsmenu.h similarity index 69% rename from main/displays/menus/cloudsettingsmenu.h rename to main/screens/cloudsettingsmenu.h index 99aedb1..047950c 100644 --- a/main/displays/menus/cloudsettingsmenu.h +++ b/main/screens/cloudsettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class CloudSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/commanddebugmenu.h b/main/screens/commanddebugmenu.h similarity index 91% rename from main/displays/menus/commanddebugmenu.h rename to main/screens/commanddebugmenu.h index 4e45ae4..b58db6d 100644 --- a/main/displays/menus/commanddebugmenu.h +++ b/main/screens/commanddebugmenu.h @@ -1,13 +1,15 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" #include "utils.h" #include "menuitem.h" #include "actions/dummyaction.h" #include "actions/popscreenaction.h" #include "icons/back.h" -#include "debugtexthelpers.h" +#include "texthelpers/debugtexthelpers.h" + +namespace bobby { template class CommandDebugMenu : @@ -34,3 +36,5 @@ constexpr char TEXT_FRONTCOMMAND[] = "Front command"; constexpr char TEXT_BACKCOMMAND[] = "Back command"; using FrontCommandDebugMenu = CommandDebugMenu; using BackCommandDebugMenu = CommandDebugMenu; + +} // namespace bobby diff --git a/main/displays/confiscationdisplay.cpp b/main/screens/confiscationdisplay.cpp similarity index 64% rename from main/displays/confiscationdisplay.cpp rename to main/screens/confiscationdisplay.cpp index 646cb2a..e009803 100644 --- a/main/displays/confiscationdisplay.cpp +++ b/main/screens/confiscationdisplay.cpp @@ -1,15 +1,18 @@ #include "confiscationdisplay.h" // 3rdparty lib includes -#include -#include #include #include +#include +#include +#include // local includes #include "globals.h" #include "icons/shortcircuit.h" +namespace bobby { + using namespace std::chrono_literals; float calculateMegaJoules() @@ -29,46 +32,40 @@ void ConfiscationDisplay::start() m_nextRestart = espchrono::millis_clock::now() + std::chrono::seconds{cpputils::randomNumber(3, 7, espcpputils::esp_random_device{})}; } -void ConfiscationDisplay::initScreen() +void ConfiscationDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - espgui::tft.setSwapBytes(true); - espgui::tft.pushImage(10, 70, bobbyicons::shortcircuit.WIDTH, bobbyicons::shortcircuit.HEIGHT, bobbyicons::shortcircuit.buffer); - espgui::tft.setSwapBytes(false); + tft.setSwapBytes(true); + tft.pushImage(10, 70, bobbyicons::shortcircuit.WIDTH, bobbyicons::shortcircuit.HEIGHT, bobbyicons::shortcircuit.buffer, true); + tft.setSwapBytes(false); - m_progressBar.start(); + m_progressBar.start(tft); - m_label.start(); - - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - espgui::tft.setTextFont(2); + m_label.start(tft); auto y = 235; constexpr auto lineheight = 15; - espgui::tft.drawString("Bei erneuter, widerrechtlicher", 10, y+=lineheight); - espgui::tft.drawString("Beschlagnahmung wird die Selbst-", 10, y+=lineheight); - espgui::tft.drawString("Vernichtung durch Kurzschluss", 10, y+=lineheight); - espgui::tft.drawString(fmt::format("der Batterie eingeleitet (ca {:.2f}MJ)", calculateMegaJoules()), 10, y+=lineheight); + tft.drawString("Bei erneuter, widerrechtlicher", 10, y+=lineheight, TFT_WHITE, TFT_BLACK, 2); + tft.drawString("Beschlagnahmung wird die Selbst-", 10, y+=lineheight, TFT_WHITE, TFT_BLACK, 2); + tft.drawString("Vernichtung durch Kurzschluss", 10, y+=lineheight, TFT_WHITE, TFT_BLACK, 2); + tft.drawString(fmt::format("der Batterie eingeleitet (ca {:.2f}MJ)", calculateMegaJoules()), 10, y+=lineheight, TFT_WHITE, TFT_BLACK, 2); } -void ConfiscationDisplay::redraw() +void ConfiscationDisplay::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); - m_progressBar.redraw(m_progress); + m_progressBar.redraw(tft, m_progress); - espgui::tft.setTextColor(TFT_YELLOW, TFT_BLACK); - - espgui::tft.setTextFont(2); - m_label.redraw([](){ + m_label.redraw(tft, [](){ if (const auto period = espchrono::millis_clock::now().time_since_epoch() % 6000ms; period < 2000ms) return "Halten Sie 10m Abstand."; else if (period < 4000ms) return "Bewegen Sie kein Rad."; else return "Die Lenkung nicht drehen."; - }()); + }(), TFT_YELLOW, TFT_BLACK, 2); } void ConfiscationDisplay::update() @@ -114,3 +111,5 @@ std::string ConfiscationDisplay::text() const { return "Explosions-Modus"; } + +} // namespace bobby diff --git a/main/displays/confiscationdisplay.h b/main/screens/confiscationdisplay.h similarity index 78% rename from main/displays/confiscationdisplay.h rename to main/screens/confiscationdisplay.h index cd9a056..fb16898 100644 --- a/main/displays/confiscationdisplay.h +++ b/main/screens/confiscationdisplay.h @@ -1,14 +1,17 @@ #pragma once // 3rdparty lib includes +#include +#include #include #include -#include // local includes -#include "bobbydisplaywithtitle.h" +#include "guihelpers/bobbydisplaywithtitle.h" #include "modes/ignoreinputmode.h" +namespace bobby { + class ConfiscationDisplay : public BobbyDisplayWithTitle { using Base = BobbyDisplayWithTitle; @@ -16,8 +19,8 @@ class ConfiscationDisplay : public BobbyDisplayWithTitle public: void start() override; - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void update() override; void stop() override; @@ -37,3 +40,5 @@ private: ModeInterface *m_oldMode; IgnoreInputMode m_mode{0, bobbycar::protocol::ControlType::FieldOrientedControl, bobbycar::protocol::ControlMode::Speed}; }; + +} // namespace bobby diff --git a/main/displays/menus/controllerhardwaresettingsmenu.cpp b/main/screens/controllerhardwaresettingsmenu.cpp similarity index 95% rename from main/displays/menus/controllerhardwaresettingsmenu.cpp rename to main/screens/controllerhardwaresettingsmenu.cpp index e44b4d5..f115186 100644 --- a/main/displays/menus/controllerhardwaresettingsmenu.cpp +++ b/main/screens/controllerhardwaresettingsmenu.cpp @@ -10,14 +10,16 @@ #include "icons/back.h" // local includes -#include "displays/bobbychangevaluedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" #include "utils.h" #include "globals.h" #include "accessors/settingsaccessors.h" -#include "displays/menus/enablemenu.h" -#include "displays/menus/invertmenu.h" -#include "displays/menus/settingsmenu.h" -#include "bobbycheckbox.h" +#include "screens/enablemenu.h" +#include "screens/invertmenu.h" +#include "screens/settingsmenu.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_CONTROLLERHARDWARESETTINGS[] = "Controller H/W settings"; @@ -106,3 +108,5 @@ void ControllerHardwareSettingsMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/controllerhardwaresettingsmenu.h b/main/screens/controllerhardwaresettingsmenu.h similarity index 72% rename from main/displays/menus/controllerhardwaresettingsmenu.h rename to main/screens/controllerhardwaresettingsmenu.h index 6cdc7bf..68ad5d1 100644 --- a/main/displays/menus/controllerhardwaresettingsmenu.h +++ b/main/screens/controllerhardwaresettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class ControllerHardwareSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/crashmenu.cpp b/main/screens/crashmenu.cpp similarity index 95% rename from main/displays/menus/crashmenu.cpp rename to main/screens/crashmenu.cpp index 22641c9..add7177 100644 --- a/main/displays/menus/crashmenu.cpp +++ b/main/screens/crashmenu.cpp @@ -8,6 +8,8 @@ #include "actions/assertaction.h" #include "actions/dividebyzeroaction.h" +namespace bobby { + namespace { constexpr char TEXT_CRASHMENU[] = "Crash Menu"; constexpr char TEXT_CRASH_ASSERT[] = "assert(0)"; @@ -32,3 +34,5 @@ void CrashMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/crashmenu.h b/main/screens/crashmenu.h similarity index 67% rename from main/displays/menus/crashmenu.h rename to main/screens/crashmenu.h index d8322ba..46bb868 100644 --- a/main/displays/menus/crashmenu.h +++ b/main/screens/crashmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class CrashMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/debugmenu.cpp b/main/screens/debugmenu.cpp similarity index 88% rename from main/displays/menus/debugmenu.cpp rename to main/screens/debugmenu.cpp index 327a546..53f7fa1 100644 --- a/main/displays/menus/debugmenu.cpp +++ b/main/screens/debugmenu.cpp @@ -1,38 +1,40 @@ #include "debugmenu.h" // 3rdparty lib includes -#include -#include -#include #include +#include +#include #include +#include #include // local includes -#include "utils.h" -#include "actions/loadsettingsaction.h" -#include "actions/savesettingsaction.h" +#include "accessors/settingsaccessors.h" #include "actions/erasenvsaction.h" +#include "actions/loadsettingsaction.h" #include "actions/resetnvsaction.h" -#include "icons/lock.h" +#include "actions/savesettingsaction.h" +#include "debugcolorhelpers.h" +#include "screens/taskmanagermenu.h" +#include "screens/qrcodedebug.h" +#include "screens/xydebugdisplay.h" #include "icons/battery.h" #include "icons/info.h" -#include "debugcolorhelpers.h" -#include "esptexthelpers.h" -#include "accessors/settingsaccessors.h" -#include "displays/qrcodedebug.h" -#include "displays/xydebugdisplay.h" -#include "displays/menus/taskmanagermenu.h" +#include "icons/lock.h" +#include "texthelpers/esptexthelpers.h" +#include "utils.h" #ifdef FEATURE_CAN -#include "displays/menus/candebugmenu.h" +#include "screens/candebugmenu.h" #endif -#include "displays/menus/commanddebugmenu.h" -#include "displays/menus/motorstatedebugmenu.h" -#include "displays/menus/feedbackdebugmenu.h" -#include "displays/menus/motorfeedbackdebugmenu.h" -#include "displays/menus/dynamicdebugmenu.h" -#include "displays/menus/batterydebugmenu.h" -#include "bobbycheckbox.h" +#include "screens/batterydebugmenu.h" +#include "screens/commanddebugmenu.h" +#include "screens/dynamicdebugmenu.h" +#include "screens/feedbackdebugmenu.h" +#include "screens/motorfeedbackdebugmenu.h" +#include "screens/motorstatedebugmenu.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_DEBUG[] = "Debug"; @@ -101,19 +103,19 @@ DebugMenu::DebugMenu() constructMenuItem, PushScreenAction>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem>(); - constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); - constructMenuItem, PushScreenAction, BackFeedbackColor>>(); + constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); + constructMenuItem, PushScreenAction, BackFeedbackColor>>(); constructMenuItem>(); - constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); - constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); - constructMenuItem, PushScreenAction, BackFeedbackColor>>(); - constructMenuItem, PushScreenAction, BackFeedbackColor>>(); + constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); + constructMenuItem, PushScreenAction, FrontFeedbackColor>>(); + constructMenuItem, PushScreenAction, BackFeedbackColor>>(); + constructMenuItem, PushScreenAction, BackFeedbackColor>>(); constructMenuItem>(); constructMenuItem, LoadSettingsAction>>(); constructMenuItem, SaveSettingsAction>>(); constructMenuItem, EraseNvsAction>>(); constructMenuItem>(); - constructMenuItem, ResetNVSAction, StaticMenuItemIcon<&bobbyicons::info>>>(); + constructMenuItem, ResetNVSAction, StaticMenuItemIcon<&bobbyicons::info>>>(); constructMenuItem, PushScreenAction>>(); constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } @@ -127,3 +129,5 @@ void DebugMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/debugmenu.h b/main/screens/debugmenu.h similarity index 67% rename from main/displays/menus/debugmenu.h rename to main/screens/debugmenu.h index ed03a16..f7e30b2 100644 --- a/main/displays/menus/debugmenu.h +++ b/main/screens/debugmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class DebugMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/defaultmodesettingsmenu.cpp b/main/screens/defaultmodesettingsmenu.cpp similarity index 98% rename from main/displays/menus/defaultmodesettingsmenu.cpp rename to main/screens/defaultmodesettingsmenu.cpp index 23e0483..a164876 100644 --- a/main/displays/menus/defaultmodesettingsmenu.cpp +++ b/main/screens/defaultmodesettingsmenu.cpp @@ -1,21 +1,23 @@ #include "defaultmodesettingsmenu.h" // 3rdparty lib includes -#include -#include -#include -#include #include +#include +#include +#include #include +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "utils.h" -#include "changevaluedisplay_unifiedmodelmode.h" #include "accessors/settingsaccessors.h" -#include "displays/menus/handbremssettingsmenu.h" -#include "bobbycheckbox.h" +#include "changevaluedisplay_unifiedmodelmode.h" +#include "guihelpers/bobbycheckbox.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/handbremssettingsmenu.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings"; @@ -150,3 +152,4 @@ void DefaultModeSettingsMenu::back() { popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/defaultmodesettingsmenu.h b/main/screens/defaultmodesettingsmenu.h similarity index 70% rename from main/displays/menus/defaultmodesettingsmenu.h rename to main/screens/defaultmodesettingsmenu.h index 237c453..361bcaf 100644 --- a/main/displays/menus/defaultmodesettingsmenu.h +++ b/main/screens/defaultmodesettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class DefaultModeSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/demosmenu.cpp b/main/screens/demosmenu.cpp similarity index 78% rename from main/displays/menus/demosmenu.cpp rename to main/screens/demosmenu.cpp index b8e7d91..967bbe0 100644 --- a/main/displays/menus/demosmenu.cpp +++ b/main/screens/demosmenu.cpp @@ -1,18 +1,20 @@ #include "demosmenu.h" // 3rdparty lib includes -#include "menuitem.h" -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" -#include "displays/starfielddisplay.h" -#include "displays/pingpongdisplay.h" -#include "displays/spirodisplay.h" -#include "displays/gameoflifedisplay.h" +#include +#include +#include +#include +#include +#include +#include +#include // local includes #include "utils.h" +namespace bobby { + namespace { constexpr char TEXT_DEMOS[] = "Demos"; constexpr char TEXT_STARFIELD[] = "Starfield"; @@ -41,3 +43,4 @@ void DemosMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/demosmenu.h b/main/screens/demosmenu.h similarity index 67% rename from main/displays/menus/demosmenu.h rename to main/screens/demosmenu.h index 2ae12c6..104faac 100644 --- a/main/displays/menus/demosmenu.h +++ b/main/screens/demosmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class DemosMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/dynamicdebugmenu.cpp b/main/screens/dynamicdebugmenu.cpp similarity index 93% rename from main/displays/menus/dynamicdebugmenu.cpp rename to main/screens/dynamicdebugmenu.cpp index 81668a2..ec4da1d 100644 --- a/main/displays/menus/dynamicdebugmenu.cpp +++ b/main/screens/dynamicdebugmenu.cpp @@ -5,24 +5,26 @@ #include // 3rdparty lib includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "espchrono.h" +#include "fmt/core.h" +#include "randomutils.h" +#include "esprandom.h" +#include "menuitem.h" +#include "actions/dummyaction.h" +#include "icons/back.h" +#include "changevaluedisplay.h" +#include "changevaluedisplay_bool.h" +#include "actions/pushscreenaction.h" +#include "actions/popscreenaction.h" // local includes -#include "displays/bobbychangevaluedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" #include "utils.h" #include "icons/lock.h" -#include "bobbycheckbox.h" -#include "bobbyerrorhandler.h" +#include "guihelpers/bobbycheckbox.h" +#include "guihelpers/bobbyerrorhandler.h" + +namespace bobby { using namespace espgui; @@ -208,3 +210,5 @@ tl::expected ToggleAccessor::setValue(bool value) } } // namespace + +} // namespace bobby diff --git a/main/displays/menus/dynamicdebugmenu.h b/main/screens/dynamicdebugmenu.h similarity index 86% rename from main/displays/menus/dynamicdebugmenu.h rename to main/screens/dynamicdebugmenu.h index c697146..29b456b 100644 --- a/main/displays/menus/dynamicdebugmenu.h +++ b/main/screens/dynamicdebugmenu.h @@ -8,7 +8,9 @@ #include // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class RandomText : public virtual espgui::TextInterface { @@ -29,3 +31,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/enablemenu.cpp b/main/screens/enablemenu.cpp similarity index 94% rename from main/displays/menus/enablemenu.cpp rename to main/screens/enablemenu.cpp index 8275530..fafca72 100644 --- a/main/displays/menus/enablemenu.cpp +++ b/main/screens/enablemenu.cpp @@ -3,9 +3,11 @@ // local includes #include "accessors/settingsaccessors.h" #include "actions/popscreenaction.h" -#include "bobbycheckbox.h" +#include "guihelpers/bobbycheckbox.h" #include "icons/back.h" +namespace bobby { + namespace { constexpr char TEXT_SETENABLED[] = "Set enabled"; constexpr char TEXT_ENABLEFRONTLEFT[] = "Enable front left"; @@ -34,3 +36,5 @@ void EnableMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/enablemenu.h b/main/screens/enablemenu.h similarity index 67% rename from main/displays/menus/enablemenu.h rename to main/screens/enablemenu.h index 0b763d9..324906c 100644 --- a/main/displays/menus/enablemenu.h +++ b/main/screens/enablemenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class EnableMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/espnowmenu.cpp b/main/screens/espnowmenu.cpp similarity index 91% rename from main/displays/menus/espnowmenu.cpp rename to main/screens/espnowmenu.cpp index 5a26c07..5608075 100644 --- a/main/displays/menus/espnowmenu.cpp +++ b/main/screens/espnowmenu.cpp @@ -1,23 +1,24 @@ #include "espnowmenu.h" // 3rdparty lib includes -#include "actions/dummyaction.h" -#include "actions/pushscreenaction.h" -#include "icons/back.h" #include #include +#include #include #include +#include #include #include // local includes +#include "espnowfunctions.h" +#include "guihelpers/bobbycheckbox.h" #include "icons/settings.h" #include "icons/time.h" -#include "displays/menus/espnowsettingsmenu.h" -#include "displays/menus/settingsmenu.h" -#include "bobbycheckbox.h" -#include "espnowfunctions.h" +#include "screens/espnowsettingsmenu.h" +#include "screens/settingsmenu.h" + +namespace bobby { namespace { constexpr char TEXT_ESPNOW_MENU[] = "ESP-Now Menu"; @@ -74,3 +75,5 @@ void EspNowMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/espnowmenu.h b/main/screens/espnowmenu.h similarity index 67% rename from main/displays/menus/espnowmenu.h rename to main/screens/espnowmenu.h index cc69737..0898d69 100644 --- a/main/displays/menus/espnowmenu.h +++ b/main/screens/espnowmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class EspNowMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/espnowsettingsmenu.cpp b/main/screens/espnowsettingsmenu.cpp similarity index 92% rename from main/displays/menus/espnowsettingsmenu.cpp rename to main/screens/espnowsettingsmenu.cpp index 1ca4c92..5a3b121 100644 --- a/main/displays/menus/espnowsettingsmenu.cpp +++ b/main/screens/espnowsettingsmenu.cpp @@ -3,11 +3,13 @@ // 3rdparty lib includes #include "actions/popscreenaction.h" #include "icons/back.h" -#include +#include "textinterface.h" // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_ESPNOW_SETTINGS[] = "ESP-Now settings"; @@ -36,3 +38,5 @@ void EspNowSettingsMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/espnowsettingsmenu.h b/main/screens/espnowsettingsmenu.h similarity index 69% rename from main/displays/menus/espnowsettingsmenu.h rename to main/screens/espnowsettingsmenu.h index 0e4eaaf..b88dcd8 100644 --- a/main/displays/menus/espnowsettingsmenu.h +++ b/main/screens/espnowsettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class EspNowSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/extrabuttoncalibratemenu.cpp b/main/screens/extrabuttoncalibratemenu.cpp similarity index 95% rename from main/displays/menus/extrabuttoncalibratemenu.cpp rename to main/screens/extrabuttoncalibratemenu.cpp index b212d5f..0134546 100644 --- a/main/displays/menus/extrabuttoncalibratemenu.cpp +++ b/main/screens/extrabuttoncalibratemenu.cpp @@ -1,18 +1,23 @@ #include "extrabuttoncalibratemenu.h" +// system includes +#include + // 3rd party includes -#include -#include +#include #include +#include #include +#include +#include // local includes -#include "esp_log.h" #include "accessors/settingsaccessors.h" -#include "actions/popscreenaction.h" -#include "bobbyerrorhandler.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" +#include "screens/boardcomputerhardwaresettingsmenu.h" #include "globals.h" +#include "guihelpers/bobbyerrorhandler.h" + +namespace bobby { using namespace espgui; @@ -55,9 +60,9 @@ public: int color() const override { if ((status == currentStatus) || (currentStatus == Idle)) - return TFT_WHITE; + return espgui::TFT_WHITE; else - return color565(50,50,50); + return espgui::color565(50,50,50); } std::string text() const override @@ -261,3 +266,5 @@ bool ExtraButtonCalibrateMenu::validateNewButton(uint8_t button) (button != configs.dpadMappingRight.value()) ); } + +} // namespace bobby diff --git a/main/displays/menus/extrabuttoncalibratemenu.h b/main/screens/extrabuttoncalibratemenu.h similarity index 92% rename from main/displays/menus/extrabuttoncalibratemenu.h rename to main/screens/extrabuttoncalibratemenu.h index 5249f7e..e51e098 100644 --- a/main/displays/menus/extrabuttoncalibratemenu.h +++ b/main/screens/extrabuttoncalibratemenu.h @@ -1,10 +1,12 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" #include "modeinterface.h" #include "modes/ignoreinputmode.h" +namespace bobby { + namespace { enum Status : uint8_t { @@ -44,3 +46,5 @@ private: IgnoreInputMode m_mode{0, bobbycar::protocol::ControlType::FieldOrientedControl, bobbycar::protocol::ControlMode::Torque}; bool validateNewButton(uint8_t button); }; + +} // namespace bobby diff --git a/main/displays/menus/featureflagsmenu.cpp b/main/screens/featureflagsmenu.cpp similarity index 95% rename from main/displays/menus/featureflagsmenu.cpp rename to main/screens/featureflagsmenu.cpp index 20cef1e..fc9846b 100644 --- a/main/displays/menus/featureflagsmenu.cpp +++ b/main/screens/featureflagsmenu.cpp @@ -1,7 +1,6 @@ #include "featureflagsmenu.h" // 3rdparty lib includes -#include #include #include #include @@ -9,11 +8,13 @@ #include // local includes -#include "bobbycheckbox.h" -#include "displays/bobbypopupdisplay.h" +#include "guihelpers/bobbypopupdisplay.h" +#include "guihelpers/bobbycheckbox.h" +#include "guihelpers/bobbyerrorhandler.h" #include "newsettings.h" #include "taskmanager.h" -#include "bobbyerrorhandler.h" + +namespace bobby { namespace { constexpr const char * const TAG = "FEATUREFLAGSMENU"; @@ -123,3 +124,4 @@ void FeatureFlagsMenu::back() exitFeatureFlagsMenu(); } +} // namespace bobby diff --git a/main/screens/featureflagsmenu.h b/main/screens/featureflagsmenu.h new file mode 100644 index 0000000..7155d25 --- /dev/null +++ b/main/screens/featureflagsmenu.h @@ -0,0 +1,20 @@ +#pragma once + +// local includes +#include "guihelpers/menudisplaywithtime.h" + +namespace bobby { + +class FeatureFlagsMenu : public bobby::MenuDisplayWithTime +{ + using Base = bobby::MenuDisplayWithTime; +public: + FeatureFlagsMenu(); + void start() override; + + std::string text() const override; + + void back() override; +}; + +} // namespace bobby diff --git a/main/displays/menus/feedbackdebugmenu.h b/main/screens/feedbackdebugmenu.h similarity index 71% rename from main/displays/menus/feedbackdebugmenu.h rename to main/screens/feedbackdebugmenu.h index 0cd7a93..96c1a44 100644 --- a/main/displays/menus/feedbackdebugmenu.h +++ b/main/screens/feedbackdebugmenu.h @@ -1,15 +1,19 @@ #pragma once +// 3rdparty lib includes +#include +#include +#include +#include + // local includes -#include "displays/bobbymenudisplay.h" -#include "utils.h" -#include "menuitem.h" -#include "actions/dummyaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" -#include "debugtexthelpers.h" #include "debugcolorhelpers.h" -#include "displays/menus/debugmenu.h" +#include "guihelpers/bobbymenudisplay.h" +#include "screens/debugmenu.h" +#include "texthelpers/debugtexthelpers.h" +#include "utils.h" + +namespace bobby { template class ColorInterface> class FeedbackDebugMenu : @@ -22,10 +26,10 @@ public: { using namespace espgui; //constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); //constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); - constructMenuItem, ColorInterface, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, ColorInterface, DummyAction>>(); constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } @@ -38,3 +42,5 @@ using FrontFeedbackDebugMenu = FeedbackDebugMenu; + +} // namespace bobby diff --git a/main/displays/gameoflifedisplay.cpp b/main/screens/gameoflifedisplay.cpp similarity index 85% rename from main/displays/gameoflifedisplay.cpp rename to main/screens/gameoflifedisplay.cpp index 84445a5..a1589c2 100644 --- a/main/displays/gameoflifedisplay.cpp +++ b/main/screens/gameoflifedisplay.cpp @@ -1,14 +1,18 @@ #include "gameoflifedisplay.h" // 3rdparty lib includes -#include #include -#include +#include #include +#include // local includes #include "screens.h" +namespace bobby { + +using namespace espgui; + void GameOfLifeDisplay::start() { Base::start(); @@ -17,28 +21,28 @@ void GameOfLifeDisplay::start() m_newgrid = std::make_unique>(); } -void GameOfLifeDisplay::initScreen() +void GameOfLifeDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); disableScreenFlip(true); - espgui::tft.setRotation(3); - espgui::tft.fillScreen(TFT_BLACK); + tft.setRotation(3); + tft.fillScreen(TFT_BLACK); } -void GameOfLifeDisplay::redraw() +void GameOfLifeDisplay::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); if (gen == 0) { - espgui::tft.fillScreen(TFT_BLACK); + tft.fillScreen(TFT_BLACK); initGrid(); } computeCA(); - drawGrid(); + drawGrid(tft); *m_grid = *m_newgrid; @@ -70,7 +74,7 @@ void GameOfLifeDisplay::buttonPressed(espgui::Button button) } } -void GameOfLifeDisplay::drawGrid() +void GameOfLifeDisplay::drawGrid(espgui::TftInterface &tft) { uint16_t color = TFT_WHITE; for (int16_t x = 1; x < GRIDX - 1; x++) { @@ -80,7 +84,7 @@ void GameOfLifeDisplay::drawGrid() color = 0xFFFF; //random(0xFFFF); else color = 0; - espgui::tft.fillRect(CELLXY * x, CELLXY * y, CELLXY, CELLXY, color); + tft.fillRect(CELLXY * x, CELLXY * y, CELLXY, CELLXY, color); } } } @@ -142,3 +146,5 @@ void GameOfLifeDisplay::computeCA() } } } + +} // namespace bobby diff --git a/main/displays/gameoflifedisplay.h b/main/screens/gameoflifedisplay.h similarity index 83% rename from main/displays/gameoflifedisplay.h rename to main/screens/gameoflifedisplay.h index 10b8d14..847fff5 100644 --- a/main/displays/gameoflifedisplay.h +++ b/main/screens/gameoflifedisplay.h @@ -4,8 +4,13 @@ #include #include +// 3rdparty lib includes +#include + // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class GameOfLifeDisplay : public BobbyDisplay { @@ -13,8 +18,8 @@ class GameOfLifeDisplay : public BobbyDisplay public: void start() override; - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void stop() override; void buttonPressed(espgui::Button button) override; @@ -22,7 +27,7 @@ public: private: //Draws the grid on the display - void drawGrid(); + void drawGrid(espgui::TftInterface &tft); //Initialise Grid void initGrid(); @@ -69,3 +74,5 @@ private: int gen = 0; }; + +} // namespace bobby diff --git a/main/displays/gametrakcalibratedisplay.h b/main/screens/gametrakcalibratedisplay.h similarity index 98% rename from main/displays/gametrakcalibratedisplay.h rename to main/screens/gametrakcalibratedisplay.h index 1d3456b..9a82693 100644 --- a/main/displays/gametrakcalibratedisplay.h +++ b/main/screens/gametrakcalibratedisplay.h @@ -10,7 +10,7 @@ #include // local includes -#include "bobbydisplay.h" +#include "../guihelpers/bobbydisplay.h" #include "globals.h" #include "modes/ignoreinputmode.h" diff --git a/main/displays/menus/gametrakmodesettingsmenu.h b/main/screens/gametrakmodesettingsmenu.h similarity index 93% rename from main/displays/menus/gametrakmodesettingsmenu.h rename to main/screens/gametrakmodesettingsmenu.h index 91f98f6..95f771f 100644 --- a/main/displays/menus/gametrakmodesettingsmenu.h +++ b/main/screens/gametrakmodesettingsmenu.h @@ -1,7 +1,7 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" #include "utils.h" #include "menuitem.h" #include "actions/popscreenaction.h" diff --git a/main/displays/menus/garagemenu.cpp b/main/screens/garagemenu.cpp similarity index 91% rename from main/displays/menus/garagemenu.cpp rename to main/screens/garagemenu.cpp index f45ffa4..0273432 100644 --- a/main/displays/menus/garagemenu.cpp +++ b/main/screens/garagemenu.cpp @@ -1,11 +1,11 @@ #include "garagemenu.h" // 3rd party libs -#include -#include -#include -#include -#include +#include "icons/back.h" +#include "menuitem.h" +#include "actioninterface.h" +#include "esp_log.h" +#include "menuitem.h" // local includes #include "actions/popscreenaction.h" @@ -13,6 +13,8 @@ #include "globals.h" #include "newsettings.h" +namespace bobby { + namespace { constexpr char TEXT_GARAGE[] = "Garage"; constexpr char TEXT_BACK[] = "Back"; @@ -64,3 +66,5 @@ void SendEspNowMessageAction::triggered() } } } // namespace + +} // namespace bobby diff --git a/main/displays/menus/garagemenu.h b/main/screens/garagemenu.h similarity index 67% rename from main/displays/menus/garagemenu.h rename to main/screens/garagemenu.h index 495141b..670427c 100644 --- a/main/displays/menus/garagemenu.h +++ b/main/screens/garagemenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class GarageMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/gitmenu.cpp b/main/screens/gitmenu.cpp similarity index 88% rename from main/displays/menus/gitmenu.cpp rename to main/screens/gitmenu.cpp index ddd523e..66ab999 100644 --- a/main/displays/menus/gitmenu.cpp +++ b/main/screens/gitmenu.cpp @@ -7,10 +7,12 @@ #include // local includes -#include "bobbyerrorhandler.h" -#include "displays/qrdisplay.h" +#include "guihelpers/bobbyerrorhandler.h" #include "icons/info.h" #include "icons/modes.h" +#include "screens/qrdisplay.h" + +namespace bobby { namespace { constexpr char TEXT_GIT[] = "Git"; @@ -51,11 +53,11 @@ GitMenu::GitMenu() { using namespace espgui; - constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); + constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); + constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); + constructMenuItem, StaticColor, StaticFont<2>, DummyAction>>(); constructMenuItem, DummyAction, StaticFont<2>>>(); constructMenuItem, DummyAction>>(); constructMenuItem, OpenPopupAction, StaticMenuItemIcon<&bobbyicons::info>>>(); @@ -72,3 +74,5 @@ void GitMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/screens/gitmenu.h b/main/screens/gitmenu.h new file mode 100644 index 0000000..65f25a8 --- /dev/null +++ b/main/screens/gitmenu.h @@ -0,0 +1,18 @@ +#pragma once + +// local includes +#include "guihelpers/menudisplaywithtime.h" + +namespace bobby { + +class GitMenu : public bobby::MenuDisplayWithTime +{ +public: + GitMenu(); + + std::string text() const override; + + void back() override; +}; + +} // namespace bobby diff --git a/main/displays/menus/graphsmenu.cpp b/main/screens/graphsmenu.cpp similarity index 97% rename from main/displays/menus/graphsmenu.cpp rename to main/screens/graphsmenu.cpp index cc2f167..537e5d0 100644 --- a/main/displays/menus/graphsmenu.cpp +++ b/main/screens/graphsmenu.cpp @@ -1,18 +1,19 @@ #include "graphsmenu.h" // 3rdparty lib includes -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" -#include "graphdisplay.h" -#include "splitgraphdisplay.h" +#include +#include +#include +#include +#include // local includes -#include "displays/bobbygraphdisplay.h" -#include "displays/bobbysplitgraphdisplay.h" -#include "utils.h" +#include "guihelpers/bobbygraphdisplay.h" +#include "guihelpers/bobbysplitgraphdisplay.h" #include "statistics.h" +namespace bobby { + namespace { constexpr char TEXT_GRAPHS[] = "Graphs"; constexpr char TEXT_RAW_GAS[] = "Raw Gas"; @@ -222,3 +223,5 @@ void GraphsMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/graphsmenu.h b/main/screens/graphsmenu.h similarity index 67% rename from main/displays/menus/graphsmenu.h rename to main/screens/graphsmenu.h index 03e6763..e763f3e 100644 --- a/main/displays/menus/graphsmenu.h +++ b/main/screens/graphsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class GraphsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/greenpassmenu.cpp b/main/screens/greenpassmenu.cpp similarity index 94% rename from main/displays/menus/greenpassmenu.cpp rename to main/screens/greenpassmenu.cpp index ede4d38..ad995b5 100644 --- a/main/displays/menus/greenpassmenu.cpp +++ b/main/screens/greenpassmenu.cpp @@ -1,20 +1,23 @@ #include "greenpassmenu.h" +// system includes +#include + // 3rdparty lib includes #include #include -#include -#include #include #include // local includes #include "actions/qraction.h" -#include "bobbycheckbox.h" -#include "displays/qrdisplay.h" -#include "displays/qrimportdisplay.h" +#include "screens/qrdisplay.h" +#include "screens/qrimportdisplay.h" +#include "guihelpers/bobbycheckbox.h" #include "qrimport.h" +namespace bobby { + namespace { constexpr char TEXT_GREENPASS[] = "Green Pass"; constexpr char TEXT_ADDCERT[] = "Add cert"; @@ -98,3 +101,5 @@ void GreenPassMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/greenpassmenu.h b/main/screens/greenpassmenu.h similarity index 68% rename from main/displays/menus/greenpassmenu.h rename to main/screens/greenpassmenu.h index d165f1f..557e972 100644 --- a/main/displays/menus/greenpassmenu.h +++ b/main/screens/greenpassmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class GreenPassMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/handbremssettingsmenu.cpp b/main/screens/handbremssettingsmenu.cpp similarity index 92% rename from main/displays/menus/handbremssettingsmenu.cpp rename to main/screens/handbremssettingsmenu.cpp index 6bb62e9..78c49e7 100644 --- a/main/displays/menus/handbremssettingsmenu.cpp +++ b/main/screens/handbremssettingsmenu.cpp @@ -10,10 +10,12 @@ // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" #include "changevaluedisplay_handbremsmode.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/menus/typesafeenumchangemenu.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/typesafeenumchangemenu.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_HANDBREMSE_ENABLE[] = "Enable Handbremse"; @@ -53,3 +55,5 @@ void HandbremsSettingsMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/handbremssettingsmenu.h b/main/screens/handbremssettingsmenu.h similarity index 70% rename from main/displays/menus/handbremssettingsmenu.h rename to main/screens/handbremssettingsmenu.h index e958296..7e8acfe 100644 --- a/main/displays/menus/handbremssettingsmenu.h +++ b/main/screens/handbremssettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class HandbremsSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/invertmenu.cpp b/main/screens/invertmenu.cpp similarity index 91% rename from main/displays/menus/invertmenu.cpp rename to main/screens/invertmenu.cpp index 4348757..03225e3 100644 --- a/main/displays/menus/invertmenu.cpp +++ b/main/screens/invertmenu.cpp @@ -1,10 +1,14 @@ #include "invertmenu.h" +// 3rdparty lib includes +#include + // local includes #include "accessors/settingsaccessors.h" #include "actions/popscreenaction.h" -#include "bobbycheckbox.h" -#include "icons/back.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_SETINVERTED[] = "Set inverted"; @@ -34,3 +38,5 @@ void InvertMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/invertmenu.h b/main/screens/invertmenu.h similarity index 67% rename from main/displays/menus/invertmenu.h rename to main/screens/invertmenu.h index c7bf50f..bb77ebe 100644 --- a/main/displays/menus/invertmenu.h +++ b/main/screens/invertmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class InvertMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/joystickdebugdisplay.cpp b/main/screens/joystickdebugdisplay.cpp similarity index 93% rename from main/displays/joystickdebugdisplay.cpp rename to main/screens/joystickdebugdisplay.cpp index 21265ac..97129bb 100644 --- a/main/displays/joystickdebugdisplay.cpp +++ b/main/screens/joystickdebugdisplay.cpp @@ -2,12 +2,12 @@ #include "joystickdebugdisplay.h" // 3rdparty lib includes -#include + #include // local includes -#include "displays/statusdisplay.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" +#include "screens/statusdisplay.h" +#include "screens/boardcomputerhardwaresettingsmenu.h" #include "newsettings.h" #include "utils.h" #include "globals.h" diff --git a/main/displays/joystickdebugdisplay.h b/main/screens/joystickdebugdisplay.h similarity index 93% rename from main/displays/joystickdebugdisplay.h rename to main/screens/joystickdebugdisplay.h index dd1ff07..27e7de7 100644 --- a/main/displays/joystickdebugdisplay.h +++ b/main/screens/joystickdebugdisplay.h @@ -4,7 +4,7 @@ #include // local includes -#include "bobbydisplaywithtitle.h" +#include "../guihelpers/bobbydisplaywithtitle.h" #include "modeinterface.h" #include "modes/ignoreinputmode.h" diff --git a/main/displays/menus/larsmmodesettingsmenu.cpp b/main/screens/larsmmodesettingsmenu.cpp similarity index 89% rename from main/displays/menus/larsmmodesettingsmenu.cpp rename to main/screens/larsmmodesettingsmenu.cpp index 00cc97f..e7427d0 100644 --- a/main/displays/menus/larsmmodesettingsmenu.cpp +++ b/main/screens/larsmmodesettingsmenu.cpp @@ -1,18 +1,20 @@ #include "larsmmodesettingsmenu.h" // 3rdparty lib includes -#include "changevaluedisplay.h" -#include "menuitem.h" -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" +#include +#include +#include +#include +#include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "utils.h" +#include "accessors/settingsaccessors.h" #include "changevaluedisplay_larsmmode_mode.h" #include "changevaluedisplay_unifiedmodelmode.h" -#include "accessors/settingsaccessors.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_LARSMMODESETTINGS[] = "Larsm mode settings"; @@ -63,3 +65,5 @@ void LarsmModeSettingsMenu::back() { popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/larsmmodesettingsmenu.h b/main/screens/larsmmodesettingsmenu.h similarity index 70% rename from main/displays/menus/larsmmodesettingsmenu.h rename to main/screens/larsmmodesettingsmenu.h index 797d7aa..ca59078 100644 --- a/main/displays/menus/larsmmodesettingsmenu.h +++ b/main/screens/larsmmodesettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class LarsmModeSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/ledstripcolorsdisplay.cpp b/main/screens/ledstripcolorsdisplay.cpp similarity index 53% rename from main/displays/ledstripcolorsdisplay.cpp rename to main/screens/ledstripcolorsdisplay.cpp index d2e6d81..57b5b26 100644 --- a/main/displays/ledstripcolorsdisplay.cpp +++ b/main/screens/ledstripcolorsdisplay.cpp @@ -4,19 +4,18 @@ #include // 3rdparty lib includes -#include -#include +#include #include -#include -#include #include -#include +#include +#include // local includes -#include "utils.h" -#include "icons/back.h" -#include "icons/bobbycar.h" #include "globals.h" +#include "icons/bobbycar.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_LEDSTRIPCOLORMENU[] = "Customize Ledstrip"; @@ -26,6 +25,10 @@ int8_t selected_color; bool state_select_color{false}; bool last_state = {false}; +bool state_draw_colors_needed{false}; +bool state_erase_colors_needed{false}; +bool state_redraw_side_needed{false}; + const std::array Colors = { CRGB_TO_UINT32(CRGB{0,0,0}), CRGB_TO_UINT32(CRGB{255,255,255}), @@ -38,14 +41,14 @@ const std::array Colors = { }; const std::array tft_colors = { - TFT_BLACK, - TFT_WHITE, - TFT_RED, - TFT_YELLOW, - TFT_GREEN, - TFT_CYAN, - TFT_BLUE, - TFT_MAGENTA + espgui::TFT_BLACK, + espgui::TFT_WHITE, + espgui::TFT_RED, + espgui::TFT_YELLOW, + espgui::TFT_GREEN, + espgui::TFT_CYAN, + espgui::TFT_BLUE, + espgui::TFT_MAGENTA }; } // namespace @@ -54,38 +57,54 @@ std::string LedstripColorsDisplay::text() const return TEXT_LEDSTRIPCOLORMENU; } -void LedstripColorsDisplay::initScreen() +void LedstripColorsDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - espgui::tft.setSwapBytes(true); - espgui::tft.pushImage(70, 60, bobbyicons::bobbycar.WIDTH, bobbyicons::bobbycar.HEIGHT, bobbyicons::bobbycar.buffer); - espgui::tft.setSwapBytes(false); + tft.setSwapBytes(true); + tft.pushImage(70, 60, bobbyicons::bobbycar.WIDTH, bobbyicons::bobbycar.HEIGHT, bobbyicons::bobbycar.buffer); + tft.setSwapBytes(false); } -void LedstripColorsDisplay::redraw() +void LedstripColorsDisplay::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); - auto y_pos = ((espgui::tft.width() - 40) / 8 + 4) + 240; + auto y_pos = ((tft.width() - 40) / 8 + 4) + 240; if (last_state != state_select_color) { - espgui::tft.fillRect(0,y_pos - 1, espgui::tft.width(), 20, TFT_BLACK); + tft.fillRect(0,y_pos - 1, tft.width(), 20, espgui::TFT_BLACK); last_state = state_select_color; } - espgui::tft.setTextFont(2); - espgui::tft.setTextColor(TFT_WHITE); - - espgui::tft.drawString(state_select_color ? + tft.drawString(state_select_color ? "Please select a color!" : - "Please select a side!", 50, y_pos); + "Please select a side!", 50, y_pos, espgui::TFT_WHITE, espgui::TFT_BLACK, 2); if (!already_drew_circle) { - drawSide(static_cast(selected_side), TFT_GOLD); + drawSide(tft, static_cast(selected_side), espgui::TFT_GOLD); already_drew_circle = true; } + + if (state_draw_colors_needed) + { + drawColors(tft); + state_draw_colors_needed = false; + } + + if (state_erase_colors_needed) + { + tft.fillRect(0, 228, tft.width(), ((tft.width() - 40) / 8) + 4, espgui::TFT_BLACK); + state_erase_colors_needed = false; + } + + if (state_redraw_side_needed) + { + tft.fillRect(0, 228, tft.width(), ((tft.width() - 40) / 8) + 4, espgui::TFT_BLACK); + clearSides(tft); + drawSide(tft, static_cast(selected_side), espgui::TFT_GOLD); + } } void LedstripColorsDisplay::buttonPressed(espgui::Button button) @@ -103,7 +122,7 @@ void LedstripColorsDisplay::buttonPressed(espgui::Button button) else { state_select_color = false; - espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); + state_erase_colors_needed = true; } break; @@ -111,7 +130,7 @@ void LedstripColorsDisplay::buttonPressed(espgui::Button button) if(!state_select_color) { state_select_color = true; - drawColors(); + state_draw_colors_needed = true; } else { @@ -144,13 +163,13 @@ void LedstripColorsDisplay::buttonPressed(espgui::Button button) /* TODO commander: move into redraw method */ if (state_select_color) { - drawColors(); + // drawColors(); + state_draw_colors_needed = true; } else { - espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); - clearSides(); - drawSide(static_cast(selected_side), TFT_GOLD); + // drawSide(); + state_redraw_side_needed = true; } break; @@ -175,46 +194,44 @@ void LedstripColorsDisplay::buttonPressed(espgui::Button button) /* TODO commander: move into redraw method */ if (state_select_color) { - drawColors(); + state_draw_colors_needed = true; } else { - espgui::tft.fillRect(0, 228, espgui::tft.width(), ((espgui::tft.width() - 40) / 8) + 4, TFT_BLACK); - clearSides(); - drawSide(static_cast(selected_side), TFT_GOLD); + state_redraw_side_needed = true; } break; } } -void LedstripColorsDisplay::drawColors() +void LedstripColorsDisplay::drawColors(espgui::TftInterface &tft) { - uint16_t width = (espgui::tft.width() - 40); + uint16_t width = (tft.width() - 40); auto cube_width = width / 8; - espgui::tft.fillRect(0, 228, espgui::tft.width(), cube_width + 4, TFT_BLACK); - espgui::tft.fillRect(21, 231, width - 1, cube_width - 1, TFT_WHITE); + tft.fillRect(0, 228, tft.width(), cube_width + 4, espgui::TFT_BLACK); + tft.fillRect(21, 231, width - 1, cube_width - 1, espgui::TFT_WHITE); - espgui::tft.fillRect(20 + (selected_color * cube_width - 1), 228, cube_width + 4, cube_width + 4, TFT_YELLOW); + tft.fillRect(20 + (selected_color * cube_width - 1), 228, cube_width + 4, cube_width + 4, espgui::TFT_YELLOW); for (int index = 0; index < 8; index++) { auto offset = index * (cube_width); - espgui::tft.fillRect(22 + offset, 232, cube_width - 4, cube_width - 4, tft_colors[index]); + tft.fillRect(22 + offset, 232, cube_width - 4, cube_width - 4, tft_colors[index]); } } -void LedstripColorsDisplay::clearSides() +void LedstripColorsDisplay::clearSides(espgui::TftInterface &tft) { for(int index = 0; index < 8; index++) { - drawSide(static_cast(index), TFT_BLACK); + drawSide(tft, static_cast(index), TFT_BLACK); } } -void LedstripColorsDisplay::drawSide(Bobbycar_Side side, unsigned int color) +void LedstripColorsDisplay::drawSide(espgui::TftInterface &tft, Bobbycar_Side side, unsigned int color) { - const auto middle = espgui::tft.width() / 2; + const auto middle = tft.width() / 2; const auto width = bobbyicons::bobbycar.WIDTH; const auto height = bobbyicons::bobbycar.HEIGHT; const auto left = middle - (width / 2); @@ -224,33 +241,35 @@ void LedstripColorsDisplay::drawSide(Bobbycar_Side side, unsigned int color) switch (side) { case Bobbycar_Side::FRONT: - espgui::tft.fillRect(left, above, width, 5, color); + tft.fillRect(left, above, width, 5, color); break; case Bobbycar_Side::FRONT_LEFT: - espgui::tft.fillRect(left - 10, above + 10, 5, height / 2, color); - espgui::tft.fillRect(left, above, width / 2, 5, color); + tft.fillRect(left - 10, above + 10, 5, height / 2, color); + tft.fillRect(left, above, width / 2, 5, color); break; case Bobbycar_Side::LEFT: - espgui::tft.fillRect(left - 10, above + 10, 5, height, color); + tft.fillRect(left - 10, above + 10, 5, height, color); break; case Bobbycar_Side::BACK_LEFT: - espgui::tft.fillRect(left - 10, above + 10 + (height / 2), 5, height / 2, color); - espgui::tft.fillRect(left, bellow + 5, width / 2, 5, color); + tft.fillRect(left - 10, above + 10 + (height / 2), 5, height / 2, color); + tft.fillRect(left, bellow + 5, width / 2, 5, color); break; case Bobbycar_Side::BACK: - espgui::tft.fillRect(left, bellow + 5, width, 5, color); + tft.fillRect(left, bellow + 5, width, 5, color); break; case Bobbycar_Side::BACK_RIGHT: - espgui::tft.fillRect(right + 5, above + 10 + (height / 2), 5, height / 2, color); - espgui::tft.fillRect(middle, bellow + 5, width / 2, 5, color); + tft.fillRect(right + 5, above + 10 + (height / 2), 5, height / 2, color); + tft.fillRect(middle, bellow + 5, width / 2, 5, color); break; case Bobbycar_Side::RIGHT: - espgui::tft.fillRect(right + 5, above + 10, 5, height, color); + tft.fillRect(right + 5, above + 10, 5, height, color); break; case Bobbycar_Side::FRONT_RIGHT: - espgui::tft.fillRect(right + 5, above + 10, 5, height / 2, color); - espgui::tft.fillRect(middle, above, width / 2, 5, color); + tft.fillRect(right + 5, above + 10, 5, height / 2, color); + tft.fillRect(middle, above, width / 2, 5, color); break; } // espgui::tft.fillCircle(espgui::tft.width() / 2, 140, 100, TFT_BLACK); } + +} // namespace bobby diff --git a/main/screens/ledstripcolorsdisplay.h b/main/screens/ledstripcolorsdisplay.h new file mode 100644 index 0000000..be10ca4 --- /dev/null +++ b/main/screens/ledstripcolorsdisplay.h @@ -0,0 +1,28 @@ +#pragma once + +// local includes +#include "guihelpers/bobbydisplaywithtitle.h" +#include "ledstrip.h" + +namespace bobby { + +class LedstripColorsDisplay : public BobbyDisplayWithTitle +{ + using Base = BobbyDisplayWithTitle; + +public: + std::string text() const override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; + + void buttonPressed(espgui::Button button) override; + + void drawColors(espgui::TftInterface &tft); + void drawSide(espgui::TftInterface &tft, Bobbycar_Side side, unsigned int color); + void clearSides(espgui::TftInterface &tft); + +private: + bool already_drew_circle{false}; +}; + +} // namespace bobby diff --git a/main/displays/menus/ledstripmenu.cpp b/main/screens/ledstripmenu.cpp similarity index 96% rename from main/displays/menus/ledstripmenu.cpp rename to main/screens/ledstripmenu.cpp index c4f108d..63b09cb 100644 --- a/main/displays/menus/ledstripmenu.cpp +++ b/main/screens/ledstripmenu.cpp @@ -1,10 +1,9 @@ #include "ledstripmenu.h" // 3rdparty lib includes -#include #include -#include #include +#include #include #include #include @@ -12,17 +11,17 @@ // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/ledstripcolorsdisplay.h" -#include "displays/menus/ledstripselectotamode.h" -#include "displays/menus/mainmenu.h" -#include "displays/menus/typesafeenumchangemenu.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/ledstripcolorsdisplay.h" +#include "screens/ledstripselectotamode.h" +#include "screens/mainmenu.h" +#include "screens/typesafeenumchangemenu.h" #include "globals.h" +#include "guihelpers/bobbycheckbox.h" #include "ledstrip.h" #include "ledstripselectblinkmenu.h" -// clang-format off +namespace bobby { namespace { constexpr char TEXT_LEDSTRIP[] = "Ledstrip"; @@ -195,3 +194,4 @@ void LedstripMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/screens/ledstripmenu.h b/main/screens/ledstripmenu.h new file mode 100644 index 0000000..fddf8fb --- /dev/null +++ b/main/screens/ledstripmenu.h @@ -0,0 +1,18 @@ +#pragma once + +// local includes +#include "guihelpers/menudisplaywithtime.h" + +namespace bobby { + +class LedstripMenu : public bobby::MenuDisplayWithTime +{ +public: + LedstripMenu(); + + std::string text() const override; + + void back() override; +}; + +} // namespace bobby diff --git a/main/displays/menus/ledstripselectblinkmenu.cpp b/main/screens/ledstripselectblinkmenu.cpp similarity index 94% rename from main/displays/menus/ledstripselectblinkmenu.cpp rename to main/screens/ledstripselectblinkmenu.cpp index cd67f2a..6ee6de3 100644 --- a/main/displays/menus/ledstripselectblinkmenu.cpp +++ b/main/screens/ledstripselectblinkmenu.cpp @@ -1,16 +1,18 @@ #include "ledstripselectblinkmenu.h" // 3rdparty lib includes -#include "actions/dummyaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" +#include +#include +#include // local includes #include "accessors/settingsaccessors.h" #include "actions/ledstripblinkactions.h" +#include "guihelpers/bobbycheckbox.h" #include "ledstrip.h" #include "ledstripdefines.h" -#include "bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_BLINKANIMATION[] = "Blink animation"; @@ -80,3 +82,5 @@ std::string CurrentSelectedBlinkAnimationText::text() const } } // namespace + +} // namespace bobby diff --git a/main/displays/menus/ledstripselectblinkmenu.h b/main/screens/ledstripselectblinkmenu.h similarity index 70% rename from main/displays/menus/ledstripselectblinkmenu.h rename to main/screens/ledstripselectblinkmenu.h index 77cdcb6..edc41a1 100644 --- a/main/displays/menus/ledstripselectblinkmenu.h +++ b/main/screens/ledstripselectblinkmenu.h @@ -1,7 +1,9 @@ #pragma once // Local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class LedstripSelectBlinkMenu : public BobbyMenuDisplay { @@ -11,3 +13,5 @@ public: std::string text() const override; void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/ledstripselectotamode.cpp b/main/screens/ledstripselectotamode.cpp similarity index 91% rename from main/displays/menus/ledstripselectotamode.cpp rename to main/screens/ledstripselectotamode.cpp index 4355d06..146ad1d 100644 --- a/main/displays/menus/ledstripselectotamode.cpp +++ b/main/screens/ledstripselectotamode.cpp @@ -1,15 +1,17 @@ #include "ledstripselectotamode.h" // 3rdparty lib includes -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" +#include +#include +#include // local includes #include "ledstrip.h" #include "newsettings.h" #include "utils.h" +namespace bobby { + namespace { constexpr char TEXT_BLINKANIMATION[] = "Blink animation"; constexpr char TEXT_OTAANIM_NONE[] = "None"; @@ -46,3 +48,4 @@ void LedstripOtaAnimationChangeMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/ledstripselectotamode.h b/main/screens/ledstripselectotamode.h similarity index 72% rename from main/displays/menus/ledstripselectotamode.h rename to main/screens/ledstripselectotamode.h index 982f02c..3345cb9 100644 --- a/main/displays/menus/ledstripselectotamode.h +++ b/main/screens/ledstripselectotamode.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class LedstripOtaAnimationChangeMenu : public BobbyMenuDisplay { @@ -11,3 +13,5 @@ public: std::string text() const override; void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/limitssettingsmenu.cpp b/main/screens/limitssettingsmenu.cpp similarity index 97% rename from main/displays/menus/limitssettingsmenu.cpp rename to main/screens/limitssettingsmenu.cpp index 6b455a0..485596f 100644 --- a/main/displays/menus/limitssettingsmenu.cpp +++ b/main/screens/limitssettingsmenu.cpp @@ -1,17 +1,19 @@ #include "limitssettingsmenu.h" // 3rdparty lib includes -#include -#include -#include #include +#include +#include #include +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "utils.h" #include "accessors/settingsaccessors.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_LIMITSSETTINGS[] = "Limit settings"; @@ -89,3 +91,5 @@ void LimitsSettingsMenu::back() { popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/limitssettingsmenu.h b/main/screens/limitssettingsmenu.h similarity index 69% rename from main/displays/menus/limitssettingsmenu.h rename to main/screens/limitssettingsmenu.h index 998cfee..b056f6f 100644 --- a/main/displays/menus/limitssettingsmenu.h +++ b/main/screens/limitssettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class LimitsSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/lockscreen.cpp b/main/screens/lockscreen.cpp similarity index 67% rename from main/displays/lockscreen.cpp rename to main/screens/lockscreen.cpp index dbdb7ff..cb6f4ba 100644 --- a/main/displays/lockscreen.cpp +++ b/main/screens/lockscreen.cpp @@ -4,15 +4,17 @@ #include // 3rdparty lib includes -#include #include +#include +#include // local includes +#include "bobbybuttons.h" +#include "screens/mainmenu.h" #include "globals.h" #include "utils.h" -#include "displays/potiscalibratedisplay.h" -#include "bobbybuttons.h" -#include "displays/menus/mainmenu.h" + +namespace bobby { namespace { bool isValid1stPin(std::array enteredPin) @@ -53,39 +55,32 @@ void Lockscreen::start() } } -void Lockscreen::initScreen() +void Lockscreen::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - espgui::tft.fillScreen(TFT_BLACK); - espgui::tft.setTextFont(4); - espgui::tft.setTextColor(TFT_YELLOW); + tft.fillScreen(espgui::TFT_BLACK); - espgui::tft.drawString("Lock vehicle", 5, 5); + tft.drawString("Lock vehicle", 5, 5, espgui::TFT_YELLOW, espgui::TFT_BLACK, 4); - espgui::tft.fillRect(0, 34, espgui::tft.width(), 3, TFT_WHITE); + tft.fillRect(0, 34, tft.width(), 3, espgui::TFT_WHITE); - espgui::tft.setTextColor(TFT_WHITE); - espgui::tft.drawString("Enter code to unlock:", 0, 50); - - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); + tft.drawString("Enter code to unlock:", 0, 50, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); for(int i = 0; i <= 3; i++) { - drawRect(i, 3, TFT_WHITE); - drawRect(i, 4, TFT_WHITE); + drawRect(tft, i, 3, espgui::TFT_WHITE); + drawRect(tft, i, 4, espgui::TFT_WHITE); } for (auto &label : m_labels) - label.start(); + label.start(tft); - espgui::tft.setTextFont(7); - - drawRect(m_currentIndex, 1, TFT_YELLOW); - drawRect(m_currentIndex, 2, TFT_YELLOW); + drawRect(tft, m_currentIndex, 1, espgui::TFT_YELLOW); + drawRect(tft, m_currentIndex, 2, espgui::TFT_YELLOW); for(int i = 0; i <= m_currentIndex; i++) - m_labels[i].redraw(std::to_string(m_numbers[i])); + m_labels[i].redraw(tft, std::to_string(m_numbers[i]), espgui::TFT_WHITE, espgui::TFT_BLACK, 7); } void Lockscreen::update() @@ -93,14 +88,14 @@ void Lockscreen::update() Base::update(); } -void Lockscreen::redraw() +void Lockscreen::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); if (m_pressed || m_back_pressed) { - drawRect(m_currentIndex, 1, TFT_BLACK); - drawRect(m_currentIndex, 2, TFT_BLACK); + drawRect(tft, m_currentIndex, 1, espgui::TFT_BLACK); + drawRect(tft, m_currentIndex, 2, espgui::TFT_BLACK); if (!m_back_pressed && ++m_currentIndex>=4) { @@ -124,18 +119,18 @@ LOCKSCREEN_PLUGIN_FIXES_2 m_numbers = {0,0,0,0}; m_currentIndex = 0; - std::for_each(std::begin(m_labels) + 1, std::end(m_labels), [](auto &label){ label.redraw("0"); }); + std::for_each(std::begin(m_labels) + 1, std::end(m_labels), [&](auto &label){ label.redraw(tft, "0", espgui::TFT_WHITE, espgui::TFT_BLACK, 7); }); } else if (m_back_pressed && m_currentIndex < 3) { - drawRect(m_currentIndex+1, 1, TFT_BLACK); - drawRect(m_currentIndex+1, 2, TFT_BLACK); + drawRect(tft, m_currentIndex+1, 1, espgui::TFT_BLACK); + drawRect(tft, m_currentIndex+1, 2, TFT_BLACK); } - m_labels[m_currentIndex].redraw(std::to_string(m_numbers[m_currentIndex])); + m_labels[m_currentIndex].redraw(tft, std::to_string(m_numbers[m_currentIndex]), espgui::TFT_WHITE, espgui::TFT_BLACK, 7); - drawRect(m_currentIndex, 1, TFT_YELLOW); - drawRect(m_currentIndex, 2, TFT_YELLOW); + drawRect(tft, m_currentIndex, 1, espgui::TFT_YELLOW); + drawRect(tft, m_currentIndex, 2, espgui::TFT_YELLOW); m_pressed = false; m_back_pressed = false; @@ -150,7 +145,7 @@ LOCKSCREEN_PLUGIN_FIXES_2 else if (m_numbers[m_currentIndex] > 9) m_numbers[m_currentIndex]-=10; - m_labels[m_currentIndex].redraw(std::to_string(m_numbers[m_currentIndex])); + m_labels[m_currentIndex].redraw(tft, std::to_string(m_numbers[m_currentIndex]), espgui::TFT_WHITE, espgui::TFT_BLACK, 7); m_rotated = 0; } @@ -205,7 +200,9 @@ void Lockscreen::buttonPressed(espgui::Button button) } } -void Lockscreen::drawRect(int index, int offset, uint32_t color) const +void Lockscreen::drawRect(espgui::TftInterface &tft, int index, int offset, uint32_t color) { - espgui::tft.drawRect(m_labels[index].x()-offset, m_labels[index].y()-offset, boxWidth+(offset*2), boxHeight+(offset*2), color); + tft.drawRect(m_labels[index].x()-offset, m_labels[index].y()-offset, boxWidth+(offset*2), boxHeight+(offset*2), color); } + +} // namespace bobby diff --git a/main/displays/lockscreen.h b/main/screens/lockscreen.h similarity index 81% rename from main/displays/lockscreen.h rename to main/screens/lockscreen.h index 442b12b..afe92a0 100644 --- a/main/displays/lockscreen.h +++ b/main/screens/lockscreen.h @@ -7,13 +7,15 @@ #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" #include "modes/ignoreinputmode.h" #ifdef LOCKSCREEN_PLUGIN #include "ledstrip.h" #endif +namespace bobby { + class Lockscreen : public BobbyDisplay { using Base = BobbyDisplay; @@ -24,15 +26,15 @@ class Lockscreen : public BobbyDisplay public: void start() override; - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void update() override; - void redraw() override; + void redraw(espgui::TftInterface &tft) override; void stop() override; void buttonPressed(espgui::Button button) override; private: - void drawRect(int index, int offset, uint32_t color) const; + void drawRect(espgui::TftInterface &tft, int index, int offset, uint32_t color); std::array m_labels {{ espgui::Label{spacing, 100}, // boxWidth, boxHeight @@ -52,3 +54,5 @@ private: ModeInterface *m_oldMode; IgnoreInputMode m_mode{0, bobbycar::protocol::ControlType::FieldOrientedControl, bobbycar::protocol::ControlMode::Speed}; }; + +} // namespace bobby diff --git a/main/displays/menus/lockscreensettingsmenu.cpp b/main/screens/lockscreensettingsmenu.cpp similarity index 96% rename from main/displays/menus/lockscreensettingsmenu.cpp rename to main/screens/lockscreensettingsmenu.cpp index 0c3ef9d..bd45298 100644 --- a/main/displays/menus/lockscreensettingsmenu.cpp +++ b/main/screens/lockscreensettingsmenu.cpp @@ -10,9 +10,11 @@ // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" -#include "displays/bobbychangevaluedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" #include "globals.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings"; @@ -78,3 +80,4 @@ void LockscreenSettingsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/lockscreensettingsmenu.h b/main/screens/lockscreensettingsmenu.h similarity index 70% rename from main/displays/menus/lockscreensettingsmenu.h rename to main/screens/lockscreensettingsmenu.h index f5054b9..242dccd 100644 --- a/main/displays/menus/lockscreensettingsmenu.h +++ b/main/screens/lockscreensettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class LockscreenSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/mainmenu.cpp b/main/screens/mainmenu.cpp similarity index 85% rename from main/displays/menus/mainmenu.cpp rename to main/screens/mainmenu.cpp index 58b1e3d..3b8a028 100644 --- a/main/displays/menus/mainmenu.cpp +++ b/main/screens/mainmenu.cpp @@ -4,31 +4,30 @@ #include #include #include -#include // local includes -#include "displays/menus/selectmodemenu.h" -#include "displays/menus/selectmodemenu.h" -#include "displays/menus/ledstripmenu.h" +#include "screens/selectmodemenu.h" +#include "screens/selectmodemenu.h" +#include "screens/ledstripmenu.h" #include "actions/modesettingsaction.h" -#include "displays/menus/profilesmenu.h" -#include "displays/menus/graphsmenu.h" -#include "displays/menus/batterymenu.h" -#include "displays/powersupplydisplay.h" -#include "displays/menus/bmsmenu.h" -#include "displays/menus/settingsmenu.h" -#include "displays/menus/manageprofilesmenu.h" -#include "displays/menus/mosfetsmenu.h" -#include "displays/menus/demosmenu.h" -#include "displays/menus/greenpassmenu.h" -#include "displays/lockscreen.h" -#include "displays/menus/garagemenu.h" -#include "displays/menus/otamenu.h" -#include "displays/poweroffdisplay.h" -#include "displays/menus/statisticsmenu.h" -#include "displays/confiscationdisplay.h" -#include "actions/rebootaction.h" -#include "displays/menus/debugmenu.h" +#include "screens/profilesmenu.h" +#include "screens/graphsmenu.h" +#include "screens/batterymenu.h" +#include "screens/powersupplydisplay.h" +#include "screens/bmsmenu.h" +#include "screens/settingsmenu.h" +#include "screens/manageprofilesmenu.h" +#include "screens/mosfetsmenu.h" +#include "screens/demosmenu.h" +#include "screens/greenpassmenu.h" +#include "screens/lockscreen.h" +#include "screens/garagemenu.h" +#include "screens/otamenu.h" +#include "screens/poweroffdisplay.h" +#include "screens/statisticsmenu.h" +#include "screens/confiscationdisplay.h" +#include "screens/rebootscreen.h" +#include "screens/debugmenu.h" #include "icons/battery.h" #include "icons/modes.h" #include "icons/presets.h" @@ -46,7 +45,9 @@ #include "icons/statistics.h" #include "icons/greenpass.h" #include "icons/time.h" -#include "displays/statusdisplay.h" +#include "screens/statusdisplay.h" + +namespace bobby { namespace { constexpr char TAG[] = "BOBBY"; @@ -119,7 +120,7 @@ MainMenu::MainMenu() if (SHOWITEM) { constructMenuItem, PushScreenAction>>(); } constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::poweroff>>>(); constructMenuItem, PushScreenAction>>(); - constructMenuItem, RebootAction, StaticMenuItemIcon<&bobbyicons::reboot>>>(); + constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::reboot>>>(); //#ifdef MAINMENU_PLUGIN // GMEN1 //#endif @@ -134,3 +135,4 @@ void MainMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/mainmenu.h b/main/screens/mainmenu.h similarity index 62% rename from main/displays/menus/mainmenu.h rename to main/screens/mainmenu.h index 4d2ce98..88855c1 100644 --- a/main/displays/menus/mainmenu.h +++ b/main/screens/mainmenu.h @@ -4,11 +4,13 @@ #include "menuitem.h" // local includes -#include "displays/menudisplaywithtime.h" +#include "guihelpers/menudisplaywithtime.h" #ifdef MAINMENU_PLUGIN -#include MAINMENU_PLUGIN +#include MAINMENU_PLUGIN "../../ignore/mainmenu_plugin.h" #endif +namespace bobby { + namespace { #ifdef MAINMENU_PLUGIN GMEN2 @@ -20,9 +22,9 @@ namespace { #endif } // namespace -class MainMenu : public bobbygui::MenuDisplayWithTime +class MainMenu : public bobby::MenuDisplayWithTime { - using Base = bobbygui::MenuDisplayWithTime; + using Base = bobby::MenuDisplayWithTime; public: MainMenu(); @@ -31,3 +33,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/manageprofilesmenu.cpp b/main/screens/manageprofilesmenu.cpp similarity index 95% rename from main/displays/menus/manageprofilesmenu.cpp rename to main/screens/manageprofilesmenu.cpp index 74a1f25..f247372 100644 --- a/main/displays/menus/manageprofilesmenu.cpp +++ b/main/screens/manageprofilesmenu.cpp @@ -1,19 +1,20 @@ #include "manageprofilesmenu.h" // 3rdparty lib includes -#include +#include +#include #include // local includes -#include "actions/popscreenaction.h" -#include "actions/pushscreenaction.h" -#include "bobbyerrorhandler.h" #include "globals.h" +#include "guihelpers/bobbyerrorhandler.h" #include "mainmenu.h" #include "presets.h" #include "settingsutils.h" #include "utils.h" +namespace bobby { + using namespace espgui; namespace { @@ -155,14 +156,14 @@ public: int color() const override { if (m_mode == CONFIRM_CLEAR || m_mode == CONFIRM_COPY || m_mode == CONFIRM_SWAP) - return TFT_RED; + return espgui::TFT_RED; else if (m_menu.m_firstIndex == m_profileIndex) - return TFT_GREEN; + return espgui::TFT_GREEN; else if (m_menu.m_firstIndex != -1) - return TFT_GREY; + return espgui::TFT_GREY; else if (m_menu.m_locked) - return TFT_DARKGREY; - return TFT_WHITE; + return espgui::TFT_DARKGREY; + return espgui::TFT_WHITE; }; void triggered() override @@ -308,3 +309,5 @@ void ManageProfilesMenu::buttonPressed(espgui::Button button) break; } } + +} // namespace bobby diff --git a/main/displays/menus/manageprofilesmenu.h b/main/screens/manageprofilesmenu.h similarity index 89% rename from main/displays/menus/manageprofilesmenu.h rename to main/screens/manageprofilesmenu.h index fc50511..fc40f58 100644 --- a/main/displays/menus/manageprofilesmenu.h +++ b/main/screens/manageprofilesmenu.h @@ -1,12 +1,14 @@ #pragma once // 3rdparty lib includes -#include +#include "cpptypesafeenum.h" // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" #include "modes/ignoreinputmode.h" +namespace bobby { + #define ActionValues(x) \ x(Clear) \ x(Copy) \ @@ -40,3 +42,4 @@ protected: Actions m_action{Actions::Clear}; int8_t m_firstIndex{-1}; }; +} // namespace bobby diff --git a/main/screens/metersdisplay.cpp b/main/screens/metersdisplay.cpp new file mode 100644 index 0000000..79934f8 --- /dev/null +++ b/main/screens/metersdisplay.cpp @@ -0,0 +1,72 @@ +#include "metersdisplay.h" + +// 3rdparty lib includes +#include + +// local includes +#include "globals.h" +#include "screens/batteryinfodisplay.h" +#include "screens/mainmenu.h" +#include "screens/statusdisplay.h" +#include "utils.h" + +namespace bobby { + +using namespace espgui; + +void MetersDisplay::initScreen(espgui::TftInterface &tft) +{ + Base::initScreen(tft); + + tft.fillScreen(espgui::TFT_BLACK); + + m_vuMeter.start(tft); + + m_dischargingBar.start(tft); + m_chargingBar.start(tft); + + m_sumCurrentLabel.start(tft); + + for (auto &meter : meters) + meter.start(tft); +} + +void MetersDisplay::redraw(espgui::TftInterface &tft) +{ + Base::redraw(tft); + + m_vuMeter.redraw(tft, avgSpeedKmh); + + m_dischargingBar.redraw(tft, sumCurrent<0.f?(-sumCurrent):0.f); + m_chargingBar.redraw(tft, sumCurrent>0.f?sumCurrent:0.f); + + m_sumCurrentLabel.redraw(tft, fmt::format("{:.02f}A", sumCurrent), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + + meters[0].redraw(tft, controllers.front.getCalibratedVoltage(), 35, 50); + meters[1].redraw(tft, controllers.back.getCalibratedVoltage(), 35, 50); + meters[2].redraw(tft, fixCurrent(controllers.front.feedback.left.dcLink), -10, 10); + meters[3].redraw(tft, fixCurrent(controllers.front.feedback.right.dcLink), -10, 10); + meters[4].redraw(tft, fixCurrent(controllers.back.feedback.left.dcLink), -10, 10); + meters[5].redraw(tft, fixCurrent(controllers.back.feedback.right.dcLink), -10, 10); +} + +void MetersDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Right: + pushScreen(); + break; + case Button::Up: + switchScreen(); + break; + case Button::Down: + switchScreen(); + break; + default:; + } +} +} // namespace bobby diff --git a/main/displays/metersdisplay.h b/main/screens/metersdisplay.h similarity index 85% rename from main/displays/metersdisplay.h rename to main/screens/metersdisplay.h index fc22064..278abd7 100644 --- a/main/displays/metersdisplay.h +++ b/main/screens/metersdisplay.h @@ -6,21 +6,23 @@ // 3rdparty lib includes #include #include -#include #include +#include #include #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class MetersDisplay : public BobbyDisplay { using Base = BobbyDisplay; public: - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void buttonPressed(espgui::Button button) override; @@ -42,3 +44,4 @@ private: espgui::VerticalMeter{"Ihr", "%.1f", 5*x, 160} }}; }; +} // namespace bobby diff --git a/main/displays/menus/mickmodesettingsmenu.cpp b/main/screens/mickmodesettingsmenu.cpp similarity index 95% rename from main/displays/menus/mickmodesettingsmenu.cpp rename to main/screens/mickmodesettingsmenu.cpp index 92f363b..71fa9dc 100644 --- a/main/displays/menus/mickmodesettingsmenu.cpp +++ b/main/screens/mickmodesettingsmenu.cpp @@ -10,7 +10,9 @@ // local includes #include "accessors/settingsaccessors.h" #include "changevaluedisplay_unifiedmodelmode.h" -#include "displays/bobbychangevaluedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" + +namespace bobby { namespace { constexpr char TEXT_MICKMODESETTINGS[] = "Mick mode settings"; @@ -52,3 +54,4 @@ void MickModeSettingsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/mickmodesettingsmenu.h b/main/screens/mickmodesettingsmenu.h similarity index 70% rename from main/displays/menus/mickmodesettingsmenu.h rename to main/screens/mickmodesettingsmenu.h index a2a35a6..665f9d4 100644 --- a/main/displays/menus/mickmodesettingsmenu.h +++ b/main/screens/mickmodesettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class MickModeSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/modessettingsmenu.cpp b/main/screens/modessettingsmenu.cpp similarity index 86% rename from main/displays/menus/modessettingsmenu.cpp rename to main/screens/modessettingsmenu.cpp index 5ec2f39..38d219f 100644 --- a/main/displays/menus/modessettingsmenu.cpp +++ b/main/screens/modessettingsmenu.cpp @@ -6,11 +6,13 @@ #include // local includes -#include "displays/menus/defaultmodesettingsmenu.h" -#include "displays/menus/gametrakmodesettingsmenu.h" -#include "displays/menus/larsmmodesettingsmenu.h" -#include "displays/menus/remotecontrolmodesettingsmenu.h" -#include "displays/menus/tempomatmodesettingsmenu.h" +#include "screens/defaultmodesettingsmenu.h" +#include "screens/gametrakmodesettingsmenu.h" +#include "screens/larsmmodesettingsmenu.h" +#include "screens/remotecontrolmodesettingsmenu.h" +#include "screens/tempomatmodesettingsmenu.h" + +namespace bobby { namespace { constexpr char TEXT_MODESSETTINGS[] = "Modes settings"; @@ -44,3 +46,4 @@ void ModesSettingsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/modessettingsmenu.h b/main/screens/modessettingsmenu.h similarity index 69% rename from main/displays/menus/modessettingsmenu.h rename to main/screens/modessettingsmenu.h index fdf0e60..ba775f0 100644 --- a/main/displays/menus/modessettingsmenu.h +++ b/main/screens/modessettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class ModesSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/mosfetsmenu.cpp b/main/screens/mosfetsmenu.cpp similarity index 100% rename from main/displays/menus/mosfetsmenu.cpp rename to main/screens/mosfetsmenu.cpp diff --git a/main/displays/menus/mosfetsmenu.h b/main/screens/mosfetsmenu.h similarity index 83% rename from main/displays/menus/mosfetsmenu.h rename to main/screens/mosfetsmenu.h index 7ecb488..8145838 100644 --- a/main/displays/menus/mosfetsmenu.h +++ b/main/screens/mosfetsmenu.h @@ -3,7 +3,7 @@ #ifdef FEATURE_MOSFETS // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" class MosfetsMenu : public BobbyMenuDisplay { diff --git a/main/displays/menus/motorfeedbackdebugmenu.h b/main/screens/motorfeedbackdebugmenu.h similarity index 74% rename from main/displays/menus/motorfeedbackdebugmenu.h rename to main/screens/motorfeedbackdebugmenu.h index 9b67f35..bbda55f 100644 --- a/main/displays/menus/motorfeedbackdebugmenu.h +++ b/main/screens/motorfeedbackdebugmenu.h @@ -1,14 +1,18 @@ #pragma once -// local includes -#include "displays/bobbymenudisplay.h" -#include "utils.h" -#include "menuitem.h" +// 3rdparty lib includes #include "actions/dummyaction.h" #include "actions/popscreenaction.h" #include "icons/back.h" -#include "debugtexthelpers.h" +#include "menuitem.h" + +// local includes #include "debugcolorhelpers.h" +#include "guihelpers/bobbymenudisplay.h" +#include "texthelpers/debugtexthelpers.h" +#include "utils.h" + +namespace bobby { template class ColorInterface> class MotorFeedbackDebugMenu : @@ -21,22 +25,22 @@ public: { using namespace espgui; - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); //constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); //constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); //constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); //constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); //constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } @@ -55,3 +59,4 @@ using BackLeftMotorFeedbackDebugMenu = MotorFeedbackDebugMenu; +} // namespace bobby diff --git a/main/displays/menus/motorstatedebugmenu.h b/main/screens/motorstatedebugmenu.h similarity index 91% rename from main/displays/menus/motorstatedebugmenu.h rename to main/screens/motorstatedebugmenu.h index 8237bbf..b6c46a0 100644 --- a/main/displays/menus/motorstatedebugmenu.h +++ b/main/screens/motorstatedebugmenu.h @@ -1,15 +1,17 @@ #pragma once // 3rdparty lib includes -#include "menuitem.h" -#include "actions/dummyaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" +#include +#include +#include +#include // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" +#include "texthelpers/debugtexthelpers.h" #include "utils.h" -#include "debugtexthelpers.h" + +namespace bobby { template class MotorStateDebugMenu : @@ -50,3 +52,5 @@ using BackLeftMotorStateDebugMenu = MotorStateDebugMenu; + +} // namespace bobby diff --git a/main/displays/menus/motortestmodesettingsmenu.cpp b/main/screens/motortestmodesettingsmenu.cpp similarity index 87% rename from main/displays/menus/motortestmodesettingsmenu.cpp rename to main/screens/motortestmodesettingsmenu.cpp index f85460e..6ce702c 100644 --- a/main/displays/menus/motortestmodesettingsmenu.cpp +++ b/main/screens/motortestmodesettingsmenu.cpp @@ -1,16 +1,18 @@ #include "motortestmodesettingsmenu.h" // 3rdparty lib includes -#include "changevaluedisplay.h" -#include "menuitem.h" -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" +#include +#include +#include +#include +#include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "utils.h" #include "accessors/settingsaccessors.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_MOTORTESTMODESETTINGS[] = "Motortest mode seetings"; @@ -53,3 +55,4 @@ void MotortestModeSettingsMenu::back() { popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/motortestmodesettingsmenu.h b/main/screens/motortestmodesettingsmenu.h similarity index 71% rename from main/displays/menus/motortestmodesettingsmenu.h rename to main/screens/motortestmodesettingsmenu.h index 5e94cae..39714ab 100644 --- a/main/displays/menus/motortestmodesettingsmenu.h +++ b/main/screens/motortestmodesettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class MotortestModeSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/networksettingsmenu.cpp b/main/screens/networksettingsmenu.cpp similarity index 96% rename from main/displays/menus/networksettingsmenu.cpp rename to main/screens/networksettingsmenu.cpp index 84124b2..58e5361 100644 --- a/main/displays/menus/networksettingsmenu.cpp +++ b/main/screens/networksettingsmenu.cpp @@ -10,13 +10,15 @@ #include // local includes -#include "displays/qrdisplay.h" +#include "screens/qrdisplay.h" #include "globals.h" #include "texthelpers/networktexthelpers.h" #include "utils.h" #include "wifiapsettingsmenu.h" #include "wifistasettingsmenu.h" +namespace bobby { + using namespace espgui; namespace { @@ -55,3 +57,4 @@ void NetworkAccessPointQRAction::triggered() std::string qr = fmt::format("WIFI:T:{};S:{};P:{};H:;", get_wifi_security_string(configs.wifiApAuthmode.value()), configs.wifiApName.value(), configs.wifiApKey.value()); espgui::pushScreen(qr); } +} // namespace bobby diff --git a/main/displays/menus/networksettingsmenu.h b/main/screens/networksettingsmenu.h similarity index 79% rename from main/displays/menus/networksettingsmenu.h rename to main/screens/networksettingsmenu.h index a7c9c4d..1698765 100644 --- a/main/displays/menus/networksettingsmenu.h +++ b/main/screens/networksettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class NetworkSettingsMenu : public BobbyMenuDisplay { @@ -17,3 +19,5 @@ class NetworkAccessPointQRAction : public virtual espgui::ActionInterface public: void triggered() override; }; + +} // namespace bobby diff --git a/main/displays/menus/otamenu.cpp b/main/screens/otamenu.cpp similarity index 79% rename from main/displays/menus/otamenu.cpp rename to main/screens/otamenu.cpp index cdd5088..9b4f173 100644 --- a/main/displays/menus/otamenu.cpp +++ b/main/screens/otamenu.cpp @@ -1,19 +1,21 @@ #include "otamenu.h" // 3rdparty lib includes -#include "actioninterface.h" -#include "actions/dummyaction.h" -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" +#include +#include +#include +#include +#include // local includes -#include "icons/back.h" +#include "screens/selectbuildserverbranch.h" +#include "screens/selectbuildservermenu.h" +#include "screens/selectotabuildmenu.h" +#include "screens/updatedisplay.h" #include "icons/presets.h" #include "icons/update.h" -#include "displays/menus/selectotabuildmenu.h" -#include "displays/menus/selectbuildserverbranch.h" -#include "displays/menus/selectbuildservermenu.h" -#include "displays/updatedisplay.h" + +namespace bobby { namespace { constexpr char TEXT_UPDATE[] = "Update"; @@ -43,3 +45,4 @@ void OtaMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/otamenu.h b/main/screens/otamenu.h similarity index 67% rename from main/displays/menus/otamenu.h rename to main/screens/otamenu.h index 63ed7bc..d2e3d2e 100644 --- a/main/displays/menus/otamenu.h +++ b/main/screens/otamenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class OtaMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/displays/pingpongdisplay.cpp b/main/screens/pingpongdisplay.cpp similarity index 70% rename from main/displays/pingpongdisplay.cpp rename to main/screens/pingpongdisplay.cpp index 71d85cd..a2acd3e 100644 --- a/main/displays/pingpongdisplay.cpp +++ b/main/screens/pingpongdisplay.cpp @@ -1,13 +1,16 @@ #include "pingpongdisplay.h" // 3rdparty lib includes -#include #include -#include +#include #include +#include +#include // local includes -#include +#include "screens.h" + +namespace bobby { PingPongDisplay::PingPongDisplay() : lpaddle_y(cpputils::randomNumber(0, h - paddle_h, espcpputils::esp_random_device{})), @@ -18,28 +21,28 @@ PingPongDisplay::PingPongDisplay() : calc_target_y(); } -void PingPongDisplay::initScreen() +void PingPongDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); disableScreenFlip(true); - espgui::tft.fillScreen(TFT_BLACK); - espgui::tft.setRotation(1); + tft.fillScreen(espgui::TFT_BLACK); + tft.setRotation(1); - midline(); + midline(tft); } -void PingPongDisplay::redraw() +void PingPongDisplay::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); - lpaddle(); - rpaddle(); + lpaddle(tft); + rpaddle(tft); - midline(); + midline(tft); - ball(); + ball(tft); } void PingPongDisplay::stop() @@ -63,34 +66,34 @@ void PingPongDisplay::buttonPressed(espgui::Button button) } } -void PingPongDisplay::midline() +void PingPongDisplay::midline(espgui::TftInterface &tft) { // If the ball is not on the line then don't redraw the line if ((ball_x dashline_x+dashline_w)) return; - espgui::tft.startWrite(); + tft.startWrite(); // Quick way to draw a dashed line - espgui::tft.setAddrWindow(dashline_x, 0, dashline_w, h); + tft.setAddrWindow(dashline_x, 0, dashline_w, h); for (int16_t i = 0; i < dashline_n; i+=2) { - espgui::tft.pushColor(WHITE, dashline_w*dashline_h); // push dash pixels - espgui::tft.pushColor(BLACK, dashline_w*dashline_h); // push gap pixels + tft.pushColor(WHITE, dashline_w*dashline_h); // push dash pixels + tft.pushColor(BLACK, dashline_w*dashline_h); // push gap pixels } - espgui::tft.endWrite(); + tft.endWrite(); } -void PingPongDisplay::lpaddle() +void PingPongDisplay::lpaddle(espgui::TftInterface &tft) { if (lpaddle_d == 1) { - espgui::tft.fillRect(lpaddle_x, lpaddle_y, paddle_w, 1, BLACK); + tft.fillRect(lpaddle_x, lpaddle_y, paddle_w, 1, BLACK); } else if (lpaddle_d == -1) { - espgui::tft.fillRect(lpaddle_x, lpaddle_y + paddle_h - 1, paddle_w, 1, BLACK); + tft.fillRect(lpaddle_x, lpaddle_y + paddle_h - 1, paddle_w, 1, BLACK); } lpaddle_y = lpaddle_y + lpaddle_d; @@ -107,15 +110,15 @@ void PingPongDisplay::lpaddle() if (lpaddle_y + paddle_h >= h && lpaddle_d == 1) lpaddle_d = 0; else if (lpaddle_y <= 0 && lpaddle_d == -1) lpaddle_d = 0; - espgui::tft.fillRect(lpaddle_x, lpaddle_y, paddle_w, paddle_h, WHITE); + tft.fillRect(lpaddle_x, lpaddle_y, paddle_w, paddle_h, WHITE); } -void PingPongDisplay::rpaddle() +void PingPongDisplay::rpaddle(espgui::TftInterface &tft) { if (rpaddle_d == 1) - espgui::tft.fillRect(rpaddle_x, rpaddle_y, paddle_w, 1, BLACK); + tft.fillRect(rpaddle_x, rpaddle_y, paddle_w, 1, BLACK); else if (rpaddle_d == -1) - espgui::tft.fillRect(rpaddle_x, rpaddle_y + paddle_h - 1, paddle_w, 1, BLACK); + tft.fillRect(rpaddle_x, rpaddle_y + paddle_h - 1, paddle_w, 1, BLACK); rpaddle_y = rpaddle_y + rpaddle_d; @@ -133,7 +136,7 @@ void PingPongDisplay::rpaddle() else if (rpaddle_y <= 0 && rpaddle_d == -1) rpaddle_d = 0; - espgui::tft.fillRect(rpaddle_x, rpaddle_y, paddle_w, paddle_h, WHITE); + tft.fillRect(rpaddle_x, rpaddle_y, paddle_w, paddle_h, WHITE); } void PingPongDisplay::calc_target_y() @@ -157,7 +160,7 @@ void PingPongDisplay::calc_target_y() target_y = h - (y % h); } -void PingPongDisplay::ball() +void PingPongDisplay::ball(espgui::TftInterface &tft) { ball_x = ball_x + ball_dx; ball_y = ball_y + ball_dy; @@ -180,8 +183,9 @@ void PingPongDisplay::ball() } //tft.fillRect(oldball_x, oldball_y, ball_w, ball_h, BLACK); - espgui::tft.drawRect(oldball_x, oldball_y, ball_w, ball_h, BLACK); // Less TFT refresh aliasing than line above for large balls - espgui::tft.fillRect( ball_x, ball_y, ball_w, ball_h, WHITE); + tft.drawRect(oldball_x, oldball_y, ball_w, ball_h, BLACK); // Less TFT refresh aliasing than line above for large balls + tft.fillRect( ball_x, ball_y, ball_w, ball_h, WHITE); oldball_x = ball_x; oldball_y = ball_y; } +} // namespace bobby diff --git a/main/displays/pingpongdisplay.h b/main/screens/pingpongdisplay.h similarity index 75% rename from main/displays/pingpongdisplay.h rename to main/screens/pingpongdisplay.h index 2c79a6a..a6db271 100644 --- a/main/displays/pingpongdisplay.h +++ b/main/screens/pingpongdisplay.h @@ -3,8 +3,13 @@ // system includes #include +// 3rdparty lib includes +#include + // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class PingPongDisplay : public BobbyDisplay { @@ -13,18 +18,18 @@ class PingPongDisplay : public BobbyDisplay public: PingPongDisplay(); - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void stop() override; void buttonPressed(espgui::Button button) override; private: - void midline(); - void lpaddle(); - void rpaddle(); + void midline(espgui::TftInterface &tft); + void lpaddle(espgui::TftInterface &tft); + void rpaddle(espgui::TftInterface &tft); void calc_target_y(); - void ball(); + void ball(espgui::TftInterface &tft); int16_t h = 240; int16_t w = 320; @@ -72,3 +77,5 @@ private: static const constexpr auto WHITE = 0xFFFF; static const constexpr auto GREY = 0x5AEB; }; + +} // namespace bobby diff --git a/main/displays/poweroffdisplay.cpp b/main/screens/poweroffdisplay.cpp similarity index 51% rename from main/displays/poweroffdisplay.cpp rename to main/screens/poweroffdisplay.cpp index f3bc49f..01a5d7f 100644 --- a/main/displays/poweroffdisplay.cpp +++ b/main/screens/poweroffdisplay.cpp @@ -1,15 +1,17 @@ #include "poweroffdisplay.h" // 3rdparty lib includes -#include #include +#include +#include // local includes -#include "utils.h" #include "globals.h" using namespace std::chrono_literals; +namespace bobby { + void PoweroffDisplay::start() { Base::start(); @@ -20,21 +22,19 @@ void PoweroffDisplay::start() controller.command.poweroff = true; } -void PoweroffDisplay::initScreen() +void PoweroffDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - espgui::tft.fillScreen(TFT_BLACK); - espgui::tft.setTextColor(TFT_YELLOW); + tft.fillScreen(espgui::TFT_BLACK); - espgui::tft.drawString("Poweroff", 5, 5, 4); + tft.drawString("Poweroff", 5, 5, espgui::TFT_YELLOW, espgui::TFT_BLACK, 4); - espgui::tft.fillRect(0, 34, espgui::tft.width(), 3, TFT_WHITE); + tft.fillRect(0, 34, tft.width(), 3, espgui::TFT_WHITE); - espgui::tft.setTextColor(TFT_WHITE); - espgui::tft.drawString("Trying to turn off", 15, 50, 4); - espgui::tft.drawString("both controllers", 25, 75, 4); - espgui::tft.drawString("Please stand still...", 20, 125, 4); + tft.drawString("Trying to turn off", 15, 50, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + tft.drawString("both controllers", 25, 75, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + tft.drawString("Please stand still...", 20, 125, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); } void PoweroffDisplay::update() @@ -52,3 +52,4 @@ void PoweroffDisplay::stop() for (Controller &controller : controllers) controller.command.poweroff = false; } +} // namespace bobby diff --git a/main/displays/poweroffdisplay.h b/main/screens/poweroffdisplay.h similarity index 70% rename from main/displays/poweroffdisplay.h rename to main/screens/poweroffdisplay.h index 3fa54ff..0ac63f3 100644 --- a/main/displays/poweroffdisplay.h +++ b/main/screens/poweroffdisplay.h @@ -4,7 +4,9 @@ #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class PoweroffDisplay : public BobbyDisplay { @@ -12,10 +14,11 @@ class PoweroffDisplay : public BobbyDisplay public: void start() override; - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void update() override; void stop() override; private: espchrono::millis_clock::time_point m_startTime; }; +} // namespace bobby diff --git a/main/displays/powersupplydisplay.cpp b/main/screens/powersupplydisplay.cpp similarity index 97% rename from main/displays/powersupplydisplay.cpp rename to main/screens/powersupplydisplay.cpp index 12f26a1..484cf93 100644 --- a/main/displays/powersupplydisplay.cpp +++ b/main/screens/powersupplydisplay.cpp @@ -1,7 +1,7 @@ #include "powersupplydisplay.h" // 3rdparty lib includes -#include + #include // local includes diff --git a/main/displays/powersupplydisplay.h b/main/screens/powersupplydisplay.h similarity index 92% rename from main/displays/powersupplydisplay.h rename to main/screens/powersupplydisplay.h index 006c1f5..e674f40 100644 --- a/main/displays/powersupplydisplay.h +++ b/main/screens/powersupplydisplay.h @@ -4,7 +4,7 @@ #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" #if defined(FEATURE_CAN) && defined(FEATURE_POWERSUPPLY) class PowerSupplyDisplay : public BobbyDisplay diff --git a/main/displays/menus/profilesmenu.cpp b/main/screens/profilesmenu.cpp similarity index 87% rename from main/displays/menus/profilesmenu.cpp rename to main/screens/profilesmenu.cpp index 08f58f5..ff9902c 100644 --- a/main/displays/menus/profilesmenu.cpp +++ b/main/screens/profilesmenu.cpp @@ -1,10 +1,14 @@ #include "profilesmenu.h" +// 3rdparty lib includes +#include +#include +#include + // local includes #include "actions/switchprofileaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" -#include "menudisplay.h" + +namespace bobby { namespace { constexpr char TEXT_PROFILES[] = "Profiles"; @@ -33,3 +37,4 @@ void ProfilesMenu::back() { popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/profilesmenu.h b/main/screens/profilesmenu.h similarity index 68% rename from main/displays/menus/profilesmenu.h rename to main/screens/profilesmenu.h index fb2cd87..f1c5cc5 100644 --- a/main/displays/menus/profilesmenu.h +++ b/main/screens/profilesmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class ProfilesMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/screens/qrcodedebug.cpp b/main/screens/qrcodedebug.cpp new file mode 100644 index 0000000..71dd5f8 --- /dev/null +++ b/main/screens/qrcodedebug.cpp @@ -0,0 +1,56 @@ +#include "qrcodedebug.h" + +// 3rdparty lib includes +#include +#include +#include + +// local includes +#include "globals.h" +#include "newsettings.h" +#include "screenmanager.h" + +namespace bobby { + +using namespace espgui; + +void QrCodeDebugDisplay::redraw(espgui::TftInterface &tft) +{ + Base::redraw(tft); + + if (m_qrcode) + { + auto &qr = *m_qrcode; + for (uint8_t y = 0; y < qr.size; y++) { + for (uint8_t x = 0; x < qr.size; x++) { + if (qrcode_getModule(&qr, x, y)) + { + tft.drawPixel(x+2,y+2, espgui::TFT_BLACK); + } else { + tft.drawPixel(x+2,y+2, espgui::TFT_WHITE); + } + } + } + + m_qrcode.reset(); + } +} + +void QrCodeDebugDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Left: popScreen(); break; + case Button::Right: + { + uint8_t qrcodeBytes[qrcode_getBufferSize(7)]; + qrcode_initText(&*m_qrcode, qrcodeBytes, 7, ECC_MEDIUM, fmt::format("WIFI:T:WPA;S:{};P:{};", configs.wifiApName.value(), configs.wifiApKey.value()).c_str()); + break; + } + default:; + } +} +} // namespace bobby diff --git a/main/displays/qrcodedebug.h b/main/screens/qrcodedebug.h similarity index 54% rename from main/displays/qrcodedebug.h rename to main/screens/qrcodedebug.h index 8782625..cdccf1c 100644 --- a/main/displays/qrcodedebug.h +++ b/main/screens/qrcodedebug.h @@ -1,10 +1,15 @@ #pragma once +// system includes +#include + // 3rdparty lib includes #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class QrCodeDebugDisplay : public BobbyDisplay @@ -12,12 +17,11 @@ class QrCodeDebugDisplay : using Base = BobbyDisplay; public: - QrCodeDebugDisplay(); - - void initScreen() override; + void redraw(espgui::TftInterface &tft) override; void buttonPressed(espgui::Button button) override; private: - QRCode m_qrcode; + std::optional m_qrcode; }; +} // namespace bobby diff --git a/main/displays/qrdisplay.cpp b/main/screens/qrdisplay.cpp similarity index 98% rename from main/displays/qrdisplay.cpp rename to main/screens/qrdisplay.cpp index 2663d71..29715cb 100644 --- a/main/displays/qrdisplay.cpp +++ b/main/screens/qrdisplay.cpp @@ -1,5 +1,6 @@ #include "qrdisplay.h" +namespace bobby { // this only works for ECC_MEDIUM uint16_t get_qrver_from_strlen(std::string_view str) { @@ -87,3 +88,4 @@ uint16_t get_qrver_from_strlen(std::string_view str) else return 40; } +} // namespace bobby diff --git a/main/displays/qrdisplay.h b/main/screens/qrdisplay.h similarity index 81% rename from main/displays/qrdisplay.h rename to main/screens/qrdisplay.h index d48d4f7..4313793 100644 --- a/main/displays/qrdisplay.h +++ b/main/screens/qrdisplay.h @@ -3,10 +3,13 @@ // 3rd party includes #include #include -#include +#include +#include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { uint16_t get_qrver_from_strlen(std::string_view str); @@ -17,7 +20,7 @@ class QrDisplay : public BobbyDisplay public: explicit QrDisplay(std::string_view msg) : m_msg{msg} {} - void initScreen() override + void initScreen(espgui::TftInterface &tft) override { using namespace espgui; QRCode qrcode; @@ -29,15 +32,15 @@ public: const uint8_t x_offset = (tft.width() - qrcode.size * multiplier) / 2; const uint8_t y_offset = (tft.height() - qrcode.size * multiplier) / 2; - tft.fillScreen(TFT_WHITE); + tft.fillScreen(espgui::TFT_WHITE); for (uint8_t y = 0; y < qrcode.size; y++) { for (uint8_t x = 0; x < qrcode.size; x++) { if (qrcode_getModule(&qrcode, x, y)) { - tft.fillRect(x*multiplier+x_offset,y*multiplier+y_offset, multiplier, multiplier, TFT_BLACK); + tft.fillRect(x*multiplier+x_offset,y*multiplier+y_offset, multiplier, multiplier, espgui::TFT_BLACK); } else { - tft.fillRect(x*multiplier+x_offset,y*multiplier+y_offset, multiplier, multiplier, TFT_WHITE); + tft.fillRect(x*multiplier+x_offset,y*multiplier+y_offset, multiplier, multiplier, espgui::TFT_WHITE); } } } @@ -60,3 +63,4 @@ public: private: std::string_view m_msg; }; +} // namespace bobby diff --git a/main/displays/qrimportdisplay.cpp b/main/screens/qrimportdisplay.cpp similarity index 77% rename from main/displays/qrimportdisplay.cpp rename to main/screens/qrimportdisplay.cpp index ae6ea26..d228bde 100644 --- a/main/displays/qrimportdisplay.cpp +++ b/main/screens/qrimportdisplay.cpp @@ -1,15 +1,20 @@ #include "qrimportdisplay.h" +// 3rdparty lib includes +#include + +namespace bobby { + namespace { constexpr const char * const TAG = "qrimport"; -} +} // namespace -void QrImportDisplay::start() +void QrImportDisplay::initScreen(espgui::TftInterface &tft) { using namespace espgui; - Base::start(); + Base::initScreen(tft); - m_statuslabel.start(); + m_statuslabel.start(tft); qrimport::setup_request(); @@ -49,26 +54,23 @@ void QrImportDisplay::update() ESP_LOGW(TAG, "failed %.*s => %.*s", m_nvs_key.size(), m_nvs_key.data(), m_result.error().size(), m_result.error().data()); } -void QrImportDisplay::redraw() +void QrImportDisplay::redraw(espgui::TftInterface &tft) { using namespace espgui; - Base::redraw(); + Base::redraw(tft); if (m_waitingForResult) { - tft.setTextColor(TFT_YELLOW, TFT_BLACK); - m_statuslabel.redraw("In progress"); + m_statuslabel.redraw(tft, "In progress", TFT_YELLOW, TFT_BLACK, 4); } else if (!m_result && !m_result.error().empty()) { - tft.setTextColor(TFT_RED, TFT_BLACK); - BobbyErrorHandler{}.errorOccurred(fmt::format("Error: {}", m_result.error())); + BobbyErrorHandler{}.errorOccurred(fmt::format("&1Error: {}&6", m_result.error())); m_result.error().clear(); } else { - tft.setTextColor(TFT_GREEN, TFT_BLACK); - m_statuslabel.redraw("OK"); + m_statuslabel.redraw(tft, "OK", TFT_GREEN, TFT_BLACK, 4); popScreen(); } } @@ -90,3 +92,4 @@ void QrImportDisplay::buttonPressed(espgui::Button button) default:; } } +} // namespace bobby diff --git a/main/screens/qrimportdisplay.h b/main/screens/qrimportdisplay.h new file mode 100644 index 0000000..42ef075 --- /dev/null +++ b/main/screens/qrimportdisplay.h @@ -0,0 +1,48 @@ +#pragma once + +// esp-idf includes +#include + +// 3rd party includes +#include +#include +#include +#include + +// local includes +#include "guihelpers/bobbydisplay.h" +#include "guihelpers/bobbyerrorhandler.h" +#include "qrimport.h" +#include "screenmanager.h" + +namespace bobby { + +class QrImportDisplay : public BobbyDisplay +{ + using Base = BobbyDisplay; + +public: + explicit QrImportDisplay(const std::string &nvs_key, espgui::TftInterface &tft) : + m_statuslabel{5,(tft.height() / 2)-tft.fontHeight(4)}, + m_nvs_key{nvs_key} + {} + + explicit QrImportDisplay(std::string &&nvs_key, espgui::TftInterface &tft) : + m_statuslabel{5,(tft.height() / 2)-tft.fontHeight(4)}, + m_nvs_key{std::move(nvs_key)} + {} + + void initScreen(espgui::TftInterface &tft) override; + void update() override; + void redraw(espgui::TftInterface &tft) override; + void buttonPressed(espgui::Button button) override; + +private: + bool m_waitingForResult{false}; + espgui::Label m_statuslabel; + + tl::expected m_result; + std::string m_nvs_key; +}; + +} // namespace bobby diff --git a/main/screens/rebootscreen.cpp b/main/screens/rebootscreen.cpp new file mode 100644 index 0000000..4ed75ee --- /dev/null +++ b/main/screens/rebootscreen.cpp @@ -0,0 +1,27 @@ +#include "rebootscreen.h" + +// esp-idf includes +#include + +// 3rdparty lib includes +#include +#include + +namespace bobby { +void RebootScreen::initScreen(espgui::TftInterface &tft) +{ + Base::initScreen(tft); + + tft.drawString("Rebooting...", 0, 50, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + esp_restart(); +} + +std::string RebootScreen::text() const +{ + return "Reboot"; +} + +void RebootScreen::buttonPressed(espgui::Button button) {} +void RebootScreen::buttonReleased(espgui::Button button) {} +} // namespace bobby diff --git a/main/screens/rebootscreen.h b/main/screens/rebootscreen.h new file mode 100644 index 0000000..d969a14 --- /dev/null +++ b/main/screens/rebootscreen.h @@ -0,0 +1,22 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { +class RebootScreen : public BobbyDisplayWithTitle +{ + using Base = BobbyDisplayWithTitle; + +public: + void initScreen(espgui::TftInterface &tft) override; + + std::string text() const override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; +} // namespace bobby diff --git a/main/displays/menus/recoverymenu.cpp b/main/screens/recoverymenu.cpp similarity index 78% rename from main/displays/menus/recoverymenu.cpp rename to main/screens/recoverymenu.cpp index fc621cf..6601c29 100644 --- a/main/displays/menus/recoverymenu.cpp +++ b/main/screens/recoverymenu.cpp @@ -1,16 +1,19 @@ #include "recoverymenu.h" -// 3dparty lib includes +// 3rdparty lib includes +#include #include // local includes -#include "actions/rebootaction.h" #include "actions/resetnvsaction.h" -#include "bobbycheckbox.h" -#include "bobbyerrorhandler.h" +#include "guihelpers/bobbycheckbox.h" +#include "guihelpers/bobbyerrorhandler.h" #include "icons/info.h" #include "icons/reboot.h" #include "newsettings.h" +#include "screens/rebootscreen.h" + +namespace bobby { namespace { constexpr char TEXT_RESET_NVS[] = "Reset NVS"; @@ -50,11 +53,12 @@ RecoveryMenu::RecoveryMenu() configs.callForEveryFeature([&](ConfiguredFeatureFlag &feature){ constructMenuItem(feature); }); - constructMenuItem, ResetNVSAction, StaticMenuItemIcon<&bobbyicons::info>>>(); - constructMenuItem, RebootAction, StaticMenuItemIcon<&bobbyicons::reboot>>>(); + constructMenuItem, ResetNVSAction, StaticMenuItemIcon<&bobbyicons::info>>>(); + constructMenuItem, PushScreenAction, StaticMenuItemIcon<&bobbyicons::reboot>>>(); } std::string RecoveryMenu::text() const { return "Recovery Menu"; } +} // namespace bobby diff --git a/main/displays/menus/recoverymenu.h b/main/screens/recoverymenu.h similarity index 72% rename from main/displays/menus/recoverymenu.h rename to main/screens/recoverymenu.h index 16cc3d1..aad1bf3 100644 --- a/main/displays/menus/recoverymenu.h +++ b/main/screens/recoverymenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class RecoveryMenu : public BobbyMenuDisplay { @@ -14,3 +16,4 @@ public: void back() override {} }; +} // namespace bobby diff --git a/main/displays/menus/remotecontrolmodesettingsmenu.cpp b/main/screens/remotecontrolmodesettingsmenu.cpp similarity index 94% rename from main/displays/menus/remotecontrolmodesettingsmenu.cpp rename to main/screens/remotecontrolmodesettingsmenu.cpp index 54b5c46..5d498ef 100644 --- a/main/displays/menus/remotecontrolmodesettingsmenu.cpp +++ b/main/screens/remotecontrolmodesettingsmenu.cpp @@ -10,7 +10,9 @@ // local includes #include "accessors/settingsaccessors.h" #include "changevaluedisplay_unifiedmodelmode.h" -#include "displays/bobbychangevaluedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" + +namespace bobby { namespace { constexpr char TEXT_REMOTEMODESETTINGS[] = "Remote mode settings"; @@ -43,3 +45,4 @@ void RemoteControlModeSettingsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/remotecontrolmodesettingsmenu.h b/main/screens/remotecontrolmodesettingsmenu.h similarity index 72% rename from main/displays/menus/remotecontrolmodesettingsmenu.h rename to main/screens/remotecontrolmodesettingsmenu.h index f5769d4..ac2002a 100644 --- a/main/displays/menus/remotecontrolmodesettingsmenu.h +++ b/main/screens/remotecontrolmodesettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class RemoteControlModeSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/screens/resetnvsscreen.cpp b/main/screens/resetnvsscreen.cpp new file mode 100644 index 0000000..abd5446 --- /dev/null +++ b/main/screens/resetnvsscreen.cpp @@ -0,0 +1,33 @@ +#include "resetnvsscreen.h" + +// esp-idf includes +#include + +// 3rdparty lib includes +#include +#include + +// local includes +#include "newsettings.h" + +namespace bobby { +void ResetNVSScreen::initScreen(espgui::TftInterface &tft) +{ + Base::initScreen(tft); + + tft.drawString("Rebooting...", 0, 50, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + configs.reset(); + + esp_restart(); +} + +std::string ResetNVSScreen::text() const +{ + return "Reset NVS"; +} + +void ResetNVSScreen::buttonPressed(espgui::Button button) {} + +void ResetNVSScreen::buttonReleased(espgui::Button button) {} +} // namespace bobby diff --git a/main/screens/resetnvsscreen.h b/main/screens/resetnvsscreen.h new file mode 100644 index 0000000..48a1091 --- /dev/null +++ b/main/screens/resetnvsscreen.h @@ -0,0 +1,22 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { +class ResetNVSScreen : public BobbyDisplayWithTitle +{ + using Base = BobbyDisplayWithTitle; + +public: + void initScreen(espgui::TftInterface &tft) override; + + std::string text() const override; + + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; +}; +} // namespace bobby diff --git a/main/displays/menus/selectbatterytypemenu.cpp b/main/screens/selectbatterytypemenu.cpp similarity index 96% rename from main/displays/menus/selectbatterytypemenu.cpp rename to main/screens/selectbatterytypemenu.cpp index 7bba839..0d9e21b 100644 --- a/main/displays/menus/selectbatterytypemenu.cpp +++ b/main/screens/selectbatterytypemenu.cpp @@ -1,19 +1,21 @@ #include "selectbatterytypemenu.h" // 3rdparty lib includes -#include -#include -#include #include #include +#include +#include +#include // local includes #include "battery.h" +#include "batterymenu.h" +#include "screens/batterymenu.h" +#include "screens/mainmenu.h" #include "newsettings.h" #include "utils.h" -#include "displays/menus/batterymenu.h" -#include "batterymenu.h" -#include "displays/menus/mainmenu.h" + +namespace bobby { namespace { constexpr char TEXT_CELL_SERIES[] = "Cells (Series)"; @@ -69,3 +71,4 @@ void BatteryTypeMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/selectbuildserverbranch.cpp b/main/screens/selectbuildserverbranch.cpp similarity index 91% rename from main/displays/menus/selectbuildserverbranch.cpp rename to main/screens/selectbuildserverbranch.cpp index 88d0ae0..e322f35 100644 --- a/main/displays/menus/selectbuildserverbranch.cpp +++ b/main/screens/selectbuildserverbranch.cpp @@ -1,23 +1,21 @@ #include "selectbuildserverbranch.h" // 3rd party includes +#include +#include #include -#include "actions/dummyaction.h" -#include "actions/popscreenaction.h" -#include "icons/back.h" +#include +#include +#include // local includes -#include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" -#include "bobbyerrorhandler.h" #include "buildserver.h" -#include "displays/menus/otamenu.h" -#include "icons/back.h" -#include "buildserver.h" -#include "globals.h" +#include "guihelpers/bobbyerrorhandler.h" #include "icons/reboot.h" #include "newsettings.h" +namespace bobby { + namespace { constexpr char TEXT_OTA_NOBUILDSERVERAVAILABLE[] = "E:No server saved."; constexpr char TEXT_OTA_NOBUILDSERVERSELECTED[] = "E:No server selected."; @@ -89,7 +87,7 @@ SelectBuildserverBranchMenu::SelectBuildserverBranchMenu() using namespace buildserver; #define ERR_MESSAGE(text) \ - constructMenuItem, DefaultFont, StaticColor, DummyAction>>(); \ + constructMenuItem, DefaultFont, StaticColor, DummyAction>>(); \ constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); \ return; @@ -158,3 +156,4 @@ void SelectBuildserverBranchMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/selectbuildserverbranch.h b/main/screens/selectbuildserverbranch.h similarity index 77% rename from main/displays/menus/selectbuildserverbranch.h rename to main/screens/selectbuildserverbranch.h index 65f5eda..29f63c4 100644 --- a/main/displays/menus/selectbuildserverbranch.h +++ b/main/screens/selectbuildserverbranch.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class SelectBuildserverBranchMenu : public BobbyMenuDisplay { @@ -14,3 +16,4 @@ public: void update() override; void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/selectbuildservermenu.cpp b/main/screens/selectbuildservermenu.cpp similarity index 93% rename from main/displays/menus/selectbuildservermenu.cpp rename to main/screens/selectbuildservermenu.cpp index 15bd240..338026b 100644 --- a/main/displays/menus/selectbuildservermenu.cpp +++ b/main/screens/selectbuildservermenu.cpp @@ -4,15 +4,19 @@ #include // 3rdparty lib includes +#include #include #include #include -#include +#include +#include // local includes #include "buildserver.h" -#include "utils.h" #include "newsettings.h" +#include "utils.h" + +namespace bobby { using namespace buildserver::SelectBuild; @@ -65,7 +69,7 @@ SelectBuildServerMenu::SelectBuildServerMenu() if (menuItemCount() < 1) { - constructMenuItem, DefaultFont, StaticColor, DummyAction>>(); + constructMenuItem, DefaultFont, StaticColor, DummyAction>>(); } constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); @@ -80,3 +84,4 @@ void SelectBuildServerMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/selectbuildservermenu.h b/main/screens/selectbuildservermenu.h similarity index 71% rename from main/displays/menus/selectbuildservermenu.h rename to main/screens/selectbuildservermenu.h index 7a3b26e..0928bf3 100644 --- a/main/displays/menus/selectbuildservermenu.h +++ b/main/screens/selectbuildservermenu.h @@ -1,9 +1,9 @@ #pragma once -// 3rdparty lib includes - // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class SelectBuildServerMenu : public BobbyMenuDisplay { @@ -14,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/selectmodemenu.cpp b/main/screens/selectmodemenu.cpp similarity index 99% rename from main/displays/menus/selectmodemenu.cpp rename to main/screens/selectmodemenu.cpp index 8c90ca4..e03148f 100644 --- a/main/displays/menus/selectmodemenu.cpp +++ b/main/screens/selectmodemenu.cpp @@ -23,6 +23,8 @@ #include "accessors/globalaccessors.h" #include "mainmenu.h" +namespace bobby { + namespace { constexpr char TEXT_SELECTMODE[] = "Select mode"; constexpr char TEXT_DEFAULT[] = "Default"; @@ -116,3 +118,4 @@ void SelectModeMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/selectmodemenu.h b/main/screens/selectmodemenu.h similarity index 75% rename from main/displays/menus/selectmodemenu.h rename to main/screens/selectmodemenu.h index 73d6c50..e2eb342 100644 --- a/main/displays/menus/selectmodemenu.h +++ b/main/screens/selectmodemenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class SelectModeMenu : public BobbyMenuDisplay { @@ -15,3 +17,4 @@ public: void start() override; void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/selectotabuildmenu.cpp b/main/screens/selectotabuildmenu.cpp similarity index 88% rename from main/displays/menus/selectotabuildmenu.cpp rename to main/screens/selectotabuildmenu.cpp index e940724..d4945f1 100644 --- a/main/displays/menus/selectotabuildmenu.cpp +++ b/main/screens/selectotabuildmenu.cpp @@ -1,24 +1,26 @@ #include "selectotabuildmenu.h" // 3rdparty lib includes -#include -#include +#include +#include +#include #include +#include +#include +#include +#include // local includes -#include "actions/dummyaction.h" -#include "actions/popscreenaction.h" -#include "actions/pushscreenaction.h" -#include "bobbyerrorhandler.h" #include "buildserver.h" -#include "buildserver.h" -#include "displays/menus/otamenu.h" +#include "screens/otamenu.h" #include "globals.h" -#include "icons/back.h" +#include "guihelpers/bobbyerrorhandler.h" #include "newsettings.h" #include "utils.h" -#define MESSAGE(text) constructMenuItem, DefaultFont, StaticColor, DummyAction>>() +namespace bobby { + +#define MESSAGE(text) constructMenuItem, DefaultFont, StaticColor, DummyAction>>() using namespace espgui; using namespace buildserver::SelectBuild; @@ -82,7 +84,7 @@ SelectBuildMenu::SelectBuildMenu() std::string serverUrl = configs.otaServerUrl.value(); if (serverUrl.substr(serverUrl.length() - 4) == ".bin") { - auto &menuitem = constructMenuItem>(); + auto &menuitem = constructMenuItem>(); std::size_t last_slash_index = serverUrl.find_last_of("/"); auto filename = serverUrl.substr(last_slash_index+1); auto hash = filename.substr(0, filename.length() - 4); @@ -129,13 +131,13 @@ void SelectBuildMenu::update() void SelectBuildMenu::buildMenuFromJson() { - auto &latest = constructMenuItem>(); + auto &latest = constructMenuItem>(); latest.setHash("latest"); latest.setUrl(url_for_latest); for (const std::string &hash : availableVersions) { - auto &menuitem = constructMenuItem>(); + auto &menuitem = constructMenuItem>(); menuitem.setHash(hash); menuitem.setUrl(fmt::format(fmt::runtime(url_for_hashes), hash)); } @@ -146,3 +148,5 @@ void SelectBuildMenu::back() { popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/selectotabuildmenu.h b/main/screens/selectotabuildmenu.h similarity index 77% rename from main/displays/menus/selectotabuildmenu.h rename to main/screens/selectotabuildmenu.h index efb434a..ff00875 100644 --- a/main/displays/menus/selectotabuildmenu.h +++ b/main/screens/selectotabuildmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class SelectBuildMenu : public BobbyMenuDisplay { @@ -18,3 +20,5 @@ public: private: void buildMenuFromJson(); }; + +} // namespace bobby diff --git a/main/displays/menus/settingsmenu.cpp b/main/screens/settingsmenu.cpp similarity index 89% rename from main/displays/menus/settingsmenu.cpp rename to main/screens/settingsmenu.cpp index b26e076..5c6d30e 100644 --- a/main/displays/menus/settingsmenu.cpp +++ b/main/screens/settingsmenu.cpp @@ -5,30 +5,14 @@ #include #include #include +#include #include // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/menus/aboutmenu.h" -#include "displays/menus/blesettingsmenu.h" -#include "displays/menus/bluetoothsettingsmenu.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" -#include "displays/menus/buzzermenu.h" -#include "displays/menus/cloudsettingsmenu.h" -#include "displays/menus/controllerhardwaresettingsmenu.h" -#include "displays/menus/crashmenu.h" -#include "displays/menus/espnowmenu.h" -#include "displays/menus/featureflagsmenu.h" -#include "displays/menus/gitmenu.h" -#include "displays/menus/limitssettingsmenu.h" -#include "displays/menus/modessettingsmenu.h" -#include "displays/menus/networksettingsmenu.h" -#include "displays/menus/selectbuildservermenu.h" -#include "displays/menus/timesettingsmenu.h" -#include "displays/menus/udpcloudsettingsmenu.h" #include "globals.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "guihelpers/bobbycheckbox.h" #include "icons/bluetooth.h" #include "icons/buzzer.h" #include "icons/demos.h" @@ -38,6 +22,25 @@ #include "icons/time.h" #include "icons/update.h" #include "icons/wifi.h" +#include "screens/aboutmenu.h" +#include "screens/blesettingsmenu.h" +#include "screens/bluetoothsettingsmenu.h" +#include "screens/boardcomputerhardwaresettingsmenu.h" +#include "screens/buzzermenu.h" +#include "screens/cloudsettingsmenu.h" +#include "screens/controllerhardwaresettingsmenu.h" +#include "screens/crashmenu.h" +#include "screens/espnowmenu.h" +#include "screens/featureflagsmenu.h" +#include "screens/gitmenu.h" +#include "screens/limitssettingsmenu.h" +#include "screens/modessettingsmenu.h" +#include "screens/networksettingsmenu.h" +#include "screens/selectbuildservermenu.h" +#include "screens/timesettingsmenu.h" +#include "screens/udpcloudsettingsmenu.h" + +namespace bobby { namespace { constexpr char TEXT_SETTINGS[] = "Settings"; @@ -148,3 +151,4 @@ void SettingsMenu::back() { popScreen(); } +} // namespace bobby diff --git a/main/screens/settingsmenu.h b/main/screens/settingsmenu.h new file mode 100644 index 0000000..589fd07 --- /dev/null +++ b/main/screens/settingsmenu.h @@ -0,0 +1,17 @@ +#pragma once + +// local includes +#include "guihelpers/menudisplaywithtime.h" + +namespace bobby { + +class SettingsMenu : public bobby::MenuDisplayWithTime +{ +public: + SettingsMenu(); + + std::string text() const override; + + void back() override; +}; +} // namespace bobby diff --git a/main/displays/setup/ask_calibrate_other_buttons.cpp b/main/screens/setup/ask_calibrate_other_buttons.cpp similarity index 78% rename from main/displays/setup/ask_calibrate_other_buttons.cpp rename to main/screens/setup/ask_calibrate_other_buttons.cpp index e641d13..32777c1 100644 --- a/main/displays/setup/ask_calibrate_other_buttons.cpp +++ b/main/screens/setup/ask_calibrate_other_buttons.cpp @@ -4,20 +4,22 @@ #include // local includes -#include "displays/menus/extrabuttoncalibratemenu.h" -#include "displays/setup/final_information.h" +#include "screens/extrabuttoncalibratemenu.h" +#include "screens/setup/final_information.h" #include "setup.h" #include "utils.h" +namespace bobby { + namespace { constexpr char const askSetupOtherButtonsText[] = "Do you want to setup other\nbuttons?\n(Blinker, Profile Buttons, etc.)\n\nPress LEFT to skip other buttons.\nPress RIGHT to setup buttons."; } // namespace -void SetupAskCalibrateOtherButtonsDisplay::initScreen() +void SetupAskCalibrateOtherButtonsDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - drawLargeText(askSetupOtherButtonsText); + drawLargeText(tft, askSetupOtherButtonsText); } void SetupAskCalibrateOtherButtonsDisplay::start() @@ -54,3 +56,4 @@ std::string SetupAskCalibrateOtherButtonsDisplay::text() const { return "Other Buttons"; } +} // namespace bobby diff --git a/main/displays/setup/ask_calibrate_other_buttons.h b/main/screens/setup/ask_calibrate_other_buttons.h similarity index 70% rename from main/displays/setup/ask_calibrate_other_buttons.h rename to main/screens/setup/ask_calibrate_other_buttons.h index e1a0a3c..02cb406 100644 --- a/main/displays/setup/ask_calibrate_other_buttons.h +++ b/main/screens/setup/ask_calibrate_other_buttons.h @@ -1,13 +1,15 @@ #pragma once // local includes -#include "displays/bobbydisplaywithtitle.h" +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { class SetupAskCalibrateOtherButtonsDisplay : public virtual BobbyDisplayWithTitle { using Base = BobbyDisplayWithTitle; public: - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void start() override; void buttonPressed(espgui::Button button) override; @@ -16,3 +18,4 @@ public: private: bool m_next_screen{false}; }; +} // namespace bobby diff --git a/main/displays/setup/ask_setup_clouds.cpp b/main/screens/setup/ask_setup_clouds.cpp similarity index 81% rename from main/displays/setup/ask_setup_clouds.cpp rename to main/screens/setup/ask_setup_clouds.cpp index 383c53b..0ab5370 100644 --- a/main/displays/setup/ask_setup_clouds.cpp +++ b/main/screens/setup/ask_setup_clouds.cpp @@ -4,21 +4,23 @@ #include // local includes -#include "displays/setup/ask_calibrate_other_buttons.h" -#include "displays/setup/setup_cloud.h" +#include "screens/setup/ask_calibrate_other_buttons.h" +#include "screens/setup/setup_cloud.h" #include "setup.h" #include "taskmanager.h" #include "utils.h" +namespace bobby { + namespace { constexpr char const askCloudText[] = "Do you want to setup cloud?\nWith this, you will be able\nto send data to graphana,\nremote control things like Buttons\nand NVS and more!\n\nPress LEFT to skip cloud.\nPress RIGHT to setup cloud."; } // namespace -void SetupAskSetupCloudsDisplay::initScreen() +void SetupAskSetupCloudsDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - drawLargeText(askCloudText); + drawLargeText(tft, askCloudText); } void SetupAskSetupCloudsDisplay::start() @@ -51,3 +53,4 @@ std::string SetupAskSetupCloudsDisplay::text() const { return "Cloud Setup"; } +} // namespace bobby diff --git a/main/displays/setup/ask_setup_clouds.h b/main/screens/setup/ask_setup_clouds.h similarity index 67% rename from main/displays/setup/ask_setup_clouds.h rename to main/screens/setup/ask_setup_clouds.h index 0a80598..dc6b5c4 100644 --- a/main/displays/setup/ask_setup_clouds.h +++ b/main/screens/setup/ask_setup_clouds.h @@ -1,16 +1,19 @@ #pragma once // local includes -#include "displays/bobbydisplaywithtitle.h" +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { class SetupAskSetupCloudsDisplay : public virtual BobbyDisplayWithTitle { using Base = BobbyDisplayWithTitle; public: - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void start() override; void buttonPressed(espgui::Button button) override; [[nodiscard]] std::string text() const override; }; +} // namespace bobby diff --git a/main/displays/setup/basic_buttons.cpp b/main/screens/setup/basic_buttons.cpp similarity index 74% rename from main/displays/setup/basic_buttons.cpp rename to main/screens/setup/basic_buttons.cpp index 5c47178..187d0a1 100644 --- a/main/displays/setup/basic_buttons.cpp +++ b/main/screens/setup/basic_buttons.cpp @@ -5,25 +5,28 @@ // 3rdparty lib includes #include -#include +#include +#include // local includes -#include "bobbyerrorhandler.h" -#include "displays/setup/calibrate_potis.h" +#include "guihelpers/bobbyerrorhandler.h" +#include "screens/setup/calibrate_potis.h" #include "setup.h" #include "utils.h" +namespace bobby { + namespace { constexpr char const buttonText[] = "Please press the highlighted\n buttons!"; constexpr const char * const TAG = "SETUP-BUTTONS"; } -void SetupBasicButtonsDisplay::initScreen() +void SetupBasicButtonsDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - drawLargeText(buttonText); - drawButtons(m_button_cal_status); + drawLargeText(tft, buttonText); + drawButtons(tft, m_button_cal_status); } void SetupBasicButtonsDisplay::start() @@ -58,11 +61,6 @@ void SetupBasicButtonsDisplay::update() Base::update(); } -void SetupBasicButtonsDisplay::redraw() -{ - Base::redraw(); -} - void SetupBasicButtonsDisplay::rawButtonPressed(uint8_t button) { if (m_button_cal_status == FINISHED) @@ -102,7 +100,7 @@ void SetupBasicButtonsDisplay::rawButtonPressed(uint8_t button) } } - drawButtons(m_button_cal_status); + m_button_rerender_needed = true; Base::rawButtonPressed(button); } @@ -168,7 +166,16 @@ void SetupBasicButtonsDisplay::saveButtons() const } } -void SetupBasicButtonsDisplay::drawButtons(const SetupBasicButtonsDisplay::CurrentButton button) +void SetupBasicButtonsDisplay::redraw(espgui::TftInterface &tft) +{ + if (m_button_rerender_needed) + { + m_button_rerender_needed = false; + drawButtons(tft, m_button_cal_status); + } +} + +void SetupBasicButtonsDisplay::drawButtons(espgui::TftInterface &tft, const SetupBasicButtonsDisplay::CurrentButton button) { using namespace espgui; @@ -191,15 +198,15 @@ void SetupBasicButtonsDisplay::drawButtons(const SetupBasicButtonsDisplay::Curre const auto right_x = x_mid + offset; const auto right_y = y_mid; - tft.fillCircle(up_x, up_y, radius-subtract, TFT_BLACK); - tft.fillCircle(down_x, down_y, radius-subtract, TFT_BLACK); - tft.fillCircle(left_x, left_y, radius-subtract, TFT_BLACK); - tft.fillCircle(right_x, right_y, radius-subtract, TFT_BLACK); + tft.fillCircle(up_x, up_y, radius-subtract, espgui::TFT_BLACK); + tft.fillCircle(down_x, down_y, radius-subtract, espgui::TFT_BLACK); + tft.fillCircle(left_x, left_y, radius-subtract, espgui::TFT_BLACK); + tft.fillCircle(right_x, right_y, radius-subtract, espgui::TFT_BLACK); - tft.drawCircle(up_x, up_y, radius, TFT_WHITE); - tft.drawCircle(down_x, down_y, radius, TFT_WHITE); - tft.drawCircle(left_x, left_y, radius, TFT_WHITE); - tft.drawCircle(right_x, right_y, radius, TFT_WHITE); + tft.drawCircle(up_x, up_y, radius, espgui::TFT_WHITE); + tft.drawCircle(down_x, down_y, radius, espgui::TFT_WHITE); + tft.drawCircle(left_x, left_y, radius, espgui::TFT_WHITE); + tft.drawCircle(right_x, right_y, radius, espgui::TFT_WHITE); if (m_button_cal_finished) { @@ -209,22 +216,23 @@ void SetupBasicButtonsDisplay::drawButtons(const SetupBasicButtonsDisplay::Curre switch(button) { case UP: - tft.fillCircle(up_x, up_y, radius-subtract, m_lastButton ? TFT_YELLOW : TFT_WHITE); + tft.fillCircle(up_x, up_y, radius-subtract, m_lastButton ? espgui::TFT_YELLOW : espgui::TFT_WHITE); break; case DOWN: - tft.fillCircle(down_x, down_y, radius-subtract, m_lastButton ? TFT_YELLOW : TFT_WHITE); + tft.fillCircle(down_x, down_y, radius-subtract, m_lastButton ? espgui::TFT_YELLOW : espgui::TFT_WHITE); break; case LEFT: - tft.fillCircle(left_x, left_y, radius-subtract, m_lastButton ? TFT_YELLOW : TFT_WHITE); + tft.fillCircle(left_x, left_y, radius-subtract, m_lastButton ? espgui::TFT_YELLOW : espgui::TFT_WHITE); break; case RIGHT: - tft.fillCircle(right_x, right_y, radius-subtract, m_lastButton ? TFT_YELLOW : TFT_WHITE); + tft.fillCircle(right_x, right_y, radius-subtract, m_lastButton ? espgui::TFT_YELLOW : espgui::TFT_WHITE); break; default:; } if (m_button_cal_status == FINISHED) { - tft.fillCircle(right_x, right_y, radius-subtract, TFT_GREEN); + tft.fillCircle(right_x, right_y, radius-subtract, espgui::TFT_GREEN); } } +} // namespace bobby diff --git a/main/displays/setup/basic_buttons.h b/main/screens/setup/basic_buttons.h similarity index 74% rename from main/displays/setup/basic_buttons.h rename to main/screens/setup/basic_buttons.h index 88853fa..c086ff7 100644 --- a/main/displays/setup/basic_buttons.h +++ b/main/screens/setup/basic_buttons.h @@ -3,8 +3,13 @@ // system includes #include +// 3rdparty lib includes +#include + // local includes -#include "displays/bobbydisplaywithtitle.h" +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { class SetupBasicButtonsDisplay : public virtual BobbyDisplayWithTitle { @@ -23,10 +28,10 @@ public: m_early_return{early_return} {} - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void start() override; void update() override; - void redraw() override; + void redraw(espgui::TftInterface &tft) override; void rawButtonPressed(uint8_t button) override; void rawButtonReleased(uint8_t button) override; @@ -45,7 +50,10 @@ private: bool m_button_cal_finished; + bool m_button_rerender_needed; + void saveButtons() const; - void drawButtons(CurrentButton button); + void drawButtons(espgui::TftInterface &tft, CurrentButton button); }; +} // namespace bobby diff --git a/main/displays/setup/calibrate_potis.cpp b/main/screens/setup/calibrate_potis.cpp similarity index 74% rename from main/displays/setup/calibrate_potis.cpp rename to main/screens/setup/calibrate_potis.cpp index 435e3ea..c133c6e 100644 --- a/main/displays/setup/calibrate_potis.cpp +++ b/main/screens/setup/calibrate_potis.cpp @@ -3,30 +3,30 @@ // 3rdparty lib includes #include #include -#include +#include +#include // local includes -#include "displays/setup/ask_setup_clouds.h" +#include "screens/setup/ask_setup_clouds.h" #include "globals.h" #include "setup.h" +namespace bobby { + using namespace espgui; -void SetupCalibratePotisDisplay::initScreen() +void SetupCalibratePotisDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - tft.setTextFont(4); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - - tft.drawString("gas:", 25, 47); - tft.drawString("brems:", 25, 147); + tft.drawString("gas:", 25, 47, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + tft.drawString("brems:", 25, 147, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); for (auto &label : m_labels) - label.start(); + label.start(tft); for (auto &progressBar : m_progressBars) - progressBar.start(); + progressBar.start(tft); m_renderedButton = -1; } @@ -58,41 +58,27 @@ void SetupCalibratePotisDisplay::update() m_brems = std::nullopt; } -void SetupCalibratePotisDisplay::redraw() +void SetupCalibratePotisDisplay::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); - m_labels[0].redraw(m_gas ? fmt::format("{:.02f}", *m_gas) : "?"); - m_labels[1].redraw(raw_gas ? std::to_string(*raw_gas) : "?"); - if (m_status == Status::GasMin) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[2].redraw(std::to_string(m_gasMin)); - if (m_status == Status::GasMin) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - if (m_status == Status::GasMax) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[3].redraw(std::to_string(m_gasMax)); - if (m_status == Status::GasMax) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); + m_labels[0].redraw(tft, m_gas ? fmt::format("{:.02f}", *m_gas) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labels[1].redraw(tft, raw_gas ? std::to_string(*raw_gas) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 4); - m_progressBars[0].redraw(m_gas ? *m_gas : 0); + m_labels[2].redraw(tft, std::to_string(m_gasMin), (m_status == Status::GasMin) ? espgui::TFT_RED : espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labels[3].redraw(tft, std::to_string(m_gasMax), (m_status == Status::GasMax) ? espgui::TFT_RED : espgui::TFT_WHITE, espgui::TFT_BLACK, 4); - m_labels[4].redraw(m_brems ? fmt::format("{:.02f}", *m_brems) : "?"); - m_labels[5].redraw(raw_brems ? std::to_string(*raw_brems) : "?"); - if (m_status == Status::BremsMin) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[6].redraw(std::to_string(m_bremsMin)); - if (m_status == Status::BremsMin) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - if (m_status == Status::BremsMax) - espgui::tft.setTextColor(TFT_RED, TFT_BLACK); - m_labels[7].redraw(std::to_string(m_bremsMax)); - if (m_status == Status::BremsMax) - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); + m_progressBars[0].redraw(tft, m_gas ? *m_gas : 0); - m_progressBars[1].redraw(m_brems ? *m_brems : 0); + m_labels[4].redraw(tft, m_brems ? fmt::format("{:.02f}", *m_brems) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labels[5].redraw(tft, raw_brems ? std::to_string(*raw_brems) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 4); - m_labels[8].redraw([&](){ + m_labels[6].redraw(tft, std::to_string(m_bremsMin), (m_status == Status::BremsMin) ? espgui::TFT_RED : espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labels[7].redraw(tft, std::to_string(m_bremsMax), (m_status == Status::BremsMax) ? espgui::TFT_RED : espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + m_progressBars[1].redraw(tft, m_brems ? *m_brems : 0); + + m_labels[8].redraw(tft, [&](){ switch (m_status) { case Status::Begin: return "Start calibrating?"; @@ -106,13 +92,12 @@ void SetupCalibratePotisDisplay::redraw() case Status::Confirm: return "Verify"; } __builtin_unreachable(); - }()); + }(), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); { const auto failed = !m_gas || !m_brems || (m_status == Status::Confirm && (*m_gas > 100 || *m_brems > 100)); - const auto color = failed ? TFT_DARKGREY : TFT_WHITE; - espgui::tft.setTextColor(color, TFT_BLACK); - m_labels[9].redraw([&](){ + const auto color = failed ? espgui::TFT_DARKGREY : espgui::TFT_WHITE; + m_labels[9].redraw(tft, [&](){ switch (m_status) { case Status::Begin: return "Yes"; @@ -126,14 +111,13 @@ void SetupCalibratePotisDisplay::redraw() case Status::Confirm: return "Save"; } __builtin_unreachable(); - }()); + }(), color, espgui::TFT_BLACK, 4); if (m_selectedButton != m_renderedButton && (m_selectedButton == 0 || m_renderedButton == 0)) - espgui::tft.drawRect(3, 275, 100, 27, m_selectedButton == 0 ? color : TFT_BLACK); + tft.drawRect(3, 275, 100, 27, m_selectedButton == 0 ? color : espgui::TFT_BLACK); } - espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK); - m_labels[10].redraw([&](){ + m_labels[10].redraw(tft, [&](){ switch (m_status) { case Status::Begin: return "No"; @@ -147,10 +131,10 @@ void SetupCalibratePotisDisplay::redraw() case Status::Confirm: return "Abort"; } __builtin_unreachable(); - }()); + }(), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); if (m_selectedButton != m_renderedButton && (m_selectedButton == 1 || m_renderedButton == 1)) - espgui::tft.drawRect(123, 275, 100, 27, m_selectedButton == 1 ? TFT_WHITE : TFT_BLACK); + tft.drawRect(123, 275, 100, 27, m_selectedButton == 1 ? espgui::TFT_WHITE : espgui::TFT_BLACK); m_renderedButton = m_selectedButton; } @@ -307,3 +291,4 @@ void SetupCalibratePotisDisplay::copyToSettings() const configs.write_config(configs.bremsMin, m_bremsMin); configs.write_config(configs.bremsMax, m_bremsMax); } +} // namespace bobby diff --git a/main/displays/setup/calibrate_potis.h b/main/screens/setup/calibrate_potis.h similarity index 89% rename from main/displays/setup/calibrate_potis.h rename to main/screens/setup/calibrate_potis.h index 059238e..6c039f4 100644 --- a/main/displays/setup/calibrate_potis.h +++ b/main/screens/setup/calibrate_potis.h @@ -5,11 +5,14 @@ #include // 3rdparty lib includes +#include #include #include // local includes -#include "displays/bobbydisplaywithtitle.h" +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { class SetupCalibratePotisDisplay : public virtual BobbyDisplayWithTitle { @@ -19,10 +22,10 @@ public: m_early_return{early_return} {} - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void start() override; void update() override; - void redraw() override; + void redraw(espgui::TftInterface &tft) override; void stop() override; void buttonPressed(espgui::Button button) override; @@ -84,3 +87,4 @@ private: ; std::optional m_gas, m_brems; }; +} // namespace bobby diff --git a/main/displays/setup/final_information.cpp b/main/screens/setup/final_information.cpp similarity index 79% rename from main/displays/setup/final_information.cpp rename to main/screens/setup/final_information.cpp index d934f09..98990ba 100644 --- a/main/displays/setup/final_information.cpp +++ b/main/screens/setup/final_information.cpp @@ -4,23 +4,25 @@ #include // local includes -#include "displays/menus/extrabuttoncalibratemenu.h" -#include "displays/statusdisplay.h" +#include "screens/extrabuttoncalibratemenu.h" +#include "screens/statusdisplay.h" #include "newsettings.h" #include "setup.h" #include "utils.h" +namespace bobby { + using namespace std::chrono_literals; namespace { constexpr char const finalInformationText[] = "Setup is done!\nIf cloud is setup, go to\nhttps://service.bobbycar.cloud/\nand register this bobbycar!\nThis is also used\nto setup udp cloud.\nPress any button to exit."; } // namespace -void SetupFinalInformationDisplay::initScreen() +void SetupFinalInformationDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - drawLargeText(finalInformationText); + drawLargeText(tft, finalInformationText); } void SetupFinalInformationDisplay::start() @@ -56,3 +58,4 @@ std::string SetupFinalInformationDisplay::text() const { return "All done!"; } +} // namespace bobby diff --git a/main/displays/setup/final_information.h b/main/screens/setup/final_information.h similarity index 72% rename from main/displays/setup/final_information.h rename to main/screens/setup/final_information.h index a56303a..d5003d0 100644 --- a/main/displays/setup/final_information.h +++ b/main/screens/setup/final_information.h @@ -4,13 +4,15 @@ #include // local includes -#include "displays/bobbydisplaywithtitle.h" +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { class SetupFinalInformationDisplay : public virtual BobbyDisplayWithTitle { using Base = BobbyDisplayWithTitle; public: - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void start() override; void stop() override; @@ -18,3 +20,4 @@ public: [[nodiscard]] std::string text() const override; }; +} // namespace bobby diff --git a/main/displays/setup/information.cpp b/main/screens/setup/information.cpp similarity index 65% rename from main/displays/setup/information.cpp rename to main/screens/setup/information.cpp index 53fec57..c5b5c04 100644 --- a/main/displays/setup/information.cpp +++ b/main/screens/setup/information.cpp @@ -2,25 +2,30 @@ // 3rdparty lib includes #include +#include // local includes -#include "displays/setup/basic_buttons.h" +#include "screens/setup/basic_buttons.h" #include "setup.h" #include "utils.h" +namespace bobby { + using namespace std::chrono_literals; namespace { constexpr char const informationText[] = "Congratulations on your new\nbobbycar! This guide will help\nyou through initial setup,\ncalibrate everything and\nget you ready!"; } // namespace -void SetupInformationDisplay::initScreen() +void SetupInformationDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); - m_init_text_progressbar.start(); + m_init_text_progressbar.construct(10, tft.height()/2, tft.width()-20, 30, 0, 100); - drawLargeText(informationText); + m_init_text_progressbar->start(tft); + + drawLargeText(tft, informationText); } void SetupInformationDisplay::start() @@ -34,19 +39,19 @@ void SetupInformationDisplay::start() void SetupInformationDisplay::update() { + Base::update(); + if (espchrono::ago(m_menu_opened_timestamp) > 5s) { espgui::switchScreen(); } - - Base::update(); } -void SetupInformationDisplay::redraw() +void SetupInformationDisplay::redraw(espgui::TftInterface &tft) { - m_init_text_progressbar.redraw(espchrono::ago(m_menu_opened_timestamp) / 50ms); + Base::redraw(tft); - Base::redraw(); + m_init_text_progressbar->redraw(tft, espchrono::ago(m_menu_opened_timestamp) / 50ms); } void SetupInformationDisplay::buttonPressed(espgui::Button button) @@ -61,4 +66,4 @@ void SetupInformationDisplay::buttonPressed(espgui::Button button) { return "First Steps"; } - +} // namespace bobby diff --git a/main/displays/setup/information.h b/main/screens/setup/information.h similarity index 58% rename from main/displays/setup/information.h rename to main/screens/setup/information.h index fe7e09f..7c6f0e4 100644 --- a/main/displays/setup/information.h +++ b/main/screens/setup/information.h @@ -1,26 +1,30 @@ #pragma once // 3rdparty lib includes +#include #include -#include +#include #include // local includes -#include "displays/bobbydisplaywithtitle.h" +#include "guihelpers/bobbydisplaywithtitle.h" + +namespace bobby { class SetupInformationDisplay : public virtual BobbyDisplayWithTitle { using Base = BobbyDisplayWithTitle; public: - void initScreen() override; + void initScreen(espgui::TftInterface &tft) override; void start() override; void update() override; - void redraw() override; + void redraw(espgui::TftInterface &tft) override; void buttonPressed(espgui::Button button) override; [[nodiscard]] std::string text() const override; private: espchrono::millis_clock::time_point m_menu_opened_timestamp; - espgui::ProgressBar m_init_text_progressbar{10, espgui::tft.height()/2, espgui::tft.width()-20, 30, 0, 100}; + cpputils::DelayedConstruction m_init_text_progressbar; }; +} // namespace bobby diff --git a/main/displays/setup/setup_cloud.cpp b/main/screens/setup/setup_cloud.cpp similarity index 94% rename from main/displays/setup/setup_cloud.cpp rename to main/screens/setup/setup_cloud.cpp index e7885d3..c121bc2 100644 --- a/main/displays/setup/setup_cloud.cpp +++ b/main/screens/setup/setup_cloud.cpp @@ -7,11 +7,13 @@ // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" -#include "displays/bobbychangevaluedisplay.h" -#include "displays/setup/ask_calibrate_other_buttons.h" +#include "guihelpers/bobbycheckbox.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/setup/ask_calibrate_other_buttons.h" #include "setup.h" +namespace bobby { + using namespace espgui; namespace { @@ -100,4 +102,4 @@ std::string SetupCloudDisplay::text() const { return "WebSocket Cloud"; } - +} // namespace bobby diff --git a/main/displays/setup/setup_cloud.h b/main/screens/setup/setup_cloud.h similarity index 82% rename from main/displays/setup/setup_cloud.h rename to main/screens/setup/setup_cloud.h index 3db4996..166f480 100644 --- a/main/displays/setup/setup_cloud.h +++ b/main/screens/setup/setup_cloud.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class SetupCloudDisplay : public virtual BobbyMenuDisplay { @@ -18,3 +20,4 @@ public: private: const bool m_early_return; }; +} // namespace bobby diff --git a/main/displays/menus/setupquickactionsmenu.cpp b/main/screens/setupquickactionsmenu.cpp similarity index 94% rename from main/displays/menus/setupquickactionsmenu.cpp rename to main/screens/setupquickactionsmenu.cpp index ebf0e2f..b02cf22 100644 --- a/main/displays/menus/setupquickactionsmenu.cpp +++ b/main/screens/setupquickactionsmenu.cpp @@ -1,16 +1,18 @@ #include "setupquickactionsmenu.h" // 3rdparty lib includes +#include +#include +#include #include // local includes #include "accessors/settingsaccessors.h" -#include "actions/popscreenaction.h" -#include "actions/pushscreenaction.h" #include "bobbyquickactions.h" #include "changevaluedisplay_bobbyquickactions.h" -#include "displays/bobbychangevaluedisplay.h" -#include "icons/back.h" +#include "guihelpers/bobbychangevaluedisplay.h" + +namespace bobby { namespace { constexpr char TEXT_SETUPQUICKACTIONS[] = "Setup QuickActions"; @@ -58,3 +60,4 @@ void SetupQuickActionsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/setupquickactionsmenu.h b/main/screens/setupquickactionsmenu.h similarity index 70% rename from main/displays/menus/setupquickactionsmenu.h rename to main/screens/setupquickactionsmenu.h index 6f12331..a1e4b4b 100644 --- a/main/displays/menus/setupquickactionsmenu.h +++ b/main/screens/setupquickactionsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class SetupQuickActionsMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/screens/speedinfodisplay.cpp b/main/screens/speedinfodisplay.cpp new file mode 100644 index 0000000..78bc2bb --- /dev/null +++ b/main/screens/speedinfodisplay.cpp @@ -0,0 +1,97 @@ +#include "speedinfodisplay.h" + +// 3rdparty lib includes +#include +#include +#include +#include + +// local includes +#include "screens/batteryinfodisplay.h" +#include "screens/mainmenu.h" +#include "screens/statusdisplay.h" +#include "drivingstatistics.h" + +namespace bobby { +void SpeedInfoDisplay::initScreen(espgui::TftInterface &tft) +{ + Base::initScreen(tft); + + m_dischargingBar.construct(10, 110, tft.width()/2 - 10, 25, 0, 40, TFT_GREEN); + m_chargingBar.construct(tft.width()/2, 110, tft.width()/2 - 10, 25, 0, 40, TFT_RED); + + m_labelSpeed.start(tft); + + m_dischargingBar->start(tft); + m_chargingBar->start(tft); + + m_batteryPercentLabel.start(tft); + m_voltageLabel.start(tft); + m_distanceLabel.start(tft); + m_currentPowerLabel.start(tft); +} + +void SpeedInfoDisplay::redraw(espgui::TftInterface &tft) +{ + using namespace espgui; + + Base::redraw(tft); + + tft.setTextSize(4); + + m_labelSpeed.redraw(tft, + std::abs(avgSpeedKmh) < 10 ? fmt::format("{:.2f}", avgSpeedKmh) : + (std::abs(avgSpeedKmh) < 100 ? fmt::format("{:.1f}", avgSpeedKmh) : fmt::format("{:.0f}", avgSpeedKmh)), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + tft.setTextSize(1); + m_batteryPercentLabel.redraw(tft, getBatteryPercentageString(), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + if (const auto avgVoltage = controllers.getAvgVoltage(); avgVoltage) + { + auto watt = sumCurrent * *avgVoltage; + + m_voltageLabel.redraw(tft, fmt::format("{:.1f} V", avgVoltage.value()), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + tft.setTextSize(2); + m_currentPowerLabel.redraw(tft, fmt::format("{:.0f} W", watt), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + tft.setTextSize(1); + } + else + { + m_voltageLabel.redraw(tft, "No voltage", espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_currentPowerLabel.redraw(tft, "No power", espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + } + + m_distanceLabel.redraw(tft, + drivingStatistics.meters_driven > 1000 ? fmt::format("{:.3f} km", drivingStatistics.meters_driven / 1000) : + (drivingStatistics.meters_driven > 100 ? fmt::format("{:.1f} m", drivingStatistics.meters_driven) : fmt::format("{:.2f} m", drivingStatistics.meters_driven)), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + tft.setTextSize(1); + + m_dischargingBar->redraw(tft, sumCurrent < 0.f ? (-sumCurrent) : 0.f); + m_chargingBar->redraw(tft, sumCurrent > 0.f ? sumCurrent : 0.f); +} + +void SpeedInfoDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Right: + espgui::pushScreen(); + break; + case Button::Up: + espgui::switchScreen(); + break; + case Button::Down: +#ifdef FEATURE_BMS + espgui::switchScreen(); +#else + espgui::switchScreen(); +#endif + break; + default:; + } +} +} // namespace bobby diff --git a/main/displays/speedinfodisplay.h b/main/screens/speedinfodisplay.h similarity index 60% rename from main/displays/speedinfodisplay.h rename to main/screens/speedinfodisplay.h index 7881b52..a5cc1c5 100644 --- a/main/displays/speedinfodisplay.h +++ b/main/screens/speedinfodisplay.h @@ -1,28 +1,31 @@ #pragma once // 3rdparty lib includes -#include +#include +#include #include #include #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class SpeedInfoDisplay : public BobbyDisplay { using Base = BobbyDisplay; public: - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void buttonPressed(espgui::Button button) override; private: espgui::Label m_labelSpeed{5, 5}; - espgui::ReverseProgressBar m_dischargingBar{10, 110, espgui::tft.width()/2 - 10, 25, 0, 40, TFT_GREEN}; - espgui::ProgressBar m_chargingBar{espgui::tft.width()/2, 110, espgui::tft.width()/2 - 10, 25, 0, 40, TFT_RED}; + cpputils::DelayedConstruction m_dischargingBar; + cpputils::DelayedConstruction m_chargingBar; #define START_Y 150 espgui::Label m_batteryPercentLabel{5, START_Y}; @@ -30,3 +33,4 @@ private: espgui::Label m_distanceLabel{5, START_Y + 29 * 2}; espgui::Label m_currentPowerLabel{5, START_Y + 29 * 3}; }; +} // namespace bobby diff --git a/main/displays/spirodisplay.cpp b/main/screens/spirodisplay.cpp similarity index 84% rename from main/displays/spirodisplay.cpp rename to main/screens/spirodisplay.cpp index eed469e..837979f 100644 --- a/main/displays/spirodisplay.cpp +++ b/main/screens/spirodisplay.cpp @@ -5,32 +5,35 @@ #include #include #include -#include +#include +#include // local includes #include "screens.h" +namespace bobby { + namespace { typedef unsigned char byte; } // namespace -void SpiroDisplay::initScreen() +void SpiroDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); disableScreenFlip(true); - espgui::tft.setRotation(3); + tft.setRotation(3); } -void SpiroDisplay::redraw() +void SpiroDisplay::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); for (int j = 0; j < std::max(1, n); j++) { if (i == 0) { - espgui::tft.fillScreen(TFT_BLACK); + tft.fillScreen(espgui::TFT_BLACK); n = cpputils::randomNumber(2, 23, espcpputils::esp_random_device{}); r = cpputils::randomNumber(20, 100, espcpputils::esp_random_device{}); colour = 0; //rainbow(); @@ -48,7 +51,7 @@ void SpiroDisplay::redraw() sx = std::sin(((i % 360) - 90) * DEG2RAD); x1 = sx * r + x0; yy1 = sy * r + yy0; - espgui::tft.drawPixel(x1, yy1, rainbow(cpputils::mapValue(i%360,0,360,0,127))); //colour); + tft.drawPixel(x1, yy1, rainbow(cpputils::mapValue(i%360,0,360,0,127))); //colour); } if (i == (360 * n)) @@ -70,7 +73,7 @@ void SpiroDisplay::redraw() sx = std::sin(((new_i % 360) - 90) * DEG2RAD); x1 = sx * r + x0; yy1 = sy * r + yy0; - espgui::tft.drawPixel(x1, yy1, rainbow(cpputils::mapValue(new_i%360,0,360,0,127))); //colour); + tft.drawPixel(x1, yy1, rainbow(cpputils::mapValue(new_i%360,0,360,0,127))); //colour); } i++; @@ -133,3 +136,4 @@ unsigned int SpiroDisplay::rainbow(int value) } return (red << 11) + (green << 5) + blue; } +} // namespace bobby diff --git a/main/displays/spirodisplay.h b/main/screens/spirodisplay.h similarity index 71% rename from main/displays/spirodisplay.h rename to main/screens/spirodisplay.h index 4974500..9db07d4 100644 --- a/main/displays/spirodisplay.h +++ b/main/screens/spirodisplay.h @@ -4,15 +4,17 @@ #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class SpiroDisplay : public BobbyDisplay { using Base = BobbyDisplay; public: - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void stop() override; void buttonPressed(espgui::Button button) override; @@ -28,3 +30,4 @@ private: long i{0}; int n{}, r{}, colour{}; }; +} // namespace bobby diff --git a/main/displays/starfielddisplay.cpp b/main/screens/starfielddisplay.cpp similarity index 82% rename from main/displays/starfielddisplay.cpp rename to main/screens/starfielddisplay.cpp index 5495805..1b6c213 100644 --- a/main/displays/starfielddisplay.cpp +++ b/main/screens/starfielddisplay.cpp @@ -1,16 +1,19 @@ #include "starfielddisplay.h" // 3rdparty lib includes -#include #include -#include +#include #include +#include +#include // local includes -#include "displays/menus/demosmenu.h" +#include "screens/demosmenu.h" #include "globals.h" #include "screens.h" +namespace bobby { + StarfieldDisplay::StarfieldDisplay() : za(cpputils::randomNumber(espcpputils::esp_random_device{})), zb(cpputils::randomNumber(espcpputils::esp_random_device{})), @@ -19,14 +22,14 @@ StarfieldDisplay::StarfieldDisplay() : { } -void StarfieldDisplay::initScreen() +void StarfieldDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); + Base::initScreen(tft); disableScreenFlip(true); - espgui::tft.fillScreen(TFT_BLACK); - espgui::tft.setRotation(1); + tft.fillScreen(espgui::TFT_BLACK); + tft.setRotation(1); // fastSetup() must be used immediately before fastPixel() to prepare screen // It must be called after any other graphics drawing function call if fastPixel() @@ -34,9 +37,9 @@ void StarfieldDisplay::initScreen() //tft.fastSetup(); // Prepare plot window range for fast pixel plotting } -void StarfieldDisplay::redraw() +void StarfieldDisplay::redraw(espgui::TftInterface &tft) { - Base::redraw(); + Base::redraw(tft); uint8_t spawnDepthVariation = 255; @@ -54,7 +57,7 @@ void StarfieldDisplay::redraw() int old_screen_y = ((int)sy[i] - 120) * 256 / sz[i] + 120; // This is a faster pixel drawing function for occassions where many single pixels must be drawn - espgui::tft.drawPixel(old_screen_x, old_screen_y,TFT_BLACK); + tft.drawPixel(old_screen_x, old_screen_y,TFT_BLACK); sz[i] -= 2; if (sz[i] > 1) @@ -66,7 +69,7 @@ void StarfieldDisplay::redraw() { uint8_t r, g, b; r = g = b = 255 - sz[i]; - espgui::tft.drawPixel(screen_x, screen_y, color565(r,g,b)); + tft.drawPixel(screen_x, screen_y, color565(r,g,b)); } else sz[i] = 0; // Out of screen, die. @@ -94,3 +97,5 @@ void StarfieldDisplay::buttonPressed(espgui::Button button) default:; } } + +} // namespace bobby diff --git a/main/displays/starfielddisplay.h b/main/screens/starfielddisplay.h similarity index 64% rename from main/displays/starfielddisplay.h rename to main/screens/starfielddisplay.h index b0ddf11..563e582 100644 --- a/main/displays/starfielddisplay.h +++ b/main/screens/starfielddisplay.h @@ -3,8 +3,13 @@ // system includes #include +// 3rdparty lib includes +#include + // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class StarfieldDisplay : public BobbyDisplay { @@ -13,8 +18,8 @@ class StarfieldDisplay : public BobbyDisplay public: StarfieldDisplay(); - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void stop() override; void buttonPressed(espgui::Button button) override; @@ -28,3 +33,5 @@ private: uint8_t za, zb, zc, zx; }; + +} // namespace bobby diff --git a/main/displays/menus/statisticsmenu.cpp b/main/screens/statisticsmenu.cpp similarity index 97% rename from main/displays/menus/statisticsmenu.cpp rename to main/screens/statisticsmenu.cpp index f7f651d..a92b2a4 100644 --- a/main/displays/menus/statisticsmenu.cpp +++ b/main/screens/statisticsmenu.cpp @@ -1,19 +1,21 @@ #include "statisticsmenu.h" // 3rdparty lib includes +#include +#include +#include +#include +#include #include -#include "actions/dummyaction.h" -#include "actions/popscreenaction.h" -#include "actioninterface.h" -#include "fmt/core.h" -#include "icons/back.h" // local includes -#include "utils.h" -#include "icons/time.h" -#include "icons/reboot.h" -#include "icons/update.h" #include "drivingstatistics.h" +#include "icons/reboot.h" +#include "icons/time.h" +#include "icons/update.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_STATISTICSMENU[] = "Statistics"; @@ -198,3 +200,4 @@ void StatisticsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/screens/statisticsmenu.h b/main/screens/statisticsmenu.h new file mode 100644 index 0000000..6284e39 --- /dev/null +++ b/main/screens/statisticsmenu.h @@ -0,0 +1,17 @@ +#pragma once + +// Local includes +#include "guihelpers/menudisplaywithtime.h" + +namespace bobby { + +class StatisticsMenu : public bobby::MenuDisplayWithTime +{ +public: + StatisticsMenu(); + + std::string text() const override; + + void back() override; +}; +} // namespace bobby diff --git a/main/screens/statusdisplay.cpp b/main/screens/statusdisplay.cpp new file mode 100644 index 0000000..6bc6b4e --- /dev/null +++ b/main/screens/statusdisplay.cpp @@ -0,0 +1,319 @@ +#include "statusdisplay.h" + +// esp-idf includes +#include + +// 3rdparty lib includes +#include +#include +#include +#include + +// local includes +#include "screens/batteryinfodisplay.h" +#include "screens/speedinfodisplay.h" +#ifdef FEATURE_BMS +#include "screens/bmsdisplay.h" +#endif +#include "screens/mainmenu.h" +#include "screens/metersdisplay.h" +#include "drivingstatistics.h" +#include "modes/defaultmode.h" +#include "newsettings.h" +#include "taskmanager.h" +#include "udpcloud.h" + +namespace bobby { + +using namespace std::chrono_literals; +using namespace espgui; + +namespace { +constexpr const char * const TAG = "STATUS"; +} // namespace + +void StatusDisplay::initScreen(espgui::TftInterface &tft) +{ + Base::initScreen(tft); + + tft.drawString("gas", 0, 0, espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelRawGas.start(tft); + m_labelGas.start(tft); + m_progressBarGas.start(tft); + tft.drawString("brems", 0, 15, espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelRawBrems.start(tft); + m_labelBrems.start(tft); + m_progressBarBrems.start(tft); + + m_batterypercent.start(tft); + m_watthoursleft.start(tft); + m_kilometersleft.start(tft); + + m_frontStatus.start(tft); + m_backStatus.start(tft); + + tft.drawString("WiFi:", 0, bottomLines[0], espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelWifiStatus.start(tft); + tft.drawString("Lim0:", 173, bottomLines[0], espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelLimit0.start(tft); + tft.drawString("IP:", 0, bottomLines[1], espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelIpAddress.start(tft); + m_labelSignal.start(tft); + tft.drawString("Lim1:", 173, bottomLines[1], espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelLimit1.start(tft); + tft.drawString("Perf:", 0, bottomLines[2], espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelPerformance.start(tft); + m_labelFreeMem.start(tft); + tft.drawString("Mode:", 125, bottomLines[2], espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelMode.start(tft); + tft.drawString("Name:", 0, bottomLines[3], espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelName.start(tft); + m_labelProfile.start(tft); +} + +void StatusDisplay::redraw(espgui::TftInterface &tft) +{ + Base::redraw(tft); + + { + const auto now = espchrono::millis_clock::now(); + if (now - lastRedraw < 50ms) + return; + lastRedraw = now; + } + + { + static bool handbremse_fill_with_black; + if (configs.handbremse.enable.value() && configs.handbremse.visualize.value() && handbremse::angezogen) + { + tft.fillRect(0, tft.height()-6, tft.width(), 6, espgui::TFT_RED); + handbremse_fill_with_black = true; + } + else if (configs.handbremse.enable.value() && configs.handbremse.visualize.value() && handbremse::stateWish == handbremse::StateWish::brake) + { + tft.fillRect(0, tft.height()-6, tft.width(), 6, espgui::TFT_YELLOW); + handbremse_fill_with_black = true; + } + else if (handbremse_fill_with_black) + { + handbremse_fill_with_black = false; + tft.fillRect(0, tft.height()-6, tft.width(), 6, espgui::TFT_BLACK); + } + } + + if(configs.feature.ledstrip.isEnabled.value()) + { + static bool blink_fill_with_black; + if (configs.ledstrip.enableVisualizeBlink.value() && (espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) && (blinkAnimation > 0)) + { + if (BLINK_LEFT_EXPR) + tft.fillRect(0, 0, tft.width() / 2, 6, espgui::TFT_YELLOW); + if (BLINK_RIGHT_EXPR) + tft.fillRect(tft.width() / 2, 0, tft.width() / 2, 6, espgui::TFT_YELLOW); + + blink_fill_with_black = true; + } + else if (blink_fill_with_black) + { + blink_fill_with_black = false; + tft.fillRect(0, 0, tft.width(), 6, espgui::TFT_BLACK); + tft.drawString("gas", 0, 0, espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelRawGas.start(tft); + m_labelGas.start(tft); + m_progressBarGas.start(tft); + } + } + + m_labelRawGas.redraw(tft, raw_gas ? std::to_string(*raw_gas) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelGas.redraw(tft, gas ? fmt::format("{:.2f}", *gas) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_progressBarGas.redraw(tft, gas ? *gas : 0); + m_labelRawBrems.redraw(tft, raw_brems ? std::to_string(*raw_brems) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelBrems.redraw(tft, brems ? fmt::format("{:.2f}", *brems) : "?", espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_progressBarBrems.redraw(tft, brems ? *brems : 0); + + m_batterypercent.redraw(tft, getBatteryPercentageString(), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_watthoursleft.redraw(tft, getBatteryRemainingWattHoursString(), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_kilometersleft.redraw(tft, getRemainingRangeString(), getEfficiencyClassColor(), espgui::TFT_BLACK, 2); + + m_frontStatus.redraw(tft, controllers.front); + m_backStatus.redraw(tft, controllers.back); + + if (configs.feature.udpcloud.isEnabled.value()) + { + if(configs.udpCloudSettings.udpCloudEnabled.value() && configs.udpCloudSettings.enableCloudDebug.value()) + { + tft.fillRect(125, 258, 8, 8, (visualSendUdpPacket) ? espgui::TFT_DARKGREY : espgui::TFT_BLACK); + } +// else // is not needed because of redraw +// { +// tft.fillRect(125, 258, 8, 8, espgui::TFT_BLACK); +// } + } + + const auto staStatus = wifi_stack::get_sta_status(); + if (staStatus == wifi_stack::WiFiStaStatus::CONNECTED) + { + if (const auto result = wifi_stack::get_sta_ap_info(); result) + { + m_labelWifiStatus.redraw(tft, std::string_view{reinterpret_cast(result->ssid)}, espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelSignal.redraw(tft, fmt::format("{}dB", result->rssi), (result->rssi < -80) ? espgui::TFT_ORANGE : espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + } + else + { + ESP_LOGW(TAG, "get_sta_ap_info() failed with %.*s", result.error().size(), result.error().data()); + goto showStaStatus; + } + } + else + { +showStaStatus: + m_labelWifiStatus.redraw(tft, wifi_stack::toString(staStatus), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelSignal.clear(tft, espgui::TFT_BLACK); + } + + m_labelLimit0.redraw(tft, fmt::format("{}A", controllers.front.command.left.iMotMax), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + + if (staStatus == wifi_stack::WiFiStaStatus::CONNECTED) + { + if (const auto result = wifi_stack::get_ip_info(wifi_stack::esp_netifs[ESP_IF_WIFI_STA]); result) + m_labelIpAddress.redraw(tft, wifi_stack::toString(result->ip), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + else + { + ESP_LOGW(TAG, "get_ip_info() failed with %.*s", result.error().size(), result.error().data()); + goto clearIp; + } + } + else + { +clearIp: + m_labelIpAddress.clear(tft, espgui::TFT_BLACK); + } + + m_labelLimit1.redraw(tft, fmt::format("{}A", controllers.front.command.left.iDcMax), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + + m_labelPerformance.redraw(tft, std::to_string(drivingModeTask.callCount()), (drivingModeTask.callCount() < 35) ? espgui::TFT_ORANGE : espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + + { + const auto freeMem = heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT); + m_labelFreeMem.redraw(tft, fmt::format("{}K", freeMem/1000), (freeMem < 70000) ? espgui::TFT_ORANGE : espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + } + + m_labelMode.redraw(tft, currentMode->displayName(), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + m_labelName.redraw(tft, configs.wifiApName.value(), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); + const auto profile = settingsPersister.currentlyOpenProfileIndex(); + m_labelProfile.redraw(tft, profile ? std::to_string(*profile) : "-", espgui::TFT_WHITE, espgui::TFT_BLACK, 2); +} + +void StatusDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Right: + pushScreen(); + break; + case Button::Up: + if (simplified) + return; +#ifdef FEATURE_BMS + switchScreen(); +#else + switchScreen(); +#endif + break; + case Button::Down: + if (simplified) + return; + switchScreen(); + break; + default:; + } +} + +StatusDisplay::BoardStatus::BoardStatus(int y) : + m_y{y}, + m_labelLeftPwm{65, y}, // 80, 22 + m_labelRightPwm{155, y}, // 80, 22 + m_labelVoltage{30, y+25}, // 85, 22 + m_labelTemperature{150, y+25}, // 85, 22 + m_leftMotor{y+50}, + m_rightMotor{y+75} +{} + +void StatusDisplay::BoardStatus::start(espgui::TftInterface &tft) +{ + tft.drawString("pwm:", 0, m_y, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labelLeftPwm.start(tft); + m_labelRightPwm.start(tft); + m_initialRedraw = true; +} + +void StatusDisplay::BoardStatus::redraw(espgui::TftInterface &tft, const Controller &controller) +{ + m_labelLeftPwm.redraw(tft, std::to_string(controller.command.left.pwm), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labelRightPwm.redraw(tft, std::to_string(controller.command.right.pwm), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + if (controller.feedbackValid != m_lastFeedbackValid || m_initialRedraw) + { + tft.fillRect(0, m_y+25, tft.width(), 75, espgui::TFT_BLACK); + + if (controller.feedbackValid) + { + tft.drawString("U=", 0, m_y+25, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labelVoltage.start(tft); + tft.drawString("T=", 120, m_y+25, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labelTemperature.start(tft); + tft.drawString("l:", 0, m_y+50, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_leftMotor.start(tft); + tft.drawString("r:", 0, m_y+75, espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_rightMotor.start(tft); + } + else + { + tft.drawString("No data!", 60, m_y+50, espgui::TFT_RED, espgui::TFT_BLACK, 4); + + tft.setSwapBytes(true); + tft.pushImage(10, m_y+40, bobbyicons::alert.WIDTH, bobbyicons::alert.HEIGHT, bobbyicons::alert.buffer); + tft.setSwapBytes(false); + } + + m_lastFeedbackValid = controller.feedbackValid; + m_initialRedraw = false; + } + + if (controller.feedbackValid) + { + m_labelVoltage.redraw(tft, fmt::format("{:.2f}V", controller.getCalibratedVoltage()), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labelTemperature.redraw(tft, fmt::format("{:.2f}C", fixBoardTemp(controller.feedback.boardTemp)), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_leftMotor.redraw(tft, controller.feedback.left); + m_rightMotor.redraw(tft, controller.feedback.right); + } +} + +StatusDisplay::BoardStatus::MotorStatus::MotorStatus(int y) : + m_labelError{18, y}, // 18, 22, + m_labelCurrent{40, y}, // 85, 22 + m_labelSpeed{135, y}, // 75, 22 + m_labelHallSensors{210, y} // 30, 15 +{} + +void StatusDisplay::BoardStatus::MotorStatus::start(espgui::TftInterface &tft) +{ + m_labelError.start(tft); + m_labelCurrent.start(tft); + m_labelSpeed.start(tft); + m_labelHallSensors.start(tft); +} + +void StatusDisplay::BoardStatus::MotorStatus::redraw(espgui::TftInterface &tft, const bobbycar::protocol::serial::MotorFeedback &motor) +{ + m_labelError.redraw(tft, std::to_string(motor.error), motor.error ? espgui::TFT_RED : espgui::TFT_GREEN, espgui::TFT_BLACK, 4); + + m_labelCurrent.redraw(tft, fmt::format("{:.2f}A", fixCurrent(motor.dcLink)), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_labelSpeed.redraw(tft, fmt::format("{:.2f}", convertToKmh(motor.speed)), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + m_labelHallSensors.redraw(tft, hallString(motor), espgui::TFT_WHITE, espgui::TFT_BLACK, 2); +} +} // namespace bobby diff --git a/main/displays/statusdisplay.h b/main/screens/statusdisplay.h similarity index 83% rename from main/displays/statusdisplay.h rename to main/screens/statusdisplay.h index ddeffd2..27f1470 100644 --- a/main/displays/statusdisplay.h +++ b/main/screens/statusdisplay.h @@ -10,19 +10,21 @@ // local includes #include "battery.h" -#include "bobbydisplay.h" #include "globals.h" +#include "guihelpers/bobbydisplay.h" #include "icons/alert.h" #include "modeinterface.h" #include "utils.h" +namespace bobby { + class StatusDisplay : public BobbyDisplay { using Base = BobbyDisplay; public: - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void buttonPressed(espgui::Button button) override; @@ -32,8 +34,8 @@ private: public: BoardStatus(int y); - void start(); - void redraw(const Controller &controller); + void start(espgui::TftInterface &tft); + void redraw(espgui::TftInterface &tft, const Controller &controller); private: class MotorStatus @@ -41,8 +43,8 @@ private: public: MotorStatus(int y); - void start(); - void redraw(const bobbycar::protocol::serial::MotorFeedback &motor); + void start(espgui::TftInterface &tft); + void redraw(espgui::TftInterface &tft, const bobbycar::protocol::serial::MotorFeedback &motor); private: espgui::Label m_labelError; @@ -96,3 +98,4 @@ private: static const constexpr int bottomLines[4] { 251, 266, 281, 296 }; }; +} // namespace bobby diff --git a/main/displays/menus/taskmanagermenu.cpp b/main/screens/taskmanagermenu.cpp similarity index 96% rename from main/displays/menus/taskmanagermenu.cpp rename to main/screens/taskmanagermenu.cpp index 9680365..acb7d81 100644 --- a/main/displays/menus/taskmanagermenu.cpp +++ b/main/screens/taskmanagermenu.cpp @@ -1,15 +1,17 @@ #include "taskmanagermenu.h" // 3rdparty lib includes -#include -#include #include -#include +#include #include +#include +#include // local includes #include "taskmanager.h" +namespace bobby { + using namespace espgui; using namespace std::chrono_literals; @@ -49,3 +51,4 @@ void TaskmanagerMenu::back() { popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/taskmanagermenu.h b/main/screens/taskmanagermenu.h similarity index 69% rename from main/displays/menus/taskmanagermenu.h rename to main/screens/taskmanagermenu.h index 59facf4..606adf8 100644 --- a/main/displays/menus/taskmanagermenu.h +++ b/main/screens/taskmanagermenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class TaskmanagerMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/tempomatmodesettingsmenu.cpp b/main/screens/tempomatmodesettingsmenu.cpp similarity index 96% rename from main/displays/menus/tempomatmodesettingsmenu.cpp rename to main/screens/tempomatmodesettingsmenu.cpp index daf3324..73f7bc0 100644 --- a/main/displays/menus/tempomatmodesettingsmenu.cpp +++ b/main/screens/tempomatmodesettingsmenu.cpp @@ -1,20 +1,22 @@ #include "tempomatmodesettingsmenu.h" // 3rdparty lib includes -#include -#include -#include #include +#include +#include #include +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "utils.h" -#include "changevaluedisplay_unifiedmodelmode.h" -#include "accessors/settingsaccessors.h" #include "accessors/globalaccessors.h" +#include "accessors/settingsaccessors.h" #include "actions/tempomatmodeapplycurrentpeedaction.h" +#include "changevaluedisplay_unifiedmodelmode.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings"; @@ -59,3 +61,4 @@ void TempomatModeSettingsMenu::back() { popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/tempomatmodesettingsmenu.h b/main/screens/tempomatmodesettingsmenu.h similarity index 71% rename from main/displays/menus/tempomatmodesettingsmenu.h rename to main/screens/tempomatmodesettingsmenu.h index 9b14d60..eadef5a 100644 --- a/main/displays/menus/tempomatmodesettingsmenu.h +++ b/main/screens/tempomatmodesettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class TempomatModeSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/timersmenu.cpp b/main/screens/timersmenu.cpp similarity index 79% rename from main/displays/menus/timersmenu.cpp rename to main/screens/timersmenu.cpp index fa67fa0..c0bec85 100644 --- a/main/displays/menus/timersmenu.cpp +++ b/main/screens/timersmenu.cpp @@ -1,15 +1,17 @@ #include "timersmenu.h" // 3rdparty lib includes -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "changevaluedisplay.h" -#include "icons/back.h" +#include +#include +#include +#include // local includes -#include "displays/bobbychangevaluedisplay.h" #include "accessors/settingsaccessors.h" -#include "displays/menus/boardcomputerhardwaresettingsmenu.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/boardcomputerhardwaresettingsmenu.h" + +namespace bobby { namespace { constexpr char TEXT_TIMERS[] = "Timers"; @@ -41,3 +43,5 @@ void TimersMenu::back() { espgui::popScreen(); } + +} // namespace bobby diff --git a/main/displays/menus/timersmenu.h b/main/screens/timersmenu.h similarity index 67% rename from main/displays/menus/timersmenu.h rename to main/screens/timersmenu.h index f3a08e0..150d315 100644 --- a/main/displays/menus/timersmenu.h +++ b/main/screens/timersmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class TimersMenu : public BobbyMenuDisplay { @@ -12,3 +14,5 @@ public: void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/timesettingsmenu.cpp b/main/screens/timesettingsmenu.cpp similarity index 91% rename from main/displays/menus/timesettingsmenu.cpp rename to main/screens/timesettingsmenu.cpp index 521b865..030514d 100644 --- a/main/displays/menus/timesettingsmenu.cpp +++ b/main/screens/timesettingsmenu.cpp @@ -3,25 +3,27 @@ #include "sdkconfig.h" // 3rdparty lib includes +#include +#include +#include +#include +#include +#include +#include #include +#include #include -#include "changevaluedisplay.h" -#include "changevaluedisplay_daylightsavingmode.h" -#include "changevaluedisplay_sntp_sync_mode_t.h" -#include "changevaluedisplay_string.h" -#include "actions/pushscreenaction.h" -#include "actions/popscreenaction.h" -#include "actions/dummyaction.h" -#include "icons/back.h" -#include "espstrutils.h" +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "utils.h" #include "accessors/settingsaccessors.h" -#include "displays/menus/settingsmenu.h" -#include "bobbycheckbox.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "screens/settingsmenu.h" +#include "guihelpers/bobbycheckbox.h" +#include "utils.h" + +namespace bobby { namespace { constexpr char TEXT_TIME[] = "Time"; @@ -146,3 +148,4 @@ void TimeSettingsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/screens/timesettingsmenu.h b/main/screens/timesettingsmenu.h new file mode 100644 index 0000000..cb32798 --- /dev/null +++ b/main/screens/timesettingsmenu.h @@ -0,0 +1,17 @@ +#pragma once + +// local includes +#include "guihelpers/menudisplaywithtime.h" + +namespace bobby { + +class TimeSettingsMenu : public bobby::MenuDisplayWithTime +{ +public: + TimeSettingsMenu(); + + std::string text() const override; + + void back() override; +}; +} // namespace bobby diff --git a/main/displays/menus/typesafeenumchangemenu.cpp b/main/screens/typesafeenumchangemenu.cpp similarity index 100% rename from main/displays/menus/typesafeenumchangemenu.cpp rename to main/screens/typesafeenumchangemenu.cpp diff --git a/main/displays/menus/typesafeenumchangemenu.h b/main/screens/typesafeenumchangemenu.h similarity index 96% rename from main/displays/menus/typesafeenumchangemenu.h rename to main/screens/typesafeenumchangemenu.h index 035c170..0574545 100644 --- a/main/displays/menus/typesafeenumchangemenu.h +++ b/main/screens/typesafeenumchangemenu.h @@ -1,17 +1,19 @@ #pragma once // 3rdparty lib includes +#include +#include +#include #include #include #include -#include -#include -#include // local includes +#include "guihelpers/bobbymenudisplay.h" #include "globals.h" -#include "displays/bobbymenudisplay.h" -#include "bobbyerrorhandler.h" +#include "guihelpers/bobbyerrorhandler.h" + +namespace bobby { namespace typesafeenumchangemenu { constexpr char TEXT_BACK[] = "Back"; @@ -148,3 +150,5 @@ public: private: ConfigWrapper* m_config; }; + +} // namespace bobby diff --git a/main/displays/menus/udpcloudsettingsmenu.cpp b/main/screens/udpcloudsettingsmenu.cpp similarity index 88% rename from main/displays/menus/udpcloudsettingsmenu.cpp rename to main/screens/udpcloudsettingsmenu.cpp index ca3373b..542edff 100644 --- a/main/displays/menus/udpcloudsettingsmenu.cpp +++ b/main/screens/udpcloudsettingsmenu.cpp @@ -1,17 +1,19 @@ #include "udpcloudsettingsmenu.h" // 3rdparty lib includes -#include -#include -#include -#include -#include -#include +#include "actions/popscreenaction.h" +#include "actions/pushscreenaction.h" +#include "changevaluedisplay_string.h" +#include "fmt/core.h" +#include "icons/back.h" +#include "menuitem.h" // local includes #include "accessors/settingsaccessors.h" -#include "bobbycheckbox.h" -#include "displays/bobbychangevaluedisplay.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "guihelpers/bobbycheckbox.h" + +namespace bobby { namespace { constexpr char TEXT_UDPCLOUDSETTINGS[] = "UDP Cloud settings"; @@ -66,3 +68,4 @@ void UdpCloudSettingsMenu::back() { espgui::popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/udpcloudsettingsmenu.h b/main/screens/udpcloudsettingsmenu.h similarity index 70% rename from main/displays/menus/udpcloudsettingsmenu.h rename to main/screens/udpcloudsettingsmenu.h index 9719e0a..44ea0b2 100644 --- a/main/displays/menus/udpcloudsettingsmenu.h +++ b/main/screens/udpcloudsettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class UdpCloudSettingsMenu : public BobbyMenuDisplay { @@ -12,3 +14,4 @@ public: void back() override; }; +} // namespace bobby diff --git a/main/screens/updatedisplay.cpp b/main/screens/updatedisplay.cpp new file mode 100644 index 0000000..5a38503 --- /dev/null +++ b/main/screens/updatedisplay.cpp @@ -0,0 +1,112 @@ +#include "updatedisplay.h" + +// system includes +#include +#include + +// esp-idf includes +#include + +// 3rdparty lib includes +#include +#include +#include +#include +#include + +// local includes +#include "globals.h" +#include "newsettings.h" +#include "ota.h" + +namespace bobby { + +void UpdateDisplay::initScreen(espgui::TftInterface &tft) +{ + Base::initScreen(tft); + + tft.drawString("Status:", 20, m_statusLabel.y(), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_statusLabel.start(tft); + + tft.drawString("Progress:", 20, m_progressLabel.y(), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_progressLabel.start(tft); + + tft.drawString("Total:", 20, m_totalLabel.y(), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_totalLabel.start(tft); + + m_messageLabel.start(tft); + + m_progressBar.start(tft); + + if (const esp_app_desc_t *app_desc = esp_ota_get_app_description()) + { + tft.drawString(app_desc->version, 20, 250, TFT_ORANGE, TFT_BLACK, 4); + } + + m_newVersionLabel.start(tft); +} + +void UpdateDisplay::redraw(espgui::TftInterface &tft) +{ + Base::redraw(tft); + + if (asyncOta) + { + m_statusLabel.redraw(tft, toString(asyncOta->status()), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + const auto progress = asyncOta->progress(); + m_progressLabel.redraw(tft, std::to_string(progress), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + if (const auto totalSize = asyncOta->totalSize(); totalSize && *totalSize > 0) + { + m_totalLabel.redraw(tft, std::to_string(*totalSize), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + m_progressBar.redraw(tft, float(progress) / *totalSize * 100); + } + else + { + m_totalLabel.clear(tft, TFT_BLACK); + m_progressBar.redraw(tft, 0); + } + m_messageLabel.redraw(tft, asyncOta->message(), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); + + if (const auto &appDesc = asyncOta->appDesc()) + { + m_newVersionLabel.redraw(tft, appDesc->version, espgui::TFT_GREEN, espgui::TFT_BLACK, 4); + } + else + m_newVersionLabel.clear(tft, espgui::TFT_BLACK); + } + else + { + m_statusLabel.clear(tft, espgui::TFT_BLACK); + m_progressLabel.clear(tft, espgui::TFT_BLACK); + m_totalLabel.clear(tft, espgui::TFT_BLACK); + m_messageLabel.clear(tft, espgui::TFT_BLACK); + + m_progressBar.redraw(tft, 0); + + m_newVersionLabel.clear(tft, espgui::TFT_BLACK); + } +} + +void UpdateDisplay::buttonPressed(espgui::Button button) +{ + Base::buttonPressed(button); + + switch (button) + { + using espgui::Button; + case Button::Left: + espgui::popScreen(); + break; + case Button::Right: + if (const auto result = triggerOta(configs.otaUrl.value()); !result) + ESP_LOGE("BOBBY", "triggerOta() failed with %.*s", result.error().size(), result.error().data()); + break; + default:; + } +} + +std::string UpdateDisplay::text() const +{ + return "Update"; +} +} // namespace bobby diff --git a/main/displays/updatedisplay.h b/main/screens/updatedisplay.h similarity index 59% rename from main/displays/updatedisplay.h rename to main/screens/updatedisplay.h index 6a7e9d6..722b79c 100644 --- a/main/displays/updatedisplay.h +++ b/main/screens/updatedisplay.h @@ -5,15 +5,19 @@ #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplaywithtitle.h" -class UpdateDisplay : public BobbyDisplay +namespace bobby { + +class UpdateDisplay : public BobbyDisplayWithTitle { - using Base = BobbyDisplay; + using Base = BobbyDisplayWithTitle; public: - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; + + std::string text() const override; void buttonPressed(espgui::Button button) override; @@ -27,3 +31,4 @@ private: espgui::Label m_newVersionLabel{20, 275}; }; +} // namespace bobby diff --git a/main/displays/menus/wifiapclientsmenu.cpp b/main/screens/wifiapclientsmenu.cpp similarity index 97% rename from main/displays/menus/wifiapclientsmenu.cpp rename to main/screens/wifiapclientsmenu.cpp index 38af0b7..12c2390 100644 --- a/main/displays/menus/wifiapclientsmenu.cpp +++ b/main/screens/wifiapclientsmenu.cpp @@ -1,25 +1,27 @@ #include "wifiapclientsmenu.h" // esp-idf includes +#include #include #include -#include #include <../lwip/esp_netif_lwip_internal.h> // 3rdparty lib includes -#include #include #include -#include -#include -#include -#include #include +#include +#include +#include +#include +#include // local includes #include "wifiapsettingsmenu.h" #include "wifiguiutils.h" +namespace bobby { + using namespace std::chrono_literals; using namespace std::string_literals; using namespace espgui; @@ -153,3 +155,4 @@ void WifiApClientMenuItem::updateIp() } } // namespace +} // namespace bobby diff --git a/main/displays/menus/wifiapclientsmenu.h b/main/screens/wifiapclientsmenu.h similarity index 84% rename from main/displays/menus/wifiapclientsmenu.h rename to main/screens/wifiapclientsmenu.h index 3a9b3df..a370922 100644 --- a/main/displays/menus/wifiapclientsmenu.h +++ b/main/screens/wifiapclientsmenu.h @@ -4,7 +4,9 @@ #include // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class WifiApClientsMenu : public BobbyMenuDisplay, @@ -26,3 +28,4 @@ private: private: espchrono::millis_clock::time_point m_lastSync; }; +} // namespace bobby diff --git a/main/displays/menus/wifiapsettingsmenu.cpp b/main/screens/wifiapsettingsmenu.cpp similarity index 97% rename from main/displays/menus/wifiapsettingsmenu.cpp rename to main/screens/wifiapsettingsmenu.cpp index 28ac7bd..016add8 100644 --- a/main/displays/menus/wifiapsettingsmenu.cpp +++ b/main/screens/wifiapsettingsmenu.cpp @@ -4,26 +4,28 @@ #include // 3rdparty lib includes -#include #include -#include #include -#include -#include +#include #include +#include +#include +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "changevaluedisplay.h" -#include "changevaluedisplay_string.h" -#include "changevaluedisplay_ip_address_t.h" -#include "changevaluedisplay_wifi_auth_mode_t.h" -#include "wifiapclientsmenu.h" -#include "networksettingsmenu.h" #include "accessors/wifiapconfigaccessors.h" +#include "changevaluedisplay.h" +#include "changevaluedisplay_ip_address_t.h" +#include "changevaluedisplay_string.h" +#include "changevaluedisplay_wifi_auth_mode_t.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "guihelpers/bobbycheckbox.h" +#include "networksettingsmenu.h" #include "texthelpers/wifiaptexthelpers.h" -#include "bobbycheckbox.h" +#include "wifiapclientsmenu.h" + +namespace bobby { using namespace espgui; @@ -140,3 +142,5 @@ void WifiApClientsAction::triggered() ESP_LOGW(TAG, "esp_wifi_ap_get_sta_list() failed with %s", esp_err_to_name(result)); } } // namespace + +} // namespace bobby diff --git a/main/displays/menus/wifiapsettingsmenu.h b/main/screens/wifiapsettingsmenu.h similarity index 70% rename from main/displays/menus/wifiapsettingsmenu.h rename to main/screens/wifiapsettingsmenu.h index 813419b..1a8c56c 100644 --- a/main/displays/menus/wifiapsettingsmenu.h +++ b/main/screens/wifiapsettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class WifiApSettingsMenu : public BobbyMenuDisplay { @@ -11,3 +13,4 @@ public: std::string text() const override; void back() override; }; +} // namespace bobby diff --git a/main/displays/menus/wifistaconfigentrymenu.cpp b/main/screens/wifistaconfigentrymenu.cpp similarity index 98% rename from main/displays/menus/wifistaconfigentrymenu.cpp rename to main/screens/wifistaconfigentrymenu.cpp index ad2af3c..e7d9798 100644 --- a/main/displays/menus/wifistaconfigentrymenu.cpp +++ b/main/screens/wifistaconfigentrymenu.cpp @@ -1,23 +1,25 @@ #include "wifistaconfigentrymenu.h" // 3rdparty lib includes -#include #include -#include #include -#include -#include +#include #include -#include #include +#include +#include +#include +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" #include "accessors/wifistaconfigaccessors.h" -#include "wifistaconfigsmenu.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "guihelpers/bobbycheckbox.h" #include "newsettings.h" -#include "bobbycheckbox.h" +#include "wifistaconfigsmenu.h" + +namespace bobby { namespace { constexpr char TEXT_SSID_TITLE[] = "WiFi {} SSID"; @@ -153,3 +155,5 @@ void ClearConfigAction::triggered() configs.reset_config(config.staticDns2); } } // namespace + +} // namespace bobby diff --git a/main/displays/menus/wifistaconfigentrymenu.h b/main/screens/wifistaconfigentrymenu.h similarity index 74% rename from main/displays/menus/wifistaconfigentrymenu.h rename to main/screens/wifistaconfigentrymenu.h index c926654..258c4a9 100644 --- a/main/displays/menus/wifistaconfigentrymenu.h +++ b/main/screens/wifistaconfigentrymenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class WifiStaConfigEntryMenu : public BobbyMenuDisplay { @@ -14,3 +16,5 @@ public: private: const int m_index; }; + +} // namespace bobby diff --git a/main/displays/menus/wifistaconfigsmenu.cpp b/main/screens/wifistaconfigsmenu.cpp similarity index 98% rename from main/displays/menus/wifistaconfigsmenu.cpp rename to main/screens/wifistaconfigsmenu.cpp index b8388c6..32da749 100644 --- a/main/displays/menus/wifistaconfigsmenu.cpp +++ b/main/screens/wifistaconfigsmenu.cpp @@ -1,20 +1,22 @@ #include "wifistaconfigsmenu.h" // 3rdparty lib includes -#include #include -#include #include -#include -#include -#include -#include +#include #include +#include +#include +#include +#include +#include // local includes -#include "wifistasettingsmenu.h" -#include "wifistaconfigentrymenu.h" #include "newsettings.h" +#include "wifistaconfigentrymenu.h" +#include "wifistasettingsmenu.h" + +namespace bobby { using namespace espgui; @@ -76,3 +78,4 @@ std::string WifiStaConfigurationMenuItem::text() const } } // namespace +} // namespace bobby diff --git a/main/displays/menus/wifistaconfigsmenu.h b/main/screens/wifistaconfigsmenu.h similarity index 69% rename from main/displays/menus/wifistaconfigsmenu.h rename to main/screens/wifistaconfigsmenu.h index 97650f6..e304fa1 100644 --- a/main/displays/menus/wifistaconfigsmenu.h +++ b/main/screens/wifistaconfigsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class WifiStaConfigsMenu : public BobbyMenuDisplay { @@ -11,3 +13,5 @@ public: std::string text() const override; void back() override; }; + +} // namespace bobby diff --git a/main/displays/menus/wifistascanentrymenu.cpp b/main/screens/wifistascanentrymenu.cpp similarity index 99% rename from main/displays/menus/wifistascanentrymenu.cpp rename to main/screens/wifistascanentrymenu.cpp index fa09783..ee49938 100644 --- a/main/displays/menus/wifistascanentrymenu.cpp +++ b/main/screens/wifistascanentrymenu.cpp @@ -7,22 +7,24 @@ #include // 3rdparty lib includes -#include #include -#include #include -#include -#include -#include +#include #include +#include +#include +#include #include +#include #include // local includes -#include "wifistascanmenu.h" -#include "wifistaconfigentrymenu.h" -#include "wifiguiutils.h" #include "newsettings.h" +#include "wifiguiutils.h" +#include "wifistaconfigentrymenu.h" +#include "wifistascanmenu.h" + +namespace bobby { using namespace std::string_literals; using namespace espgui; @@ -133,3 +135,4 @@ void SaveNewWifiConfigAction::triggered() } } // namespace +} // namespace bobby diff --git a/main/displays/menus/wifistascanentrymenu.h b/main/screens/wifistascanentrymenu.h similarity index 72% rename from main/displays/menus/wifistascanentrymenu.h rename to main/screens/wifistascanentrymenu.h index b1175ab..0efcb54 100644 --- a/main/displays/menus/wifistascanentrymenu.h +++ b/main/screens/wifistascanentrymenu.h @@ -1,10 +1,12 @@ #pragma once // esp-idf includes -#include +#include "esp_wifi_types.h" // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class WifiStaScanEntryMenu : public BobbyMenuDisplay { @@ -17,3 +19,4 @@ public: private: const wifi_ap_record_t m_info; }; +} // namespace bobby diff --git a/main/displays/menus/wifistascanmenu.cpp b/main/screens/wifistascanmenu.cpp similarity index 99% rename from main/displays/menus/wifistascanmenu.cpp rename to main/screens/wifistascanmenu.cpp index 4265ec2..cdb7a69 100644 --- a/main/displays/menus/wifistascanmenu.cpp +++ b/main/screens/wifistascanmenu.cpp @@ -4,23 +4,25 @@ #include // 3rdparty lib includes -#include -#include #include -#include -#include -#include +#include #include #include +#include +#include +#include #include +#include #include // local includes #include "actions/wifistascanaction.h" #include "actions/wifistascanclearaction.h" +#include "newsettings.h" #include "wifiguiutils.h" #include "wifistascanentrymenu.h" -#include "newsettings.h" + +namespace bobby { using namespace espgui; @@ -148,3 +150,4 @@ std::string WifiStaScanMenuItem::text() const } } // namespace +} // namespace bobby diff --git a/main/displays/menus/wifistascanmenu.h b/main/screens/wifistascanmenu.h similarity index 79% rename from main/displays/menus/wifistascanmenu.h rename to main/screens/wifistascanmenu.h index e3fdd7d..6b2c263 100644 --- a/main/displays/menus/wifistascanmenu.h +++ b/main/screens/wifistascanmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class WifiStaScanMenu : public BobbyMenuDisplay { @@ -19,3 +21,4 @@ public: private: bool m_wasScanning; }; +} // namespace bobby diff --git a/main/displays/menus/wifistasettingsmenu.cpp b/main/screens/wifistasettingsmenu.cpp similarity index 96% rename from main/displays/menus/wifistasettingsmenu.cpp rename to main/screens/wifistasettingsmenu.cpp index d2aa16e..bedd956 100644 --- a/main/displays/menus/wifistasettingsmenu.cpp +++ b/main/screens/wifistasettingsmenu.cpp @@ -1,22 +1,24 @@ #include "wifistasettingsmenu.h" // 3rdparty lib includes -#include #include -#include #include -#include -#include +#include #include +#include +#include +#include #include // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "wifistascanmenu.h" -#include "wifistaconfigsmenu.h" #include "accessors/wifistaconfigaccessors.h" +#include "guihelpers/bobbychangevaluedisplay.h" +#include "guihelpers/bobbycheckbox.h" #include "texthelpers/wifistatexthelpers.h" -#include "bobbycheckbox.h" +#include "wifistaconfigsmenu.h" +#include "wifistascanmenu.h" + +namespace bobby { using namespace espgui; @@ -68,3 +70,4 @@ void WifiStaSettingsMenu::back() { popScreen(); } +} // namespace bobby diff --git a/main/displays/menus/wifistasettingsmenu.h b/main/screens/wifistasettingsmenu.h similarity index 70% rename from main/displays/menus/wifistasettingsmenu.h rename to main/screens/wifistasettingsmenu.h index dc7feae..7afa5eb 100644 --- a/main/displays/menus/wifistasettingsmenu.h +++ b/main/screens/wifistasettingsmenu.h @@ -1,7 +1,9 @@ #pragma once // local includes -#include "displays/bobbymenudisplay.h" +#include "guihelpers/bobbymenudisplay.h" + +namespace bobby { class WifiStaSettingsMenu : public BobbyMenuDisplay { @@ -11,3 +13,4 @@ public: std::string text() const override; void back() override; }; +} // namespace bobby diff --git a/main/displays/xydebugdisplay.cpp b/main/screens/xydebugdisplay.cpp similarity index 64% rename from main/displays/xydebugdisplay.cpp rename to main/screens/xydebugdisplay.cpp index 53d10c9..3e32170 100644 --- a/main/displays/xydebugdisplay.cpp +++ b/main/screens/xydebugdisplay.cpp @@ -3,30 +3,36 @@ // 3rdparty lib includes #include #include -#include +#include +#include // local includes #include "bobbybuttons.h" +namespace bobby { + XYDebugDisplay::XYDebugDisplay() : m_labelCoordinates{5, 5} {} -void XYDebugDisplay::initScreen() +void XYDebugDisplay::initScreen(espgui::TftInterface &tft) { - Base::initScreen(); - m_labelCoordinates.start(); + Base::initScreen(tft); + m_labelCoordinates.start(tft); + + m_height = tft.height(); + m_width = tft.width(); } -void XYDebugDisplay::redraw() +void XYDebugDisplay::redraw(espgui::TftInterface &tft) { using namespace espgui; - Base::redraw(); - m_labelCoordinates.redraw(fmt::format("X: {}, Y: {}", m_current_cursor.x, m_current_cursor.y)); + Base::redraw(tft); + m_labelCoordinates.redraw(tft, fmt::format("X: {}, Y: {}", m_current_cursor.x, m_current_cursor.y), espgui::TFT_WHITE, espgui::TFT_BLACK, 4); if (m_current_cursor.x != m_last_cursor.x || m_current_cursor.y != m_last_cursor.y) { - tft.fillCircle(m_last_cursor.x, m_last_cursor.y, 2, TFT_BLACK); - tft.fillCircle(m_current_cursor.x, m_current_cursor.y, 2, TFT_WHITE); + tft.fillCircle(m_last_cursor.x, m_last_cursor.y, 2, espgui::TFT_BLACK); + tft.fillCircle(m_current_cursor.x, m_current_cursor.y, 2, espgui::TFT_WHITE); m_last_cursor = m_current_cursor; } @@ -55,7 +61,7 @@ void XYDebugDisplay::buttonPressed(espgui::Button button) } break; case BobbyButton::Right2: - if (m_current_cursor.x < espgui::tft.width() - 1) + if (m_current_cursor.x < m_width - 1) { ++m_current_cursor.x; } @@ -67,7 +73,7 @@ void XYDebugDisplay::buttonPressed(espgui::Button button) } break; case BobbyButton::Down2: - if (m_current_cursor.y < espgui::tft.height() - 1) + if (m_current_cursor.y < m_height - 1) { ++m_current_cursor.y; } @@ -75,3 +81,4 @@ void XYDebugDisplay::buttonPressed(espgui::Button button) default:; } } +} // namespace bobby diff --git a/main/displays/xydebugdisplay.h b/main/screens/xydebugdisplay.h similarity index 63% rename from main/displays/xydebugdisplay.h rename to main/screens/xydebugdisplay.h index a1d6946..1fc24cf 100644 --- a/main/displays/xydebugdisplay.h +++ b/main/screens/xydebugdisplay.h @@ -1,10 +1,13 @@ #pragma once // 3rdparty lib includes +#include #include // local includes -#include "bobbydisplay.h" +#include "guihelpers/bobbydisplay.h" + +namespace bobby { class XYDebugDisplay : public BobbyDisplay { @@ -12,8 +15,8 @@ class XYDebugDisplay : public BobbyDisplay public: XYDebugDisplay(); - void initScreen() override; - void redraw() override; + void initScreen(espgui::TftInterface &tft) override; + void redraw(espgui::TftInterface &tft) override; void buttonPressed(espgui::Button button) override; @@ -26,4 +29,8 @@ private: cursor_pos_t m_current_cursor{0, 0}; cursor_pos_t m_last_cursor{0, 0}; espgui::Label m_labelCoordinates; + + uint16_t m_width; + uint16_t m_height; }; +} // namespace bobby diff --git a/main/statustexthelper.cpp b/main/statustexthelper.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/taskmanager.cpp b/main/taskmanager.cpp index 16d595b..51e0170 100644 --- a/main/taskmanager.cpp +++ b/main/taskmanager.cpp @@ -88,8 +88,8 @@ BobbySchedulerTask schedulerTasksArr[] { BobbySchedulerTask { "drivingmode", initDrivingMode, updateDrivingMode, 20ms, false }, BobbySchedulerTask { "drivingstatistics", initStatistics, calculateStatistics, 100ms, false }, BobbySchedulerTask { "dnsannounce", init_dns_announce, handle_dns_announce, 100ms, false }, - BobbySchedulerTask { "updateDisp", not_needed, updateDisplay, 20ms, true }, - BobbySchedulerTask { "redrawDisp", not_needed, redrawDisplay, 40ms, true }, + BobbySchedulerTask { "updateDisp", not_needed, bobby::updateDisplay, 20ms, true }, + BobbySchedulerTask { "redrawDisp", not_needed, bobby::redrawDisplay, 40ms, true }, BobbySchedulerTask { "feedbackEmulator", feedbackemulator::init, feedbackemulator::update, 500ms, false}, }; } // namespace diff --git a/main/bletexthelpers.h b/main/texthelpers/bletexthelpers.h similarity index 100% rename from main/bletexthelpers.h rename to main/texthelpers/bletexthelpers.h diff --git a/main/bluetoothtexthelpers.h b/main/texthelpers/bluetoothtexthelpers.h similarity index 98% rename from main/bluetoothtexthelpers.h rename to main/texthelpers/bluetoothtexthelpers.h index ebc86cc..c7171ae 100644 --- a/main/bluetoothtexthelpers.h +++ b/main/texthelpers/bluetoothtexthelpers.h @@ -1,7 +1,7 @@ #pragma once // 3rdparty lib includes -#include +#include "fmt/core.h" // local includes #include "textinterface.h" diff --git a/main/cloudtexthelpers.cpp b/main/texthelpers/cloudtexthelpers.cpp similarity index 96% rename from main/cloudtexthelpers.cpp rename to main/texthelpers/cloudtexthelpers.cpp index f2ee868..166feed 100644 --- a/main/cloudtexthelpers.cpp +++ b/main/texthelpers/cloudtexthelpers.cpp @@ -1,7 +1,7 @@ #include "cloudtexthelpers.h" // 3rdparty lib includes -#include +#include "fmt/core.h" // local includes #include "cloud.h" diff --git a/main/cloudtexthelpers.h b/main/texthelpers/cloudtexthelpers.h similarity index 100% rename from main/cloudtexthelpers.h rename to main/texthelpers/cloudtexthelpers.h diff --git a/main/debugtexthelpers.h b/main/texthelpers/debugtexthelpers.h similarity index 99% rename from main/debugtexthelpers.h rename to main/texthelpers/debugtexthelpers.h index a57f9d4..e172366 100644 --- a/main/debugtexthelpers.h +++ b/main/texthelpers/debugtexthelpers.h @@ -1,7 +1,7 @@ #pragma once // 3rdparty lib includes -#include +#include "fmt/core.h" // local includes #include "textinterface.h" diff --git a/main/esptexthelpers.h b/main/texthelpers/esptexthelpers.h similarity index 97% rename from main/esptexthelpers.h rename to main/texthelpers/esptexthelpers.h index ff1c331..0a39442 100644 --- a/main/esptexthelpers.h +++ b/main/texthelpers/esptexthelpers.h @@ -1,13 +1,13 @@ #pragma once // esp-idf includes -#include -#include -#include +#include "esp_chip_info.h" +#include "esp_heap_caps.h" +#include "esp_idf_version.h" // 3rdparty lib includes -#include -#include +#include "espstrutils.h" +#include "fmt/core.h" // local includes #include "can.h" diff --git a/main/statustexthelper.h b/main/texthelpers/statustexthelper.h similarity index 100% rename from main/statustexthelper.h rename to main/texthelpers/statustexthelper.h diff --git a/main/types.cpp b/main/types.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/main/utils.cpp b/main/utils.cpp index cd47e76..ec14ef4 100644 --- a/main/utils.cpp +++ b/main/utils.cpp @@ -1,10 +1,8 @@ #include "utils.h" -// system includes -#include - // 3rdparty lib includes -#include +#include +#include // local includes #include "globals.h" @@ -430,7 +428,7 @@ std::optional checkIfInCalibration() return std::nullopt; } -void drawLargeText(const std::string&& text) +void drawLargeText(espgui::TftInterface &tft, const std::string&& text) { using namespace espgui; @@ -442,8 +440,6 @@ void drawLargeText(const std::string&& text) int x = leftMargin + 5; int y = topMargin + 5; - tft.setTextColor(TFT_WHITE); - for (char c : text) { if (c == '\n' || x > tft.width() - rightMargin - 10) @@ -454,7 +450,7 @@ void drawLargeText(const std::string&& text) if (c != '\n') { - const auto addedWidth = tft.drawChar(tft.decodeUTF8(c), x, y, 2); + const int16_t addedWidth = tft.drawChar(tft.decodeUTF8(c), x, y, espgui::TFT_WHITE, espgui::TFT_BLACK, 2); x += addedWidth; } diff --git a/main/utils.h b/main/utils.h index 51e5d43..cca3b5c 100644 --- a/main/utils.h +++ b/main/utils.h @@ -103,7 +103,7 @@ bool is_valid_timestamp(espchrono::utc_clock::time_point timestamp); std::string toString(esp_chip_model_t esp_chip_model); std::optional checkIfInCalibration(); -void drawLargeText(const std::string&& text); +void drawLargeText(espgui::TftInterface &tft, const std::string&& text); namespace bobbydpad { #ifdef FEATURE_DPAD diff --git a/main/widgets/doubleprogressbar.cpp b/main/widgets/doubleprogressbar.cpp index 49fee73..fc9f83e 100644 --- a/main/widgets/doubleprogressbar.cpp +++ b/main/widgets/doubleprogressbar.cpp @@ -2,41 +2,40 @@ // 3rdparty lib includes #include - -// local includes -#include "tftinstance.h" +#include +#include using namespace espgui; -namespace bobbygui { +namespace bobby { DoubleProgressBar::DoubleProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color1, uint32_t color2) : m_x{x}, m_y{y}, m_width{width}, m_height{height}, m_min{min}, m_max{max}, m_color1{color1}, m_color2{color2} { } -void DoubleProgressBar::start() +void DoubleProgressBar::start(espgui::TftInterface &tft) { m_lastValue1 = m_x+1; m_lastValue2 = m_x+1; - tft.drawRect(m_x, m_y, m_width, m_height, TFT_WHITE); + tft.drawRect(m_x, m_y, m_width, m_height, espgui::TFT_WHITE); } -void DoubleProgressBar::redraw(int value1, int value2) +void DoubleProgressBar::redraw(espgui::TftInterface &tft, int value1, int value2) { value1 = cpputils::mapValueClamped(value1, m_min, m_max, m_x+1, m_x+m_width-1); value2 = cpputils::mapValueClamped(value2, m_min, m_max, m_x+1, m_x+m_width-1); if (value1 < m_lastValue1) - tft.fillRect(value1, m_y+1, m_lastValue1-value1, (m_height-2) / 2, TFT_BLACK); + tft.fillRect(value1, m_y+1, m_lastValue1-value1, (m_height-2) / 2, espgui::TFT_BLACK); else if (value1 > m_lastValue1) tft.fillRect(m_lastValue1, m_y+1, value1-m_lastValue1, (m_height-2) / 2, m_color1); if (value2 < m_lastValue2) - tft.fillRect(value2, m_y+1+(m_height-2)/2, m_lastValue2-value2, (m_height-2) / 2, TFT_BLACK); + tft.fillRect(value2, m_y+1+(m_height-2)/2, m_lastValue2-value2, (m_height-2) / 2, espgui::TFT_BLACK); else if (value2 > m_lastValue2) tft.fillRect(m_lastValue2, m_y+1+(m_height-2)/2, value2-m_lastValue2, (m_height-2) / 2, m_color2); m_lastValue1 = value1; m_lastValue2 = value2; } -} // namespace bobbygui +} // namespace bobby diff --git a/main/widgets/doubleprogressbar.h b/main/widgets/doubleprogressbar.h index 947add6..16510da 100644 --- a/main/widgets/doubleprogressbar.h +++ b/main/widgets/doubleprogressbar.h @@ -4,16 +4,17 @@ #include // 3rdparty lib includes -#include +#include +#include -namespace bobbygui { +namespace bobby { class DoubleProgressBar { public: - DoubleProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color1=TFT_YELLOW, uint32_t color2=TFT_YELLOW); + DoubleProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color1=espgui::TFT_YELLOW, uint32_t color2=espgui::TFT_YELLOW); - void start(); - void redraw(int value1, int value2); + void start(espgui::TftInterface &tft); + void redraw(espgui::TftInterface &tft, int value1, int value2); private: const int m_x;