@@ -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