Попроще явная ошибка:
Создаем структуру struct dhcps_lease x;
Назначаем стартовый и конечный IP.
Вызываем wifi_softap_set_dhcps_lease(&x).
Пытаемся работать дальше с x, а там данные испорчены
Испорчены htonl():
Name: htonl
Prototype: uint32_t htonl (uint32_t hostlong)
Description:
This function converts the uint32_t integer hostlong from host byte order to network byte order.
This is used for IPv4 Internet addresses.
Код:
bool ICACHE_FLASH_ATTR wifi_softap_set_dhcps_lease(struct dhcps_lease *please)
{
...
please->start_ip = htonl(please->start_ip);
please->end_ip = htonl(please->end_ip);
...
}
Развертка define htonl:
Код:
#define htonl(_n) ((u32_t)( (((_n) & 0xff) << 24) | (((_n) & 0xff00) << 8) | (((_n) >> 8) & 0xff00) | (((_n) >> 24) & 0xff) ))
Пусть высылают на адрес сайта
Потом объявите какой конкурс.
Когда накопим на покупку Espressif - остальное я заберу
Ну и сразу - вторая ошибка там-же, в китай-DHCP. При вызове dhcps_start() dhcps_lease опять преобразуется htonl-ом и не работает сравнение в parse_msg() в POOL_CHECK
Третья ошибка всё в той-же wifi_softap_set_dhcps_lease()
Она не дает до запуска AP установить "Лизу", а после запуска AP, если было отключение dhcps_stop(), и опять включение dhcps, то опять переворачивает свою внутреннюю "Лизу" кверху ногами. Пусть чинят dhcps_lease_flag флаг и уберут глупое переворачивание, дающее длинююющщщииий код, но сделанное для простоты написания на СИ глупым программистом с кучей китай-коментов
Ошибка четыре, всё в одной wifi_softap_set_dhcps_lease()
вызываем до включения AP c такими IP:
lease{0x08000000, 0x10000000} // 0.0.0.8...0.0.0.16
Кормим это wifi_softap_set_dhcps_lease()
Получаем:
bad_lease{0x00000008, 0x00000010} // 8.0.0.0...16.0.0.0
Всё - AP теперь ни с кем не соединиться и все их проверки в wifi_softap_set_dhcps_lease() на смарку....
PS: И главное так в каждой функции, написанной Espressif
В тянутых из опен - ошибок нет. Пусть готовят 5 лимонов $....