-
-
Notifications
You must be signed in to change notification settings - Fork 346
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fixed network scan #2906
fixed network scan #2906
Conversation
PR Summary
|
this should fix #2905 |
ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&number, ap_info)); | ||
ESP_ERROR_CHECK(esp_wifi_scan_get_ap_num(&ap_count)); | ||
ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&number, ap_info)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The call to esp_wifi_scan_get_ap_num
is actually redundant since it's returned from esp_wifi_scan_get_ap_records
:
memset(ap_info, 0, sizeof(ap_info));
ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&number, ap_info));
// TODO: Handle hidden APs
for(unsigned i = 0; i < number; i++) {
list.addElement(new BssInfoImpl(&ap_info[i]));
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i was wondering about this and under which conditions the number of detected SSIDs and APs are different, especially, when the number of APs would be less than the number of SSIDs, but since this is the code that the ESP_IDF suggests, I thought it was "the right way"
I can drop the esp_wifi_scan_get_ap_num()
call and replace ap_count
with number
where necessary (or actually use a variable that is a bit more descriptive)
// TODO: Handle hidden APs | ||
for(unsigned i = 0; (i < event->number) && (i < ap_count); i++) { | ||
for(unsigned i = 0; (i < event->number); i++) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this loop should use number
instead of event->number
as it's the more recently aquired value. Presumably these values should always be the same, so could include an assert(number == event->number)
but I think that's overkill.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ack, especially as it's unclear if esp_wifi_scan_get_ap_records
changes number
and what it would mean if those diverge
…g the list of wlans
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lovely, thank you for the fix!
thank you for your support |
esp_wifi_scan_get_ap_records()
clears the ap data structure, so callingesp_wifi_scan_get_ap_num()
after it will return zero. Switching the order fixes the error of SmingWifiStation.scan()
not returning any networks on the esp32 platform