diff --git a/Makefile.common b/Makefile.common index d372e25591..f1afbd1f8f 100644 --- a/Makefile.common +++ b/Makefile.common @@ -428,6 +428,7 @@ endif ifeq ($(HAVE_LAKKA), 1) DEFINES += -DHAVE_LAKKA + DEFINES += -DLAKKA_PROJECT=$(LAKKA_PROJECT) endif ifeq ($(HAVE_MENU_COMMON), 1) diff --git a/configuration.c b/configuration.c index 8507187e07..a679bb23a2 100644 --- a/configuration.c +++ b/configuration.c @@ -602,6 +602,8 @@ static void config_set_defaults(void) #ifdef HAVE_LAKKA settings->ssh_enable = path_file_exists(LAKKA_SSH_PATH); + settings->samba_enable = path_file_exists(LAKKA_SAMBA_PATH); + settings->bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH); #endif #ifdef HAVE_MENU @@ -1731,6 +1733,8 @@ static bool config_load_file(const char *path, bool set_defaults) #ifdef HAVE_LAKKA settings->ssh_enable = path_file_exists(LAKKA_SSH_PATH); + settings->samba_enable = path_file_exists(LAKKA_SAMBA_PATH); + settings->bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH); #endif #ifdef HAVE_NETWORK_GAMEPAD @@ -2858,6 +2862,14 @@ bool config_save_file(const char *path) fclose(fopen(LAKKA_SSH_PATH, "w")); else remove(LAKKA_SSH_PATH); + if (settings->samba_enable) + fclose(fopen(LAKKA_SAMBA_PATH, "w")); + else + remove(LAKKA_SAMBA_PATH); + if (settings->bluetooth_enable) + fclose(fopen(LAKKA_BLUETOOTH_PATH, "w")); + else + remove(LAKKA_BLUETOOTH_PATH); #endif config_set_float(conf, "fastforward_ratio", settings->fastforward_ratio); diff --git a/configuration.h b/configuration.h index d519e50ef3..12d04a490b 100644 --- a/configuration.h +++ b/configuration.h @@ -402,6 +402,8 @@ typedef struct settings #ifdef HAVE_LAKKA bool ssh_enable; + bool samba_enable; + bool bluetooth_enable; #endif } settings_t; diff --git a/lakka.h b/lakka.h index 926087516f..0f36c2ac03 100644 --- a/lakka.h +++ b/lakka.h @@ -18,5 +18,8 @@ #define __RARCH_LAKKA_H #define LAKKA_SSH_PATH "/storage/.cache/services/sshd.conf" +#define LAKKA_SAMBA_PATH "/storage/.cache/services/samba.conf" +#define LAKKA_BLUETOOTH_PATH "/storage/.cache/services/bluez.conf" +#define LAKKA_UPDATE_DIR "/storage/.update/" #endif diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index eff5ca170a..aaf28e4537 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -38,6 +38,7 @@ #include "../../input/input_remapping.h" #include "../../retroarch.h" #include "../../system.h" +#include "../../lakka.h" enum { @@ -1331,7 +1332,7 @@ static void cb_generic_download(void *task_data, break; } case CB_LAKKA_DOWNLOAD: - dir_path = "/storage/.update/"; /* TODO unhardcode this ? */ + dir_path = LAKKA_UPDATE_DIR; break; default: RARCH_WARN("Unknown transfer type '%u' bailing out.\n", diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index b4dbf4e0cd..22427caf4a 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -264,6 +264,10 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "netplay_enable"; case MENU_LABEL_SSH_ENABLE: return "ssh_enable"; + case MENU_LABEL_SAMBA_ENABLE: + return "samba_enable"; + case MENU_LABEL_BLUETOOTH_ENABLE: + return "bluetooth_enable"; case MENU_LABEL_NETPLAY_DELAY_FRAMES: return "netplay_delay_frames"; case MENU_LABEL_NETPLAY_MODE: @@ -1012,6 +1016,10 @@ const char *menu_hash_to_str_us(uint32_t hash) return "Netplay Enable"; case MENU_LABEL_VALUE_SSH_ENABLE: return "SSH Enable"; + case MENU_LABEL_VALUE_SAMBA_ENABLE: + return "SAMBA Enable"; + case MENU_LABEL_VALUE_BLUETOOTH_ENABLE: + return "Bluetooth Enable"; case MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES: return "Netplay Delay Frames"; case MENU_LABEL_VALUE_NETPLAY_MODE: diff --git a/menu/menu_hash.h b/menu/menu_hash.h index fb5f445142..bf9ecf3aba 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -401,6 +401,10 @@ extern "C" { #define MENU_LABEL_VALUE_NETPLAY_ENABLE 0xbc3e81a9U #define MENU_LABEL_SSH_ENABLE 0xd9854a79U #define MENU_LABEL_VALUE_SSH_ENABLE 0x0430627aU +#define MENU_LABEL_SAMBA_ENABLE 0x379e15efU +#define MENU_LABEL_VALUE_SAMBA_ENABLE 0x9846d9b0U +#define MENU_LABEL_BLUETOOTH_ENABLE 0xbac1e1e1U +#define MENU_LABEL_VALUE_BLUETOOTH_ENABLE 0xf7e31e22U #define MENU_LABEL_NETPLAY_CLIENT_SWAP_INPUT 0xd87bbba9U #define MENU_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT 0x57e5be2dU #define MENU_LABEL_NETPLAY_DELAY_FRAMES 0x86b2c48dU diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 8a2a0055a7..b2c47d65ea 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3091,19 +3091,35 @@ static void overlay_enable_toggle_change_handler(void *data) #endif #ifdef HAVE_LAKKA + +void lakka_service_toggle(const char *path, bool enable) +{ + if (enable) + fclose(fopen(path, "w")); + else + remove(path); + return; +} + static void ssh_enable_toggle_change_handler(void *data) { settings_t *settings = config_get_ptr(); - rarch_setting_t *setting = (rarch_setting_t *)data; - - if (!setting) - return; - - if (settings && settings->ssh_enable) - fclose(fopen(LAKKA_SSH_PATH, "w")); - else - remove(LAKKA_SSH_PATH); - + lakka_service_toggle(LAKKA_SSH_PATH, + settings && settings->ssh_enable); + return; +} +static void samba_enable_toggle_change_handler(void *data) +{ + settings_t *settings = config_get_ptr(); + lakka_service_toggle(LAKKA_SAMBA_PATH, + settings && settings->samba_enable); + return; +} +static void bluetooth_enable_toggle_change_handler(void *data) +{ + settings_t *settings = config_get_ptr(); + lakka_service_toggle(LAKKA_BLUETOOTH_PATH, + settings && settings->bluetooth_enable); return; } #endif @@ -6540,6 +6556,37 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = ssh_enable_toggle_change_handler; + + CONFIG_BOOL( + list, list_info, + &settings->samba_enable, + menu_hash_to_str(MENU_LABEL_SAMBA_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_SAMBA_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].change_handler = samba_enable_toggle_change_handler; + + CONFIG_BOOL( + list, list_info, + &settings->bluetooth_enable, + menu_hash_to_str(MENU_LABEL_BLUETOOTH_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_BLUETOOTH_ENABLE), + true, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].change_handler = bluetooth_enable_toggle_change_handler; + END_SUB_GROUP(list, list_info, parent_group); END_GROUP(list, list_info, parent_group); #endif