@@ -92,9 +92,6 @@ int16_t
92
92
}
93
93
if (esp_wifi_scan_start (&config, false ) == ESP_OK) {
94
94
_scanStarted = millis ();
95
- if (!_scanStarted) { // Prevent 0 from millis overflow
96
- ++_scanStarted;
97
- }
98
95
99
96
WiFiGenericClass::clearStatusBits (WIFI_SCAN_DONE_BIT);
100
97
WiFiGenericClass::setStatusBits (WIFI_SCANNING_BIT);
@@ -118,21 +115,20 @@ int16_t
118
115
void WiFiScanClass::_scanDone () {
119
116
esp_wifi_scan_get_ap_num (&(WiFiScanClass::_scanCount));
120
117
if (WiFiScanClass::_scanResult) {
121
- delete[] reinterpret_cast < wifi_ap_record_t *> (WiFiScanClass::_scanResult);
122
- WiFiScanClass::_scanResult = nullptr ;
118
+ free (WiFiScanClass::_scanResult);
119
+ WiFiScanClass::_scanResult = NULL ;
123
120
}
124
121
125
122
if (WiFiScanClass::_scanCount) {
126
- WiFiScanClass::_scanResult = new (std::nothrow) wifi_ap_record_t [ WiFiScanClass::_scanCount] ;
123
+ WiFiScanClass::_scanResult = calloc ( WiFiScanClass::_scanCount, sizeof ( wifi_ap_record_t )) ;
127
124
if (!WiFiScanClass::_scanResult) {
128
125
WiFiScanClass::_scanCount = 0 ;
129
126
} else if (esp_wifi_scan_get_ap_records (&(WiFiScanClass::_scanCount), (wifi_ap_record_t *)_scanResult) != ESP_OK) {
130
- delete[] reinterpret_cast < wifi_ap_record_t *> (WiFiScanClass::_scanResult);
131
- WiFiScanClass::_scanResult = nullptr ;
127
+ free (WiFiScanClass::_scanResult);
128
+ WiFiScanClass::_scanResult = NULL ;
132
129
WiFiScanClass::_scanCount = 0 ;
133
130
}
134
131
}
135
- WiFiScanClass::_scanStarted = 0 ; // Reset after a scan is completed for normal behavior
136
132
WiFiGenericClass::setStatusBits (WIFI_SCAN_DONE_BIT);
137
133
WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
138
134
}
@@ -161,15 +157,13 @@ int16_t WiFiScanClass::scanComplete() {
161
157
}
162
158
163
159
if (WiFiGenericClass::getStatusBits () & WIFI_SCANNING_BIT) {
160
+ // Check if the delay expired, return WIFI_SCAN_FAILED in this case
161
+ if ((millis () - WiFiScanClass::_scanStarted) > WiFiScanClass::_scanTimeout) {
162
+ WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
163
+ return WIFI_SCAN_FAILED;
164
+ }
164
165
return WIFI_SCAN_RUNNING;
165
166
}
166
- // last one to avoid time affecting Async mode
167
- if (WiFiScanClass::_scanStarted
168
- && (millis () - WiFiScanClass::_scanStarted)
169
- > WiFiScanClass::_scanTimeout) { // Check is scan was started and if the delay expired, return WIFI_SCAN_FAILED in this case
170
- WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
171
- return WIFI_SCAN_FAILED;
172
- }
173
167
174
168
return WIFI_SCAN_FAILED;
175
169
}
@@ -179,11 +173,12 @@ int16_t WiFiScanClass::scanComplete() {
179
173
*/
180
174
void WiFiScanClass::scanDelete () {
181
175
WiFiGenericClass::clearStatusBits (WIFI_SCAN_DONE_BIT);
176
+ WiFiGenericClass::clearStatusBits (WIFI_SCANNING_BIT);
182
177
if (WiFiScanClass::_scanResult) {
183
- delete[] reinterpret_cast <wifi_ap_record_t *>(WiFiScanClass::_scanResult);
184
- WiFiScanClass::_scanResult = nullptr ;
185
- WiFiScanClass::_scanCount = 0 ;
178
+ free (WiFiScanClass::_scanResult);
179
+ WiFiScanClass::_scanResult = NULL ;
186
180
}
181
+ WiFiScanClass::_scanCount = 0 ;
187
182
}
188
183
189
184
/* *
0 commit comments