Skip to content

Commit b9de1ce

Browse files
committed
wifi: select higher average rssi
1 parent 3d9689a commit b9de1ce

2 files changed

Lines changed: 9 additions & 9 deletions

File tree

lib/drivers/netdev/wifi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ lws_netdev_wifi_rssi_sort_compare(const lws_dll2_t *d, const lws_dll2_t *i)
3131
{
3232
const lws_wifi_sta_t *wsd = (const lws_wifi_sta_t *)d,
3333
*wsi = (const lws_wifi_sta_t *)i;
34-
return rssi_averaged(wsd) > rssi_averaged(wsi);
34+
return rssi_averaged(wsd) < rssi_averaged(wsi);
3535
}
3636

3737
void
@@ -209,7 +209,7 @@ lws_netdev_wifi_redo_last(lws_netdev_instance_wifi_t *wnd)
209209
return 1;
210210

211211
memcpy(ssid_copy, ssid, al);
212-
ssid_copy[al + 1] = '\0';
212+
ssid_copy[al] = '\0';
213213

214214
pb = lws_json_simple_find((const char *)buf, l, "\"bssid\":", &al);
215215
if (!pb)

lib/plat/freertos/esp32/drivers/netdev/wifi-esp32.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@ lws_esp32_scan_update(lws_netdev_instance_wifi_t *wnd)
159159
w->ssid_len = m;
160160

161161
memcpy(w->bssid, ar->bssid, 6);
162-
163-
lws_dll2_add_sorted(&w->list, &wnd->scan,
164-
lws_netdev_wifi_rssi_sort_compare);
162+
} else {
163+
/* we will update the rssi and re-insert it */
164+
lws_dll2_remove(&w->list);
165165
}
166166

167167
if (w->rssi_count == LWS_ARRAY_SIZE(w->rssi))
@@ -172,6 +172,9 @@ lws_esp32_scan_update(lws_netdev_instance_wifi_t *wnd)
172172
w->rssi_avg += w->rssi[w->rssi_next++];
173173
w->rssi_next = w->rssi_next & (LWS_ARRAY_SIZE(w->rssi) - 1);
174174

175+
lws_dll2_add_sorted(&w->list, &wnd->scan,
176+
lws_netdev_wifi_rssi_sort_compare);
177+
175178
w->ch = ar->primary;
176179
w->authmode = ar->authmode;
177180
w->last_seen = now;
@@ -234,12 +237,9 @@ lws_netdev_wifi_event_plat(struct lws_netdev_instance *nd, lws_usec_t timestamp,
234237
switch (atoi(ev)) {
235238
case WIFI_EVENT_STA_START:
236239
wnd->state = LWSNDVWIFI_STATE_INITIAL;
237-
if (!lws_netdev_wifi_redo_last(wnd))
238-
break;
239240

240241
/*
241-
* if the "try last successful" one fails, start the
242-
* scan by falling through
242+
* always start the scan by falling through
243243
*/
244244

245245
case WIFI_EVENT_STA_DISCONNECTED:

0 commit comments

Comments
 (0)