diff --git a/config_comred.cmake b/config_comred.cmake index 212d602..b88e761 100644 --- a/config_comred.cmake +++ b/config_comred.cmake @@ -101,7 +101,8 @@ set(BOBBYCAR_BUILDFLAGS # -DDEFAULT_GAMETRAKDISTMIN=0 # -DDEFAULT_GAMETRAKDISTMAX=4095 # -DFEATURE_POWERSUPPLY - -DFEATURE_CLOUD +# -DFEATURE_CLOUD + -DFEATURE_UDPCLOUD -DFEATURE_LEDBACKLIGHT -DPINS_LEDBACKLIGHT=23 -DLEDBACKLIGHT_INVERTED diff --git a/config_feedc0de.cmake b/config_feedc0de.cmake index 27c9c97..146936a 100644 --- a/config_feedc0de.cmake +++ b/config_feedc0de.cmake @@ -83,6 +83,7 @@ set(BOBBYCAR_BUILDFLAGS # -DDEFAULT_GAMETRAKDISTMAX=4095 -DFEATURE_POWERSUPPLY -DFEATURE_CLOUD +# -DFEATURE_UDPCLOUD -DFEATURE_LEDBACKLIGHT -DPINS_LEDBACKLIGHT=23 -DLEDBACKLIGHT_INVERTED diff --git a/config_greyhash.cmake b/config_greyhash.cmake index af52e8d..854abbf 100644 --- a/config_greyhash.cmake +++ b/config_greyhash.cmake @@ -79,6 +79,7 @@ set(BOBBYCAR_BUILDFLAGS # -DDEFAULT_GAMETRAKDISTMAX=4095 # -DFEATURE_POWERSUPPLY # -DFEATURE_CLOUD +# -DFEATURE_UDPCLOUD # -DFEATURE_LEDBACKLIGHT # -DPINS_LEDBACKLIGHT=23 # -DLEDBACKLIGHT_INVERTED diff --git a/config_mick.cmake b/config_mick.cmake index 6359cd0..b537942 100644 --- a/config_mick.cmake +++ b/config_mick.cmake @@ -78,7 +78,8 @@ set(BOBBYCAR_BUILDFLAGS # -DDEFAULT_GAMETRAKDISTMIN=0 # -DDEFAULT_GAMETRAKDISTMAX=4095 # -DFEATURE_POWERSUPPLY - -DFEATURE_CLOUD +# -DFEATURE_CLOUD + -DFEATURE_UDPCLOUD -DFEATURE_LEDBACKLIGHT -DPINS_LEDBACKLIGHT=23 -DLEDBACKLIGHT_INVERTED diff --git a/config_peter.cmake b/config_peter.cmake index 331b972..3257285 100644 --- a/config_peter.cmake +++ b/config_peter.cmake @@ -82,7 +82,8 @@ set(BOBBYCAR_BUILDFLAGS # -DDEFAULT_GAMETRAKDISTMIN=0 # -DDEFAULT_GAMETRAKDISTMAX=4095 # -DFEATURE_POWERSUPPLY - -DFEATURE_CLOUD + # -DFEATURE_CLOUD + -DFEATURE_UDPCLOUD -DFEATURE_LEDBACKLIGHT -DPINS_LEDBACKLIGHT=23 -DLEDBACKLIGHT_INVERTED diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index a76809c..0ac483f 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -117,6 +117,7 @@ set(headers displays/menus/tempomatmodesettingsmenu.h displays/menus/timersmenu.h displays/menus/timesettingsmenu.h + displays/menus/udpcloudsettingsmenu.h displays/menus/wifiscanmenu.h displays/menus/wifisettingsmenu.h displays/metersdisplay.h @@ -332,6 +333,7 @@ set(sources displays/menus/tempomatmodesettingsmenu.cpp displays/menus/timersmenu.cpp displays/menus/timesettingsmenu.cpp + displays/menus/udpcloudsettingsmenu.cpp displays/menus/wifiscanmenu.cpp displays/menus/wifisettingsmenu.cpp displays/metersdisplay.cpp diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 17d7103..b076e27 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -134,10 +134,13 @@ struct DisplayRedrawRateAccessor : public RefAccessorSaveSettings { int #ifdef FEATURE_CLOUD struct CloudCollectRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.cloudCollectRate; } }; struct CloudSendRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.cloudSendRate; } }; +#endif + +#ifdef FEATURE_UDPCLOUD struct UdpCloudSendIntervalAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.udpSendRateMs; } }; -struct UdpCloudEnabledAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.cloudSettings.udpCloudEnabled; } }; -struct CloudDebugEnableAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.cloudSettings.enableCloudDebug; } }; -struct UdpUseStdStringAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.cloudSettings.udpUseStdString; } }; +struct UdpCloudEnabledAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.udpCloudSettings.udpCloudEnabled; } }; +struct CloudDebugEnableAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.udpCloudSettings.enableCloudDebug; } }; +struct UdpUseStdStringAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.udpCloudSettings.udpUseStdString; } }; #endif // DefaultMode diff --git a/main/cloud.cpp b/main/cloud.cpp index 8b27fb5..c8f7ba8 100644 --- a/main/cloud.cpp +++ b/main/cloud.cpp @@ -1,5 +1,8 @@ #include "cloud.h" +// system includes +#include + // esp-idf includes #include @@ -17,6 +20,9 @@ espchrono::millis_clock::time_point lastCreateTry; espchrono::millis_clock::time_point lastStartTry; std::string cloudBuffer; +std::optional lastCloudCollect; +std::optional lastCloudSend; + void initCloud() { if (settings.cloudSettings.cloudEnabled && @@ -34,6 +40,25 @@ void initCloud() } } +void updateCloud() +{ + const auto now = espchrono::millis_clock::now(); + + if (!lastCloudCollect || now - *lastCloudCollect >= std::chrono::milliseconds{settings.boardcomputerHardware.timersSettings.cloudCollectRate}) + { + cloudCollect(); + + lastCloudCollect = now; + } + + if (!lastCloudSend || now - *lastCloudSend >= 1000ms/settings.boardcomputerHardware.timersSettings.cloudSendRate) + { + cloudSend(); + + lastCloudSend = now; + } +} + void cloudCollect() { if (!cloudClient) diff --git a/main/cloud.h b/main/cloud.h index 84029f2..20b72ea 100644 --- a/main/cloud.h +++ b/main/cloud.h @@ -23,6 +23,7 @@ void destroyCloud(); void startCloud(); void initCloud(); +void updateCloud(); void cloudCollect(); void cloudSend(); #endif diff --git a/main/debuginputhandler.cpp b/main/debuginputhandler.cpp index 6a54445..16ca8bc 100644 --- a/main/debuginputhandler.cpp +++ b/main/debuginputhandler.cpp @@ -21,6 +21,7 @@ void initDebugInput() { Serial.begin(115200); //Serial.setDebugOutput(true); + pinMode(3, INPUT_PULLUP); } void handleDebugInput() diff --git a/main/displays/menus/cloudsettingsmenu.cpp b/main/displays/menus/cloudsettingsmenu.cpp index e2afd60..80b7d18 100644 --- a/main/displays/menus/cloudsettingsmenu.cpp +++ b/main/displays/menus/cloudsettingsmenu.cpp @@ -18,6 +18,7 @@ #ifdef FEATURE_CLOUD namespace { + using CloudTransmitTimeoutChangeScreen = espgui::makeComponent< espgui::ChangeValueDisplay, espgui::StaticText, @@ -50,14 +51,6 @@ using CloudSendRateChangeDisplay = espgui::makeComponent< espgui::BackActionInterface>, espgui::SwitchScreenAction >; - -using UdpCloudSendRateChangeDisplay = espgui::makeComponent< - espgui::ChangeValueDisplay, - espgui::StaticText, - UdpCloudSendIntervalAccessor, - espgui::BackActionInterface>, - espgui::SwitchScreenAction ->; } // namespace using namespace espgui; @@ -65,8 +58,6 @@ using namespace espgui; CloudSettingsMenu::CloudSettingsMenu() { constructMenuItem, ToggleBoolAction, CheckboxIcon, CloudEnabledAccessor>>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, UdpCloudEnabledAccessor>>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, UdpUseStdStringAccessor>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem>(); constructMenuItem>(); @@ -74,7 +65,6 @@ CloudSettingsMenu::CloudSettingsMenu() constructMenuItem>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } diff --git a/main/displays/menus/debugmenu.cpp b/main/displays/menus/debugmenu.cpp index ad293b8..f7cec17 100644 --- a/main/displays/menus/debugmenu.cpp +++ b/main/displays/menus/debugmenu.cpp @@ -74,7 +74,7 @@ DebugMenu::DebugMenu() constructMenuItem, SwitchScreenAction>>(); constructMenuItem>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::battery>>>(); -#ifdef FEATURE_CLOUD +#ifdef FEATURE_UDPCLOUD constructMenuItem, ToggleBoolAction, CheckboxIcon, CloudDebugEnableAccessor>>(); #endif constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); diff --git a/main/displays/menus/settingsmenu.cpp b/main/displays/menus/settingsmenu.cpp index a4c0901..1c43fe4 100644 --- a/main/displays/menus/settingsmenu.cpp +++ b/main/displays/menus/settingsmenu.cpp @@ -27,7 +27,12 @@ #include "displays/menus/wifisettingsmenu.h" #include "displays/menus/bluetoothsettingsmenu.h" #include "displays/menus/blesettingsmenu.h" +#ifdef FEATURE_CLOUD #include "displays/menus/cloudsettingsmenu.h" +#endif +#ifdef FEATURE_UDPCLOUD +#include "displays/menus/udpcloudsettingsmenu.h" +#endif #include "displays/menus/espnowmenu.h" #include "displays/menus/selectbuildservermenu.h" #include "displays/menus/timesettingsmenu.h" @@ -74,6 +79,9 @@ SettingsMenu::SettingsMenu() #ifdef FEATURE_CLOUD constructMenuItem, SwitchScreenAction>>(); #endif +#ifdef FEATURE_UDPCLOUD + constructMenuItem, SwitchScreenAction>>(); +#endif #ifdef FEATURE_OTA constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::update>>>(); #endif diff --git a/main/displays/menus/udpcloudsettingsmenu.cpp b/main/displays/menus/udpcloudsettingsmenu.cpp new file mode 100644 index 0000000..a9e4142 --- /dev/null +++ b/main/displays/menus/udpcloudsettingsmenu.cpp @@ -0,0 +1,42 @@ +#include "udpcloudsettingsmenu.h" + +// 3rdparty lib includes +#include +#include "menuitem.h" +#include "changevaluedisplay.h" +#include "actions/switchscreenaction.h" +#include "actions/toggleboolaction.h" +#include "actions/dummyaction.h" +#include "checkboxicon.h" +#include "icons/back.h" + +// local includes +#include "accessors/settingsaccessors.h" +#include "displays/menus/settingsmenu.h" + +#ifdef FEATURE_UDPCLOUD +namespace { +using UdpCloudSendRateChangeDisplay = espgui::makeComponent< + espgui::ChangeValueDisplay, + espgui::StaticText, + UdpCloudSendIntervalAccessor, + espgui::BackActionInterface>, + espgui::SwitchScreenAction +>; +} // namespace + +using namespace espgui; + +UdpCloudSettingsMenu::UdpCloudSettingsMenu() +{ + constructMenuItem, ToggleBoolAction, CheckboxIcon, UdpCloudEnabledAccessor>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, UdpUseStdStringAccessor>>(); + constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); +} + +void UdpCloudSettingsMenu::back() +{ + switchScreen(); +} +#endif diff --git a/main/displays/menus/udpcloudsettingsmenu.h b/main/displays/menus/udpcloudsettingsmenu.h new file mode 100644 index 0000000..288a3a6 --- /dev/null +++ b/main/displays/menus/udpcloudsettingsmenu.h @@ -0,0 +1,19 @@ +#pragma once + +// 3rdparty lib includes +#include "menudisplay.h" + +// local includes +#include "texts.h" + +#ifdef FEATURE_UDPCLOUD +class UdpCloudSettingsMenu : + public espgui::MenuDisplay, + public espgui::StaticText +{ +public: + UdpCloudSettingsMenu(); + + void back() override; +}; +#endif diff --git a/main/displays/popups/alertdisplay.cpp b/main/displays/popups/alertdisplay.cpp index bc45283..7adf1fd 100644 --- a/main/displays/popups/alertdisplay.cpp +++ b/main/displays/popups/alertdisplay.cpp @@ -3,6 +3,7 @@ // 3rdparty lib includes #include #include +#include AlertDisplay::AlertDisplay(std::string &&message, std::unique_ptr &&lastDisplay) : m_message{std::move(message)}, m_lastDisplay{std::move(lastDisplay)} @@ -38,6 +39,8 @@ void AlertDisplay::initOverlay() const auto right = espgui::tft.width() - rightMargin; const auto bottom = espgui::tft.height() - bottomMargin; + CPP_UNUSED(right) + //espgui::tft.drawRect(leftMargin, topMargin, espgui::tft.width() - leftMargin - rightMargin, espgui::tft.height() - topMargin - bottomMargin, TFT_WHITE); //espgui::tft.fillRect(leftMargin + 1, topMargin + 1, espgui::tft.width() - leftMargin - rightMargin - 2, espgui::tft.height() - topMargin - bottomMargin - 2, TFT_BLACK); diff --git a/main/displays/statusdisplay.cpp b/main/displays/statusdisplay.cpp index 1b27c5b..8b787db 100644 --- a/main/displays/statusdisplay.cpp +++ b/main/displays/statusdisplay.cpp @@ -99,8 +99,8 @@ void StatusDisplay::redraw() m_backStatus.redraw(controllers.back); tft.setTextFont(2); -#ifdef FEATURE_CLOUD - if(settings.cloudSettings.udpCloudEnabled && settings.cloudSettings.enableCloudDebug) +#ifdef FEATURE_UDPCLOUD + if(settings.udpCloudSettings.udpCloudEnabled && settings.udpCloudSettings.enableCloudDebug) { tft.fillRect(125, 258, 8, 8, (visualSendUdpPacket) ? TFT_DARKGREY : TFT_BLACK); } diff --git a/main/main.cpp b/main/main.cpp index 5674eca..9111943 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -27,14 +27,6 @@ using namespace std::chrono_literals; #include "screens.h" #include "presets.h" #include "statistics.h" -#ifdef FEATURE_CLOUD -#include "cloud.h" -#include "udpcloud.h" -#endif -#include "wifi_bobbycar.h" -#ifdef FEATURE_LEDSTRIP -#include "ledstrip.h" -#endif #include "modes/defaultmode.h" #include "displays/statusdisplay.h" #include "displays/lockscreen.h" @@ -44,9 +36,6 @@ using namespace std::chrono_literals; #endif #include "drivingstatistics.h" #include "newsettings.h" -#ifdef FEATURE_ESPNOW -#include "espnowfunctions.h" -#endif #include "taskmanager.h" namespace { @@ -54,13 +43,6 @@ std::optional lastModeUpdate; std::optional lastStatsUpdate; std::optional lastDisplayUpdate; std::optional lastDisplayRedraw; -#ifdef FEATURE_CLOUD -std::optional lastCloudCollect; -std::optional lastCloudSend; -#endif -#ifdef FEATURE_LEDSTRIP -std::optional lastLedstripUpdate; -#endif } extern "C" void app_main() @@ -70,10 +52,6 @@ extern "C" void app_main() digitalWrite(PINS_LEDBACKLIGHT, ledBacklightInverted ? LOW : HIGH); #endif - pinMode(3, INPUT_PULLUP); - - currentlyReverseBeeping = false; - initScreen(); bootLabel.redraw("settings"); @@ -109,21 +87,8 @@ extern "C" void app_main() task.setup(); } -#ifdef FEATURE_LEDSTRIP - bootLabel.redraw("LED strip"); - initLedStrip(); -#endif - - for (Controller &controller : controllers) - controller.command.buzzer = {}; - currentMode = &modes::defaultMode; -#ifdef FEATURE_CLOUD - bootLabel.redraw("cloud"); - initCloud(); -#endif - bootLabel.redraw("switchScreen"); #if defined(FEATURE_DPAD_5WIRESW) && defined(DPAD_5WIRESW_DEBUG) @@ -148,9 +113,6 @@ extern "C" void app_main() } } #endif -#ifdef FEATURE_ESPNOW - espnow::initESPNow(); -#endif while (true) { @@ -208,46 +170,15 @@ extern "C" void app_main() performance.lastTime = now; } -#ifdef FEATURE_ESPNOW - espnow::handle(); -#endif - -#ifdef FEATURE_CLOUD - if (!lastCloudCollect || now - *lastCloudCollect >= std::chrono::milliseconds{settings.boardcomputerHardware.timersSettings.cloudCollectRate}) - { - cloudCollect(); - - lastCloudCollect = now; - } - - if (!lastCloudSend || now - *lastCloudSend >= 1000ms/settings.boardcomputerHardware.timersSettings.cloudSendRate) - { - cloudSend(); - - lastCloudSend = now; - } -#endif - #ifdef FEATURE_BMS bms::update(); #endif -#ifdef FEATURE_LEDSTRIP - if (!lastLedstripUpdate || now - *lastLedstripUpdate >= 1000ms / 60) - { - updateLedStrip(); - - lastLedstripUpdate = now; - } -#endif #ifdef FEATURE_DNS_NS handle_dns_announce(); #endif calculateStatistics(); -#ifdef FEATURE_CLOUD - if (settings.cloudSettings.udpCloudEnabled) - sendUdpCloudPacket(); -#endif + if (battery::bootBatPercentage == -1) { if(controllers.front.feedbackValid && controllers.back.feedbackValid) diff --git a/main/presets.cpp b/main/presets.cpp index d764ba1..41ce45c 100644 --- a/main/presets.cpp +++ b/main/presets.cpp @@ -24,6 +24,8 @@ StringSettings makeDefaultStringSettings() }, #ifdef FEATURE_CLOUD .cloudUrl = {}, +#endif +#ifdef FEATURE_UDPCLOUD .udpCloudUrl = {}, #endif #ifdef FEATURE_OTA diff --git a/main/presets.h b/main/presets.h index d1a799a..e6421da 100644 --- a/main/presets.h +++ b/main/presets.h @@ -143,6 +143,8 @@ constexpr Settings::BoardcomputerHardware::TimersSettings defaultTimersSettings #ifdef FEATURE_CLOUD .cloudCollectRate = 100, .cloudSendRate = 1, +#endif +#ifdef FEATURE_UDPCLOUD .udpSendRateMs = 65, #endif }; @@ -170,7 +172,12 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware { #ifdef FEATURE_CLOUD constexpr Settings::CloudSettings defaultCloudSettings { .cloudEnabled = false, - .cloudTransmitTimeout = 10, + .cloudTransmitTimeout = 10 +}; +#endif + +#ifdef FEATURE_UDPCLOUD +constexpr Settings::UdpCloudSettings defaultUdpCloudSettings { .udpUid = 0, .udpCloudEnabled = false, .enableCloudDebug = false, @@ -329,6 +336,9 @@ constexpr Settings defaultSettings { .boardcomputerHardware = defaultBoardcomputerHardware, #ifdef FEATURE_CLOUD .cloudSettings = defaultCloudSettings, +#endif +#ifdef FEATURE_UDPCLOUD + .udpCloudSettings = defaultUdpCloudSettings, #endif .defaultMode = defaultDefaultMode, .tempomatMode = defaultTempomatMode, diff --git a/main/settings.h b/main/settings.h index b7916f6..98de3ab 100644 --- a/main/settings.h +++ b/main/settings.h @@ -110,6 +110,8 @@ struct Settings #ifdef FEATURE_CLOUD int16_t cloudCollectRate; int16_t cloudSendRate; +#endif +#ifdef FEATURE_UDPCLOUD int16_t udpSendRateMs; #endif } timersSettings; @@ -119,11 +121,16 @@ struct Settings struct CloudSettings { bool cloudEnabled; int16_t cloudTransmitTimeout; // in ms + } cloudSettings; +#endif + +#ifdef FEATURE_UDPCLOUD + struct UdpCloudSettings { uint32_t udpUid; bool udpCloudEnabled; bool enableCloudDebug; bool udpUseStdString; - } cloudSettings; + } udpCloudSettings; #endif struct DefaultMode { @@ -303,16 +310,21 @@ void Settings::executeForEveryCommonSetting(T &&callable) #ifdef FEATURE_CLOUD callable("cloudCollectRat", boardcomputerHardware.timersSettings.cloudCollectRate); callable("cloudSendRate", boardcomputerHardware.timersSettings.cloudSendRate); +#endif +#ifdef FEATURE_UDPCLOUD callable("udpSendRate", boardcomputerHardware.timersSettings.udpSendRateMs); #endif #ifdef FEATURE_CLOUD callable("cloudEnabled", cloudSettings.cloudEnabled); callable("clodTransmTmout", cloudSettings.cloudTransmitTimeout); - callable("cloudUDPUid", cloudSettings.udpUid); - callable("enUdpCloud", cloudSettings.udpCloudEnabled); - callable("debugCloud", cloudSettings.enableCloudDebug); - callable("udpusestdstr", cloudSettings.udpUseStdString); +#endif + +#ifdef FEATURE_UDPCLOUD + callable("cloudUDPUid", udpCloudSettings.udpUid); + callable("enUdpCloud", udpCloudSettings.udpCloudEnabled); + callable("debugCloud", udpCloudSettings.enableCloudDebug); + callable("udpusestdstr", udpCloudSettings.udpUseStdString); #endif #ifdef FEATURE_LEDSTRIP diff --git a/main/stringsettings.h b/main/stringsettings.h index 18755ca..b6bc27c 100644 --- a/main/stringsettings.h +++ b/main/stringsettings.h @@ -15,6 +15,9 @@ struct StringSettings #ifdef FEATURE_CLOUD std::string cloudUrl; +#endif + +#ifdef FEATURE_UDPCLOUD std::string udpCloudUrl; #endif @@ -81,6 +84,9 @@ void StringSettings::executeForEveryCommonSetting(T &&callable) #ifdef FEATURE_CLOUD callable("cloudUrl", cloudUrl); +#endif + +#ifdef FEATURE_UDPCLOUD callable("udpUrl", udpCloudUrl); #endif diff --git a/main/taskmanager.cpp b/main/taskmanager.cpp index 2a185f8..b3396c1 100644 --- a/main/taskmanager.cpp +++ b/main/taskmanager.cpp @@ -57,6 +57,18 @@ #ifdef FEATURE_WEBSERVER #include "webserver.h" #endif +#ifdef FEATURE_LEDSTRIP +#include "ledstrip.h" +#endif +#ifdef FEATURE_ESPNOW +#include "espnowfunctions.h" +#endif +#ifdef FEATURE_CLOUD +#include "cloud.h" +#endif +#ifdef FEATURE_UDPCLOUD +#include "udpcloud.h" +#endif using namespace std::chrono_literals; @@ -96,7 +108,7 @@ espcpputils::SchedulerTask schedulerTasksArr[] { espcpputils::SchedulerTask { "bluetooth", bluetooth_init, bluetooth_update, 100ms }, #endif #ifdef FEATURE_CAN - espcpputils::SchedulerTask { "can", can::initCan, can::parseCanInput, 50ms }, + espcpputils::SchedulerTask { "can", can::initCan, can::parseCanInput, 10ms }, #endif espcpputils::SchedulerTask { "debuginput", initDebugInput, handleDebugInput, 50ms }, #ifdef FEATURE_SERIAL @@ -111,6 +123,18 @@ espcpputils::SchedulerTask schedulerTasksArr[] { #ifdef FEATURE_WEBSERVER espcpputils::SchedulerTask { "webserver", initWebserver, handleWebserver, 100ms }, #endif +#ifdef FEATURE_LEDSTRIP + espcpputils::SchedulerTask { "ledstrip", initLedStrip, updateLedStrip, 30ms }, +#endif +#ifdef FEATURE_ESPNOW + espcpputils::SchedulerTask { "espnow", espnow::initESPNow, espnow::handle, 100ms }, +#endif +#ifdef FEATURE_CLOUD + espcpputils::SchedulerTask { "cloud", initCloud, updateCloud, 50ms }, +#endif +#ifdef FEATURE_UDPCLOUD + espcpputils::SchedulerTask { "udpcloud", udpCloudInit, udpCloudUpdate, 50ms }, +#endif }; } // namespace diff --git a/main/texts.cpp b/main/texts.cpp index 770bf1e..8ab3067 100644 --- a/main/texts.cpp +++ b/main/texts.cpp @@ -48,11 +48,17 @@ char TEXT_BLEENABLED[] = "BLE enabled"; #ifdef FEATURE_CLOUD //CloudSettingsMenu char TEXT_CLOUDSETTINGS[] = "Cloud settings"; -char TEXT_CLOUDENABLED[] = "Tcp Cloud enabled"; -char TEXT_UDPCLOUDENABLED[] = "Udp Cloud enabled"; +char TEXT_CLOUDENABLED[] = "Cloud enabled"; char TEXT_CLOUDTRANSMITTIMEOUT[] = "Transmit timeout"; char TEXT_CLOUDCOLLECTRATE[] = "Cloud collect rate"; char TEXT_CLOUDSENDRATE[] = "Cloud send rate"; +//char TEXT_BACK[] = "Back"; +#endif + +#ifdef FEATURE_UDPCLOUD +//UdpCloudSettingsMenu +char TEXT_UDPCLOUDSETTINGS[] = "UDP Cloud settings"; +char TEXT_UDPCLOUDENABLED[] = "Udp Cloud enabled"; char TEXT_UDPSENDRATE[] = "Udp send rate"; char TEXT_UDPUSESTRING[] = "Udp use std::string"; //char TEXT_BACK[] = "Back"; diff --git a/main/texts.h b/main/texts.h index 8c4f188..9a8db58 100644 --- a/main/texts.h +++ b/main/texts.h @@ -48,10 +48,16 @@ extern char TEXT_BLEENABLED[]; //CloudSettingsMenu extern char TEXT_CLOUDSETTINGS[]; extern char TEXT_CLOUDENABLED[]; -extern char TEXT_UDPCLOUDENABLED[]; extern char TEXT_CLOUDTRANSMITTIMEOUT[]; extern char TEXT_CLOUDCOLLECTRATE[]; extern char TEXT_CLOUDSENDRATE[]; +//extern char TEXT_BACK[]; +#endif + +#ifdef FEATURE_UDPCLOUD +//UdpCloudSettingsMenu +extern char TEXT_UDPCLOUDSETTINGS[]; +extern char TEXT_UDPCLOUDENABLED[]; extern char TEXT_UDPSENDRATE[]; extern char TEXT_UDPUSESTRING[]; //extern char TEXT_BACK[]; diff --git a/main/udpcloud.cpp b/main/udpcloud.cpp index 9397570..6452e24 100644 --- a/main/udpcloud.cpp +++ b/main/udpcloud.cpp @@ -1,6 +1,5 @@ -constexpr const char * const TAG = "bobbycloud"; +#include "udpcloud.h" -#ifdef FEATURE_CLOUD // 3rd party includes #include #include @@ -10,7 +9,6 @@ constexpr const char * const TAG = "bobbycloud"; #include // local includes -#include "udpcloud.h" #include "udpsender.h" #include "espwifistack.h" #include "esp_log.h" @@ -22,10 +20,28 @@ constexpr const char * const TAG = "bobbycloud"; #include "battery.h" #include "drivingstatistics.h" +#ifdef FEATURE_UDPCLOUD using namespace std::chrono_literals; + +namespace { +constexpr const char * const TAG = "bobbycloud"; + +espchrono::millis_clock::time_point timestampLastFailed; +} // namespace + // Little "flash" on statusdisplay when udp stuff is happening bool visualSendUdpPacket; -espchrono::millis_clock::time_point timestampLastFailed; + +void udpCloudInit() +{ + +} + +void udpCloudUpdate() +{ + if (settings.udpCloudSettings.udpCloudEnabled) + sendUdpCloudPacket(); +} void spamUdpBroadcast() { @@ -77,7 +93,7 @@ std::string buildUdpCloudJson() // const auto w_per_kmh = watt / avgSpeedKmh; // User ID - doc["uid"] = settings.cloudSettings.udpUid; + doc["uid"] = settings.udpCloudSettings.udpUid; doc["upt"] = uptime; const auto addController = [&](const Controller &controller, const bool isBack) { @@ -175,8 +191,8 @@ std::string buildUdpCloudString() buf += "{"; // User ID - if(settings.cloudSettings.udpUid) - buf += fmt::format("\"uid\":{},", settings.cloudSettings.udpUid); + if(settings.udpCloudSettings.udpUid) + buf += fmt::format("\"uid\":{},", settings.udpCloudSettings.udpUid); else buf += "\"uid\":null,"; @@ -343,7 +359,7 @@ void sendUdpCloudPacket() wifi_stack::UdpSender udpCloudSender; std::string buf; - buf = settings.cloudSettings.udpUseStdString ? buildUdpCloudString() : buildUdpCloudJson(); + buf = settings.udpCloudSettings.udpUseStdString ? buildUdpCloudString() : buildUdpCloudJson(); if (const auto result = udpCloudSender.send(receipient, buf); !result) diff --git a/main/udpcloud.h b/main/udpcloud.h index e6aa658..15ec9ff 100644 --- a/main/udpcloud.h +++ b/main/udpcloud.h @@ -1,10 +1,17 @@ #pragma once + +// system includes #include +#ifdef FEATURE_UDPCLOUD // Little "flash" on statusdisplay when udp stuff is happening extern bool visualSendUdpPacket; +void udpCloudInit(); +void udpCloudUpdate(); + void spamUdpBroadcast(); std::string buildUdpCloudJson(); std::string buildUdpCloudString(); void sendUdpCloudPacket(); +#endif diff --git a/main/utils.cpp b/main/utils.cpp index 2a71798..cfa0147 100644 --- a/main/utils.cpp +++ b/main/utils.cpp @@ -5,7 +5,7 @@ using namespace std::chrono_literals; -bool currentlyReverseBeeping; +bool currentlyReverseBeeping{}; bool reverseBeepToggle; espchrono::millis_clock::time_point lastReverseBeepToggle;