summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2025-05-18 14:40:06 +0200
committerLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2025-05-18 14:40:06 +0200
commit460687ac73cfd82135ad47a9ca945112146bfc94 (patch)
tree0e552fdec0391ada295e41d758323f1850f3b89c
parent6f23f9fb8cabc53378e512743d11dfca321cf2b5 (diff)
downloaddumbswitch-460687ac73cfd82135ad47a9ca945112146bfc94.tar.gz
dumbswitch-460687ac73cfd82135ad47a9ca945112146bfc94.tar.bz2
dumbswitch-460687ac73cfd82135ad47a9ca945112146bfc94.tar.lz
dumbswitch-460687ac73cfd82135ad47a9ca945112146bfc94.zip

fix: loop multiple scans

-rw-r--r--src/bin/server.rs37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/bin/server.rs b/src/bin/server.rs
index ce95d62..b30fa18 100644
--- a/src/bin/server.rs
+++ b/src/bin/server.rs
@@ -42,6 +42,7 @@ use esp_hal::{
timer::timg::TimerGroup,
};
use esp_println::println;
+use esp_wifi::wifi::ScanConfig;
use esp_wifi::{
init,
wifi::{
@@ -158,21 +159,29 @@ fn main() -> ! {
debug!("is wifi started: {:?}", controller.is_started());
info!("Start Wifi Scan");
- let res: Result<(heapless::Vec<AccessPointInfo, 30>, usize), WifiError> = controller.scan_n();
let mut net: Option<Network> = None;
- if let Ok((res, _count)) = res {
- for ap in res {
- info!("Saw AP: {:?}", ap);
- for ap_comp in network_data::NETWORKS {
- if ap_comp.ssid == ap.ssid.clone() {
- let client_config = Configuration::Client(ClientConfiguration {
- ssid: ap_comp.ssid.try_into().unwrap(),
- password: ap_comp.password.try_into().unwrap(),
- ..Default::default()
- });
- controller.set_configuration(&client_config);
- net = Some(ap_comp);
- };
+ let mut attempts = 0;
+ while (net.is_none() && attempts < 16) {
+ attempts += 1;
+ let res: Result<(heapless::Vec<AccessPointInfo, 30>, usize), WifiError> = controller
+ .scan_with_config_sync(ScanConfig {
+ show_hidden: true,
+ ..Default::default()
+ });
+ if let Ok((res, _count)) = res {
+ for ap in res {
+ info!("Saw AP: {:?}", ap);
+ for ap_comp in network_data::NETWORKS {
+ if ap_comp.ssid == ap.ssid.clone() {
+ let client_config = Configuration::Client(ClientConfiguration {
+ ssid: ap_comp.ssid.try_into().unwrap(),
+ password: ap_comp.password.try_into().unwrap(),
+ ..Default::default()
+ });
+ controller.set_configuration(&client_config);
+ net = Some(ap_comp);
+ };
+ }
}
}
}