mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-09-12 17:45:49 +00:00
262 lines
6.0 KiB
C++
262 lines
6.0 KiB
C++
#ifndef ESPEASY_COMMON_H
|
|
#define ESPEASY_COMMON_H
|
|
|
|
// *****************************************************************************************
|
|
// For Arduino IDE users:
|
|
// When building using Custom.h, uncomment the next line:
|
|
//#define USE_CUSTOM_H
|
|
// *****************************************************************************************
|
|
|
|
/*
|
|
To modify the stock configuration without changing this repo file :
|
|
- define USE_CUSTOM_H as a build flags. ie : export PLATFORMIO_BUILD_FLAGS="'-DUSE_CUSTOM_H'"
|
|
- add a "Custom.h" file in this folder.
|
|
|
|
*/
|
|
|
|
#ifndef CORE_POST_2_5_0
|
|
#define STR_HELPER(x) #x
|
|
#define STR(x) STR_HELPER(x)
|
|
#endif
|
|
|
|
#ifdef USE_SECOND_HEAP
|
|
#include <umm_malloc/umm_heap_select.h>
|
|
#endif
|
|
|
|
#ifdef __GCC__
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
|
|
#include <stddef.h>
|
|
namespace std
|
|
{
|
|
using ::ptrdiff_t;
|
|
using ::size_t;
|
|
}
|
|
|
|
#include <stdint.h>
|
|
#include <Arduino.h>
|
|
#include <string.h>
|
|
|
|
|
|
#ifdef ESP8266
|
|
# if !defined(ARDUINO_ESP8266_RELEASE_2_4_0) && !defined(ARDUINO_ESP8266_RELEASE_2_3_0)
|
|
# define SUPPORT_ARP
|
|
# endif
|
|
#endif
|
|
|
|
#ifdef ESP32
|
|
# define SUPPORT_ARP
|
|
#endif
|
|
|
|
// User configuration
|
|
// Include Custom.h before ESPEasyDefaults.h.
|
|
#ifdef USE_CUSTOM_H
|
|
// make the compiler show a warning to confirm that this file is inlcuded
|
|
//#warning "**** Using Settings from Custom.h File ***"
|
|
#include "Custom.h"
|
|
#else
|
|
// Set as default
|
|
// #define PLUGIN_BUILD_NORMAL
|
|
#endif
|
|
|
|
#include "src/CustomBuild/ESPEasyDefaults.h"
|
|
#include "src/DataStructs/NodeStruct.h"
|
|
#include "src/Globals/RamTracker.h"
|
|
|
|
|
|
#ifndef FS_NO_GLOBALS
|
|
#define FS_NO_GLOBALS
|
|
#endif
|
|
#if defined(ESP8266)
|
|
|
|
#ifndef CORE_POST_3_0_0
|
|
#define IRAM_ATTR ICACHE_RAM_ATTR
|
|
#endif
|
|
|
|
|
|
|
|
#include <core_version.h>
|
|
#define NODE_TYPE_ID NODE_TYPE_ID_ESP_EASYM_STD
|
|
#include <lwip/init.h>
|
|
#ifndef LWIP_VERSION_MAJOR
|
|
#error
|
|
#endif
|
|
#if LWIP_VERSION_MAJOR == 2
|
|
// #include <lwip/priv/tcp_priv.h>
|
|
#else
|
|
#include <lwip/tcp_impl.h>
|
|
#endif
|
|
#include <ESP8266WiFi.h>
|
|
//#include <ESP8266Ping.h>
|
|
#ifndef LWIP_OPEN_SRC
|
|
#define LWIP_OPEN_SRC
|
|
#endif
|
|
#include <lwip/opt.h>
|
|
#include <lwip/udp.h>
|
|
#include <lwip/igmp.h>
|
|
#include <include/UdpContext.h>
|
|
#include <limits.h>
|
|
extern "C" {
|
|
#include <user_interface.h>
|
|
}
|
|
|
|
#define SMALLEST_OTA_IMAGE 276848 // smallest known 2-step OTA image
|
|
#define MAX_SKETCH_SIZE 1044464 // 1020 kB - 16 bytes
|
|
#endif
|
|
#if defined(ESP32)
|
|
|
|
// Temp fix for a missing core_version.h within ESP Arduino core. Wait until they actually have different releases
|
|
#define ARDUINO_ESP8266_RELEASE "2_4_0"
|
|
|
|
#ifdef ESP32S2
|
|
#define NODE_TYPE_ID NODE_TYPE_ID_ESP_EASY32S2_STD
|
|
#elif defined(ESP32C3)
|
|
#define NODE_TYPE_ID NODE_TYPE_ID_ESP_EASY32C3_STD
|
|
#else
|
|
#define NODE_TYPE_ID NODE_TYPE_ID_ESP_EASY32_STD
|
|
#endif
|
|
#if ESP_IDF_VERSION_MAJOR < 3
|
|
#define ICACHE_RAM_ATTR IRAM_ATTR
|
|
#endif
|
|
#include <WiFi.h>
|
|
// #include "esp32_ping.h"
|
|
|
|
#ifdef ESP32S2
|
|
#include <esp32s2/rom/rtc.h>
|
|
#else
|
|
#if ESP_IDF_VERSION_MAJOR > 3
|
|
#include <esp32/rom/rtc.h>
|
|
#else
|
|
#include <rom/rtc.h>
|
|
#endif
|
|
#endif
|
|
|
|
#include <esp_wifi.h> // Needed to call ESP-IDF functions like esp_wifi_....
|
|
#endif
|
|
|
|
#ifdef USE_LITTLEFS
|
|
#ifdef ESP32
|
|
#if ESP_IDF_VERSION_MAJOR >= 4
|
|
#include <LittleFS.h>
|
|
#define ESPEASY_FS LittleFS
|
|
#else
|
|
#include <LITTLEFS.h>
|
|
#define ESPEASY_FS LITTLEFS
|
|
#endif
|
|
#else
|
|
#include <LittleFS.h>
|
|
#define ESPEASY_FS LittleFS
|
|
#endif
|
|
#else
|
|
#ifdef ESP32
|
|
#include <SPIFFS.h>
|
|
#endif
|
|
#define ESPEASY_FS SPIFFS
|
|
#endif
|
|
|
|
|
|
#include <WiFiUdp.h>
|
|
#include <Wire.h>
|
|
#include <SPI.h>
|
|
#include <FS.h>
|
|
#ifdef FEATURE_SD
|
|
#include <SD.h>
|
|
#else
|
|
using namespace fs;
|
|
#endif
|
|
#include <base64.h>
|
|
|
|
|
|
// Include custom first, then build info. (one may want to set BUILD_GIT for example)
|
|
#include "src/CustomBuild/ESPEasy_buildinfo.h"
|
|
#include "src/CustomBuild/ESPEasyLimits.h"
|
|
#include "src/CustomBuild/define_plugin_sets.h"
|
|
|
|
#ifdef ESP32
|
|
#include <esp8266-compat.h>
|
|
|
|
#endif
|
|
|
|
|
|
#define ZERO_FILL(S) memset((S), 0, sizeof(S))
|
|
#define ZERO_TERMINATE(S) S[sizeof(S) - 1] = 0
|
|
|
|
|
|
|
|
String getUnknownString();
|
|
|
|
extern const String EMPTY_STRING;
|
|
|
|
|
|
|
|
/******************************************************************************\
|
|
* Detect core versions *******************************************************
|
|
\******************************************************************************/
|
|
|
|
#ifndef ESP32
|
|
#if defined(ARDUINO_ESP8266_RELEASE_2_4_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_1) || defined(ARDUINO_ESP8266_RELEASE_2_4_2)
|
|
#ifndef CORE_2_4_X
|
|
#define CORE_2_4_X
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(ARDUINO_ESP8266_RELEASE_2_3_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_1)
|
|
#ifndef CORE_PRE_2_4_2
|
|
#define CORE_PRE_2_4_2
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(ARDUINO_ESP8266_RELEASE_2_3_0) || defined(CORE_2_4_X)
|
|
#ifndef CORE_PRE_2_5_0
|
|
#define CORE_PRE_2_5_0
|
|
#endif
|
|
#else
|
|
#ifndef CORE_POST_2_5_0
|
|
#define CORE_POST_2_5_0
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef FORCE_PRE_2_5_0
|
|
#ifdef CORE_POST_2_5_0
|
|
#undef CORE_POST_2_5_0
|
|
#endif
|
|
#endif
|
|
#endif // ESP32
|
|
|
|
|
|
|
|
|
|
// Enable FEATURE_ADC_VCC to measure supply voltage using the analog pin
|
|
// Please note that the TOUT pin has to be disconnected in this mode
|
|
// Use the "System Info" device to read the VCC value
|
|
#ifndef FEATURE_ADC_VCC
|
|
#define FEATURE_ADC_VCC false
|
|
#endif
|
|
|
|
#ifndef ARDUINO_OTA_PORT
|
|
#if defined(ESP32)
|
|
#define ARDUINO_OTA_PORT 3232
|
|
#else
|
|
// Do not use port 8266 for OTA, since that's used for ESPeasy p2p
|
|
#define ARDUINO_OTA_PORT 18266
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(ESP8266)
|
|
//enable Arduino OTA updating.
|
|
//Note: This adds around 10kb to the firmware size, and 1kb extra ram.
|
|
// #define FEATURE_ARDUINO_OTA
|
|
|
|
//enable mDNS mode (adds about 6kb ram and some bytes IRAM)
|
|
// #define FEATURE_MDNS
|
|
#endif
|
|
#if defined(ESP32)
|
|
//#define FEATURE_ARDUINO_OTA
|
|
//#define FEATURE_MDNS
|
|
#endif
|
|
|
|
|
|
#endif // ESPEASY_COMMON_H
|