diff --git a/examples/WiFiConfig_simple_test/WiFiConfig_simple_test.ino b/examples/WiFiConfig_simple_test/WiFiConfig_simple_test.ino index 76a9125..3150e47 100644 --- a/examples/WiFiConfig_simple_test/WiFiConfig_simple_test.ino +++ b/examples/WiFiConfig_simple_test/WiFiConfig_simple_test.ino @@ -4,6 +4,7 @@ #include #include #include +#include // Plati pro desticku Witty s modulem ESP-12E #define PIN_FORCE_CONFIG 4 @@ -14,6 +15,19 @@ //#define DEBUG_OUT(a) {} #define DEBUG_OUT(a) Serial.print(a) +// Definice obsazeni EEPROM +#define elementSize(type, element) sizeof(((type *)0)->element) +#define countof(a) (sizeof(a) / sizeof(a[0])) +typedef struct +{ + char devname[32 + 2]; // jmeno zarizeni (pro NBNS plati jen 16 znaku) +} eepromconfig_t; + +#define EEPROM_SIZE (sizeof(wificonfigarea_t) + sizeof(eepromconfig_t) + 10) // velikost EEPROM oblasti (POZOR!!! zbytecnym zvetsovanim se zaroven zmensuje velikost RAM kvuli zrcadlu!!!) +#define EEPROM_WIFICONFIG_ORIGIN (EEPROM_SIZE - sizeof(wificonfigarea_t)) // pocatek oblasti, pouzivane WiFiConfig (alokovano odzadu) +#define EEPROM_CONFIG_ORIGIN (0) + +char WiFiDeviceName[elementSize(eepromconfig_t, devname)]; // misto pro jmeno zarizeni (dodane do DNS, DHCP NBNS apod...) ESP8266WebServer wwwserver(80); // webovy server String content; @@ -52,23 +66,27 @@ void ICACHE_FLASH_ATTR wcb(wificonfigstate_t state) } } -void saveServer(const char *param) +void ICACHE_FLASH_ATTR saveDevname(const char *param) { + String p = param; - DEBUG_OUT(param); + EES_storeString(EEPROM_CONFIG_ORIGIN + offsetof(eepromconfig_t, devname), elementSize(eepromconfig_t, devname), p); } void ICACHE_FLASH_ATTR setup() { WiFiConfig wifi; // konfigurace ESP modulu - WiFiConfigUsrParameter testOnly("server", "adresa serveru", "Default server", 32, saveServer); + WiFiConfigUsrParameter devname("devname", "Jméno zařízení", (const char *)WiFiDeviceName, 32, saveDevname); - EEPROM.begin(512); // zahajujeme praci s EEPROM + EEPROM.begin(EEPROM_SIZE); // zahajujeme praci s EEPROM pinMode(PIN_FORCE_CONFIG, INPUT_PULLUP); // pin, co slouzi jako vstup tlacitka int fc = digitalRead(PIN_FORCE_CONFIG); // pozadavek na vynucene vyvolani konfigurace Serial.begin(9600); - wifi.addParameter(&testOnly); - if (WCR_OK != wifi.begin(0, fc, wcb)) // startujeme pripojeni + String dn = EES_readString(EEPROM_CONFIG_ORIGIN + offsetof(eepromconfig_t, devname), elementSize(eepromconfig_t, devname)); + strcpy(WiFiDeviceName, dn.c_str()); + wifi.addParameter(&devname); + + if (WCR_OK != wifi.begin(EEPROM_WIFICONFIG_ORIGIN, fc, wcb)) // startujeme pripojeni ESP.restart(); wwwserver.on("/", handleRoot);