mirror of
https://github.com/libretro/RetroArch
synced 2025-02-08 15:40:14 +00:00
Display which wifi network we're connected to
This commit is contained in:
parent
fcdc6187cb
commit
cd0ec01928
@ -41,6 +41,7 @@
|
|||||||
#include "../../paths.h"
|
#include "../../paths.h"
|
||||||
#include "../../runloop.h"
|
#include "../../runloop.h"
|
||||||
#include "../../intl/intl.h"
|
#include "../../intl/intl.h"
|
||||||
|
#include "../../wifi/wifi_driver.h"
|
||||||
|
|
||||||
#ifndef BIND_ACTION_GET_VALUE
|
#ifndef BIND_ACTION_GET_VALUE
|
||||||
#define BIND_ACTION_GET_VALUE(cbs, name) \
|
#define BIND_ACTION_GET_VALUE(cbs, name) \
|
||||||
@ -707,6 +708,22 @@ static void menu_action_setting_disp_set_label_xmb_theme(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void menu_action_setting_disp_set_label_wifi_is_online(
|
||||||
|
file_list_t* list,
|
||||||
|
unsigned *w, unsigned type, unsigned i,
|
||||||
|
const char *label,
|
||||||
|
char *s, size_t len,
|
||||||
|
const char *entry_label,
|
||||||
|
const char *path,
|
||||||
|
char *s2, size_t len2)
|
||||||
|
{
|
||||||
|
strlcpy(s2, path, len2);
|
||||||
|
*w = 19;
|
||||||
|
|
||||||
|
if (driver_wifi_ssid_is_online(i))
|
||||||
|
strlcpy(s, "Online", len);
|
||||||
|
}
|
||||||
|
|
||||||
static void menu_action_setting_disp_set_label_xmb_menu_color_theme(
|
static void menu_action_setting_disp_set_label_xmb_menu_color_theme(
|
||||||
file_list_t* list,
|
file_list_t* list,
|
||||||
unsigned *w, unsigned type, unsigned i,
|
unsigned *w, unsigned type, unsigned i,
|
||||||
@ -1515,6 +1532,10 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
|
|||||||
BIND_ACTION_GET_VALUE(cbs,
|
BIND_ACTION_GET_VALUE(cbs,
|
||||||
menu_action_setting_disp_set_label_xmb_theme);
|
menu_action_setting_disp_set_label_xmb_theme);
|
||||||
break;
|
break;
|
||||||
|
case MENU_ENUM_LABEL_CONNECT_WIFI:
|
||||||
|
BIND_ACTION_GET_VALUE(cbs,
|
||||||
|
menu_action_setting_disp_set_label_wifi_is_online);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME:
|
case MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME:
|
||||||
BIND_ACTION_GET_VALUE(cbs,
|
BIND_ACTION_GET_VALUE(cbs,
|
||||||
menu_action_setting_disp_set_label_xmb_menu_color_theme);
|
menu_action_setting_disp_set_label_xmb_menu_color_theme);
|
||||||
|
@ -4674,7 +4674,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
|||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
struct string_list *ssid_list = string_list_new();
|
struct string_list *ssid_list = string_list_new();
|
||||||
driver_wifi_scan(ssid_list);
|
driver_wifi_scan();
|
||||||
|
driver_wifi_get_ssids(ssid_list);
|
||||||
|
|
||||||
for (i = 0; i < ssid_list->size; i++)
|
for (i = 0; i < ssid_list->size; i++)
|
||||||
{
|
{
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
#include <file/file_path.h>
|
#include <file/file_path.h>
|
||||||
#include <compat/strl.h>
|
#include <compat/strl.h>
|
||||||
|
|
||||||
|
static struct string_list* lines;
|
||||||
|
|
||||||
static void *connmanctl_init(const char *device, uint64_t caps,
|
static void *connmanctl_init(const char *device, uint64_t caps,
|
||||||
unsigned width, unsigned height)
|
unsigned width, unsigned height)
|
||||||
{
|
{
|
||||||
@ -40,29 +42,55 @@ static void connmanctl_stop(void *data)
|
|||||||
(void)data;
|
(void)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void connmanctl_scan(struct string_list *list)
|
static void connmanctl_scan()
|
||||||
{
|
{
|
||||||
union string_list_elem_attr attr;
|
union string_list_elem_attr attr;
|
||||||
attr.i = RARCH_FILETYPE_UNSET;
|
attr.i = RARCH_FILETYPE_UNSET;
|
||||||
char line[512];
|
char line[512];
|
||||||
|
if (lines)
|
||||||
|
free(lines);
|
||||||
|
lines = string_list_new();
|
||||||
|
|
||||||
pclose(popen("connmanctl scan wifi", "r"));
|
pclose(popen("connmanctl scan wifi", "r"));
|
||||||
|
|
||||||
FILE* serv_file = popen("connmanctl services", "r");
|
FILE* serv_file = popen("connmanctl services", "r");
|
||||||
while (fgets (line, 512, serv_file) != NULL)
|
while (fgets (line, 512, serv_file) != NULL)
|
||||||
{
|
{
|
||||||
char ssid[20];
|
//char ssid[20];
|
||||||
strlcpy(ssid, line+4, sizeof(ssid));
|
//strlcpy(ssid, line+4, sizeof(ssid));
|
||||||
string_list_append(list, ssid, attr);
|
string_list_append(lines, line, attr);
|
||||||
}
|
}
|
||||||
pclose(serv_file);
|
pclose(serv_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void connmanctl_get_ssids(struct string_list* ssids)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
union string_list_elem_attr attr;
|
||||||
|
attr.i = RARCH_FILETYPE_UNSET;
|
||||||
|
|
||||||
|
for (i = 0; i < lines->size; i++)
|
||||||
|
{
|
||||||
|
const char *line = lines->elems[i].data;
|
||||||
|
char ssid[20];
|
||||||
|
strlcpy(ssid, line+4, sizeof(ssid));
|
||||||
|
string_list_append(ssids, ssid, attr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool connmanctl_ssid_is_online(unsigned i)
|
||||||
|
{
|
||||||
|
const char *line = lines->elems[i].data;
|
||||||
|
return line[2] == 'O';
|
||||||
|
}
|
||||||
|
|
||||||
wifi_driver_t wifi_connmanctl = {
|
wifi_driver_t wifi_connmanctl = {
|
||||||
connmanctl_init,
|
connmanctl_init,
|
||||||
connmanctl_free,
|
connmanctl_free,
|
||||||
connmanctl_start,
|
connmanctl_start,
|
||||||
connmanctl_stop,
|
connmanctl_stop,
|
||||||
connmanctl_scan,
|
connmanctl_scan,
|
||||||
|
connmanctl_get_ssids,
|
||||||
|
connmanctl_ssid_is_online,
|
||||||
"connmanctl",
|
"connmanctl",
|
||||||
};
|
};
|
||||||
|
@ -38,15 +38,26 @@ static void nullwifi_stop(void *data)
|
|||||||
(void)data;
|
(void)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nullwifi_scan(struct string_list *list)
|
static void nullwifi_scan()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nullwifi_get_ssids(struct string_list* ssids)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool nullwifi_ssid_is_online(unsigned i)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
wifi_driver_t wifi_null = {
|
wifi_driver_t wifi_null = {
|
||||||
nullwifi_init,
|
nullwifi_init,
|
||||||
nullwifi_free,
|
nullwifi_free,
|
||||||
nullwifi_start,
|
nullwifi_start,
|
||||||
nullwifi_stop,
|
nullwifi_stop,
|
||||||
nullwifi_scan,
|
nullwifi_scan,
|
||||||
|
nullwifi_get_ssids,
|
||||||
|
nullwifi_ssid_is_online,
|
||||||
"null",
|
"null",
|
||||||
};
|
};
|
||||||
|
@ -96,9 +96,19 @@ bool driver_wifi_start(void)
|
|||||||
return wifi_driver_ctl(RARCH_WIFI_CTL_START, NULL);
|
return wifi_driver_ctl(RARCH_WIFI_CTL_START, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void driver_wifi_scan(struct string_list *list)
|
void driver_wifi_scan()
|
||||||
{
|
{
|
||||||
wifi_driver->scan(list);
|
wifi_driver->scan();
|
||||||
|
}
|
||||||
|
|
||||||
|
void driver_wifi_get_ssids(struct string_list* ssids)
|
||||||
|
{
|
||||||
|
wifi_driver->get_ssids(ssids);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool driver_wifi_ssid_is_online(unsigned i)
|
||||||
|
{
|
||||||
|
return wifi_driver->ssid_is_online(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data)
|
bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data)
|
||||||
|
@ -53,7 +53,9 @@ typedef struct wifi_driver
|
|||||||
bool (*start)(void *data);
|
bool (*start)(void *data);
|
||||||
void (*stop)(void *data);
|
void (*stop)(void *data);
|
||||||
|
|
||||||
void (*scan)(struct string_list *list);
|
void (*scan)();
|
||||||
|
void (*get_ssids)(struct string_list *list);
|
||||||
|
bool (*ssid_is_online)(unsigned i);
|
||||||
|
|
||||||
const char *ident;
|
const char *ident;
|
||||||
} wifi_driver_t;
|
} wifi_driver_t;
|
||||||
@ -94,7 +96,11 @@ void driver_wifi_stop(void);
|
|||||||
|
|
||||||
bool driver_wifi_start(void);
|
bool driver_wifi_start(void);
|
||||||
|
|
||||||
void driver_wifi_scan(struct string_list *list);
|
void driver_wifi_scan();
|
||||||
|
|
||||||
|
void driver_wifi_get_ssids(struct string_list *list);
|
||||||
|
|
||||||
|
bool driver_wifi_ssid_is_online(unsigned i);
|
||||||
|
|
||||||
bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data);
|
bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user