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 "../../runloop.h"
|
||||
#include "../../intl/intl.h"
|
||||
#include "../../wifi/wifi_driver.h"
|
||||
|
||||
#ifndef BIND_ACTION_GET_VALUE
|
||||
#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(
|
||||
file_list_t* list,
|
||||
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,
|
||||
menu_action_setting_disp_set_label_xmb_theme);
|
||||
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:
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
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;
|
||||
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++)
|
||||
{
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include <file/file_path.h>
|
||||
#include <compat/strl.h>
|
||||
|
||||
static struct string_list* lines;
|
||||
|
||||
static void *connmanctl_init(const char *device, uint64_t caps,
|
||||
unsigned width, unsigned height)
|
||||
{
|
||||
@ -40,29 +42,55 @@ static void connmanctl_stop(void *data)
|
||||
(void)data;
|
||||
}
|
||||
|
||||
static void connmanctl_scan(struct string_list *list)
|
||||
static void connmanctl_scan()
|
||||
{
|
||||
union string_list_elem_attr attr;
|
||||
attr.i = RARCH_FILETYPE_UNSET;
|
||||
char line[512];
|
||||
if (lines)
|
||||
free(lines);
|
||||
lines = string_list_new();
|
||||
|
||||
pclose(popen("connmanctl scan wifi", "r"));
|
||||
|
||||
FILE* serv_file = popen("connmanctl services", "r");
|
||||
while (fgets (line, 512, serv_file) != NULL)
|
||||
{
|
||||
char ssid[20];
|
||||
strlcpy(ssid, line+4, sizeof(ssid));
|
||||
string_list_append(list, ssid, attr);
|
||||
//char ssid[20];
|
||||
//strlcpy(ssid, line+4, sizeof(ssid));
|
||||
string_list_append(lines, line, attr);
|
||||
}
|
||||
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 = {
|
||||
connmanctl_init,
|
||||
connmanctl_free,
|
||||
connmanctl_start,
|
||||
connmanctl_stop,
|
||||
connmanctl_scan,
|
||||
connmanctl_get_ssids,
|
||||
connmanctl_ssid_is_online,
|
||||
"connmanctl",
|
||||
};
|
||||
|
@ -38,15 +38,26 @@ static void nullwifi_stop(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 = {
|
||||
nullwifi_init,
|
||||
nullwifi_free,
|
||||
nullwifi_start,
|
||||
nullwifi_stop,
|
||||
nullwifi_scan,
|
||||
nullwifi_get_ssids,
|
||||
nullwifi_ssid_is_online,
|
||||
"null",
|
||||
};
|
||||
|
@ -96,9 +96,19 @@ bool driver_wifi_start(void)
|
||||
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)
|
||||
|
@ -53,7 +53,9 @@ typedef struct wifi_driver
|
||||
bool (*start)(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;
|
||||
} wifi_driver_t;
|
||||
@ -94,7 +96,11 @@ void driver_wifi_stop(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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user