11// Once connected to the access point for WiFi Config, the ESP32 sends current setting values in one long string to websocket
22// After user clicks 'save', data is validated via main.js and a long string of values is returned.
33
4+ bool websocketConnected = false ;
5+
46// Start webserver in AP mode
57void startWebServer ()
68{
@@ -9,15 +11,17 @@ void startWebServer()
911
1012 ntripClientStop (true ); // Do not allocate new wifiClient
1113 ntripServerStop (true ); // Do not allocate new wifiClient
12-
14+
1315 if (wifiStartAP () == false ) // Exits calling wifiConnect()
1416 return ;
1517
1618 incomingSettings = (char *)malloc (AP_CONFIG_SETTING_SIZE);
17-
18- // Clear any garbage from settings array
1919 memset (incomingSettings, 0 , AP_CONFIG_SETTING_SIZE);
2020
21+ // Pre-load settings CSV
22+ settingsCSV = (char *)malloc (AP_CONFIG_SETTING_SIZE);
23+ createSettingsString (settingsCSV);
24+
2125 webserver = new AsyncWebServer (80 );
2226 websocket = new AsyncWebSocket (" /ws" );
2327
@@ -141,10 +145,6 @@ void startWebServer()
141145
142146 webserver->begin ();
143147
144- // Pre-load settings CSV
145- settingsCSV = (char *)malloc (AP_CONFIG_SETTING_SIZE);
146- createSettingsString (settingsCSV);
147-
148148 log_d (" Web Server Started" );
149149 reportHeapNow ();
150150
@@ -157,22 +157,32 @@ void stopWebServer()
157157#ifdef COMPILE_WIFI
158158#ifdef COMPILE_AP
159159
160- if (websocket != NULL )
161- {
162- delete websocket;
163- websocket = NULL ;
164- }
165-
166- if (webserver != nullptr )
160+ if (webserver != NULL )
167161 {
168162 webserver->end ();
163+ free (webserver);
169164 webserver = NULL ;
170- }
171165
172- if (settingsCSV != NULL )
173- {
174- free (settingsCSV);
175- settingsCSV = NULL ;
166+ if (websocket != NULL )
167+ {
168+ Serial.println (" Free websocket" );
169+ delete websocket;
170+ websocket = NULL ;
171+ }
172+
173+ if (settingsCSV != NULL )
174+ {
175+ Serial.println (" Freeing settingsCSV" );
176+ free (settingsCSV);
177+ settingsCSV = NULL ;
178+ }
179+
180+ if (incomingSettings != NULL )
181+ {
182+ Serial.println (" Freeing incomingSettings" );
183+ free (incomingSettings);
184+ incomingSettings = NULL ;
185+ }
176186 }
177187
178188 log_d (" Web Server Stopped" );
@@ -383,12 +393,14 @@ void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventT
383393 log_d (" Websocket client connected" );
384394 client->text (settingsCSV);
385395 lastCoordinateUpdate = millis ();
396+ websocketConnected = true ;
386397 }
387398 else if (type == WS_EVT_DISCONNECT) {
388399 log_d (" Websocket client disconnected" );
389400
390401 // User has either refreshed the page or disconnected. Recompile the current settings.
391402 createSettingsString (settingsCSV);
403+ websocketConnected = false ;
392404 }
393405 else if (type == WS_EVT_DATA) {
394406 for (int i = 0 ; i < len; i++) {
0 commit comments