diff --git a/stmhal/init-files/bootstrap.py b/stmhal/init-files/bootstrap.py index dc739f84f9dbf..0e4fe605587ae 100644 --- a/stmhal/init-files/bootstrap.py +++ b/stmhal/init-files/bootstrap.py @@ -233,17 +233,31 @@ def download(url, target, expected_hash): except ValueError as e: print(e) +if type(w) is dict: + # convert original format json (dict, one network) to new (list, many networks) + w = [w] + wifi_info = "\nMore information:\nbadge.emfcamp.org/TiLDA_MK3/wifi" -if "ssid" not in w: +if not all( [ ("ssid" in config) for config in w ] ): label.text("Couldn't find a valid wifi.json :(" + wifi_info) while True: pyb.wfi() -label.text("Connecting to '%s'.\nIf this is incorrect, please check your wifi.json%s" % (w["ssid"], wifi_info)) n = network.CC3100() -if ("pw" in w) and w["pw"]: - n.connect(w["ssid"], w["pw"], timeout=10) -else: - n.connect(w["ssid"], timeout=10) +visible_ssids = [ ap['ssid'] for ap in n.list_aps() ] +known_ssids = [ ap['ssid'] for ap in w ] + +if len(set(known_ssids).intersection(visible_ssids)) < 1: + label.text("Couldn't find any networks listed in wifi.json :(" + wifi_info) + while True: pyb.wfi() + +for ap in w: + if ap["ssid"] in visible_ssids: + label.text("Connecting to '%s'.\nIf this is incorrect, please check your wifi.json%s" % (ap["ssid"], wifi_info)) + if ("pw" in ap) and ap["pw"]: + n.connect(ap["ssid"], ap["pw"], timeout=10) + else: + n.connect(ap["ssid"], timeout=10) + break # found a visible AP, don't bother with any more success = False failure_counter = 0 diff --git a/stmhal/main.c b/stmhal/main.c index 226b34dcd0065..60b3ed220bbb6 100644 --- a/stmhal/main.c +++ b/stmhal/main.c @@ -138,7 +138,7 @@ static const char fresh_bootstrap_py[] = #include "genhdr/bootstrap.py.h" ; -static const char fresh_wifi_json[] = "{\"ssid\":\"emfcamp-insecure\"}\r\n"; +static const char fresh_wifi_json[] = "[{\"ssid\":\"emfcamp-insecure\"}]\r\n"; static const char fresh_pybcdc_inf[] = #include "genhdr/pybcdc_inf.h"