Не нашел я времени переписать скрипт. Я немного другое для себя писал, более узкозаточенное. Вот, выкладываю переписанные процедуры работы с EEPROM:
http://pastebin.com/Tj3EiZbe
Да, еще - нет никакой необходимости писать свой веб-сервер. Есть готовая реализация <ESP8266WebServer.h> -там...
Крупник "Изучаем С" http://elisey-ka.ru/c/Крупник А.Б. - Изучаем Си.pdf . Также рекомендую поверхностно ознакомится с его же самоучителем по ассемблеру (хотя бы первую часть книги) http://www.proklondike.com/books/assembler/krupnik_izuchaem_assembler.html и поковырять с OllyDbg несколько...
Вот еще один костыль -заводить eeprom_data_tmp для того, чтобы работать с ней побайтно.. На самом деле правильней преобразовать указатель на eeprom_data (byte *)&eeprom_data вот так - тогда можно записать
void writeSettingsESP() {
int i = EEPROM_START;
EEPROM.begin(sizeof(eeprom_data) +...
Поясни, пожалуйста - не совсем понимаю назначение inactiveSTAactions. Я решил переписать полностью. Да, еще - crc я так понимаю, используется для проверки данных в EEPROM?
ipAPstr = String(ipAP[0]) + '.' + String(ipAP[1]) + '.' + String(ipAP[2]) + '.' + String(ipAP[3]);
checkClientNetStr = String(ipAP[0]) + '.' + String(ipAP[1]) + '.' + String(ipAP[2]) + '.' ; - вот это тоже лишнее. Я не пытаюсь обхаять чужую работу) Сам же пользуюсь, просто для МК так писать...
String AP_NameString = AP_SSID ;
char AP_NameChar[AP_NameString.length() + 1];
for (int i = 0; i < AP_NameString.length(); i++)
AP_NameChar = AP_NameString.charAt(i);
AP_NameChar[AP_NameString.length() ] = 0;
Это тоже лишнее. У класса String есть метод toCharArray или типа того.
Еще пара косяков. Малая длина для пароля и ссид -раз, и необходимо использовать url_decode и html_escape - первый при получении данных с фронтенда, второй - при выдаче на фронтенд. Реализаций тьма в сети, там ничего сложного. Вот например -несколько косячные, ну ладно
int url_decode(char...
ну и еще - лично мое мнение. Если писать if (b) {однастрочка;} то фигурные скобки не нужны. И надо четко понимать - в С все, что не 0( false) - то true
Автор, ты молодец. Но Си ты не знаешь, чуть более, чем полностью. Во-первых, and и or -это плохо, лучше && и ||. Во-вторых, не пиши if (a==true). Достаточно if(a). Дальше, не надо писать if(c) d= true else d=false, можно просто - d =c.