3
3
4
4
#include < HttpEndpoint.h>
5
5
#include < FSPersistence.h>
6
+ #include < JsonUtils.h>
6
7
7
8
#include < DNSServer.h>
8
9
#include < IPAddress.h>
15
16
16
17
#define DNS_PORT 53
17
18
19
+ #ifndef FACTORY_AP_PROVISION_MODE
20
+ #define FACTORY_AP_PROVISION_MODE AP_MODE_DISCONNECTED
21
+ #endif
22
+
18
23
#ifndef FACTORY_AP_SSID
19
24
#define FACTORY_AP_SSID " ESP8266-React"
20
25
#endif
23
28
#define FACTORY_AP_PASSWORD " esp-react"
24
29
#endif
25
30
26
- #ifndef FACTORY_AP_PROVISION_MODE
27
- #define FACTORY_AP_PROVISION_MODE AP_MODE_DISCONNECTED
31
+ #ifndef FACTORY_AP_LOCAL_IP
32
+ #define FACTORY_AP_LOCAL_IP " 192.168.4.1"
33
+ #endif
34
+
35
+ #ifndef FACTORY_AP_GATEWAY_IP
36
+ #define FACTORY_AP_GATEWAY_IP " 192.168.4.1"
37
+ #endif
38
+
39
+ #ifndef FACTORY_AP_SUBNET_MASK
40
+ #define FACTORY_AP_SUBNET_MASK " 255.255.255.0"
28
41
#endif
29
42
30
43
#define AP_SETTINGS_FILE " /config/apSettings.json"
31
44
#define AP_SETTINGS_SERVICE_PATH " /rest/apSettings"
32
45
33
- enum APNetworkStatus {
34
- ACTIVE = 0 ,
35
- INACTIVE,
36
- LINGERING
37
- };
46
+ enum APNetworkStatus { ACTIVE = 0 , INACTIVE, LINGERING };
38
47
39
48
class APSettings {
40
49
public:
41
50
uint8_t provisionMode;
42
51
String ssid;
43
52
String password;
53
+ IPAddress localIP;
54
+ IPAddress gatewayIP;
55
+ IPAddress subnetMask;
56
+
57
+ bool operator ==(const APSettings& settings) const {
58
+ return provisionMode == settings.provisionMode && ssid == settings.ssid && password == settings.password &&
59
+ localIP == settings.localIP && gatewayIP == settings.gatewayIP && subnetMask == settings.subnetMask ;
60
+ }
44
61
45
62
static void read (APSettings& settings, JsonObject& root) {
46
63
root[" provision_mode" ] = settings.provisionMode ;
47
64
root[" ssid" ] = settings.ssid ;
48
65
root[" password" ] = settings.password ;
66
+ root[" local_ip" ] = settings.localIP .toString ();
67
+ root[" gateway_ip" ] = settings.gatewayIP .toString ();
68
+ root[" subnet_mask" ] = settings.subnetMask .toString ();
49
69
}
50
70
51
71
static StateUpdateResult update (JsonObject& root, APSettings& settings) {
@@ -61,8 +81,12 @@ class APSettings {
61
81
}
62
82
newSettings.ssid = root[" ssid" ] | FACTORY_AP_SSID;
63
83
newSettings.password = root[" password" ] | FACTORY_AP_PASSWORD;
64
- if (newSettings.provisionMode == settings.provisionMode && newSettings.ssid .equals (settings.ssid ) &&
65
- newSettings.password .equals (settings.password )) {
84
+
85
+ JsonUtils::readIP (root, " local_ip" , newSettings.localIP , FACTORY_AP_LOCAL_IP);
86
+ JsonUtils::readIP (root, " gateway_ip" , newSettings.gatewayIP , FACTORY_AP_GATEWAY_IP);
87
+ JsonUtils::readIP (root, " subnet_mask" , newSettings.subnetMask , FACTORY_AP_SUBNET_MASK);
88
+
89
+ if (newSettings == settings) {
66
90
return StateUpdateResult::UNCHANGED;
67
91
}
68
92
settings = newSettings;
0 commit comments