From 2197cfb06d2b336976986cb17ebb3a55e87e8d5e Mon Sep 17 00:00:00 2001 From: Carter Li Date: Fri, 22 Nov 2024 13:53:04 +0800 Subject: [PATCH] Wifi (Android): report more props --- src/detection/wifi/wifi.h | 12 ++++++++++++ src/detection/wifi/wifi_android.c | 3 +++ src/detection/wifi/wifi_linux.c | 18 +++--------------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/detection/wifi/wifi.h b/src/detection/wifi/wifi.h index 74d59cd6d..ab2ee0719 100644 --- a/src/detection/wifi/wifi.h +++ b/src/detection/wifi/wifi.h @@ -29,3 +29,15 @@ typedef struct FFWifiResult } FFWifiResult; const char* ffDetectWifi(FFlist* result /*list of FFWifiItem*/); + +static inline uint16_t ffWifiFreqToChannel(uint16_t frequency) +{ + // https://github.com/opetryna/win32wifi/blob/master/win32wifi/Win32Wifi.py#L140 + // FIXME: Does it work for 6 GHz? + if (frequency == 2484) + return 14; + else if (frequency < 2484) + return (uint16_t) (frequency - 2407) / 5; + else + return (frequency / 5) - 1000; +} diff --git a/src/detection/wifi/wifi_android.c b/src/detection/wifi/wifi_android.c index 142b9cc2e..a3abdcc39 100644 --- a/src/detection/wifi/wifi_android.c +++ b/src/detection/wifi/wifi_android.c @@ -62,6 +62,9 @@ const char* ffDetectWifi(FFlist* result) ffStrbufAppendS(&item->inf.description, yyjson_get_str(yyjson_obj_get(root, "ip"))); ffStrbufAppendS(&item->conn.bssid, yyjson_get_str(yyjson_obj_get(root, "bssid"))); ffStrbufAppendS(&item->conn.ssid, yyjson_get_str(yyjson_obj_get(root, "ssid"))); + item->conn.frequency = yyjson_get_int(yyjson_obj_get(root, "frequency_mhz")); + item->conn.txRate = yyjson_get_num(yyjson_obj_get(root, "link_speed_mbps")); + item->conn.channel = ffWifiFreqToChannel(item->conn.frequency); return NULL; } diff --git a/src/detection/wifi/wifi_linux.c b/src/detection/wifi/wifi_linux.c index f883da64c..9e2158c09 100644 --- a/src/detection/wifi/wifi_linux.c +++ b/src/detection/wifi/wifi_linux.c @@ -43,18 +43,6 @@ typedef enum { continue; \ } -static uint16_t freq2channel(uint16_t frequency) -{ - // https://github.com/opetryna/win32wifi/blob/master/win32wifi/Win32Wifi.py#L140 - // FIXME: Does it work for 6 GHz? - if (frequency == 2484) - return 14; - else if (frequency < 2484) - return (uint16_t) (frequency - 2407) / 5; - else - return (frequency / 5) - 1000; -} - static const char* detectWifiWithNm(FFWifiResult* item, FFstrbuf* buffer) { FFDBusData dbus; @@ -151,7 +139,7 @@ static const char* detectWifiWithNm(FFWifiResult* item, FFstrbuf* buffer) { item->conn.frequency = (uint16_t) frequency; if (item->conn.channel == 0) - item->conn.channel = freq2channel(item->conn.frequency); + item->conn.channel = ffWifiFreqToChannel(item->conn.frequency); } } } @@ -253,7 +241,7 @@ static const char* detectWifiWithIw(FFWifiResult* item, FFstrbuf* buffer) if(ffParsePropLines(output.chars, "freq: ", buffer)) { item->conn.frequency = (uint16_t) ffStrbufToUInt(buffer, 0); - item->conn.channel = freq2channel(item->conn.frequency); + item->conn.channel = ffWifiFreqToChannel(item->conn.frequency); } return NULL; @@ -321,7 +309,7 @@ static const char* detectWifiWithIoctls(FFWifiResult* item) iwr.u.freq.e--; } item->conn.frequency = (uint16_t) iwr.u.freq.m; - item->conn.channel = freq2channel(item->conn.frequency); + item->conn.channel = ffWifiFreqToChannel(item->conn.frequency); } }