Skip to content

Commit d6b88b3

Browse files
wificonf: super stable
1 parent ee09a17 commit d6b88b3

File tree

1 file changed

+17
-26
lines changed
  • internal_filesystem/builtin/apps/com.example.wificonf/assets

1 file changed

+17
-26
lines changed

internal_filesystem/builtin/apps/com.example.wificonf/assets/wificonf.py

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44
import lvgl as lv
55
import _thread
66

7-
havenetwork = True
8-
try:
9-
import network
10-
except Exception as e:
11-
havenetwork = False
12-
137
# Screens:
148
appscreen = lv.screen_active()
159
password_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

9591
def 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

108104
def 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

139136
def 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

334328
load_config()
335-
336329
create_ui()
337330
start_scan_networks()
338331

339-
340-
refresh_list_timer = lv.timer_create(refresh_list, 2000, None)

0 commit comments

Comments
 (0)