From 239ba335b1c76ecbd0cb0c8a5f657b236b60694d Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 18 Jul 2021 21:44:24 +0200 Subject: [PATCH] changes to make it compile standalone --- lib_standalone/Arduino.h | 9 ++++++++- lib_standalone/ESP8266React.h | 6 ++++++ lib_standalone/WString.h | 5 +++++ src/emsesp.cpp | 1 + src/web/WebDevicesService.cpp | 2 +- src/web/WebLogService.cpp | 6 ++---- src/web/WebSettingsService.cpp | 9 ++++++--- 7 files changed, 29 insertions(+), 9 deletions(-) diff --git a/lib_standalone/Arduino.h b/lib_standalone/Arduino.h index 1884c238b..2b1f3f3bb 100644 --- a/lib_standalone/Arduino.h +++ b/lib_standalone/Arduino.h @@ -26,6 +26,8 @@ #include #include // for count_if +#include "WString.h" + #include #define IPAddress std::string @@ -129,7 +131,12 @@ class Print { size_t println(unsigned long value) { return print(std::to_string(value).c_str()) + println(); } + virtual void flush(){}; + + size_t print(const String & str) { + return print(str.c_str()); + } }; class Stream : public Print { @@ -206,6 +213,6 @@ void yield(void); void setup(void); void loop(void); -#include "WString.h" + #endif diff --git a/lib_standalone/ESP8266React.h b/lib_standalone/ESP8266React.h index e1a94119e..908b776b6 100644 --- a/lib_standalone/ESP8266React.h +++ b/lib_standalone/ESP8266React.h @@ -58,6 +58,7 @@ class DummySettings { uint16_t publish_time_mixer = 10; uint16_t publish_time_other = 10; uint16_t publish_time_sensor = 10; + bool enableIPv6 = false; #define FACTORY_MQTT_MAX_TOPIC_LENGTH 128 @@ -80,6 +81,7 @@ class DummySettingsService : public StatefulService { #define NetworkSettings DummySettings #define SecuritySettings DummySettings #define MqttSettings DummySettings +#define NTPSettings DummySettings class ESP8266React { public: @@ -110,6 +112,10 @@ class ESP8266React { return &_settings; } + StatefulService * getNTPSettingsService() { + return &_settings; + } + private: DummySettingsService _settings; SecuritySettingsService _securitySettingsService; diff --git a/lib_standalone/WString.h b/lib_standalone/WString.h index 98cb2dcbb..5914fd141 100644 --- a/lib_standalone/WString.h +++ b/lib_standalone/WString.h @@ -56,6 +56,11 @@ inline bool operator==(const std::string & lhs, const ::String & rhs) { return lhs == rhs.c_str(); } +inline bool operator!=(const ::String & lhs, const ::String & rhs) { + return lhs.c_str() != rhs.c_str(); +} + + size_t strlcpy(char * __restrict dst, const char * __restrict src, size_t dsize); size_t strlcat(char * dst, const char * src, size_t siz); diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 9aa799ff1..3a8820f0a 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -1200,6 +1200,7 @@ void EMSESP::start() { shower_.start(); // initialize shower timer and shower alert dallassensor_.start(); // dallas external sensors webServer.begin(); // start web server + webLogService.start(); // start web log service emsdevices.reserve(5); // reserve space for initially 5 devices to avoid mem frag issues diff --git a/src/web/WebDevicesService.cpp b/src/web/WebDevicesService.cpp index e5bb70911..8577aa539 100644 --- a/src/web/WebDevicesService.cpp +++ b/src/web/WebDevicesService.cpp @@ -168,7 +168,7 @@ void WebDevicesService::write_sensor(AsyncWebServerRequest * request, JsonVarian strlcpy(name, id.c_str(), sizeof(name)); if (no > 0 && no < 100) { - itoa(no, nostr, 10); + Helpers::itoa(nostr, no, 10); char * c = strchr(name, ' '); // find space if (c != nullptr) { *c = '\0'; diff --git a/src/web/WebLogService.cpp b/src/web/WebLogService.cpp index c1242d23e..9674f91fd 100644 --- a/src/web/WebLogService.cpp +++ b/src/web/WebLogService.cpp @@ -38,15 +38,13 @@ WebLogService::WebLogService(AsyncWebServer * server, SecurityManager * security // for setting a level server->addHandler(&_setLevel); - - // start event source service - start(); } void WebLogService::forbidden(AsyncWebServerRequest * request) { request->send(403); } +// start event source service void WebLogService::start() { uuid::log::Logger::register_handler(this, uuid::log::Level::INFO); // default is INFO } @@ -81,7 +79,7 @@ void WebLogService::operator<<(std::shared_ptr message) { } log_messages_.emplace_back(log_message_id_++, std::move(message)); EMSESP::esp8266React.getNTPSettingsService()->read([&](NTPSettings & settings) { - if (!settings.enabled || (time(nullptr) < 1500000000UL)) { + if (!settings.enabled || (time(nullptr) < 1500000000L)) { time_offset_ = 0; } else if (!time_offset_) { time_offset_ = time(nullptr) - uuid::get_uptime_sec(); diff --git a/src/web/WebSettingsService.cpp b/src/web/WebSettingsService.cpp index 0d0099cac..3b9aa6b3c 100644 --- a/src/web/WebSettingsService.cpp +++ b/src/web/WebSettingsService.cpp @@ -134,11 +134,13 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) settings.syslog_mark_interval = root["syslog_mark_interval"] | EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL; check_flag(prev, settings.syslog_mark_interval, ChangeFlags::SYSLOG); +#ifndef EMSESP_STANDALONE String old_syslog_host = settings.syslog_host; settings.syslog_host = root["syslog_host"] | EMSESP_DEFAULT_SYSLOG_HOST; if (!old_syslog_host.equals(settings.syslog_host)) { add_flags(ChangeFlags::SYSLOG); } +#endif prev = settings.syslog_port; settings.syslog_port = root["syslog_port"] | EMSESP_DEFAULT_SYSLOG_PORT; @@ -184,7 +186,8 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) // these need reboots to be applied settings.ems_bus_id = root["ems_bus_id"] | EMSESP_DEFAULT_EMS_BUS_ID; settings.master_thermostat = root["master_thermostat"] | EMSESP_DEFAULT_MASTER_THERMOSTAT; - settings.low_clock = root["low_clock"] | false;; + settings.low_clock = root["low_clock"] | false; + ; // doesn't need any follow-up actions settings.notoken_api = root["notoken_api"] | EMSESP_DEFAULT_NOTOKEN_API; @@ -193,10 +196,10 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) settings.dallas_format = root["dallas_format"] | EMSESP_DEFAULT_DALLAS_FORMAT; EMSESP::dallassensor_.dallas_format(settings.dallas_format); - settings.bool_format = root["bool_format"] | EMSESP_DEFAULT_BOOL_FORMAT; + settings.bool_format = root["bool_format"] | EMSESP_DEFAULT_BOOL_FORMAT; EMSESP::bool_format(settings.bool_format); - settings.enum_format = root["enum_format"] | EMSESP_DEFAULT_ENUM_FORMAT; + settings.enum_format = root["enum_format"] | EMSESP_DEFAULT_ENUM_FORMAT; EMSESP::enum_format(settings.enum_format); for (uint8_t i = 0; i < NUM_SENSOR_NAMES; i++) {