#pragma once #include #include #include "config.h" #define CFG_MAGIC 0xA55A1234 struct NetConfig { uint32_t magic; bool useDhcp; uint8_t ip[4]; uint8_t gw[4]; uint8_t sn[4]; uint8_t dns[4]; char mqttBroker[40]; uint16_t mqttPort; char mqttUser[32]; char mqttPass[64]; uint32_t updateMs; }; inline void configDefaults(NetConfig& c) { c.magic = CFG_MAGIC; c.useDhcp = DEFAULT_DHCP; uint8_t dip[] = {DEFAULT_STATIC_IP}; uint8_t dgw[] = {DEFAULT_GW}; uint8_t dsn[] = {DEFAULT_SUBNET}; uint8_t ddn[] = {DEFAULT_DNS}; memcpy(c.ip, dip, 4); memcpy(c.gw, dgw, 4); memcpy(c.sn, dsn, 4); memcpy(c.dns, ddn, 4); strncpy(c.mqttBroker, DEFAULT_MQTT_BROKER, sizeof(c.mqttBroker) - 1); c.mqttBroker[sizeof(c.mqttBroker) - 1] = 0; c.mqttPort = DEFAULT_MQTT_PORT; strncpy(c.mqttUser, DEFAULT_MQTT_USER, sizeof(c.mqttUser) - 1); c.mqttUser[sizeof(c.mqttUser) - 1] = 0; strncpy(c.mqttPass, DEFAULT_MQTT_PASS, sizeof(c.mqttPass) - 1); c.mqttPass[sizeof(c.mqttPass) - 1] = 0; c.updateMs = DEFAULT_UPDATE_MS; } inline void configLoad(NetConfig& c) { EEPROM.get(0, c); if (c.magic != CFG_MAGIC) configDefaults(c); } inline void configSave(const NetConfig& c) { EEPROM.put(0, c); }