mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 10:22:12 +02:00
Wifi: init basic support for Linux
This commit is contained in:
+1
-1
@@ -332,7 +332,7 @@ if(LINUX)
|
||||
src/detection/terminalshell/terminalshell_linux.c
|
||||
src/detection/uptime/uptime_linux.c
|
||||
src/detection/users/users_linux.c
|
||||
src/detection/wifi/wifi_nosupport.c
|
||||
src/detection/wifi/wifi_linux.c
|
||||
src/detection/wmtheme/wmtheme_linux.c
|
||||
)
|
||||
elseif(ANDROID)
|
||||
|
||||
@@ -74,7 +74,7 @@ All categories not listed here should work without needing a specific implementa
|
||||
|
||||
##### Available Modules
|
||||
```
|
||||
Title, Separator, OS, Host, Bios, Board, Kernel, Uptime, Processes, Packages, Shell, Resolution, DE, WM, WMTheme, Theme, Icons, Font, Cursor, Terminal, Terminal Font, CPU, CPUUsage, GPU, Memory, Swap, Disk, Battery, Power Adapter, Player, Media, Vulkan, OpenGL, OpenCL, LocalIP, PublicIP, DateTime, Date, Time, Locale, Colors, Break, Custom
|
||||
Title, Separator, OS, Host, Bios, Board, Kernel, Uptime, Processes, Packages, Shell, Resolution, DE, WM, WMTheme, Theme, Icons, Font, Cursor, Terminal, Terminal Font, CPU, CPUUsage, GPU, Memory, Swap, Disk, Battery, Power Adapter, Player, Media, Vulkan, OpenGL, OpenCL, LocalIP, PublicIP, Wifi, DateTime, Date, Time, Locale, Colors, Break, Custom
|
||||
```
|
||||
|
||||
##### Logos
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
#include "wifi.h"
|
||||
|
||||
#include "common/io.h"
|
||||
#include <linux/nl80211.h>
|
||||
#include <net/if.h>
|
||||
|
||||
static const char* detectInf(uint32_t ifIndex, FFWifiResult* wifi)
|
||||
{
|
||||
//TODO: play with netlink
|
||||
FF_UNUSED(ifIndex, wifi);
|
||||
return "Unimplemented";
|
||||
}
|
||||
|
||||
const char* ffDetectWifi(const FFinstance* instance, FFlist* result)
|
||||
{
|
||||
struct if_nameindex* infs = if_nameindex();
|
||||
if(!infs)
|
||||
return "if_nameindex() failed";
|
||||
|
||||
FFstrbuf path;
|
||||
ffStrbufInit(&path);
|
||||
|
||||
for(struct if_nameindex* i = infs; !(i->if_index == 0 && i->if_name == NULL); ++i)
|
||||
{
|
||||
ffStrbufSetF(&path, "/sys/class/net/%s/phy80211", i->if_name);
|
||||
if(!ffFileExists(path.chars, S_IFDIR))
|
||||
continue;
|
||||
|
||||
FFWifiResult* item = (FFWifiResult*)ffListAdd(result);
|
||||
ffStrbufInitS(&item->inf.description, i->if_name);
|
||||
ffStrbufInit(&item->inf.status);
|
||||
ffStrbufInit(&item->conn.status);
|
||||
ffStrbufInit(&item->conn.ssid);
|
||||
ffStrbufInit(&item->conn.macAddress);
|
||||
ffStrbufInit(&item->conn.phyType);
|
||||
item->conn.signalQuality = 0.0/0.0;
|
||||
item->conn.rxRate = 0.0/0.0;
|
||||
item->conn.txRate = 0.0/0.0;
|
||||
item->security.enabled = false;
|
||||
item->security.oneXEnabled = false;
|
||||
ffStrbufInit(&item->security.algorithm);
|
||||
|
||||
ffStrbufSetF(&path, "/sys/class/net/%s/operstate", i->if_name);
|
||||
if(!ffAppendFileBuffer(path.chars, &item->inf.status) || !ffStrbufEqualS(&item->inf.status, "up"))
|
||||
continue;
|
||||
|
||||
ffStrbufSetF(&path, "/sys/class/net/%s/address", i->if_name);
|
||||
ffAppendFileBuffer(path.chars, &item->conn.macAddress);
|
||||
|
||||
detectInf(i->if_index, item);
|
||||
}
|
||||
if_freenameindex(infs);
|
||||
ffStrbufDestroy(&path);
|
||||
|
||||
if(result->length == 0)
|
||||
return "No wifi interfaces found";
|
||||
|
||||
return NULL;
|
||||
}
|
||||
Reference in New Issue
Block a user