diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index e1c3ec8663..40d6e47677 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -4172,7 +4172,7 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg) case MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER: return "Camera Driver"; case MENU_ENUM_LABEL_VALUE_WIFI_DRIVER: - return "WiFi Driver"; + return "Wi-Fi Driver"; case MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER: return "Location Driver"; case MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE: @@ -4474,7 +4474,7 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg) case MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS: return "Network"; case MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS: - return "WiFi"; + return "Wi-Fi"; case MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES: return "Lakka Services"; case MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS: diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index ae1cbc3da5..7f53bf7a04 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1489,6 +1489,17 @@ static void menu_input_st_cheat_cb(void *userdata, const char *str) menu_input_dialog_end(); } +static void menu_input_wifi_cb(void *userdata, const char *passphrase) +{ + (void)userdata; + + unsigned idx = menu_input_dialog_get_kb_idx(); + + driver_wifi_connect_ssid(idx, passphrase); + + menu_input_dialog_end(); +} + static int action_ok_cheat(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -2861,7 +2872,17 @@ static int action_ok_rdb_entry(const char *path, static int action_ok_wifi(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - driver_wifi_connect_ssid(idx); + + menu_input_ctx_line_t line; + + line.label = "Passphrase"; + line.label_setting = label; + line.type = type; + line.idx = idx; + line.cb = menu_input_wifi_cb; + + if (!menu_input_dialog_start(&line)) + return -1; return 0; } diff --git a/menu/widgets/menu_input_dialog.c b/menu/widgets/menu_input_dialog.c index f0356d58f7..b6e232c458 100644 --- a/menu/widgets/menu_input_dialog.c +++ b/menu/widgets/menu_input_dialog.c @@ -81,6 +81,11 @@ unsigned menu_input_dialog_get_kb_type(void) return menu_input_dialog_keyboard_type; } +unsigned menu_input_dialog_get_kb_idx(void) +{ + return menu_input_dialog_keyboard_idx; +} + bool menu_input_dialog_get_display_kb(void) { return menu_input_dialog_keyboard_display; diff --git a/menu/widgets/menu_input_dialog.h b/menu/widgets/menu_input_dialog.h index bfdc1bdc04..be28d1d10e 100644 --- a/menu/widgets/menu_input_dialog.h +++ b/menu/widgets/menu_input_dialog.h @@ -45,6 +45,8 @@ const char *menu_input_dialog_get_buffer(void); unsigned menu_input_dialog_get_kb_type(void); +unsigned menu_input_dialog_get_kb_idx(void); + bool menu_input_dialog_start_search(void); void menu_input_dialog_hide_kb(void); diff --git a/wifi/drivers/connmanctl.c b/wifi/drivers/connmanctl.c index 08db861588..2065b5c776 100644 --- a/wifi/drivers/connmanctl.c +++ b/wifi/drivers/connmanctl.c @@ -91,7 +91,7 @@ static bool connmanctl_ssid_is_online(unsigned i) return line[2] == 'O'; } -static bool connmanctl_connect_ssid(unsigned i) +static bool connmanctl_connect_ssid(unsigned i, const char* passphrase) { char ln[512]; char service[128]; @@ -101,6 +101,7 @@ static bool connmanctl_connect_ssid(unsigned i) strlcpy(service, line+25, sizeof(service)); + command[0] = '\0'; strlcat(command, "connmanctl connect ", sizeof(command)); strlcat(command, service, sizeof(command)); strlcat(command, " 2>&1", sizeof(command)); diff --git a/wifi/drivers/nullwifi.c b/wifi/drivers/nullwifi.c index 4e80a6e1f0..36a2eb6279 100644 --- a/wifi/drivers/nullwifi.c +++ b/wifi/drivers/nullwifi.c @@ -49,7 +49,7 @@ static bool nullwifi_ssid_is_online(unsigned i) return false; } -static bool nullwifi_connect_ssid(unsigned i) +static bool nullwifi_connect_ssid(unsigned i, const char* passphrase) { return false; } diff --git a/wifi/wifi_driver.c b/wifi/wifi_driver.c index a8ae030207..b9f9bc4ff7 100644 --- a/wifi/wifi_driver.c +++ b/wifi/wifi_driver.c @@ -111,9 +111,9 @@ bool driver_wifi_ssid_is_online(unsigned i) return wifi_driver->ssid_is_online(i); } -bool driver_wifi_connect_ssid(unsigned i) +bool driver_wifi_connect_ssid(unsigned i, const char* passphrase) { - return wifi_driver->connect_ssid(i); + return wifi_driver->connect_ssid(i, passphrase); } bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data) diff --git a/wifi/wifi_driver.h b/wifi/wifi_driver.h index bd221425ea..2ec13f0829 100644 --- a/wifi/wifi_driver.h +++ b/wifi/wifi_driver.h @@ -55,7 +55,7 @@ typedef struct wifi_driver void (*scan)(void); void (*get_ssids)(struct string_list *list); bool (*ssid_is_online)(unsigned i); - bool (*connect_ssid)(unsigned i); + bool (*connect_ssid)(unsigned i, const char* passphrase); const char *ident; } wifi_driver_t; @@ -102,7 +102,7 @@ void driver_wifi_get_ssids(struct string_list *list); bool driver_wifi_ssid_is_online(unsigned i); -bool driver_wifi_connect_ssid(unsigned i); +bool driver_wifi_connect_ssid(unsigned i, const char* passphrase); bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data);