Я пытаюсь создать ячеистую сеть, используя модуль ESP32. WiFi.h softAPConfig () можно использовать для установки начального адреса для аренды, но он прогрессирует вверх без повторного использования уже арендованных адресов, которые больше не используются. Поэтому я хочу ограничить диапазон аренды между двумя адресами
I found this piece of code from dhcpserver.h
/* Defined in esp_misc.h */
typedef struct {
bool enable;
ip4_addr_t start_ip;
ip4_addr_t end_ip;
} dhcps_lease_t;
Это код, который я скомпилировал и загрузил в модуль ESP32
#include "WiFi.h"
char *ssid = "AirMesh";
IPAddress local_IP(192,168,1,0);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.print("Setting soft-AP configuration ... ");
Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!");
Serial.print("Setting soft-AP ... ");
Serial.println(WiFi.softAP("ESPsoftAP_01") ? "Ready" : "Failed!");
Serial.print("Soft-AP IP address = ");
Serial.println(WiFi.softAPIP());
WiFi.softAP(ssid);
}
void loop() {}
Первое устройство при подключении дает IP 192.168.1.1, второе устройство - IP 192.168.1.2, когда я отключаю первое устройство и снова подключаю его, и оно дает IP 192.168.1.3 (каждое соединение использует разные физические адреса)
Эта прогрессия продолжается
EDIT:
Я думаю, что после его поиска я нашел код, отвечающий за диапазон IP-лизинга, но не смог понять, что это значит.
lease.start_ip.addr = static_cast<uint32_t>(local_ip) + (1 << 24);
lease.end_ip.addr = static_cast<uint32_t>(local_ip) + (11 << 24);