Merge pull request #164 from bobbycar-graz/more_tasks_in_taskmanager
Add more tasks to task manager
This commit is contained in:
@ -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
|
||||
|
@ -83,6 +83,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
# -DDEFAULT_GAMETRAKDISTMAX=4095
|
||||
-DFEATURE_POWERSUPPLY
|
||||
-DFEATURE_CLOUD
|
||||
# -DFEATURE_UDPCLOUD
|
||||
-DFEATURE_LEDBACKLIGHT
|
||||
-DPINS_LEDBACKLIGHT=23
|
||||
-DLEDBACKLIGHT_INVERTED
|
||||
|
@ -79,6 +79,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
# -DDEFAULT_GAMETRAKDISTMAX=4095
|
||||
# -DFEATURE_POWERSUPPLY
|
||||
# -DFEATURE_CLOUD
|
||||
# -DFEATURE_UDPCLOUD
|
||||
# -DFEATURE_LEDBACKLIGHT
|
||||
# -DPINS_LEDBACKLIGHT=23
|
||||
# -DLEDBACKLIGHT_INVERTED
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -134,10 +134,13 @@ struct DisplayRedrawRateAccessor : public RefAccessorSaveSettings<int16_t> { int
|
||||
#ifdef FEATURE_CLOUD
|
||||
struct CloudCollectRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.cloudCollectRate; } };
|
||||
struct CloudSendRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.cloudSendRate; } };
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_UDPCLOUD
|
||||
struct UdpCloudSendIntervalAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.udpSendRateMs; } };
|
||||
struct UdpCloudEnabledAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.cloudSettings.udpCloudEnabled; } };
|
||||
struct CloudDebugEnableAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.cloudSettings.enableCloudDebug; } };
|
||||
struct UdpUseStdStringAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.cloudSettings.udpUseStdString; } };
|
||||
struct UdpCloudEnabledAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.udpCloudSettings.udpCloudEnabled; } };
|
||||
struct CloudDebugEnableAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.udpCloudSettings.enableCloudDebug; } };
|
||||
struct UdpUseStdStringAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.udpCloudSettings.udpUseStdString; } };
|
||||
#endif
|
||||
|
||||
// DefaultMode
|
||||
|
@ -1,5 +1,8 @@
|
||||
#include "cloud.h"
|
||||
|
||||
// system includes
|
||||
#include <optional>
|
||||
|
||||
// esp-idf includes
|
||||
#include <esp_log.h>
|
||||
|
||||
@ -17,6 +20,9 @@ espchrono::millis_clock::time_point lastCreateTry;
|
||||
espchrono::millis_clock::time_point lastStartTry;
|
||||
std::string cloudBuffer;
|
||||
|
||||
std::optional<espchrono::millis_clock::time_point> lastCloudCollect;
|
||||
std::optional<espchrono::millis_clock::time_point> 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)
|
||||
|
@ -23,6 +23,7 @@ void destroyCloud();
|
||||
void startCloud();
|
||||
|
||||
void initCloud();
|
||||
void updateCloud();
|
||||
void cloudCollect();
|
||||
void cloudSend();
|
||||
#endif
|
||||
|
@ -21,6 +21,7 @@ void initDebugInput()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
//Serial.setDebugOutput(true);
|
||||
pinMode(3, INPUT_PULLUP);
|
||||
}
|
||||
|
||||
void handleDebugInput()
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#ifdef FEATURE_CLOUD
|
||||
namespace {
|
||||
|
||||
using CloudTransmitTimeoutChangeScreen = espgui::makeComponent<
|
||||
espgui::ChangeValueDisplay<int16_t>,
|
||||
espgui::StaticText<TEXT_CLOUDTRANSMITTIMEOUT>,
|
||||
@ -50,14 +51,6 @@ using CloudSendRateChangeDisplay = espgui::makeComponent<
|
||||
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
|
||||
espgui::SwitchScreenAction<CloudSettingsMenu>
|
||||
>;
|
||||
|
||||
using UdpCloudSendRateChangeDisplay = espgui::makeComponent<
|
||||
espgui::ChangeValueDisplay<int16_t>,
|
||||
espgui::StaticText<TEXT_UDPSENDRATE>,
|
||||
UdpCloudSendIntervalAccessor,
|
||||
espgui::BackActionInterface<espgui::SwitchScreenAction<CloudSettingsMenu>>,
|
||||
espgui::SwitchScreenAction<CloudSettingsMenu>
|
||||
>;
|
||||
} // namespace
|
||||
|
||||
using namespace espgui;
|
||||
@ -65,8 +58,6 @@ using namespace espgui;
|
||||
CloudSettingsMenu::CloudSettingsMenu()
|
||||
{
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDENABLED>, ToggleBoolAction, CheckboxIcon, CloudEnabledAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPCLOUDENABLED>, ToggleBoolAction, CheckboxIcon, UdpCloudEnabledAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPUSESTRING>, ToggleBoolAction, CheckboxIcon, UdpUseStdStringAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDTRANSMITTIMEOUT>, SwitchScreenAction<CloudTransmitTimeoutChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, CloudCreatedText, DisabledColor, DummyAction>>();
|
||||
constructMenuItem<makeComponent<MenuItem, CloudStartedText, DisabledColor, DummyAction>>();
|
||||
@ -74,7 +65,6 @@ CloudSettingsMenu::CloudSettingsMenu()
|
||||
constructMenuItem<makeComponent<MenuItem, CloudBufferLengthText, DisabledColor, DummyAction>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDCOLLECTRATE>, SwitchScreenAction<CloudCollectRateChangeDisplay>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CLOUDSENDRATE>, SwitchScreenAction<CloudSendRateChangeDisplay>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPSENDRATE>, SwitchScreenAction<UdpCloudSendRateChangeDisplay>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
}
|
||||
|
||||
|
@ -74,7 +74,7 @@ DebugMenu::DebugMenu()
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DYNAMICMENU>, SwitchScreenAction<DynamicDebugMenu>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, EmptyText, DummyAction>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BATTERYDEBUG>, SwitchScreenAction<BatteryDebugMenu>, StaticMenuItemIcon<&bobbyicons::battery>>>();
|
||||
#ifdef FEATURE_CLOUD
|
||||
#ifdef FEATURE_UDPCLOUD
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TOGGLECLOUDDEBUG>, ToggleBoolAction, CheckboxIcon, CloudDebugEnableAccessor>>();
|
||||
#endif
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
|
@ -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<makeComponent<MenuItem, StaticText<TEXT_CLOUDSETTINGS>, SwitchScreenAction<CloudSettingsMenu>>>();
|
||||
#endif
|
||||
#ifdef FEATURE_UDPCLOUD
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPCLOUDSETTINGS>, SwitchScreenAction<UdpCloudSettingsMenu>>>();
|
||||
#endif
|
||||
#ifdef FEATURE_OTA
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SELECTBUILDSERVERMENU>, SwitchScreenAction<SelectBuildServerMenu>, StaticMenuItemIcon<&bobbyicons::update>>>();
|
||||
#endif
|
||||
|
42
main/displays/menus/udpcloudsettingsmenu.cpp
Normal file
42
main/displays/menus/udpcloudsettingsmenu.cpp
Normal file
@ -0,0 +1,42 @@
|
||||
#include "udpcloudsettingsmenu.h"
|
||||
|
||||
// 3rdparty lib includes
|
||||
#include <fmt/core.h>
|
||||
#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<int16_t>,
|
||||
espgui::StaticText<TEXT_UDPSENDRATE>,
|
||||
UdpCloudSendIntervalAccessor,
|
||||
espgui::BackActionInterface<espgui::SwitchScreenAction<UdpCloudSettingsMenu>>,
|
||||
espgui::SwitchScreenAction<UdpCloudSettingsMenu>
|
||||
>;
|
||||
} // namespace
|
||||
|
||||
using namespace espgui;
|
||||
|
||||
UdpCloudSettingsMenu::UdpCloudSettingsMenu()
|
||||
{
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPCLOUDENABLED>, ToggleBoolAction, CheckboxIcon, UdpCloudEnabledAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPUSESTRING>, ToggleBoolAction, CheckboxIcon, UdpUseStdStringAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_UDPSENDRATE>, SwitchScreenAction<UdpCloudSendRateChangeDisplay>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
}
|
||||
|
||||
void UdpCloudSettingsMenu::back()
|
||||
{
|
||||
switchScreen<SettingsMenu>();
|
||||
}
|
||||
#endif
|
19
main/displays/menus/udpcloudsettingsmenu.h
Normal file
19
main/displays/menus/udpcloudsettingsmenu.h
Normal file
@ -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<TEXT_UDPCLOUDSETTINGS>
|
||||
{
|
||||
public:
|
||||
UdpCloudSettingsMenu();
|
||||
|
||||
void back() override;
|
||||
};
|
||||
#endif
|
@ -3,6 +3,7 @@
|
||||
// 3rdparty lib includes
|
||||
#include <tftinstance.h>
|
||||
#include <screenmanager.h>
|
||||
#include <cppmacros.h>
|
||||
|
||||
AlertDisplay::AlertDisplay(std::string &&message, std::unique_ptr<Display> &&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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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<espchrono::millis_clock::time_point> lastModeUpdate;
|
||||
std::optional<espchrono::millis_clock::time_point> lastStatsUpdate;
|
||||
std::optional<espchrono::millis_clock::time_point> lastDisplayUpdate;
|
||||
std::optional<espchrono::millis_clock::time_point> lastDisplayRedraw;
|
||||
#ifdef FEATURE_CLOUD
|
||||
std::optional<espchrono::millis_clock::time_point> lastCloudCollect;
|
||||
std::optional<espchrono::millis_clock::time_point> lastCloudSend;
|
||||
#endif
|
||||
#ifdef FEATURE_LEDSTRIP
|
||||
std::optional<espchrono::millis_clock::time_point> 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)
|
||||
|
@ -24,6 +24,8 @@ StringSettings makeDefaultStringSettings()
|
||||
},
|
||||
#ifdef FEATURE_CLOUD
|
||||
.cloudUrl = {},
|
||||
#endif
|
||||
#ifdef FEATURE_UDPCLOUD
|
||||
.udpCloudUrl = {},
|
||||
#endif
|
||||
#ifdef FEATURE_OTA
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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[];
|
||||
|
@ -1,6 +1,5 @@
|
||||
constexpr const char * const TAG = "bobbycloud";
|
||||
#include "udpcloud.h"
|
||||
|
||||
#ifdef FEATURE_CLOUD
|
||||
// 3rd party includes
|
||||
#include <ArduinoJson.h>
|
||||
#include <FastLED.h>
|
||||
@ -10,7 +9,6 @@ constexpr const char * const TAG = "bobbycloud";
|
||||
#include <espwifistack.h>
|
||||
|
||||
// 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)
|
||||
|
@ -1,10 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
// system includes
|
||||
#include <string>
|
||||
|
||||
#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
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
bool currentlyReverseBeeping;
|
||||
bool currentlyReverseBeeping{};
|
||||
bool reverseBeepToggle;
|
||||
espchrono::millis_clock::time_point lastReverseBeepToggle;
|
||||
|
||||
|
Reference in New Issue
Block a user