From 4734cb2640665e180aabf1b7a955b4b8e752d788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Fri, 23 Sep 2016 13:16:27 +0200 Subject: [PATCH 1/3] WiFi: ask for passphrase --- menu/cbs/menu_cbs_ok.c | 21 ++++++++++++++++++++- wifi/drivers/connmanctl.c | 3 ++- wifi/drivers/nullwifi.c | 2 +- wifi/wifi_driver.c | 4 ++-- wifi/wifi_driver.h | 4 ++-- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index ae1cbc3da5..38abf6abab 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1489,6 +1489,15 @@ 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; + + driver_wifi_connect_ssid(0, 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 +2870,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/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); From efeebf32ec9253bd35e12d5623951a88a6e5c5bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Fri, 23 Sep 2016 14:33:35 +0200 Subject: [PATCH 2/3] Fix Wi-Fi label --- intl/msg_hash_us.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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: From def77b5d344c9fb22374c1ea34c3d0cffea298f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Fri, 23 Sep 2016 14:45:07 +0200 Subject: [PATCH 3/3] Wi-Fi menu, pass over the entry index to know which network we're trying to connect --- menu/cbs/menu_cbs_ok.c | 4 +++- menu/widgets/menu_input_dialog.c | 5 +++++ menu/widgets/menu_input_dialog.h | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 38abf6abab..7f53bf7a04 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1493,7 +1493,9 @@ static void menu_input_wifi_cb(void *userdata, const char *passphrase) { (void)userdata; - driver_wifi_connect_ssid(0, passphrase); + unsigned idx = menu_input_dialog_get_kb_idx(); + + driver_wifi_connect_ssid(idx, passphrase); menu_input_dialog_end(); } 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);