mirror of
https://github.com/libretro/RetroArch.git
synced 2024-06-23 14:53:42 -04:00
Split up wifi networking code - move it into separate file (#13262)
This commit is contained in:
parent
ed437fdd8e
commit
71b30d7846
|
@ -783,12 +783,14 @@ ifeq ($(HAVE_BLUETOOTH), 1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(HAVE_LAKKA), 1)
|
ifeq ($(HAVE_LAKKA), 1)
|
||||||
OBJ += wifi/drivers/connmanctl.o
|
OBJ += network/drivers_wifi/connmanctl.o
|
||||||
OBJ += misc/cpufreq/cpufreq.o
|
OBJ += misc/cpufreq/cpufreq.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(HAVE_WIFI), 1)
|
ifeq ($(HAVE_WIFI), 1)
|
||||||
OBJ += wifi/drivers/nmcli.o
|
OBJ += network/wifi_driver.o
|
||||||
|
OBJ += tasks/task_wifi.o
|
||||||
|
OBJ += network/drivers_wifi/nmcli.o
|
||||||
DEFINES += -DHAVE_WIFI
|
DEFINES += -DHAVE_WIFI
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -2084,7 +2086,6 @@ ifeq ($(HAVE_NETWORKING), 1)
|
||||||
tasks/task_netplay_lan_scan.o \
|
tasks/task_netplay_lan_scan.o \
|
||||||
tasks/task_netplay_nat_traversal.o \
|
tasks/task_netplay_nat_traversal.o \
|
||||||
tasks/task_bluetooth.o \
|
tasks/task_bluetooth.o \
|
||||||
tasks/task_wifi.o \
|
|
||||||
tasks/task_pl_thumbnail_download.o \
|
tasks/task_pl_thumbnail_download.o \
|
||||||
tasks/task_netplay_find_content.o
|
tasks/task_netplay_find_content.o
|
||||||
|
|
||||||
|
|
41
driver.c
41
driver.c
|
@ -27,7 +27,11 @@
|
||||||
#include "verbosity.h"
|
#include "verbosity.h"
|
||||||
|
|
||||||
#include "bluetooth/bluetooth_driver.h"
|
#include "bluetooth/bluetooth_driver.h"
|
||||||
#include "wifi/wifi_driver.h"
|
#ifdef HAVE_NETWORKING
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
|
#include "network/wifi_driver.h"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#include "led/led_driver.h"
|
#include "led/led_driver.h"
|
||||||
#include "midi_driver.h"
|
#include "midi_driver.h"
|
||||||
#include "gfx/video_driver.h"
|
#include "gfx/video_driver.h"
|
||||||
|
@ -68,33 +72,6 @@ const bluetooth_driver_t *bluetooth_drivers[] = {
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
wifi_driver_t wifi_null = {
|
|
||||||
NULL, /* init */
|
|
||||||
NULL, /* free */
|
|
||||||
NULL, /* start */
|
|
||||||
NULL, /* stop */
|
|
||||||
NULL, /* enable */
|
|
||||||
NULL, /* connection_info */
|
|
||||||
NULL, /* scan */
|
|
||||||
NULL, /* get_ssids */
|
|
||||||
NULL, /* ssid_is_online */
|
|
||||||
NULL, /* connect_ssid */
|
|
||||||
NULL, /* disconnect_ssid */
|
|
||||||
NULL, /* tether_start_stop */
|
|
||||||
"null",
|
|
||||||
};
|
|
||||||
|
|
||||||
const wifi_driver_t *wifi_drivers[] = {
|
|
||||||
#ifdef HAVE_LAKKA
|
|
||||||
&wifi_connmanctl,
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_WIFI
|
|
||||||
&wifi_nmcli,
|
|
||||||
#endif
|
|
||||||
&wifi_null,
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void retro_frame_null(const void *data, unsigned width,
|
static void retro_frame_null(const void *data, unsigned width,
|
||||||
unsigned height, size_t pitch) { }
|
unsigned height, size_t pitch) { }
|
||||||
void retro_input_poll_null(void) { }
|
void retro_input_poll_null(void) { }
|
||||||
|
@ -228,6 +205,7 @@ static const void *find_driver_nonempty(
|
||||||
return bluetooth_drivers[i];
|
return bluetooth_drivers[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
else if (string_is_equal(label, "wifi_driver"))
|
else if (string_is_equal(label, "wifi_driver"))
|
||||||
{
|
{
|
||||||
if (wifi_drivers[i])
|
if (wifi_drivers[i])
|
||||||
|
@ -238,6 +216,7 @@ static const void *find_driver_nonempty(
|
||||||
return wifi_drivers[i];
|
return wifi_drivers[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -580,8 +559,10 @@ void drivers_init(
|
||||||
if (flags & DRIVER_BLUETOOTH_MASK)
|
if (flags & DRIVER_BLUETOOTH_MASK)
|
||||||
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_INIT, NULL);
|
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_INIT, NULL);
|
||||||
|
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
if ((flags & DRIVER_WIFI_MASK))
|
if ((flags & DRIVER_WIFI_MASK))
|
||||||
wifi_driver_ctl(RARCH_WIFI_CTL_INIT, NULL);
|
wifi_driver_ctl(RARCH_WIFI_CTL_INIT, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (flags & DRIVER_LOCATION_MASK)
|
if (flags & DRIVER_LOCATION_MASK)
|
||||||
{
|
{
|
||||||
|
@ -729,8 +710,10 @@ void driver_uninit(int flags)
|
||||||
if ((flags & DRIVER_BLUETOOTH_MASK))
|
if ((flags & DRIVER_BLUETOOTH_MASK))
|
||||||
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_DEINIT, NULL);
|
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_DEINIT, NULL);
|
||||||
|
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
if ((flags & DRIVER_WIFI_MASK))
|
if ((flags & DRIVER_WIFI_MASK))
|
||||||
wifi_driver_ctl(RARCH_WIFI_CTL_DEINIT, NULL);
|
wifi_driver_ctl(RARCH_WIFI_CTL_DEINIT, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (flags & DRIVER_LED)
|
if (flags & DRIVER_LED)
|
||||||
led_driver_free();
|
led_driver_free();
|
||||||
|
@ -841,7 +824,9 @@ void retroarch_deinit_drivers(struct retro_callbacks *cbs)
|
||||||
camera_st->data = NULL;
|
camera_st->data = NULL;
|
||||||
|
|
||||||
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_DESTROY, NULL);
|
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_DESTROY, NULL);
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
wifi_driver_ctl(RARCH_WIFI_CTL_DESTROY, NULL);
|
wifi_driver_ctl(RARCH_WIFI_CTL_DESTROY, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
cbs->frame_cb = retro_frame_null;
|
cbs->frame_cb = retro_frame_null;
|
||||||
cbs->poll_cb = retro_input_poll_null;
|
cbs->poll_cb = retro_input_poll_null;
|
||||||
|
|
|
@ -1266,8 +1266,15 @@ BLUETOOTH
|
||||||
/*============================================================
|
/*============================================================
|
||||||
WIFI
|
WIFI
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
|
#include "../network/wifi_driver.c"
|
||||||
|
|
||||||
#ifdef HAVE_LAKKA
|
#ifdef HAVE_LAKKA
|
||||||
#include "../wifi/drivers/connmanctl.c"
|
#include "../network/drivers_wifi/connmanctl.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "../tasks/task_wifi.c"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*============================================================
|
/*============================================================
|
||||||
|
@ -1312,7 +1319,6 @@ NETPLAY
|
||||||
#include "../tasks/task_netplay_lan_scan.c"
|
#include "../tasks/task_netplay_lan_scan.c"
|
||||||
#include "../tasks/task_netplay_nat_traversal.c"
|
#include "../tasks/task_netplay_nat_traversal.c"
|
||||||
#include "../tasks/task_bluetooth.c"
|
#include "../tasks/task_bluetooth.c"
|
||||||
#include "../tasks/task_wifi.c"
|
|
||||||
#include "../tasks/task_netplay_find_content.c"
|
#include "../tasks/task_netplay_find_content.c"
|
||||||
#include "../tasks/task_pl_thumbnail_download.c"
|
#include "../tasks/task_pl_thumbnail_download.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
#include "../../paths.h"
|
#include "../../paths.h"
|
||||||
#include "../../verbosity.h"
|
#include "../../verbosity.h"
|
||||||
#include "../../bluetooth/bluetooth_driver.h"
|
#include "../../bluetooth/bluetooth_driver.h"
|
||||||
#include "../../wifi/wifi_driver.h"
|
|
||||||
#include "../../playlist.h"
|
#include "../../playlist.h"
|
||||||
#include "../../manual_content_scan.h"
|
#include "../../manual_content_scan.h"
|
||||||
#include "../misc/cpufreq/cpufreq.h"
|
#include "../misc/cpufreq/cpufreq.h"
|
||||||
|
@ -51,6 +50,7 @@
|
||||||
|
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
#include "../../network/netplay/netplay.h"
|
#include "../../network/netplay/netplay.h"
|
||||||
|
#include "../../network/wifi_driver.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CHEEVOS
|
#ifdef HAVE_CHEEVOS
|
||||||
|
@ -982,6 +982,7 @@ static void menu_action_setting_disp_set_label_bluetooth_is_connected(
|
||||||
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BT_CONNECTED), len);
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BT_CONNECTED), len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(HAVE_NETWORKING) && defined(HAVE_WIFI)
|
||||||
static void menu_action_setting_disp_set_label_wifi_is_online(
|
static void menu_action_setting_disp_set_label_wifi_is_online(
|
||||||
file_list_t* list,
|
file_list_t* list,
|
||||||
unsigned *w, unsigned type, unsigned i,
|
unsigned *w, unsigned type, unsigned i,
|
||||||
|
@ -996,6 +997,7 @@ static void menu_action_setting_disp_set_label_wifi_is_online(
|
||||||
if (driver_wifi_ssid_is_online(i))
|
if (driver_wifi_ssid_is_online(i))
|
||||||
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONLINE), len);
|
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONLINE), len);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void menu_action_setting_disp_set_label_menu_disk_index(
|
static void menu_action_setting_disp_set_label_menu_disk_index(
|
||||||
file_list_t* list,
|
file_list_t* list,
|
||||||
|
@ -1769,8 +1771,10 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
|
||||||
menu_action_setting_disp_set_label_bluetooth_is_connected);
|
menu_action_setting_disp_set_label_bluetooth_is_connected);
|
||||||
break;
|
break;
|
||||||
case MENU_ENUM_LABEL_CONNECT_WIFI:
|
case MENU_ENUM_LABEL_CONNECT_WIFI:
|
||||||
|
#if defined(HAVE_NETWORKING) && defined(HAVE_WIFI)
|
||||||
BIND_ACTION_GET_VALUE(cbs,
|
BIND_ACTION_GET_VALUE(cbs,
|
||||||
menu_action_setting_disp_set_label_wifi_is_online);
|
menu_action_setting_disp_set_label_wifi_is_online);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case MENU_ENUM_LABEL_CHEAT_NUM_PASSES:
|
case MENU_ENUM_LABEL_CHEAT_NUM_PASSES:
|
||||||
#ifdef HAVE_CHEATS
|
#ifdef HAVE_CHEATS
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
|
|
||||||
#include "../../config.def.h"
|
#include "../../config.def.h"
|
||||||
#include "../../config.def.keybinds.h"
|
#include "../../config.def.keybinds.h"
|
||||||
#include "../../wifi/wifi_driver.h"
|
|
||||||
#include "../../driver.h"
|
#include "../../driver.h"
|
||||||
|
|
||||||
#include "../menu_driver.h"
|
#include "../menu_driver.h"
|
||||||
|
@ -83,7 +82,9 @@
|
||||||
|
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
#include "../../network/netplay/netplay.h"
|
#include "../../network/netplay/netplay.h"
|
||||||
#include "../../wifi/wifi_driver.h"
|
#ifdef HAVE_WIFI
|
||||||
|
#include "../../network/wifi_driver.h"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WINRT__
|
#ifdef __WINRT__
|
||||||
|
@ -2900,6 +2901,7 @@ static int action_ok_bluetooth(const char *path, const char *label,
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
static void menu_input_wifi_cb(void *userdata, const char *passphrase)
|
static void menu_input_wifi_cb(void *userdata, const char *passphrase)
|
||||||
{
|
{
|
||||||
unsigned idx = menu_input_dialog_get_kb_idx();
|
unsigned idx = menu_input_dialog_get_kb_idx();
|
||||||
|
@ -2915,6 +2917,35 @@ static void menu_input_wifi_cb(void *userdata, const char *passphrase)
|
||||||
|
|
||||||
menu_input_dialog_end();
|
menu_input_dialog_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int action_ok_wifi(const char *path, const char *label_setting,
|
||||||
|
unsigned type, size_t idx, size_t entry_idx)
|
||||||
|
{
|
||||||
|
wifi_network_scan_t* scan = driver_wifi_get_ssids();
|
||||||
|
if (idx >= RBUF_LEN(scan->net_list))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (scan->net_list[idx].saved_password)
|
||||||
|
{
|
||||||
|
/* No need to ask for a password, should be stored */
|
||||||
|
task_push_wifi_connect(NULL, &scan->net_list[idx]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Show password input dialog */
|
||||||
|
menu_input_ctx_line_t line;
|
||||||
|
line.label = "Passphrase";
|
||||||
|
line.label_setting = label_setting;
|
||||||
|
line.type = type;
|
||||||
|
line.idx = (unsigned)idx;
|
||||||
|
line.cb = menu_input_wifi_cb;
|
||||||
|
if (!menu_input_dialog_start(&line))
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void menu_input_st_string_cb_rename_entry(void *userdata,
|
static void menu_input_st_string_cb_rename_entry(void *userdata,
|
||||||
|
@ -3234,35 +3265,6 @@ static int action_ok_shader_preset_remove_game(const char *path,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_NETWORKING
|
|
||||||
static int action_ok_wifi(const char *path, const char *label_setting,
|
|
||||||
unsigned type, size_t idx, size_t entry_idx)
|
|
||||||
{
|
|
||||||
wifi_network_scan_t* scan = driver_wifi_get_ssids();
|
|
||||||
if (idx >= RBUF_LEN(scan->net_list))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (scan->net_list[idx].saved_password)
|
|
||||||
{
|
|
||||||
/* No need to ask for a password, should be stored */
|
|
||||||
task_push_wifi_connect(NULL, &scan->net_list[idx]);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Show password input dialog */
|
|
||||||
menu_input_ctx_line_t line;
|
|
||||||
line.label = "Passphrase";
|
|
||||||
line.label_setting = label_setting;
|
|
||||||
line.type = type;
|
|
||||||
line.idx = (unsigned)idx;
|
|
||||||
line.cb = menu_input_wifi_cb;
|
|
||||||
if (!menu_input_dialog_start(&line))
|
|
||||||
return -1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int action_ok_video_filter_remove(const char *path,
|
static int action_ok_video_filter_remove(const char *path,
|
||||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||||
|
@ -5551,9 +5553,11 @@ DEFAULT_ACTION_OK_FUNC(action_ok_subsystem_list, ACTION_OK_DL_SUBSYSTEM_SETTINGS
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_database_manager_list, ACTION_OK_DL_DATABASE_MANAGER_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_database_manager_list, ACTION_OK_DL_DATABASE_MANAGER_LIST)
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_bluetooth_list, ACTION_OK_DL_BLUETOOTH_SETTINGS_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_bluetooth_list, ACTION_OK_DL_BLUETOOTH_SETTINGS_LIST)
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_wifi_list, ACTION_OK_DL_WIFI_SETTINGS_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_wifi_list, ACTION_OK_DL_WIFI_SETTINGS_LIST)
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_wifi_networks_list, ACTION_OK_DL_WIFI_NETWORKS_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_wifi_networks_list, ACTION_OK_DL_WIFI_NETWORKS_LIST)
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_cursor_manager_list, ACTION_OK_DL_CURSOR_MANAGER_LIST)
|
DEFAULT_ACTION_OK_FUNC(action_ok_cursor_manager_list, ACTION_OK_DL_CURSOR_MANAGER_LIST)
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_compressed_archive_push, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH)
|
DEFAULT_ACTION_OK_FUNC(action_ok_compressed_archive_push, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH)
|
||||||
DEFAULT_ACTION_OK_FUNC(action_ok_compressed_archive_push_detect_core, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE)
|
DEFAULT_ACTION_OK_FUNC(action_ok_compressed_archive_push_detect_core, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE)
|
||||||
|
@ -5701,6 +5705,7 @@ static int action_ok_open_picker(const char *path,
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
static void wifi_menu_refresh_callback(retro_task_t *task,
|
static void wifi_menu_refresh_callback(retro_task_t *task,
|
||||||
void *task_data,
|
void *task_data,
|
||||||
void *user_data, const char *error)
|
void *user_data, const char *error)
|
||||||
|
@ -5716,6 +5721,7 @@ static int action_ok_wifi_disconnect(const char *path,
|
||||||
task_push_wifi_disconnect(wifi_menu_refresh_callback);
|
task_push_wifi_disconnect(wifi_menu_refresh_callback);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int action_ok_netplay_connect_room(const char *path,
|
static int action_ok_netplay_connect_room(const char *path,
|
||||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||||
|
@ -7967,9 +7973,11 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||||
{MENU_ENUM_LABEL_UPDATER_SETTINGS, action_ok_updater_list},
|
{MENU_ENUM_LABEL_UPDATER_SETTINGS, action_ok_updater_list},
|
||||||
{MENU_ENUM_LABEL_BLUETOOTH_SETTINGS, action_ok_bluetooth_list},
|
{MENU_ENUM_LABEL_BLUETOOTH_SETTINGS, action_ok_bluetooth_list},
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
{MENU_ENUM_LABEL_WIFI_SETTINGS, action_ok_wifi_list},
|
{MENU_ENUM_LABEL_WIFI_SETTINGS, action_ok_wifi_list},
|
||||||
{MENU_ENUM_LABEL_WIFI_NETWORK_SCAN, action_ok_wifi_networks_list},
|
{MENU_ENUM_LABEL_WIFI_NETWORK_SCAN, action_ok_wifi_networks_list},
|
||||||
{MENU_ENUM_LABEL_WIFI_DISCONNECT, action_ok_wifi_disconnect},
|
{MENU_ENUM_LABEL_WIFI_DISCONNECT, action_ok_wifi_disconnect},
|
||||||
|
#endif
|
||||||
{MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM, action_ok_netplay_connect_room},
|
{MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM, action_ok_netplay_connect_room},
|
||||||
#endif
|
#endif
|
||||||
{MENU_ENUM_LABEL_NETWORK_HOSTING_SETTINGS, action_ok_network_hosting_list},
|
{MENU_ENUM_LABEL_NETWORK_HOSTING_SETTINGS, action_ok_network_hosting_list},
|
||||||
|
@ -8444,7 +8452,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
||||||
break;
|
break;
|
||||||
case MENU_WIFI:
|
case MENU_WIFI:
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
BIND_ACTION_OK(cbs, action_ok_wifi);
|
BIND_ACTION_OK(cbs, action_ok_wifi);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case MENU_NETPLAY_LAN_SCAN:
|
case MENU_NETPLAY_LAN_SCAN:
|
||||||
|
|
|
@ -111,7 +111,9 @@
|
||||||
#include "../performance_counters.h"
|
#include "../performance_counters.h"
|
||||||
#include "../core_info.h"
|
#include "../core_info.h"
|
||||||
#include "../bluetooth/bluetooth_driver.h"
|
#include "../bluetooth/bluetooth_driver.h"
|
||||||
#include "../wifi/wifi_driver.h"
|
#if defined(HAVE_NETWORKING) && defined(HAVE_WIFI)
|
||||||
|
#include "../network/wifi_driver.h"
|
||||||
|
#endif
|
||||||
#include "../tasks/task_content.h"
|
#include "../tasks/task_content.h"
|
||||||
#include "../tasks/tasks_internal.h"
|
#include "../tasks/tasks_internal.h"
|
||||||
#include "../dynamic.h"
|
#include "../dynamic.h"
|
||||||
|
@ -4947,7 +4949,7 @@ static void bluetooth_scan_callback(retro_task_t *task,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_NETWORKING
|
#if defined(HAVE_NETWORKING) && defined(HAVE_WIFI)
|
||||||
static void wifi_scan_callback(retro_task_t *task,
|
static void wifi_scan_callback(retro_task_t *task,
|
||||||
void *task_data,
|
void *task_data,
|
||||||
void *user_data, const char *error)
|
void *user_data, const char *error)
|
||||||
|
@ -5854,6 +5856,7 @@ unsigned menu_displaylist_build_list(
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case DISPLAYLIST_WIFI_SETTINGS_LIST:
|
case DISPLAYLIST_WIFI_SETTINGS_LIST:
|
||||||
|
#if defined(HAVE_NETWORKING) && defined(HAVE_WIFI)
|
||||||
{
|
{
|
||||||
bool wifi_enabled = settings->bools.wifi_enabled;
|
bool wifi_enabled = settings->bools.wifi_enabled;
|
||||||
bool connected = driver_wifi_connection_info(NULL);
|
bool connected = driver_wifi_connection_info(NULL);
|
||||||
|
@ -5888,9 +5891,10 @@ unsigned menu_displaylist_build_list(
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case DISPLAYLIST_WIFI_NETWORKS_LIST:
|
case DISPLAYLIST_WIFI_NETWORKS_LIST:
|
||||||
#ifdef HAVE_NETWORKING
|
#if defined(HAVE_NETWORKING) && defined(HAVE_WIFI)
|
||||||
if (!string_is_equal(settings->arrays.wifi_driver, "null"))
|
if (!string_is_equal(settings->arrays.wifi_driver, "null"))
|
||||||
{
|
{
|
||||||
wifi_network_scan_t *scan = driver_wifi_get_ssids();
|
wifi_network_scan_t *scan = driver_wifi_get_ssids();
|
||||||
|
|
|
@ -82,7 +82,6 @@
|
||||||
#include "../list_special.h"
|
#include "../list_special.h"
|
||||||
#include "../audio/audio_driver.h"
|
#include "../audio/audio_driver.h"
|
||||||
#include "../bluetooth/bluetooth_driver.h"
|
#include "../bluetooth/bluetooth_driver.h"
|
||||||
#include "../wifi/wifi_driver.h"
|
|
||||||
#include "../midi_driver.h"
|
#include "../midi_driver.h"
|
||||||
#include "../location_driver.h"
|
#include "../location_driver.h"
|
||||||
#include "../record/record_driver.h"
|
#include "../record/record_driver.h"
|
||||||
|
@ -106,6 +105,9 @@
|
||||||
|
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
#include "../network/netplay/netplay.h"
|
#include "../network/netplay/netplay.h"
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
|
#include "../network/wifi_driver.h"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_VIDEO_LAYOUT
|
#ifdef HAVE_VIDEO_LAYOUT
|
||||||
|
@ -8155,10 +8157,12 @@ static void general_write_handler(rarch_setting_t *setting)
|
||||||
break;
|
break;
|
||||||
case MENU_ENUM_LABEL_WIFI_ENABLED:
|
case MENU_ENUM_LABEL_WIFI_ENABLED:
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
if (*setting->value.target.boolean)
|
if (*setting->value.target.boolean)
|
||||||
task_push_wifi_enable(NULL);
|
task_push_wifi_enable(NULL);
|
||||||
else
|
else
|
||||||
task_push_wifi_disable(NULL);
|
task_push_wifi_disable(NULL);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case MENU_ENUM_LABEL_CORE_INFO_CACHE_ENABLE:
|
case MENU_ENUM_LABEL_CORE_INFO_CACHE_ENABLE:
|
||||||
|
@ -8426,11 +8430,13 @@ static void bluetooth_enable_toggle_change_handler(rarch_setting_t *setting)
|
||||||
*setting->value.target.boolean);
|
*setting->value.target.boolean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
static void localap_enable_toggle_change_handler(rarch_setting_t *setting)
|
static void localap_enable_toggle_change_handler(rarch_setting_t *setting)
|
||||||
{
|
{
|
||||||
driver_wifi_tether_start_stop(*setting->value.target.boolean,
|
driver_wifi_tether_start_stop(*setting->value.target.boolean,
|
||||||
LAKKA_LOCALAP_PATH);
|
LAKKA_LOCALAP_PATH);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void timezone_change_handler(rarch_setting_t *setting)
|
static void timezone_change_handler(rarch_setting_t *setting)
|
||||||
{
|
{
|
||||||
|
@ -9715,7 +9721,7 @@ static bool setting_append_list(
|
||||||
break;
|
break;
|
||||||
case SETTINGS_LIST_DRIVERS:
|
case SETTINGS_LIST_DRIVERS:
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i, j = 0;
|
||||||
struct string_options_entry string_options_entries[12];
|
struct string_options_entry string_options_entries[12];
|
||||||
|
|
||||||
START_GROUP(list, list_info, &group_info, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS), parent_group);
|
START_GROUP(list, list_info, &group_info, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS), parent_group);
|
||||||
|
@ -9726,89 +9732,113 @@ static bool setting_append_list(
|
||||||
START_SUB_GROUP(list, list_info, "State", &group_info,
|
START_SUB_GROUP(list, list_info, "State", &group_info,
|
||||||
&subgroup_info, parent_group);
|
&subgroup_info, parent_group);
|
||||||
|
|
||||||
string_options_entries[0].target = settings->arrays.input_driver;
|
string_options_entries[j].target = settings->arrays.input_driver;
|
||||||
string_options_entries[0].len = sizeof(settings->arrays.input_driver);
|
string_options_entries[j].len = sizeof(settings->arrays.input_driver);
|
||||||
string_options_entries[0].name_enum_idx = MENU_ENUM_LABEL_INPUT_DRIVER;
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_INPUT_DRIVER;
|
||||||
string_options_entries[0].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_INPUT_DRIVER;
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_INPUT_DRIVER;
|
||||||
string_options_entries[0].default_value = config_get_default_input();
|
string_options_entries[j].default_value = config_get_default_input();
|
||||||
string_options_entries[0].values = config_get_input_driver_options();
|
string_options_entries[j].values = config_get_input_driver_options();
|
||||||
|
|
||||||
string_options_entries[1].target = settings->arrays.input_joypad_driver;
|
j++;
|
||||||
string_options_entries[1].len = sizeof(settings->arrays.input_joypad_driver);
|
|
||||||
string_options_entries[1].name_enum_idx = MENU_ENUM_LABEL_JOYPAD_DRIVER;
|
|
||||||
string_options_entries[1].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER;
|
|
||||||
string_options_entries[1].default_value = config_get_default_joypad();
|
|
||||||
string_options_entries[1].values = config_get_joypad_driver_options();
|
|
||||||
|
|
||||||
string_options_entries[2].target = settings->arrays.video_driver;
|
string_options_entries[j].target = settings->arrays.input_joypad_driver;
|
||||||
string_options_entries[2].len = sizeof(settings->arrays.video_driver);
|
string_options_entries[j].len = sizeof(settings->arrays.input_joypad_driver);
|
||||||
string_options_entries[2].name_enum_idx = MENU_ENUM_LABEL_VIDEO_DRIVER;
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_JOYPAD_DRIVER;
|
||||||
string_options_entries[2].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER;
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER;
|
||||||
string_options_entries[2].default_value = config_get_default_video();
|
string_options_entries[j].default_value = config_get_default_joypad();
|
||||||
string_options_entries[2].values = config_get_video_driver_options();
|
string_options_entries[j].values = config_get_joypad_driver_options();
|
||||||
|
|
||||||
string_options_entries[3].target = settings->arrays.audio_driver;
|
j++;
|
||||||
string_options_entries[3].len = sizeof(settings->arrays.audio_driver);
|
|
||||||
string_options_entries[3].name_enum_idx = MENU_ENUM_LABEL_AUDIO_DRIVER;
|
|
||||||
string_options_entries[3].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER;
|
|
||||||
string_options_entries[3].default_value = config_get_default_audio();
|
|
||||||
string_options_entries[3].values = config_get_audio_driver_options();
|
|
||||||
|
|
||||||
string_options_entries[4].target = settings->arrays.audio_resampler;
|
string_options_entries[j].target = settings->arrays.video_driver;
|
||||||
string_options_entries[4].len = sizeof(settings->arrays.audio_resampler);
|
string_options_entries[j].len = sizeof(settings->arrays.video_driver);
|
||||||
string_options_entries[4].name_enum_idx = MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER;
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_VIDEO_DRIVER;
|
||||||
string_options_entries[4].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER;
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER;
|
||||||
string_options_entries[4].default_value = config_get_default_audio_resampler();
|
string_options_entries[j].default_value = config_get_default_video();
|
||||||
string_options_entries[4].values = config_get_audio_resampler_driver_options();
|
string_options_entries[j].values = config_get_video_driver_options();
|
||||||
|
|
||||||
string_options_entries[5].target = settings->arrays.camera_driver;
|
j++;
|
||||||
string_options_entries[5].len = sizeof(settings->arrays.camera_driver);
|
|
||||||
string_options_entries[5].name_enum_idx = MENU_ENUM_LABEL_CAMERA_DRIVER;
|
|
||||||
string_options_entries[5].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER;
|
|
||||||
string_options_entries[5].default_value = config_get_default_camera();
|
|
||||||
string_options_entries[5].values = config_get_camera_driver_options();
|
|
||||||
|
|
||||||
string_options_entries[6].target = settings->arrays.bluetooth_driver;
|
string_options_entries[j].target = settings->arrays.audio_driver;
|
||||||
string_options_entries[6].len = sizeof(settings->arrays.bluetooth_driver);
|
string_options_entries[j].len = sizeof(settings->arrays.audio_driver);
|
||||||
string_options_entries[6].name_enum_idx = MENU_ENUM_LABEL_BLUETOOTH_DRIVER;
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_AUDIO_DRIVER;
|
||||||
string_options_entries[6].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_BLUETOOTH_DRIVER;
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER;
|
||||||
string_options_entries[6].default_value = config_get_default_bluetooth();
|
string_options_entries[j].default_value = config_get_default_audio();
|
||||||
string_options_entries[6].values = config_get_bluetooth_driver_options();
|
string_options_entries[j].values = config_get_audio_driver_options();
|
||||||
|
|
||||||
string_options_entries[7].target = settings->arrays.wifi_driver;
|
j++;
|
||||||
string_options_entries[7].len = sizeof(settings->arrays.wifi_driver);
|
|
||||||
string_options_entries[7].name_enum_idx = MENU_ENUM_LABEL_WIFI_DRIVER;
|
|
||||||
string_options_entries[7].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_WIFI_DRIVER;
|
|
||||||
string_options_entries[7].default_value = config_get_default_wifi();
|
|
||||||
string_options_entries[7].values = config_get_wifi_driver_options();
|
|
||||||
|
|
||||||
string_options_entries[8].target = settings->arrays.location_driver;
|
string_options_entries[j].target = settings->arrays.audio_resampler;
|
||||||
string_options_entries[8].len = sizeof(settings->arrays.location_driver);
|
string_options_entries[j].len = sizeof(settings->arrays.audio_resampler);
|
||||||
string_options_entries[8].name_enum_idx = MENU_ENUM_LABEL_LOCATION_DRIVER;
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER;
|
||||||
string_options_entries[8].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER;
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER;
|
||||||
string_options_entries[8].default_value = config_get_default_location();
|
string_options_entries[j].default_value = config_get_default_audio_resampler();
|
||||||
string_options_entries[8].values = config_get_location_driver_options();
|
string_options_entries[j].values = config_get_audio_resampler_driver_options();
|
||||||
|
|
||||||
string_options_entries[9].target = settings->arrays.menu_driver;
|
j++;
|
||||||
string_options_entries[9].len = sizeof(settings->arrays.menu_driver);
|
|
||||||
string_options_entries[9].name_enum_idx = MENU_ENUM_LABEL_MENU_DRIVER;
|
|
||||||
string_options_entries[9].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_MENU_DRIVER;
|
|
||||||
string_options_entries[9].default_value = config_get_default_menu();
|
|
||||||
string_options_entries[9].values = config_get_menu_driver_options();
|
|
||||||
|
|
||||||
string_options_entries[10].target = settings->arrays.record_driver;
|
string_options_entries[j].target = settings->arrays.camera_driver;
|
||||||
string_options_entries[10].len = sizeof(settings->arrays.record_driver);
|
string_options_entries[j].len = sizeof(settings->arrays.camera_driver);
|
||||||
string_options_entries[10].name_enum_idx = MENU_ENUM_LABEL_RECORD_DRIVER;
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_CAMERA_DRIVER;
|
||||||
string_options_entries[10].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_RECORD_DRIVER;
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER;
|
||||||
string_options_entries[10].default_value = config_get_default_record();
|
string_options_entries[j].default_value = config_get_default_camera();
|
||||||
string_options_entries[10].values = config_get_record_driver_options();
|
string_options_entries[j].values = config_get_camera_driver_options();
|
||||||
|
|
||||||
string_options_entries[11].target = settings->arrays.midi_driver;
|
j++;
|
||||||
string_options_entries[11].len = sizeof(settings->arrays.midi_driver);
|
|
||||||
string_options_entries[11].name_enum_idx = MENU_ENUM_LABEL_MIDI_DRIVER;
|
string_options_entries[j].target = settings->arrays.bluetooth_driver;
|
||||||
string_options_entries[11].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_MIDI_DRIVER;
|
string_options_entries[j].len = sizeof(settings->arrays.bluetooth_driver);
|
||||||
string_options_entries[11].default_value = config_get_default_midi();
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_BLUETOOTH_DRIVER;
|
||||||
string_options_entries[11].values = config_get_midi_driver_options();
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_BLUETOOTH_DRIVER;
|
||||||
|
string_options_entries[j].default_value = config_get_default_bluetooth();
|
||||||
|
string_options_entries[j].values = config_get_bluetooth_driver_options();
|
||||||
|
|
||||||
|
j++;
|
||||||
|
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
|
string_options_entries[j].target = settings->arrays.wifi_driver;
|
||||||
|
string_options_entries[j].len = sizeof(settings->arrays.wifi_driver);
|
||||||
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_WIFI_DRIVER;
|
||||||
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_WIFI_DRIVER;
|
||||||
|
string_options_entries[j].default_value = config_get_default_wifi();
|
||||||
|
string_options_entries[j].values = config_get_wifi_driver_options();
|
||||||
|
|
||||||
|
j++;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
string_options_entries[j].target = settings->arrays.location_driver;
|
||||||
|
string_options_entries[j].len = sizeof(settings->arrays.location_driver);
|
||||||
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_LOCATION_DRIVER;
|
||||||
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER;
|
||||||
|
string_options_entries[j].default_value = config_get_default_location();
|
||||||
|
string_options_entries[j].values = config_get_location_driver_options();
|
||||||
|
|
||||||
|
j++;
|
||||||
|
|
||||||
|
string_options_entries[j].target = settings->arrays.menu_driver;
|
||||||
|
string_options_entries[j].len = sizeof(settings->arrays.menu_driver);
|
||||||
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_MENU_DRIVER;
|
||||||
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_MENU_DRIVER;
|
||||||
|
string_options_entries[j].default_value = config_get_default_menu();
|
||||||
|
string_options_entries[j].values = config_get_menu_driver_options();
|
||||||
|
|
||||||
|
j++;
|
||||||
|
|
||||||
|
string_options_entries[j].target = settings->arrays.record_driver;
|
||||||
|
string_options_entries[j].len = sizeof(settings->arrays.record_driver);
|
||||||
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_RECORD_DRIVER;
|
||||||
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_RECORD_DRIVER;
|
||||||
|
string_options_entries[j].default_value = config_get_default_record();
|
||||||
|
string_options_entries[j].values = config_get_record_driver_options();
|
||||||
|
|
||||||
|
j++;
|
||||||
|
|
||||||
|
string_options_entries[j].target = settings->arrays.midi_driver;
|
||||||
|
string_options_entries[j].len = sizeof(settings->arrays.midi_driver);
|
||||||
|
string_options_entries[j].name_enum_idx = MENU_ENUM_LABEL_MIDI_DRIVER;
|
||||||
|
string_options_entries[j].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_MIDI_DRIVER;
|
||||||
|
string_options_entries[j].default_value = config_get_default_midi();
|
||||||
|
string_options_entries[j].values = config_get_midi_driver_options();
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(string_options_entries); i++)
|
for (i = 0; i < ARRAY_SIZE(string_options_entries); i++)
|
||||||
{
|
{
|
||||||
|
@ -19525,6 +19555,7 @@ static bool setting_append_list(
|
||||||
SD_FLAG_NONE);
|
SD_FLAG_NONE);
|
||||||
(*list)[list_info->index - 1].change_handler = bluetooth_enable_toggle_change_handler;
|
(*list)[list_info->index - 1].change_handler = bluetooth_enable_toggle_change_handler;
|
||||||
|
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
CONFIG_BOOL(
|
CONFIG_BOOL(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
&settings->bools.localap_enable,
|
&settings->bools.localap_enable,
|
||||||
|
@ -19540,6 +19571,7 @@ static bool setting_append_list(
|
||||||
general_read_handler,
|
general_read_handler,
|
||||||
SD_FLAG_NONE);
|
SD_FLAG_NONE);
|
||||||
(*list)[list_info->index - 1].change_handler = localap_enable_toggle_change_handler;
|
(*list)[list_info->index - 1].change_handler = localap_enable_toggle_change_handler;
|
||||||
|
#endif
|
||||||
|
|
||||||
CONFIG_STRING_OPTIONS(
|
CONFIG_STRING_OPTIONS(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
|
|
|
@ -65,7 +65,8 @@ static void connmanctl_stop(void *data)
|
||||||
(void)data;
|
(void)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void connmanctl_refresh_services(connman_t *connman) {
|
static void connmanctl_refresh_services(connman_t *connman)
|
||||||
|
{
|
||||||
char line[512];
|
char line[512];
|
||||||
FILE *serv_file = popen("connmanctl services", "r");
|
FILE *serv_file = popen("connmanctl services", "r");
|
||||||
|
|
||||||
|
@ -295,11 +296,12 @@ static bool connmanctl_connection_info(void *data, wifi_network_info_t *netinfo)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool connmanctl_disconnect_ssid(void *data, const wifi_network_info_t* netinfo)
|
static bool connmanctl_disconnect_ssid(void *data,
|
||||||
|
const wifi_network_info_t* netinfo)
|
||||||
{
|
{
|
||||||
connman_t *connman = (connman_t*)data;
|
connman_t *connman = (connman_t*)data;
|
||||||
|
|
||||||
/* TODO:Check whether this network is actually connected */
|
/* TODO/FIXME: Check whether this network is actually connected */
|
||||||
|
|
||||||
snprintf(connman->command, sizeof(connman->command),
|
snprintf(connman->command, sizeof(connman->command),
|
||||||
"connmanctl disconnect %s 2>&1",
|
"connmanctl disconnect %s 2>&1",
|
||||||
|
@ -321,12 +323,12 @@ static bool connmanctl_connect_ssid(
|
||||||
char settings_dir[PATH_MAX_LENGTH] = {0};
|
char settings_dir[PATH_MAX_LENGTH] = {0};
|
||||||
char settings_path[PATH_MAX_LENGTH] = {0};
|
char settings_path[PATH_MAX_LENGTH] = {0};
|
||||||
char netid[160] = {0};
|
char netid[160] = {0};
|
||||||
FILE *settings_file = NULL;
|
|
||||||
connman_t *connman = (connman_t*)data;
|
connman_t *connman = (connman_t*)data;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
static struct string_list* list = NULL;
|
static struct string_list* list = NULL;
|
||||||
#ifdef HAVE_GFX_WIDGETS
|
#ifdef HAVE_GFX_WIDGETS
|
||||||
bool widgets_active = connman->connmanctl_widgets_supported;
|
bool widgets_active =
|
||||||
|
connman->connmanctl_widgets_supported;
|
||||||
#endif
|
#endif
|
||||||
strlcat(netid, netinfo->netid, sizeof(netid));
|
strlcat(netid, netinfo->netid, sizeof(netid));
|
||||||
strlcat(settings_dir, LAKKA_CONNMAN_DIR, sizeof(settings_dir));
|
strlcat(settings_dir, LAKKA_CONNMAN_DIR, sizeof(settings_dir));
|
||||||
|
@ -339,7 +341,7 @@ static bool connmanctl_connect_ssid(
|
||||||
|
|
||||||
if (!netinfo->saved_password)
|
if (!netinfo->saved_password)
|
||||||
{
|
{
|
||||||
settings_file = fopen(settings_path, "w");
|
FILE *settings_file = fopen(settings_path, "w");
|
||||||
if (!settings_file)
|
if (!settings_file)
|
||||||
return false;
|
return false;
|
||||||
fprintf(settings_file, "[%s]\n", netid);
|
fprintf(settings_file, "[%s]\n", netid);
|
||||||
|
@ -362,14 +364,12 @@ static bool connmanctl_connect_ssid(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No need for pass, config should be there already, verify it */
|
/* No need for pass, config should be there already, verify it */
|
||||||
settings_file = fopen(settings_path, "r");
|
if (!path_is_valid(settings_path))
|
||||||
if (!settings_file)
|
|
||||||
{
|
{
|
||||||
/* Usually a mismatch between connman state and config, reload */
|
/* Usually a mismatch between connman state and config, reload */
|
||||||
system("systemctl restart connman.service");
|
system("systemctl restart connman.service");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
fclose(settings_file);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (connmanctl_tether_status(connman))
|
if (connmanctl_tether_status(connman))
|
|
@ -52,24 +52,22 @@ static void nmcli_free(void *data)
|
||||||
|
|
||||||
static bool nmcli_start(void *data)
|
static bool nmcli_start(void *data)
|
||||||
{
|
{
|
||||||
(void)data;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nmcli_stop(void *data)
|
static void nmcli_stop(void *data) { }
|
||||||
{
|
|
||||||
(void)data;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool nmcli_enable(void* data, bool enabled)
|
static bool nmcli_enable(void* data, bool enabled)
|
||||||
{
|
{
|
||||||
// semantics here are broken: nmcli_enable(..., false) is called
|
/* semantics here are broken: nmcli_enable(..., false) is called
|
||||||
// on startup which is probably not what we want.
|
* on startup which is probably not what we want. */
|
||||||
|
|
||||||
// if (enabled)
|
#if 0
|
||||||
// pclose(popen("nmcli radio wifi on", "r"));
|
if (enabled)
|
||||||
// else
|
pclose(popen("nmcli radio wifi on", "r"));
|
||||||
// pclose(popen("nmcli radio wifi off", "r"));
|
else
|
||||||
|
pclose(popen("nmcli radio wifi off", "r"));
|
||||||
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -78,12 +76,12 @@ static bool nmcli_connection_info(void *data, wifi_network_info_t *netinfo)
|
||||||
{
|
{
|
||||||
FILE *cmd_file = NULL;
|
FILE *cmd_file = NULL;
|
||||||
char line[512];
|
char line[512];
|
||||||
(void)data;
|
|
||||||
|
|
||||||
if (!netinfo)
|
if (!netinfo)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
cmd_file = popen("nmcli -f NAME c show --active | tail -n+2", "r");
|
cmd_file = popen("nmcli -f NAME c show --active | tail -n+2", "r");
|
||||||
|
|
||||||
if (fgets(line, sizeof(line), cmd_file))
|
if (fgets(line, sizeof(line), cmd_file))
|
||||||
{
|
{
|
||||||
strlcpy(netinfo->ssid, line, sizeof(netinfo->ssid));
|
strlcpy(netinfo->ssid, line, sizeof(netinfo->ssid));
|
||||||
|
@ -96,9 +94,9 @@ static bool nmcli_connection_info(void *data, wifi_network_info_t *netinfo)
|
||||||
|
|
||||||
static void nmcli_scan(void *data)
|
static void nmcli_scan(void *data)
|
||||||
{
|
{
|
||||||
|
char line[512];
|
||||||
nmcli_t *nmcli = (nmcli_t*)data;
|
nmcli_t *nmcli = (nmcli_t*)data;
|
||||||
FILE *cmd_file = NULL;
|
FILE *cmd_file = NULL;
|
||||||
char line[512];
|
|
||||||
|
|
||||||
nmcli->scan.scan_time = time(NULL);
|
nmcli->scan.scan_time = time(NULL);
|
||||||
|
|
||||||
|
@ -144,7 +142,8 @@ static bool nmcli_ssid_is_online(void *data, unsigned idx)
|
||||||
return nmcli->scan.net_list[idx].connected;
|
return nmcli->scan.net_list[idx].connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool nmcli_connect_ssid(void *data, const wifi_network_info_t *netinfo)
|
static bool nmcli_connect_ssid(void *data,
|
||||||
|
const wifi_network_info_t *netinfo)
|
||||||
{
|
{
|
||||||
nmcli_t *nmcli = (nmcli_t*)data;
|
nmcli_t *nmcli = (nmcli_t*)data;
|
||||||
char cmd[256];
|
char cmd[256];
|
||||||
|
@ -153,11 +152,10 @@ static bool nmcli_connect_ssid(void *data, const wifi_network_info_t *netinfo)
|
||||||
if (!nmcli || !netinfo)
|
if (!nmcli || !netinfo)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "nmcli dev wifi connect \"%s\" password \"%s\" 2>&1",
|
snprintf(cmd, sizeof(cmd),
|
||||||
|
"nmcli dev wifi connect \"%s\" password \"%s\" 2>&1",
|
||||||
netinfo->ssid, netinfo->passphrase);
|
netinfo->ssid, netinfo->passphrase);
|
||||||
ret = pclose(popen(cmd, "r"));
|
if ((ret = pclose(popen(cmd, "r"))) == 0)
|
||||||
|
|
||||||
if (ret == 0)
|
|
||||||
{
|
{
|
||||||
for (i = 0; i < RBUF_LEN(nmcli->scan.net_list); i++)
|
for (i = 0; i < RBUF_LEN(nmcli->scan.net_list); i++)
|
||||||
{
|
{
|
||||||
|
@ -169,23 +167,17 @@ static bool nmcli_connect_ssid(void *data, const wifi_network_info_t *netinfo)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool nmcli_disconnect_ssid(void *data, const wifi_network_info_t *netinfo)
|
static bool nmcli_disconnect_ssid(void *data,
|
||||||
|
const wifi_network_info_t *netinfo)
|
||||||
{
|
{
|
||||||
char cmd[256];
|
char cmd[256];
|
||||||
(void)data;
|
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "nmcli c down \"%s\"", netinfo->ssid);
|
snprintf(cmd, sizeof(cmd), "nmcli c down \"%s\"", netinfo->ssid);
|
||||||
pclose(popen(cmd, "r"));
|
pclose(popen(cmd, "r"));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nmcli_tether_start_stop(void* data, bool start, char* configfile)
|
static void nmcli_tether_start_stop(void *a, bool b, char *c) { }
|
||||||
{
|
|
||||||
(void)data;
|
|
||||||
(void)start;
|
|
||||||
(void)configfile;
|
|
||||||
}
|
|
||||||
|
|
||||||
wifi_driver_t wifi_nmcli = {
|
wifi_driver_t wifi_nmcli = {
|
||||||
nmcli_init,
|
nmcli_init,
|
245
network/wifi_driver.c
Normal file
245
network/wifi_driver.c
Normal file
|
@ -0,0 +1,245 @@
|
||||||
|
/* RetroArch - A frontend for libretro.
|
||||||
|
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
||||||
|
* Copyright (C) 2011-2021 - Daniel De Matteis
|
||||||
|
*
|
||||||
|
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
||||||
|
* of the GNU General Public License as published by the Free Software Found-
|
||||||
|
* ation, either version 3 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with RetroArch.
|
||||||
|
* If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "../config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "../driver.h"
|
||||||
|
#include "../list_special.h"
|
||||||
|
#include "../retroarch.h"
|
||||||
|
#include "../runloop.h"
|
||||||
|
#include "../verbosity.h"
|
||||||
|
|
||||||
|
#include "wifi_driver.h"
|
||||||
|
|
||||||
|
wifi_driver_t wifi_null = {
|
||||||
|
NULL, /* init */
|
||||||
|
NULL, /* free */
|
||||||
|
NULL, /* start */
|
||||||
|
NULL, /* stop */
|
||||||
|
NULL, /* enable */
|
||||||
|
NULL, /* connection_info */
|
||||||
|
NULL, /* scan */
|
||||||
|
NULL, /* get_ssids */
|
||||||
|
NULL, /* ssid_is_online */
|
||||||
|
NULL, /* connect_ssid */
|
||||||
|
NULL, /* disconnect_ssid */
|
||||||
|
NULL, /* tether_start_stop */
|
||||||
|
"null",
|
||||||
|
};
|
||||||
|
|
||||||
|
const wifi_driver_t *wifi_drivers[] = {
|
||||||
|
#ifdef HAVE_LAKKA
|
||||||
|
&wifi_connmanctl,
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
|
&wifi_nmcli,
|
||||||
|
#endif
|
||||||
|
&wifi_null,
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
static wifi_driver_state_t wifi_driver_st = {0}; /* double alignment */
|
||||||
|
|
||||||
|
wifi_driver_state_t *wifi_state_get_ptr(void)
|
||||||
|
{
|
||||||
|
return &wifi_driver_st;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* config_get_wifi_driver_options:
|
||||||
|
*
|
||||||
|
* Get an enumerated list of all wifi driver names,
|
||||||
|
* separated by '|'.
|
||||||
|
*
|
||||||
|
* Returns: string listing of all wifi driver names,
|
||||||
|
* separated by '|'.
|
||||||
|
**/
|
||||||
|
const char* config_get_wifi_driver_options(void)
|
||||||
|
{
|
||||||
|
return char_list_new_special(STRING_LIST_WIFI_DRIVERS, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void driver_wifi_scan(void)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
wifi_st->drv->scan(wifi_st->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool driver_wifi_enable(bool enabled)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
return wifi_st->drv->enable(wifi_st->data, enabled);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool driver_wifi_connection_info(wifi_network_info_t *netinfo)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
return wifi_st->drv->connection_info(wifi_st->data, netinfo);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
wifi_network_scan_t* driver_wifi_get_ssids(void)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
return wifi_st->drv->get_ssids(wifi_st->data);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool driver_wifi_ssid_is_online(unsigned i)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
return wifi_st->drv->ssid_is_online(wifi_st->data, i);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool driver_wifi_connect_ssid(const wifi_network_info_t* net)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
return wifi_st->drv->connect_ssid(wifi_st->data, net);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool driver_wifi_disconnect_ssid(const wifi_network_info_t* net)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
return wifi_st->drv->disconnect_ssid(wifi_st->data, net);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void driver_wifi_tether_start_stop(bool start, char* configfile)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
if (wifi_st && wifi_st->drv)
|
||||||
|
wifi_st->drv->tether_start_stop(wifi_st->data, start, configfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data)
|
||||||
|
{
|
||||||
|
wifi_driver_state_t *wifi_st = &wifi_driver_st;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
switch (state)
|
||||||
|
{
|
||||||
|
case RARCH_WIFI_CTL_DESTROY:
|
||||||
|
wifi_st->active = false;
|
||||||
|
wifi_st->drv = NULL;
|
||||||
|
wifi_st->data = NULL;
|
||||||
|
break;
|
||||||
|
case RARCH_WIFI_CTL_SET_ACTIVE:
|
||||||
|
wifi_st->active = true;
|
||||||
|
break;
|
||||||
|
case RARCH_WIFI_CTL_FIND_DRIVER:
|
||||||
|
{
|
||||||
|
const char *prefix = "wifi driver";
|
||||||
|
int i = (int)driver_find_index(
|
||||||
|
"wifi_driver",
|
||||||
|
settings->arrays.wifi_driver);
|
||||||
|
|
||||||
|
if (i >= 0)
|
||||||
|
wifi_st->drv = (const wifi_driver_t*)wifi_drivers[i];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (verbosity_is_enabled())
|
||||||
|
{
|
||||||
|
unsigned d;
|
||||||
|
RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix,
|
||||||
|
settings->arrays.wifi_driver);
|
||||||
|
RARCH_LOG_OUTPUT("Available %ss are:\n", prefix);
|
||||||
|
for (d = 0; wifi_drivers[d]; d++)
|
||||||
|
RARCH_LOG_OUTPUT("\t%s\n", wifi_drivers[d]->ident);
|
||||||
|
|
||||||
|
RARCH_WARN("Going to default to first %s...\n", prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
wifi_st->drv = (const wifi_driver_t*)wifi_drivers[0];
|
||||||
|
|
||||||
|
if (!wifi_st->drv)
|
||||||
|
retroarch_fail(1, "find_wifi_driver()");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RARCH_WIFI_CTL_UNSET_ACTIVE:
|
||||||
|
wifi_st->active = false;
|
||||||
|
break;
|
||||||
|
case RARCH_WIFI_CTL_IS_ACTIVE:
|
||||||
|
return wifi_st->active;
|
||||||
|
case RARCH_WIFI_CTL_DEINIT:
|
||||||
|
if (wifi_st->data && wifi_st->drv)
|
||||||
|
{
|
||||||
|
if (wifi_st->drv->free)
|
||||||
|
wifi_st->drv->free(wifi_st->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
wifi_st->data = NULL;
|
||||||
|
break;
|
||||||
|
case RARCH_WIFI_CTL_STOP:
|
||||||
|
if ( wifi_st->drv
|
||||||
|
&& wifi_st->drv->stop
|
||||||
|
&& wifi_st->data)
|
||||||
|
wifi_st->drv->stop(wifi_st->data);
|
||||||
|
break;
|
||||||
|
case RARCH_WIFI_CTL_START:
|
||||||
|
if ( wifi_st->drv
|
||||||
|
&& wifi_st->data
|
||||||
|
&& wifi_st->drv->start)
|
||||||
|
{
|
||||||
|
bool wifi_allow = settings->bools.wifi_allow;
|
||||||
|
if (wifi_allow)
|
||||||
|
return wifi_st->drv->start(wifi_st->data);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case RARCH_WIFI_CTL_INIT:
|
||||||
|
/* Resource leaks will follow if wifi is initialized twice. */
|
||||||
|
if (wifi_st->data)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
wifi_driver_ctl(RARCH_WIFI_CTL_FIND_DRIVER, NULL);
|
||||||
|
|
||||||
|
if (wifi_st->drv && wifi_st->drv->init)
|
||||||
|
{
|
||||||
|
wifi_st->data = wifi_st->drv->init();
|
||||||
|
|
||||||
|
if (wifi_st->data)
|
||||||
|
{
|
||||||
|
wifi_st->drv->enable(wifi_st->data,
|
||||||
|
settings->bools.wifi_enabled);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RARCH_ERR("Failed to initialize wifi driver. Will continue without wifi.\n");
|
||||||
|
wifi_driver_ctl(RARCH_WIFI_CTL_UNSET_ACTIVE, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
|
@ -48,7 +48,7 @@ typedef struct wifi_network_info
|
||||||
bool connected;
|
bool connected;
|
||||||
bool saved_password;
|
bool saved_password;
|
||||||
char netid[160]; /* Do not use, internal */
|
char netid[160]; /* Do not use, internal */
|
||||||
/* TODO Add signal strength & other info */
|
/* TODO/FIXME - Add signal strength & other info */
|
||||||
} wifi_network_info_t;
|
} wifi_network_info_t;
|
||||||
|
|
||||||
typedef struct wifi_network_scan
|
typedef struct wifi_network_scan
|
||||||
|
@ -78,6 +78,13 @@ typedef struct wifi_driver
|
||||||
const char *ident;
|
const char *ident;
|
||||||
} wifi_driver_t;
|
} wifi_driver_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const wifi_driver_t *drv;
|
||||||
|
void *data;
|
||||||
|
bool active;
|
||||||
|
} wifi_driver_state_t;
|
||||||
|
|
||||||
extern wifi_driver_t wifi_connmanctl;
|
extern wifi_driver_t wifi_connmanctl;
|
||||||
extern wifi_driver_t wifi_nmcli;
|
extern wifi_driver_t wifi_nmcli;
|
||||||
|
|
179
retroarch.c
179
retroarch.c
|
@ -181,6 +181,9 @@
|
||||||
#ifdef HAVE_NETWORKING
|
#ifdef HAVE_NETWORKING
|
||||||
#include "network/netplay/netplay.h"
|
#include "network/netplay/netplay.h"
|
||||||
#include "network/netplay/netplay_private.h"
|
#include "network/netplay/netplay_private.h"
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
|
#include "network/wifi_driver.h"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
|
@ -211,7 +214,6 @@
|
||||||
#include "gfx/video_crt_switch.h"
|
#include "gfx/video_crt_switch.h"
|
||||||
#endif
|
#endif
|
||||||
#include "bluetooth/bluetooth_driver.h"
|
#include "bluetooth/bluetooth_driver.h"
|
||||||
#include "wifi/wifi_driver.h"
|
|
||||||
#include "misc/cpufreq/cpufreq.h"
|
#include "misc/cpufreq/cpufreq.h"
|
||||||
#include "led/led_driver.h"
|
#include "led/led_driver.h"
|
||||||
#include "midi_driver.h"
|
#include "midi_driver.h"
|
||||||
|
@ -438,8 +440,6 @@ struct rarch_state
|
||||||
const bluetooth_driver_t *bluetooth_driver;
|
const bluetooth_driver_t *bluetooth_driver;
|
||||||
void *bluetooth_data;
|
void *bluetooth_data;
|
||||||
|
|
||||||
const wifi_driver_t *wifi_driver;
|
|
||||||
void *wifi_data;
|
|
||||||
char *connect_host; /* Netplay hostname passed from CLI */
|
char *connect_host; /* Netplay hostname passed from CLI */
|
||||||
|
|
||||||
struct retro_perf_counter *perf_counters_rarch[MAX_COUNTERS];
|
struct retro_perf_counter *perf_counters_rarch[MAX_COUNTERS];
|
||||||
|
@ -486,7 +486,6 @@ struct rarch_state
|
||||||
bool rarch_block_config_read;
|
bool rarch_block_config_read;
|
||||||
#endif
|
#endif
|
||||||
bool bluetooth_driver_active;
|
bool bluetooth_driver_active;
|
||||||
bool wifi_driver_active;
|
|
||||||
bool main_ui_companion_is_on_foreground;
|
bool main_ui_companion_is_on_foreground;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10066,176 +10065,6 @@ bool bluetooth_driver_ctl(enum rarch_bluetooth_ctl_state state, void *data)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* WIFI DRIVER */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* config_get_wifi_driver_options:
|
|
||||||
*
|
|
||||||
* Get an enumerated list of all wifi driver names,
|
|
||||||
* separated by '|'.
|
|
||||||
*
|
|
||||||
* Returns: string listing of all wifi driver names,
|
|
||||||
* separated by '|'.
|
|
||||||
**/
|
|
||||||
const char* config_get_wifi_driver_options(void)
|
|
||||||
{
|
|
||||||
return char_list_new_special(STRING_LIST_WIFI_DRIVERS, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void driver_wifi_scan(void)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
p_rarch->wifi_driver->scan(p_rarch->wifi_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool driver_wifi_enable(bool enabled)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
return p_rarch->wifi_driver->enable(p_rarch->wifi_data, enabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool driver_wifi_connection_info(wifi_network_info_t *netinfo)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
return p_rarch->wifi_driver->connection_info(p_rarch->wifi_data, netinfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
wifi_network_scan_t* driver_wifi_get_ssids(void)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
return p_rarch->wifi_driver->get_ssids(p_rarch->wifi_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool driver_wifi_ssid_is_online(unsigned i)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
return p_rarch->wifi_driver->ssid_is_online(p_rarch->wifi_data, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool driver_wifi_connect_ssid(const wifi_network_info_t* net)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
return p_rarch->wifi_driver->connect_ssid(p_rarch->wifi_data, net);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool driver_wifi_disconnect_ssid(const wifi_network_info_t* net)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
return p_rarch->wifi_driver->disconnect_ssid(p_rarch->wifi_data, net);
|
|
||||||
}
|
|
||||||
|
|
||||||
void driver_wifi_tether_start_stop(bool start, char* configfile)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
p_rarch->wifi_driver->tether_start_stop(p_rarch->wifi_data, start, configfile);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data)
|
|
||||||
{
|
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
settings_t *settings = config_get_ptr();
|
|
||||||
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case RARCH_WIFI_CTL_DESTROY:
|
|
||||||
p_rarch->wifi_driver_active = false;
|
|
||||||
p_rarch->wifi_driver = NULL;
|
|
||||||
p_rarch->wifi_data = NULL;
|
|
||||||
break;
|
|
||||||
case RARCH_WIFI_CTL_SET_ACTIVE:
|
|
||||||
p_rarch->wifi_driver_active = true;
|
|
||||||
break;
|
|
||||||
case RARCH_WIFI_CTL_FIND_DRIVER:
|
|
||||||
{
|
|
||||||
const char *prefix = "wifi driver";
|
|
||||||
int i = (int)driver_find_index(
|
|
||||||
"wifi_driver",
|
|
||||||
settings->arrays.wifi_driver);
|
|
||||||
|
|
||||||
if (i >= 0)
|
|
||||||
p_rarch->wifi_driver = (const wifi_driver_t*)wifi_drivers[i];
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (verbosity_is_enabled())
|
|
||||||
{
|
|
||||||
unsigned d;
|
|
||||||
RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix,
|
|
||||||
settings->arrays.wifi_driver);
|
|
||||||
RARCH_LOG_OUTPUT("Available %ss are:\n", prefix);
|
|
||||||
for (d = 0; wifi_drivers[d]; d++)
|
|
||||||
RARCH_LOG_OUTPUT("\t%s\n", wifi_drivers[d]->ident);
|
|
||||||
|
|
||||||
RARCH_WARN("Going to default to first %s...\n", prefix);
|
|
||||||
}
|
|
||||||
|
|
||||||
p_rarch->wifi_driver = (const wifi_driver_t*)wifi_drivers[0];
|
|
||||||
|
|
||||||
if (!p_rarch->wifi_driver)
|
|
||||||
retroarch_fail(1, "find_wifi_driver()");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RARCH_WIFI_CTL_UNSET_ACTIVE:
|
|
||||||
p_rarch->wifi_driver_active = false;
|
|
||||||
break;
|
|
||||||
case RARCH_WIFI_CTL_IS_ACTIVE:
|
|
||||||
return p_rarch->wifi_driver_active;
|
|
||||||
case RARCH_WIFI_CTL_DEINIT:
|
|
||||||
if (p_rarch->wifi_data && p_rarch->wifi_driver)
|
|
||||||
{
|
|
||||||
if (p_rarch->wifi_driver->free)
|
|
||||||
p_rarch->wifi_driver->free(p_rarch->wifi_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
p_rarch->wifi_data = NULL;
|
|
||||||
break;
|
|
||||||
case RARCH_WIFI_CTL_STOP:
|
|
||||||
if ( p_rarch->wifi_driver
|
|
||||||
&& p_rarch->wifi_driver->stop
|
|
||||||
&& p_rarch->wifi_data)
|
|
||||||
p_rarch->wifi_driver->stop(p_rarch->wifi_data);
|
|
||||||
break;
|
|
||||||
case RARCH_WIFI_CTL_START:
|
|
||||||
if ( p_rarch->wifi_driver
|
|
||||||
&& p_rarch->wifi_data
|
|
||||||
&& p_rarch->wifi_driver->start)
|
|
||||||
{
|
|
||||||
bool wifi_allow = settings->bools.wifi_allow;
|
|
||||||
if (wifi_allow)
|
|
||||||
return p_rarch->wifi_driver->start(p_rarch->wifi_data);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case RARCH_WIFI_CTL_INIT:
|
|
||||||
/* Resource leaks will follow if wifi is initialized twice. */
|
|
||||||
if (p_rarch->wifi_data)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
wifi_driver_ctl(RARCH_WIFI_CTL_FIND_DRIVER, NULL);
|
|
||||||
|
|
||||||
if (p_rarch->wifi_driver && p_rarch->wifi_driver->init)
|
|
||||||
{
|
|
||||||
p_rarch->wifi_data = p_rarch->wifi_driver->init();
|
|
||||||
|
|
||||||
if (p_rarch->wifi_data)
|
|
||||||
{
|
|
||||||
p_rarch->wifi_driver->enable(p_rarch->wifi_data,
|
|
||||||
settings->bools.wifi_enabled);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RARCH_ERR("Failed to initialize wifi driver. Will continue without wifi.\n");
|
|
||||||
wifi_driver_ctl(RARCH_WIFI_CTL_UNSET_ACTIVE, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* UI COMPANION */
|
/* UI COMPANION */
|
||||||
|
|
||||||
void ui_companion_set_foreground(unsigned enable)
|
void ui_companion_set_foreground(unsigned enable)
|
||||||
|
@ -12505,7 +12334,9 @@ bool retroarch_main_init(int argc, char *argv[])
|
||||||
retroarch_fail(1, "find_camera_driver()");
|
retroarch_fail(1, "find_camera_driver()");
|
||||||
|
|
||||||
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_FIND_DRIVER, NULL);
|
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_FIND_DRIVER, NULL);
|
||||||
|
#ifdef HAVE_WIFI
|
||||||
wifi_driver_ctl(RARCH_WIFI_CTL_FIND_DRIVER, NULL);
|
wifi_driver_ctl(RARCH_WIFI_CTL_FIND_DRIVER, NULL);
|
||||||
|
#endif
|
||||||
location_driver_find_driver(settings,
|
location_driver_find_driver(settings,
|
||||||
"location driver", verbosity_enabled);
|
"location driver", verbosity_enabled);
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
#include "tasks_internal.h"
|
#include "tasks_internal.h"
|
||||||
|
|
||||||
#include "../msg_hash.h"
|
#include "../msg_hash.h"
|
||||||
|
#include "../network/wifi_driver.h"
|
||||||
#include "../verbosity.h"
|
#include "../verbosity.h"
|
||||||
#include "../wifi/wifi_driver.h"
|
|
||||||
|
|
||||||
#define FUNC_PUSH_TASK(funcname, handlerfunc, message) \
|
#define FUNC_PUSH_TASK(funcname, handlerfunc, message) \
|
||||||
bool funcname(retro_task_callback_t cb) \
|
bool funcname(retro_task_callback_t cb) \
|
||||||
|
|
Loading…
Reference in a new issue