Wifi (Android): report more props

This commit is contained in:
Carter Li
2024-11-22 13:53:04 +08:00
parent 94f8ff938b
commit 2197cfb06d
3 changed files with 18 additions and 15 deletions
+12
View File
@@ -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;
}
+3
View File
@@ -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;
}
+3 -15
View File
@@ -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);
}
}