44import lvgl as lv
55import _thread
66
7- havenetwork = True
8- try :
9- import network
10- except Exception as e :
11- havenetwork = False
12-
137# Screens:
148appscreen = lv .screen_active ()
159password_page = None
@@ -70,7 +64,7 @@ def save_config():
7064 print ("save_config: Failed to save config" )
7165
7266
73- def scan_networks ():
67+ def scan_networks_thread ():
7468 print ("scan_networks: Scanning for Wi-Fi networks" )
7569 global ssids , busy_scanning , scan_button_label , scan_button
7670 if havenetwork and not wlan .isconnected (): # restart WiFi hardware in case it's in a bad state
@@ -81,15 +75,17 @@ def scan_networks():
8175 networks = wlan .scan ()
8276 ssids = list (set (n [0 ].decode () for n in networks ))
8377 else :
78+ time .sleep (2 )
8479 ssids = ["Dummy" , "Test" , "SSIDs" ]
8580 print (f"scan_networks: Found networks: { ssids } " )
8681 except Exception as e :
8782 print (f"scan_networks: Scan failed: { e } " )
8883 show_error ("Wi-Fi scan failed" )
8984 # scan done:
90- scan_button_label .set_text (scan_button_scan_text )
91- scan_button .add_flag (lv .obj .FLAG .CLICKABLE )
9285 busy_scanning = False
86+ lv .async_call (lambda l : scan_button_label .set_text (scan_button_scan_text ), None )
87+ lv .async_call (lambda l : scan_button .add_flag (lv .obj .FLAG .CLICKABLE ), None )
88+ lv .async_call (lambda l : refresh_list (), None )
9389
9490
9591def start_scan_networks ():
@@ -102,7 +98,7 @@ def start_scan_networks():
10298 scan_button .remove_flag (lv .obj .FLAG .CLICKABLE )
10399 scan_button_label .set_text (scan_button_scanning_text )
104100 _thread .stack_size (12 * 1024 )
105- _thread .start_new_thread (scan_networks , ())
101+ _thread .start_new_thread (scan_networks_thread , ())
106102
107103
108104def attempt_connecting_thread (ssid ,password ):
@@ -134,6 +130,7 @@ def attempt_connecting_thread(ssid,password):
134130 # Schedule UI updates because different thread
135131 lv .async_call (lambda l : scan_button_label .set_text (scan_button_scan_text ), None )
136132 lv .async_call (lambda l : scan_button .add_flag (lv .obj .FLAG .CLICKABLE ), None )
133+ lv .async_call (lambda l : refresh_list (), None )
137134
138135
139136def start_attempt_connecting (ssid ,password ):
@@ -156,16 +153,16 @@ def show_error(message):
156153 timer = lv .timer_create (lambda t : error_label .add_flag (lv .obj .FLAG .HIDDEN ),3000 ,None )
157154 timer .set_repeat_count (1 )
158155
159- def refresh_list (timer ):
156+ def refresh_list ():
160157 global ssids
161- # print("refresh_list: Clearing current list")
158+ print ("refresh_list: Clearing current list" )
162159 aplist .clean () # this causes an issue with lost taps if an ssid is clicked that has been removed
163- # print("refresh_list: Populating list with scanned networks")
160+ print ("refresh_list: Populating list with scanned networks" )
164161 for ssid in ssids :
165162 if len (ssid ) < 1 or len (ssid ) > 32 :
166163 print (f"Skipping too short or long SSID: { ssid } " )
167164 continue
168- # print(f"refresh_list: Adding SSID: {ssid}")
165+ print (f"refresh_list: Adding SSID: { ssid } " )
169166 button = aplist .add_button (None ,ssid )
170167 button .add_event_cb (lambda e , s = ssid : select_ssid_cb (e ,s ),lv .EVENT .CLICKED ,None )
171168 if havenetwork and wlan .isconnected () and wlan .config ('essid' )== ssid :
@@ -177,7 +174,7 @@ def refresh_list(timer):
177174 else :
178175 status = ""
179176 if status :
180- # print(f"refresh_list: Setting status '{status}' for SSID: {ssid}")
177+ print (f"refresh_list: Setting status '{ status } ' for SSID: { ssid } " )
181178 label = lv .label (button )
182179 label .set_text (status )
183180 label .align (lv .ALIGN .RIGHT_MID ,- 10 ,0 )
@@ -318,23 +315,17 @@ def create_ui():
318315 scan_button_label .center ()
319316 scan_button .add_event_cb (scan_cb ,lv .EVENT .CLICKED ,None )
320317
321- def janitor_cb (timer ):
322- if lv .screen_active () != appscreen and lv .screen_active () != password_page :
323- print ("wificonf.py backgrounded, cleaning up..." )
324- janitor .delete ()
325- refresh_list_timer .delete ()
326- print ("wificonf.py ending" )
327318
328- janitor = lv .timer_create (janitor_cb , 400 , None )
329319
330- if havenetwork :
320+ havenetwork = True
321+ try :
322+ import network
331323 wlan = network .WLAN (network .STA_IF )
332324 wlan .active (True )
325+ except Exception as e :
326+ havenetwork = False
333327
334328load_config ()
335-
336329create_ui ()
337330start_scan_networks ()
338331
339-
340- refresh_list_timer = lv .timer_create (refresh_list , 2000 , None )
0 commit comments