Skip to content

Commit 2197cfb

Browse files
committed
Wifi (Android): report more props
1 parent 94f8ff9 commit 2197cfb

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

src/detection/wifi/wifi.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,15 @@ typedef struct FFWifiResult
2929
} FFWifiResult;
3030

3131
const char* ffDetectWifi(FFlist* result /*list of FFWifiItem*/);
32+
33+
static inline uint16_t ffWifiFreqToChannel(uint16_t frequency)
34+
{
35+
// https://github.com/opetryna/win32wifi/blob/master/win32wifi/Win32Wifi.py#L140
36+
// FIXME: Does it work for 6 GHz?
37+
if (frequency == 2484)
38+
return 14;
39+
else if (frequency < 2484)
40+
return (uint16_t) (frequency - 2407) / 5;
41+
else
42+
return (frequency / 5) - 1000;
43+
}

src/detection/wifi/wifi_android.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ const char* ffDetectWifi(FFlist* result)
6262
ffStrbufAppendS(&item->inf.description, yyjson_get_str(yyjson_obj_get(root, "ip")));
6363
ffStrbufAppendS(&item->conn.bssid, yyjson_get_str(yyjson_obj_get(root, "bssid")));
6464
ffStrbufAppendS(&item->conn.ssid, yyjson_get_str(yyjson_obj_get(root, "ssid")));
65+
item->conn.frequency = yyjson_get_int(yyjson_obj_get(root, "frequency_mhz"));
66+
item->conn.txRate = yyjson_get_num(yyjson_obj_get(root, "link_speed_mbps"));
67+
item->conn.channel = ffWifiFreqToChannel(item->conn.frequency);
6568

6669
return NULL;
6770
}

src/detection/wifi/wifi_linux.c

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,6 @@ typedef enum {
4343
continue; \
4444
}
4545

46-
static uint16_t freq2channel(uint16_t frequency)
47-
{
48-
// https://github.com/opetryna/win32wifi/blob/master/win32wifi/Win32Wifi.py#L140
49-
// FIXME: Does it work for 6 GHz?
50-
if (frequency == 2484)
51-
return 14;
52-
else if (frequency < 2484)
53-
return (uint16_t) (frequency - 2407) / 5;
54-
else
55-
return (frequency / 5) - 1000;
56-
}
57-
5846
static const char* detectWifiWithNm(FFWifiResult* item, FFstrbuf* buffer)
5947
{
6048
FFDBusData dbus;
@@ -151,7 +139,7 @@ static const char* detectWifiWithNm(FFWifiResult* item, FFstrbuf* buffer)
151139
{
152140
item->conn.frequency = (uint16_t) frequency;
153141
if (item->conn.channel == 0)
154-
item->conn.channel = freq2channel(item->conn.frequency);
142+
item->conn.channel = ffWifiFreqToChannel(item->conn.frequency);
155143
}
156144
}
157145
}
@@ -253,7 +241,7 @@ static const char* detectWifiWithIw(FFWifiResult* item, FFstrbuf* buffer)
253241
if(ffParsePropLines(output.chars, "freq: ", buffer))
254242
{
255243
item->conn.frequency = (uint16_t) ffStrbufToUInt(buffer, 0);
256-
item->conn.channel = freq2channel(item->conn.frequency);
244+
item->conn.channel = ffWifiFreqToChannel(item->conn.frequency);
257245
}
258246

259247
return NULL;
@@ -321,7 +309,7 @@ static const char* detectWifiWithIoctls(FFWifiResult* item)
321309
iwr.u.freq.e--;
322310
}
323311
item->conn.frequency = (uint16_t) iwr.u.freq.m;
324-
item->conn.channel = freq2channel(item->conn.frequency);
312+
item->conn.channel = ffWifiFreqToChannel(item->conn.frequency);
325313
}
326314
}
327315

0 commit comments

Comments
 (0)