| 22 | } |
| 23 | |
| 24 | static void onConnect(lv_event_t* event) { |
| 25 | auto wifi = std::static_pointer_cast<WifiConnect>(getCurrentApp()); |
| 26 | auto& view = wifi->getView(); |
| 27 | |
| 28 | wifi->getState().setConnectionError(false); |
| 29 | view.resetErrors(); |
| 30 | |
| 31 | const char* ssid = lv_textarea_get_text(view.ssid_textarea); |
| 32 | size_t ssid_len = strlen(ssid); |
| 33 | if (ssid_len > TT_WIFI_SSID_LIMIT) { |
| 34 | LOGGER.error("SSID too long"); |
| 35 | lv_label_set_text(view.ssid_error, "SSID too long"); |
| 36 | lv_obj_remove_flag(view.ssid_error, LV_OBJ_FLAG_HIDDEN); |
| 37 | return; |
| 38 | } |
| 39 | |
| 40 | const char* password = lv_textarea_get_text(view.password_textarea); |
| 41 | size_t password_len = strlen(password); |
| 42 | if (password_len > TT_WIFI_CREDENTIALS_PASSWORD_LIMIT) { |
| 43 | LOGGER.error("Password too long"); |
| 44 | lv_label_set_text(view.password_error, "Password too long"); |
| 45 | lv_obj_remove_flag(view.password_error, LV_OBJ_FLAG_HIDDEN); |
| 46 | return; |
| 47 | } |
| 48 | |
| 49 | bool store = lv_obj_get_state(view.remember_switch) & LV_STATE_CHECKED; |
| 50 | |
| 51 | view.setLoading(true); |
| 52 | |
| 53 | service::wifi::settings::WifiApSettings settings; |
| 54 | settings.password = password; |
| 55 | settings.ssid = ssid; |
| 56 | settings.channel = 0; |
| 57 | settings.autoConnect = TT_WIFI_AUTO_CONNECT; // No UI yet, so use global setting:w |
| 58 | |
| 59 | auto* bindings = &wifi->getBindings(); |
| 60 | bindings->onConnectSsid( |
| 61 | settings, |
| 62 | store, |
| 63 | bindings->onConnectSsidContext |
| 64 | ); |
| 65 | } |
| 66 | |
| 67 | void View::setLoading(bool loading) { |
| 68 | if (loading) { |
nothing calls this directly
no test coverage detected