cloud and udpcloud splitup and into taskmanager migrated

This commit is contained in:
2021-12-19 17:20:55 +01:00
parent 058745abd5
commit e0f3ceee7c
26 changed files with 214 additions and 71 deletions

View File

@ -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

View File

@ -83,6 +83,7 @@ set(BOBBYCAR_BUILDFLAGS
# -DDEFAULT_GAMETRAKDISTMAX=4095
-DFEATURE_POWERSUPPLY
-DFEATURE_CLOUD
# -DFEATURE_UDPCLOUD
-DFEATURE_LEDBACKLIGHT
-DPINS_LEDBACKLIGHT=23
-DLEDBACKLIGHT_INVERTED

View File

@ -79,6 +79,7 @@ set(BOBBYCAR_BUILDFLAGS
# -DDEFAULT_GAMETRAKDISTMAX=4095
# -DFEATURE_POWERSUPPLY
# -DFEATURE_CLOUD
# -DFEATURE_UDPCLOUD
# -DFEATURE_LEDBACKLIGHT
# -DPINS_LEDBACKLIGHT=23
# -DLEDBACKLIGHT_INVERTED

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -23,6 +23,7 @@ void destroyCloud();
void startCloud();
void initCloud();
void updateCloud();
void cloudCollect();
void cloudSend();
#endif

View File

@ -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>>>();
}

View File

@ -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>>>();

View File

@ -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

View 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

View 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

View File

@ -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);

View File

@ -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);
}

View File

@ -27,11 +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"
#include "modes/defaultmode.h"
#include "displays/statusdisplay.h"
#include "displays/lockscreen.h"
@ -48,10 +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
}
extern "C" void app_main()
@ -98,11 +89,6 @@ extern "C" void app_main()
currentMode = &modes::defaultMode;
#ifdef FEATURE_CLOUD
bootLabel.redraw("cloud");
initCloud();
#endif
bootLabel.redraw("switchScreen");
#if defined(FEATURE_DPAD_5WIRESW) && defined(DPAD_5WIRESW_DEBUG)
@ -184,22 +170,6 @@ extern "C" void app_main()
performance.lastTime = now;
}
#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
@ -208,10 +178,7 @@ extern "C" void app_main()
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)

View File

@ -24,6 +24,8 @@ StringSettings makeDefaultStringSettings()
},
#ifdef FEATURE_CLOUD
.cloudUrl = {},
#endif
#ifdef FEATURE_UDPCLOUD
.udpCloudUrl = {},
#endif
#ifdef FEATURE_OTA

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -63,6 +63,12 @@
#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;
@ -122,6 +128,13 @@ espcpputils::SchedulerTask schedulerTasksArr[] {
#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

View File

@ -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";

View File

@ -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[];

View File

@ -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)

View File

@ -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