Merge develop into main (#418)

- WiFi code cleanup
- When WifiConnect opens and SSID is filled in, automatically focus on the password field
- When no touch screen is present, toolbar close buttons should be automatically selected
- When `device.py` selects a device, print it on screen
This commit is contained in:
Ken Van Hoeylandt
2025-11-14 23:29:20 +01:00
committed by GitHub
parent a4f4784ed9
commit eba1f8955a
6 changed files with 36 additions and 14 deletions
@@ -192,6 +192,10 @@ void View::init(AppContext& app, lv_obj_t* parent) {
std::string ssid;
if (optSsidParameter(bundle, ssid)) {
lv_textarea_set_text(ssid_textarea, ssid.c_str());
if (!ssid.empty()) {
lv_group_focus_obj(password_textarea);
}
}
std::string password;
+9
View File
@@ -1,5 +1,7 @@
#define LV_USE_PRIVATE_API 1 // For actual lv_obj_t declaration
#include <Tactility/TactilityConfig.h>
#include <Tactility/lvgl/Keyboard.h>
#include <Tactility/lvgl/Toolbar.h>
#include <Tactility/service/loader/Loader.h>
@@ -140,6 +142,13 @@ lv_obj_t* toolbar_create(lv_obj_t* parent, const std::string& title) {
toolbar_set_nav_action(obj, LV_SYMBOL_CLOSE, &stop_app, nullptr);
// If we don't have a touch device, we assume there's some other kind of input like a keyboard, an encoder or button control
// In that scenario we want to automatically have the close button selected so the user doesn't have to press the widget selection
// an extra time for every screen.
if (!hal::hasDevice(hal::Device::Type::Touch)) {
lv_group_focus_obj(toolbar->close_button);
}
return obj;
}
+17 -6
View File
@@ -195,7 +195,7 @@ void connect(const settings::WifiApSettings& ap, bool remember) {
return;
}
// Manual connect (e.g. via app) should stop auto-connecting until the connection is established
// Stop auto-connecting until the connection is established
wifi->pause_auto_connect = true;
wifi->connection_target = ap;
wifi->connection_target_remember = remember;
@@ -274,11 +274,12 @@ std::vector<ApRecord> getScanResults() {
if (wifi->scan_list_count > 0) {
uint16_t i = 0;
for (; i < wifi->scan_list_count; ++i) {
const auto& scanned_item = wifi->scan_list[i];
records.push_back((ApRecord) {
.ssid = (const char*)wifi->scan_list[i].ssid,
.rssi = wifi->scan_list[i].rssi,
.channel = wifi->scan_list[i].primary,
.auth_mode = wifi->scan_list[i].authmode
.ssid = reinterpret_cast<const char*>(scanned_item.ssid),
.rssi = scanned_item.rssi,
.channel = scanned_item.primary,
.auth_mode = scanned_item.authmode
});
}
}
@@ -404,7 +405,17 @@ static bool copy_scan_list(std::shared_ptr<Wifi> wifi) {
TT_LOG_I(TAG, "Scanned %u APs. Showing %u:", record_count, safe_record_count);
for (uint16_t i = 0; i < safe_record_count; i++) {
wifi_ap_record_t* record = &wifi->scan_list[i];
TT_LOG_I(TAG, " - SSID %s (RSSI %d, channel %d)", record->ssid, record->rssi, record->primary);
TT_LOG_I(TAG, " - SSID %s, RSSI %d, channel %d, BSSID %02X%02X%02X%02X%02X%02X",
record->ssid,
record->rssi,
record->primary,
record->bssid[0],
record->bssid[1],
record->bssid[2],
record->bssid[3],
record->bssid[4],
record->bssid[5]
);
}
return true;
} else {