#include "wifi_config.h" #include #define EEPROM_SIZE 768 #define EEPROM_FIELD_MAX 120 // Layout: SSID@0(121B) | PASS@128(121B) | URL@256(121B) static constexpr int EEPROM_ADDR_SSID = 0; static constexpr int EEPROM_ADDR_PASS = 128; static constexpr int EEPROM_ADDR_URL = 256; // ---- DEFAULT LOCAL SERVER URL ---- static const char* DEFAULT_SERVER_URL = "http://192.168.100.16:8000"; // ---------------------------------- Config config; void writeString(int addr, const String &data) { int len = data.length(); if (len > EEPROM_FIELD_MAX) len = EEPROM_FIELD_MAX; EEPROM.write(addr, (uint8_t)len); for (int i = 0; i < len; i++) EEPROM.write(addr + 1 + i, (uint8_t)data[i]); } String readString(int addr) { int len = (int)EEPROM.read(addr); if (len <= 0 || len > EEPROM_FIELD_MAX) return ""; char buf[EEPROM_FIELD_MAX + 1] = {0}; for (int i = 0; i < len; i++) buf[i] = (char)EEPROM.read(addr + 1 + i); buf[len] = '\0'; return String(buf); } void loadConfig() { EEPROM.begin(EEPROM_SIZE); config.ssid = readString(EEPROM_ADDR_SSID); config.password = readString(EEPROM_ADDR_PASS); // Gunakan serverURL dari EEPROM jika ada, fallback ke DEFAULT_SERVER_URL jika kosong. String savedURL = readString(EEPROM_ADDR_URL); if (savedURL.length() > 0) { config.serverURL = savedURL; } else if (strlen(DEFAULT_SERVER_URL) > 0) { config.serverURL = String(DEFAULT_SERVER_URL); } else { config.serverURL = "http://192.168.100.16:8000"; } config.serverURL.trim(); while (config.serverURL.endsWith("/")) config.serverURL = config.serverURL.substring(0, config.serverURL.length() - 1); Serial.printf("[CONFIG] SSID=%s URL=%s\n", config.ssid.c_str(), config.serverURL.c_str()); } void saveConfig() { writeString(EEPROM_ADDR_SSID, config.ssid); writeString(EEPROM_ADDR_PASS, config.password); writeString(EEPROM_ADDR_URL, config.serverURL); EEPROM.commit(); }