mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-01-11 09:42:13 +01:00
Port project to use cmake build system.
This permits to develop the project more easily and efficiently than with Arduino iIDE (which is a pain) Use the latest IDF framework version Compile for esp32C5 chip
This commit is contained in:
parent
eb75868adb
commit
4c23d252e9
58 changed files with 736 additions and 78 deletions
212
main/ConfigSettings.h
Normal file
212
main/ConfigSettings.h
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
#include <ArduinoJson.h>
|
||||
#include <ETH.h>
|
||||
#ifndef configsettings_h
|
||||
#define configsettings_h
|
||||
#include "WResp.h"
|
||||
#define FW_VERSION "v2.4.7"
|
||||
|
||||
#if !CONFIG_ETH_USE_ESP32_EMAC
|
||||
typedef enum {
|
||||
ETH_CLOCK_GPIO0_IN,
|
||||
ETH_CLOCK_GPIO0_OUT,
|
||||
ETH_CLOCK_GPIO16_OUT,
|
||||
ETH_CLOCK_GPIO17_OUT
|
||||
} eth_clock_mode_t;
|
||||
#endif
|
||||
|
||||
enum class conn_types_t : byte {
|
||||
unset = 0x00,
|
||||
wifi = 0x01,
|
||||
ethernet = 0x02,
|
||||
ethernetpref = 0x03,
|
||||
ap = 0x04
|
||||
};
|
||||
|
||||
enum DeviceStatus {
|
||||
DS_OK = 0,
|
||||
DS_ERROR = 1,
|
||||
DS_FWUPDATE = 2
|
||||
};
|
||||
struct restore_options_t {
|
||||
bool settings = false;
|
||||
bool shades = false;
|
||||
bool network = false;
|
||||
bool transceiver = false;
|
||||
bool repeaters = false;
|
||||
bool mqtt = false;
|
||||
void fromJSON(JsonObject &obj);
|
||||
};
|
||||
struct appver_t {
|
||||
char name[15] = "";
|
||||
uint8_t major = 0;
|
||||
uint8_t minor = 0;
|
||||
uint8_t build = 0;
|
||||
char suffix[4] = "";
|
||||
void parse(const char *ver);
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
void toJSON(JsonSockEvent *json);
|
||||
int8_t compare(appver_t &ver);
|
||||
void copy(appver_t &ver);
|
||||
};
|
||||
|
||||
|
||||
class BaseSettings {
|
||||
public:
|
||||
bool loadFile(const char* filename);
|
||||
bool fromJSON(JsonObject &obj);
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
bool parseIPAddress(JsonObject &obj, const char *prop, IPAddress *);
|
||||
bool parseValueString(JsonObject &obj, const char *prop, char *dest, size_t size);
|
||||
int parseValueInt(JsonObject &obj, const char *prop, int defVal);
|
||||
double parseValueDouble(JsonObject &obj, const char *prop, double defVal);
|
||||
bool saveFile(const char* filename);
|
||||
bool save();
|
||||
bool load();
|
||||
};
|
||||
class NTPSettings: BaseSettings {
|
||||
public:
|
||||
char ntpServer[65] = "pool.ntp.org";
|
||||
char posixZone[64] = "";
|
||||
bool fromJSON(JsonObject &obj);
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
bool apply();
|
||||
bool begin();
|
||||
bool save();
|
||||
bool load();
|
||||
void print();
|
||||
};
|
||||
class WifiSettings: BaseSettings {
|
||||
public:
|
||||
WifiSettings();
|
||||
bool roaming = true;
|
||||
bool hidden = false;
|
||||
char ssid[65] = "";
|
||||
char passphrase[65] = "";
|
||||
//bool ssdpBroadcast = true;
|
||||
bool begin();
|
||||
bool fromJSON(JsonObject &obj);
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
String mapEncryptionType(int type);
|
||||
bool ssidExists(const char *ssid);
|
||||
void printNetworks();
|
||||
bool save();
|
||||
bool load();
|
||||
void print();
|
||||
|
||||
};
|
||||
class EthernetSettings: BaseSettings {
|
||||
public:
|
||||
EthernetSettings();
|
||||
uint8_t boardType = 0; // These board types are enumerated in the ui and used to set the chip settings.
|
||||
eth_phy_type_t phyType = ETH_PHY_MAX;
|
||||
eth_clock_mode_t CLKMode = ETH_CLOCK_GPIO0_IN;
|
||||
int8_t phyAddress = 0;
|
||||
int8_t PWRPin = 0;
|
||||
int8_t MDCPin = 0;
|
||||
int8_t MDIOPin = 0;
|
||||
|
||||
bool begin();
|
||||
bool fromJSON(JsonObject &obj);
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
bool load();
|
||||
bool save();
|
||||
void print();
|
||||
bool usesPin(uint8_t pin);
|
||||
};
|
||||
class IPSettings: BaseSettings {
|
||||
public:
|
||||
IPSettings();
|
||||
bool dhcp = true;
|
||||
IPAddress ip;
|
||||
IPAddress subnet = IPAddress(255,255,255,0);
|
||||
IPAddress gateway = IPAddress(0,0,0,0);
|
||||
IPAddress dns1 = IPAddress(0,0,0,0);
|
||||
IPAddress dns2 = IPAddress(0,0,0,0);
|
||||
bool begin();
|
||||
bool fromJSON(JsonObject &obj);
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
bool load();
|
||||
bool save();
|
||||
void print();
|
||||
};
|
||||
enum class security_types : byte {
|
||||
None = 0x00,
|
||||
PinEntry = 0x01,
|
||||
Password = 0x02
|
||||
};
|
||||
enum class security_permissions : byte {
|
||||
ConfigOnly = 0x01
|
||||
};
|
||||
class SecuritySettings: BaseSettings {
|
||||
public:
|
||||
security_types type = security_types::None;
|
||||
char username[33] = "";
|
||||
char password[33] = "";
|
||||
char pin[5] = "";
|
||||
uint8_t permissions = 0;
|
||||
bool begin();
|
||||
bool save();
|
||||
bool load();
|
||||
void print();
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
bool fromJSON(JsonObject &obj);
|
||||
};
|
||||
class MQTTSettings: BaseSettings {
|
||||
public:
|
||||
bool enabled = false;
|
||||
bool pubDisco = false;
|
||||
char hostname[65] = "ESPSomfyRTS";
|
||||
char protocol[10] = "mqtt://";
|
||||
uint16_t port = 1883;
|
||||
char username[33] = "";
|
||||
char password[33] = "";
|
||||
char rootTopic[65] = "";
|
||||
char discoTopic[65] = "homeassistant";
|
||||
bool begin();
|
||||
bool save();
|
||||
bool load();
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
bool fromJSON(JsonObject &obj);
|
||||
};
|
||||
class ConfigSettings: BaseSettings {
|
||||
public:
|
||||
static void printAvailHeap();
|
||||
char serverId[10] = "";
|
||||
char hostname[32] = "ESPSomfyRTS";
|
||||
char chipModel[10] = "ESP32";
|
||||
conn_types_t connType = conn_types_t::unset;
|
||||
appver_t fwVersion;
|
||||
appver_t appVersion;
|
||||
bool ssdpBroadcast = true;
|
||||
bool checkForUpdate = true;
|
||||
uint8_t status;
|
||||
IPSettings IP;
|
||||
WifiSettings WIFI;
|
||||
EthernetSettings Ethernet;
|
||||
NTPSettings NTP;
|
||||
MQTTSettings MQTT;
|
||||
SecuritySettings Security;
|
||||
bool requiresAuth();
|
||||
bool fromJSON(JsonObject &obj);
|
||||
bool toJSON(JsonObject &obj);
|
||||
void toJSON(JsonResponse &json);
|
||||
bool begin();
|
||||
bool save();
|
||||
bool load();
|
||||
void print();
|
||||
void emitSockets();
|
||||
void emitSockets(uint8_t num);
|
||||
bool toJSON(DynamicJsonDocument &doc);
|
||||
uint16_t calcSettingsRecSize();
|
||||
uint16_t calcNetRecSize();
|
||||
bool getAppVersion();
|
||||
};
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue