make standalone compile

This commit is contained in:
Proddy
2023-07-13 21:50:34 +02:00
parent 0afda87092
commit 9ff8d01e93
9 changed files with 189 additions and 327 deletions

View File

@@ -17,8 +17,8 @@ MAKEFLAGS+="j "
#TARGET := $(notdir $(CURDIR)) #TARGET := $(notdir $(CURDIR))
TARGET := emsesp TARGET := emsesp
BUILD := build BUILD := build
SOURCES := src src/* lib_standalone lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src src/devices lib/ArduinoJson/src lib/PButton lib/semver SOURCES := src src/* lib_standalone lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src src/devices lib/ArduinoJson/src lib/PButton lib/semver lib/espMqttClient/src lib/espMqttClient/src/*
INCLUDES := src lib_standalone lib/ArduinoJson/src lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src lib/uuid-telnet/src lib/uuid-syslog/src lib/semver lib/* src/devices INCLUDES := src lib_standalone lib/espMqttClient/src lib/espMqttClient/src/Transport lib/ArduinoJson/src lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src lib/uuid-telnet/src lib/uuid-syslog/src lib/semver lib/* src/devices
LIBRARIES := LIBRARIES :=
CPPCHECK = cppcheck CPPCHECK = cppcheck
@@ -36,8 +36,8 @@ CXX_STANDARD := -std=c++11
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Defined Symbols # Defined Symbols
#---------------------------------------------------------------------- #----------------------------------------------------------------------
DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0 -DARDUINO DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0
DEFINES += -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST DEFINES += -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__
DEFINES += $(ARGS) DEFINES += $(ARGS)
DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
@@ -79,7 +79,7 @@ CPPFLAGS += -g3
CPPFLAGS += -Os CPPFLAGS += -Os
CFLAGS += $(CPPFLAGS) CFLAGS += $(CPPFLAGS)
CFLAGS += -Wall -Wextra -Werror -Wswitch-enum -Wno-unused-parameter -Wno-inconsistent-missing-override -Wno-unused-lambda-capture CFLAGS += -Wall -Wextra -Werror -Wswitch-enum -Wno-unused-parameter
CXXFLAGS += $(CFLAGS) -MMD CXXFLAGS += $(CFLAGS) -MMD

View File

@@ -24,167 +24,171 @@ the LICENSE file.
#include "Transport/Transport.h" #include "Transport/Transport.h"
class MqttClient { class MqttClient {
public: public:
virtual ~MqttClient(); virtual ~MqttClient();
bool connected() const; bool connected() const;
bool disconnected() const; bool disconnected() const;
bool connect(); bool connect();
bool disconnect(bool force = false); bool disconnect(bool force = false);
template <typename... Args> template <typename... Args>
uint16_t subscribe(const char* topic, uint8_t qos, Args&&... args) { uint16_t subscribe(const char * topic, uint8_t qos, Args &&... args) {
uint16_t packetId = _getNextPacketId(); uint16_t packetId = _getNextPacketId();
if (_state != State::connected) { if (_state != State::connected) {
packetId = 0; packetId = 0;
} else { } else {
EMC_SEMAPHORE_TAKE(); EMC_SEMAPHORE_TAKE();
if (!_addPacket(packetId, topic, qos, std::forward<Args>(args) ...)) { if (!_addPacket(packetId, topic, qos, std::forward<Args>(args)...)) {
emc_log_e("Could not create SUBSCRIBE packet"); emc_log_e("Could not create SUBSCRIBE packet");
packetId = 0; packetId = 0;
} }
EMC_SEMAPHORE_GIVE(); EMC_SEMAPHORE_GIVE();
}
return packetId;
} }
return packetId; template <typename... Args>
} uint16_t unsubscribe(const char * topic, Args &&... args) {
template <typename... Args> uint16_t packetId = _getNextPacketId();
uint16_t unsubscribe(const char* topic, Args&&... args) { if (_state != State::connected) {
uint16_t packetId = _getNextPacketId(); packetId = 0;
if (_state != State::connected) { } else {
packetId = 0; EMC_SEMAPHORE_TAKE();
} else { if (!_addPacket(packetId, topic, std::forward<Args>(args)...)) {
EMC_SEMAPHORE_TAKE(); emc_log_e("Could not create UNSUBSCRIBE packet");
if (!_addPacket(packetId, topic, std::forward<Args>(args) ...)) { packetId = 0;
emc_log_e("Could not create UNSUBSCRIBE packet"); }
packetId = 0; EMC_SEMAPHORE_GIVE();
} }
EMC_SEMAPHORE_GIVE(); return packetId;
} }
return packetId; uint16_t publish(const char * topic, uint8_t qos, bool retain, const uint8_t * payload, size_t length);
} uint16_t publish(const char * topic, uint8_t qos, bool retain, const char * payload);
uint16_t publish(const char* topic, uint8_t qos, bool retain, const uint8_t* payload, size_t length); uint16_t publish(const char * topic, uint8_t qos, bool retain, espMqttClientTypes::PayloadCallback callback, size_t length);
uint16_t publish(const char* topic, uint8_t qos, bool retain, const char* payload); void clearQueue(bool deleteSessionData = false); // Not MQTT compliant and may cause unpredictable results when `deleteSessionData` = true!
uint16_t publish(const char* topic, uint8_t qos, bool retain, espMqttClientTypes::PayloadCallback callback, size_t length); const char * getClientId() const;
void clearQueue(bool deleteSessionData = false); // Not MQTT compliant and may cause unpredictable results when `deleteSessionData` = true! uint16_t getQueue() const;
const char* getClientId() const; void loop();
uint16_t getQueue() const;
void loop();
protected: protected:
explicit MqttClient(espMqttClientTypes::UseInternalTask useInternalTask, uint8_t priority = 1, uint8_t core = 1); explicit MqttClient(espMqttClientTypes::UseInternalTask useInternalTask, uint8_t priority = 1, uint8_t core = 1);
espMqttClientTypes::UseInternalTask _useInternalTask; espMqttClientTypes::UseInternalTask _useInternalTask;
espMqttClientInternals::Transport* _transport; espMqttClientInternals::Transport * _transport;
espMqttClientTypes::OnConnectCallback _onConnectCallback; espMqttClientTypes::OnConnectCallback _onConnectCallback;
espMqttClientTypes::OnDisconnectCallback _onDisconnectCallback; espMqttClientTypes::OnDisconnectCallback _onDisconnectCallback;
espMqttClientTypes::OnSubscribeCallback _onSubscribeCallback; espMqttClientTypes::OnSubscribeCallback _onSubscribeCallback;
espMqttClientTypes::OnUnsubscribeCallback _onUnsubscribeCallback; espMqttClientTypes::OnUnsubscribeCallback _onUnsubscribeCallback;
espMqttClientTypes::OnMessageCallback _onMessageCallback; espMqttClientTypes::OnMessageCallback _onMessageCallback;
espMqttClientTypes::OnPublishCallback _onPublishCallback; espMqttClientTypes::OnPublishCallback _onPublishCallback;
espMqttClientTypes::OnErrorCallback _onErrorCallback; espMqttClientTypes::OnErrorCallback _onErrorCallback;
typedef void(*mqttClientHook)(void*); typedef void (*mqttClientHook)(void *);
const char* _clientId; const char * _clientId;
IPAddress _ip; IPAddress _ip;
const char* _host; const char * _host;
uint16_t _port; uint16_t _port;
bool _useIp; bool _useIp;
uint32_t _keepAlive; uint32_t _keepAlive;
bool _cleanSession; bool _cleanSession;
const char* _username; const char * _username;
const char* _password; const char * _password;
const char* _willTopic; const char * _willTopic;
const uint8_t* _willPayload; const uint8_t * _willPayload;
uint16_t _willPayloadLength; uint16_t _willPayloadLength;
uint8_t _willQos; uint8_t _willQos;
bool _willRetain; bool _willRetain;
uint32_t _timeout; uint32_t _timeout;
// state is protected to allow state changes by the transport system, defined in child classes // state is protected to allow state changes by the transport system, defined in child classes
// eg. to allow AsyncTCP // eg. to allow AsyncTCP
enum class State { enum class State {
disconnected = 0, disconnected = 0,
connectingTcp1 = 1, connectingTcp1 = 1,
connectingTcp2 = 2, connectingTcp2 = 2,
connectingMqtt = 3, connectingMqtt = 3,
connected = 4, connected = 4,
disconnectingMqtt1 = 5, disconnectingMqtt1 = 5,
disconnectingMqtt2 = 6, disconnectingMqtt2 = 6,
disconnectingTcp1 = 7, disconnectingTcp1 = 7,
disconnectingTcp2 = 8 disconnectingTcp2 = 8
}; };
std::atomic<State> _state; std::atomic<State> _state;
private: private:
char _generatedClientId[EMC_CLIENTID_LENGTH]; char _generatedClientId[EMC_CLIENTID_LENGTH];
uint16_t _packetId; uint16_t _packetId;
#if defined(ARDUINO_ARCH_ESP32) #if defined(ARDUINO_ARCH_ESP32)
SemaphoreHandle_t _xSemaphore; SemaphoreHandle_t _xSemaphore;
TaskHandle_t _taskHandle; TaskHandle_t _taskHandle;
static void _loop(MqttClient* c); static void _loop(MqttClient * c);
#elif defined(ARDUINO_ARCH_ESP8266) && EMC_ESP8266_MULTITHREADING #elif defined(ARDUINO_ARCH_ESP8266) && EMC_ESP8266_MULTITHREADING
std::atomic<bool> _xSemaphore = false; std::atomic<bool> _xSemaphore = false;
#elif defined(__linux__) #elif defined(__linux__)
std::mutex mtx; // added mutable to compile EMS-ESP standalone
mutable std::mutex mtx;
#endif #endif
uint8_t _rxBuffer[EMC_RX_BUFFER_SIZE]; uint8_t _rxBuffer[EMC_RX_BUFFER_SIZE];
struct OutgoingPacket { struct OutgoingPacket {
uint32_t timeSent; uint32_t timeSent;
espMqttClientInternals::Packet packet; espMqttClientInternals::Packet packet;
template <typename... Args>
OutgoingPacket(uint32_t t, espMqttClientTypes::Error error, Args &&... args)
: timeSent(t)
, packet(error, std::forward<Args>(args)...) {
}
};
espMqttClientInternals::Outbox<OutgoingPacket> _outbox;
size_t _bytesSent;
espMqttClientInternals::Parser _parser;
uint32_t _lastClientActivity;
uint32_t _lastServerActivity;
bool _pingSent;
espMqttClientTypes::DisconnectReason _disconnectReason;
uint16_t _getNextPacketId();
template <typename... Args> template <typename... Args>
OutgoingPacket(uint32_t t, espMqttClientTypes::Error error, Args&&... args) : bool _addPacket(Args &&... args) {
timeSent(t), espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS);
packet(error, std::forward<Args>(args) ...) {} espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplace(0, error, std::forward<Args>(args)...);
}; if (it && error == espMqttClientTypes::Error::SUCCESS)
espMqttClientInternals::Outbox<OutgoingPacket> _outbox; return true;
size_t _bytesSent; return false;
espMqttClientInternals::Parser _parser; }
uint32_t _lastClientActivity;
uint32_t _lastServerActivity;
bool _pingSent;
espMqttClientTypes::DisconnectReason _disconnectReason;
uint16_t _getNextPacketId(); template <typename... Args>
bool _addPacketFront(Args &&... args) {
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS);
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplaceFront(0, error, std::forward<Args>(args)...);
if (it && error == espMqttClientTypes::Error::SUCCESS)
return true;
return false;
}
template <typename... Args> void _checkOutbox();
bool _addPacket(Args&&... args) { int _sendPacket();
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS); bool _advanceOutbox();
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplace(0, error, std::forward<Args>(args) ...); void _checkIncoming();
if (it && error == espMqttClientTypes::Error::SUCCESS) return true; void _checkPing();
return false; void _checkTimeout();
}
template <typename... Args> void _onConnack();
bool _addPacketFront(Args&&... args) { void _onPublish();
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS); void _onPuback();
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplaceFront(0, error, std::forward<Args>(args) ...); void _onPubrec();
if (it && error == espMqttClientTypes::Error::SUCCESS) return true; void _onPubrel();
return false; void _onPubcomp();
} void _onSuback();
void _onUnsuback();
void _checkOutbox(); void _clearQueue(int clearData); // 0: keep session,
int _sendPacket(); // 1: keep only PUBLISH qos > 0
bool _advanceOutbox(); // 2: delete all
void _checkIncoming(); void _onError(uint16_t packetId, espMqttClientTypes::Error error);
void _checkPing();
void _checkTimeout();
void _onConnack(); #if defined(ARDUINO_ARCH_ESP32)
void _onPublish(); #if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO
void _onPuback(); size_t _highWaterMark;
void _onPubrec(); #endif
void _onPubrel(); #endif
void _onPubcomp();
void _onSuback();
void _onUnsuback();
void _clearQueue(int clearData); // 0: keep session,
// 1: keep only PUBLISH qos > 0
// 2: delete all
void _onError(uint16_t packetId, espMqttClientTypes::Error error);
#if defined(ARDUINO_ARCH_ESP32)
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO
size_t _highWaterMark;
#endif
#endif
}; };

View File

@@ -51,9 +51,9 @@ int main(int argc __attribute__((unused)), char * argv[] __attribute__((unused))
return 0; return 0;
} }
unsigned long millis() { // unsigned long millis() {
return __millis; // return __millis;
} // }
int64_t esp_timer_get_time() { int64_t esp_timer_get_time() {
return __millis; return __millis;

View File

@@ -35,7 +35,7 @@
#include <iostream> #include <iostream>
// #define IPAddress std::string // #define IPAddress std::string
#define IPAddress String // #define IPAddress String
#define ICACHE_FLASH_ATTR #define ICACHE_FLASH_ATTR
#define ICACHE_RAM_ATTR #define ICACHE_RAM_ATTR
@@ -171,7 +171,13 @@ extern NativeConsole Serial;
extern ETHClass ETH; extern ETHClass ETH;
extern WiFiClass WiFi; extern WiFiClass WiFi;
unsigned long millis(); // unsigned long millis();
#if defined(__linux__)
#include <chrono> // NOLINT [build/c++11]
#include <thread> // NOLINT [build/c++11] for yield()
#define millis() std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now().time_since_epoch()).count()
#endif
int64_t esp_timer_get_time(); int64_t esp_timer_get_time();

View File

@@ -112,6 +112,11 @@ class ESP8266React {
return _mqttClient; return _mqttClient;
} }
void setWill(const char * will_topic) {
}
void onMessage(espMqttClientTypes::OnMessageCallback callback) {
}
StatefulService<DummySettings> * getNetworkSettingsService() { StatefulService<DummySettings> * getNetworkSettingsService() {
return &_settings; return &_settings;
} }

View File

@@ -3,6 +3,7 @@
#include <Arduino.h> #include <Arduino.h>
#include <functional> #include <functional>
#include <IPAddress.h>
#define WiFiMode_t wifi_mode_t #define WiFiMode_t wifi_mode_t
#define WIFI_OFF WIFI_MODE_NULL #define WIFI_OFF WIFI_MODE_NULL

View File

View File

@@ -1,130 +0,0 @@
#ifndef ESPMQTTCLIENT_H_
#define ESPMQTTCLIENT_H_
#include "Arduino.h"
#include <functional>
namespace espMqttClientTypes {
enum class DisconnectReason : uint8_t {
USER_OK = 0,
MQTT_UNACCEPTABLE_PROTOCOL_VERSION = 1,
MQTT_IDENTIFIER_REJECTED = 2,
MQTT_SERVER_UNAVAILABLE = 3,
MQTT_MALFORMED_CREDENTIALS = 4,
MQTT_NOT_AUTHORIZED = 5,
TLS_BAD_FINGERPRINT = 6,
TCP_DISCONNECTED = 7
};
const char * disconnectReasonToString(DisconnectReason reason);
enum class SubscribeReturncode : uint8_t { QOS0 = 0x00, QOS1 = 0x01, QOS2 = 0x02, FAIL = 0X80 };
const char * subscribeReturncodeToString(SubscribeReturncode returnCode);
enum class Error : uint8_t { SUCCESS = 0, OUT_OF_MEMORY = 1, MAX_RETRIES = 2, MALFORMED_PARAMETER = 3, MISC_ERROR = 4 };
const char * errorToString(Error error);
struct MessageProperties {
uint8_t qos;
bool dup;
bool retain;
uint16_t packetId;
};
typedef std::function<void(bool sessionPresent)> OnConnectCallback;
typedef std::function<void(DisconnectReason reason)> OnDisconnectCallback;
typedef std::function<void(uint16_t packetId, const SubscribeReturncode * returncodes, size_t len)> OnSubscribeCallback;
typedef std::function<void(uint16_t packetId)> OnUnsubscribeCallback;
typedef std::function<void(const MessageProperties & properties, const char * topic, const uint8_t * payload, size_t len, size_t index, size_t total)> OnMessageCallback;
typedef std::function<void(uint16_t packetId)> OnPublishCallback;
typedef std::function<size_t(uint8_t * data, size_t maxSize, size_t index)> PayloadCallback;
typedef std::function<void(uint16_t packetId, Error error)> OnErrorCallback;
} // namespace espMqttClientTypes
class espMqttClient {
public:
espMqttClient();
~espMqttClient();
espMqttClient & setKeepAlive(uint16_t keepAlive);
espMqttClient & setClientId(const char * clientId);
espMqttClient & setCleanSession(bool cleanSession);
espMqttClient & setMaxTopicLength(uint16_t maxTopicLength);
espMqttClient & setCredentials(const char * username, const char * password = nullptr);
espMqttClient & setWill(const char * topic, uint8_t qos, bool retain, const char * payload = nullptr, size_t length = 0) {
return *this;
}
espMqttClient & setServer(IPAddress ip, uint16_t port);
espMqttClient & setServer(const char * host, uint16_t port);
espMqttClient & onConnect(espMqttClientTypes::OnConnectCallback callback) {
return *this;
}
espMqttClient & onDisconnect(espMqttClientTypes::OnDisconnectCallback callback) {
return *this;
}
espMqttClient & onSubscribe(espMqttClientTypes::OnSubscribeCallback callback) {
return *this;
}
espMqttClient & onUnsubscribe(espMqttClientTypes::OnUnsubscribeCallback callback) {
return *this;
}
espMqttClient & onMessage(espMqttClientTypes::OnMessageCallback callback) {
return *this;
}
espMqttClient & onPublish(espMqttClientTypes::OnPublishCallback callback) {
return *this;
}
bool connected() const {
return false;
}
void connect() {
}
void disconnect(bool force = false) {
}
uint16_t subscribe(const char * topic, uint8_t qos) {
return 1;
}
uint16_t unsubscribe(const char * topic) {
return 1;
}
uint16_t publish(const char * topic, uint8_t qos, bool retain, const char * payload = nullptr, size_t length = 0, bool dup = false, uint16_t message_id = 0) {
return 1;
}
const char * getClientId() {
return "12";
}
uint16_t getQueue() const {
return 0;
}
private:
bool _connected;
bool _connectPacketNotEnoughSpace;
bool _disconnectOnPoll;
bool _tlsBadFingerprint;
uint32_t _lastClientActivity;
uint32_t _lastServerActivity;
uint32_t _lastPingRequestTime;
char _generatedClientId[18 + 1]; // esp8266-abc123 and esp32-abcdef123456
IPAddress _ip;
const char * _host;
bool _useIp;
uint16_t _port;
uint16_t _keepAlive;
bool _cleanSession;
const char * _clientId;
const char * _username;
const char * _password;
const char * _willTopic;
const char * _willPayload;
uint16_t _willPayloadLength;
uint8_t _willQos;
bool _willRetain;
};
#endif

View File

@@ -2,10 +2,10 @@
; override any settings with your own local ones in pio_local.ini ; override any settings with your own local ones in pio_local.ini
[platformio] [platformio]
default_envs = esp32_4M ; default_envs = esp32_4M
; default_envs = lolin_s3 ; default_envs = lolin_s3
; default_envs = esp32_16M ; default_envs = esp32_16M
; default_envs = standalone default_envs = standalone
extra_configs = extra_configs =
factory_settings.ini factory_settings.ini
@@ -20,7 +20,6 @@ core_build_flags =
; -std=gnu++17 ; -std=gnu++17
; core_unbuild_flags = -std=gnu++11 ; core_unbuild_flags = -std=gnu++11
; core_unbuild_flags = -std=gnu++17
core_unbuild_flags = core_unbuild_flags =
; my_build_flags is set in pio_local.ini ; my_build_flags is set in pio_local.ini
@@ -41,9 +40,12 @@ unbuild_flags =
[espressi32_base] [espressi32_base]
platform = espressif32 platform = espressif32
; platform = espressif32@5.3.0
; platform = espressif32@5.2.0
framework = arduino framework = arduino
build_flags = ${common.build_flags}
build_unflags = ${common.unbuild_flags}
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
[env] [env]
monitor_speed = 115200 monitor_speed = 115200
@@ -62,7 +64,7 @@ check_flags =
; build for GitHub Actions CI ; build for GitHub Actions CI
; the Web interface is built seperately ; the Web interface is built seperately
[env:ci] [env:ci]
platform = espressif32@5.2.0 platform = espressif32
framework = arduino framework = arduino
extra_scripts = scripts/rename_fw.py extra_scripts = scripts/rename_fw.py
board = esp32dev board = esp32dev
@@ -84,93 +86,63 @@ build_flags = ${common.build_flags} -O2
build_unflags = ${common.unbuild_flags} build_unflags = ${common.unbuild_flags}
[env:esp32_4M] [env:esp32_4M]
platform = espressif32@5.2.0 extends = espressi32_base
framework = arduino
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
board = esp32dev board = esp32dev
board_upload.flash_size = 4MB board_upload.flash_size = 4MB
board_build.partitions = esp32_partition_4M.csv board_build.partitions = esp32_partition_4M.csv
build_flags = ${common.build_flags} -Os build_flags = ${common.build_flags} -Os
build_unflags = ${common.unbuild_flags}
[env:esp32_4Mplus] [env:esp32_4Mplus]
extends = espressi32_base extends = espressi32_base
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
board = esp32dev board = esp32dev
board_upload.flash_size = 4MB board_upload.flash_size = 4MB
board_build.partitions = esp32_asym_partition_4M.csv board_build.partitions = esp32_asym_partition_4M.csv
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
build_unflags = ${common.unbuild_flags}
[env:esp32_16M] [env:esp32_16M]
extends = espressi32_base extends = espressi32_base
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
board = esp32dev board = esp32dev
board_upload.flash_size = 16MB board_upload.flash_size = 16MB
board_build.partitions = esp32_partition_16M.csv board_build.partitions = esp32_partition_16M.csv
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
build_unflags = ${common.unbuild_flags}
[env:lolin_c3_mini] [env:lolin_c3_mini]
extends = espressi32_base extends = espressi32_base
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
board = lolin_c3_mini board = lolin_c3_mini
board_upload.flash_size = 4MB board_upload.flash_size = 4MB
board_build.partitions = esp32_asym_partition_4M.csv board_build.partitions = esp32_asym_partition_4M.csv
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
build_unflags = ${common.unbuild_flags}
; lolin C3 mini v1 needs special wifi init. ; lolin C3 mini v1 needs special wifi init.
; https://www.wemos.cc/en/latest/c3/c3_mini_1_0_0.html#about-wifi ; https://www.wemos.cc/en/latest/c3/c3_mini_1_0_0.html#about-wifi
[env:lolin_c3_mini_v1] [env:lolin_c3_mini_v1]
extends = espressi32_base extends = espressi32_base
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
board = lolin_c3_mini board = lolin_c3_mini
board_upload.flash_size = 4MB board_upload.flash_size = 4MB
board_build.partitions = esp32_asym_partition_4M.csv board_build.partitions = esp32_asym_partition_4M.csv
build_flags = ${common.build_flags} -DBOARD_C3_MINI_V1 build_flags = ${common.build_flags} -DBOARD_C3_MINI_V1
build_unflags = ${common.unbuild_flags}
[env:lolin_s2_mini] [env:lolin_s2_mini]
extends = espressi32_base extends = espressi32_base
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
board = lolin_s2_mini board = lolin_s2_mini
board_upload.flash_size = 4MB board_upload.flash_size = 4MB
board_build.partitions = esp32_asym_partition_4M.csv board_build.partitions = esp32_asym_partition_4M.csv
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
build_unflags = ${common.unbuild_flags}
[env:lolin_s3] [env:lolin_s3]
extends = espressi32_base extends = espressi32_base
extra_scripts =
pre:scripts/build_interface.py
scripts/rename_fw.py
board = lolin_s3 board = lolin_s3
board_build.f_cpu = 240000000L board_build.f_cpu = 240000000L
board_upload.flash_size = 16MB board_upload.flash_size = 16MB
board_build.partitions = esp32_partition_16M.csv board_build.partitions = esp32_partition_16M.csv
build_flags = ${common.build_flags} -O2
build_unflags = ${common.unbuild_flags}
board_upload.use_1200bps_touch = false board_upload.use_1200bps_touch = false
board_upload.wait_for_upload_port = false board_upload.wait_for_upload_port = false
build_flags = ${common.build_flags} -O2
; to build and run: pio run -e standalone -t exec ; to build and run: pio run -e standalone -t exec
[env:standalone] [env:standalone]
platform = native platform = native
build_flags = build_flags =
-DARDUINO
-DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0 -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0
-DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST
-DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
@@ -185,6 +157,8 @@ build_src_flags =
-I./lib/uuid-log/src -I./lib/uuid-log/src
-I./lib/semver -I./lib/semver
-I./lib/PButton -I./lib/PButton
-I./lib/espMqttClient/src
-I./lib/espMqttClient/src/Transport
build_src_filter = build_src_filter =
+<*> +<*>
-<.git/> -<.git/>
@@ -194,5 +168,7 @@ build_src_filter =
+<../lib/uuid-log> +<../lib/uuid-log>
+<../lib/semver> +<../lib/semver>
+<../lib/PButton> +<../lib/PButton>
+<../lib/espMqttClient/src>
+<../lib/espMqttClient/src/Transport>
lib_compat_mode = off lib_compat_mode = off
lib_ldf_mode = off lib_ldf_mode = off