Skip to content

Commit 5a39b69

Browse files
committed
Wifi: print signal quality
1 parent fa872d7 commit 5a39b69

File tree

2 files changed

+58
-10
lines changed

2 files changed

+58
-10
lines changed

src/modules/wifi/option.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@ typedef struct FFWifiOptions
88
{
99
FFModuleBaseInfo moduleInfo;
1010
FFModuleArgs moduleArgs;
11+
12+
FFColorRangeConfig percent;
1113
} FFWifiOptions;

src/modules/wifi/wifi.c

Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "modules/wifi/wifi.h"
55
#include "util/stringUtils.h"
66

7-
#define FF_WIFI_NUM_FORMAT_ARGS 10
7+
#define FF_WIFI_NUM_FORMAT_ARGS 11
88

99
void ffPrintWifi(FFWifiOptions* options)
1010
{
@@ -30,33 +30,68 @@ void ffPrintWifi(FFWifiOptions* options)
3030
if(options->moduleArgs.outputFormat.length == 0)
3131
{
3232
ffPrintLogoAndKey(FF_WIFI_MODULE_NAME, moduleIndex, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT);
33+
34+
FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate();
3335
if(item->conn.ssid.length)
3436
{
35-
ffStrbufWriteTo(&item->conn.ssid, stdout);
36-
if(item->conn.protocol.length)
37-
printf(" - %s", item->conn.protocol.chars);
38-
if(item->conn.security.length)
39-
printf(" - %s", item->conn.security.chars);
40-
putchar('\n');
37+
if(item->conn.signalQuality == item->conn.signalQuality)
38+
{
39+
if(instance.config.display.percentType & FF_PERCENTAGE_TYPE_BAR_BIT)
40+
{
41+
ffPercentAppendBar(&buffer, item->conn.signalQuality, options->percent, &options->moduleArgs);
42+
ffStrbufAppendC(&buffer, ' ');
43+
}
44+
}
45+
46+
if (!(instance.config.display.percentType & FF_PERCENTAGE_TYPE_HIDE_OTHERS_BIT))
47+
{
48+
ffStrbufAppend(&buffer, &item->conn.ssid);
49+
50+
if(item->conn.protocol.length)
51+
{
52+
ffStrbufAppendS(&buffer, " - ");
53+
ffStrbufAppend(&buffer, &item->conn.protocol);
54+
}
55+
if(item->conn.security.length)
56+
{
57+
ffStrbufAppendS(&buffer, " - ");
58+
ffStrbufAppend(&buffer, &item->conn.security);
59+
}
60+
ffStrbufAppendC(&buffer, ' ');
61+
}
62+
63+
if(item->conn.signalQuality == item->conn.signalQuality)
64+
{
65+
if(instance.config.display.percentType & FF_PERCENTAGE_TYPE_NUM_BIT)
66+
ffPercentAppendNum(&buffer, item->conn.signalQuality, options->percent, buffer.length > 0, &options->moduleArgs);
67+
}
68+
69+
ffStrbufTrimRight(&buffer, ' ');
4170
}
4271
else
4372
{
44-
puts(item->inf.status.chars);
73+
ffStrbufAppend(&buffer, &item->inf.status);
4574
}
75+
ffStrbufPutTo(&buffer, stdout);
4676
}
4777
else
4878
{
79+
FF_STRBUF_AUTO_DESTROY percentNum = ffStrbufCreate();
80+
ffPercentAppendNum(&percentNum, item->conn.signalQuality, options->percent, false, &options->moduleArgs);
81+
FF_STRBUF_AUTO_DESTROY percentBar = ffStrbufCreate();
82+
ffPercentAppendBar(&percentBar, item->conn.signalQuality, options->percent, &options->moduleArgs);
4983
FF_PRINT_FORMAT_CHECKED(FF_WIFI_MODULE_NAME, moduleIndex, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_WIFI_NUM_FORMAT_ARGS, ((FFformatarg[]){
5084
{FF_FORMAT_ARG_TYPE_STRBUF, &item->inf.description, "inf-desc"},
5185
{FF_FORMAT_ARG_TYPE_STRBUF, &item->inf.status, "inf-status"},
5286
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.status, "status"},
5387
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.ssid, "ssid"},
5488
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.macAddress, "mac-address"},
5589
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.protocol, "protocol"},
56-
{FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.signalQuality, "signal-quality"},
90+
{FF_FORMAT_ARG_TYPE_DOUBLE, &percentNum, "signal-quality"},
5791
{FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.rxRate, "rx-rate"},
5892
{FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.txRate, "tx-rate"},
5993
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.security, "security"},
94+
{FF_FORMAT_ARG_TYPE_STRBUF, &percentBar, "signal-quality-bar"},
6095
}));
6196
}
6297

@@ -77,6 +112,9 @@ bool ffParseWifiCommandOptions(FFWifiOptions* options, const char* key, const ch
77112
if (ffOptionParseModuleArgs(key, subKey, value, &options->moduleArgs))
78113
return true;
79114

115+
if (ffPercentParseCommandOptions(key, subKey, value, &options->percent))
116+
return true;
117+
80118
return false;
81119
}
82120

@@ -93,6 +131,9 @@ void ffParseWifiJsonObject(FFWifiOptions* options, yyjson_val* module)
93131
if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs))
94132
continue;
95133

134+
if (ffPercentParseJsonObject(key, val, &options->percent))
135+
continue;
136+
96137
ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key);
97138
}
98139
}
@@ -103,6 +144,8 @@ void ffGenerateWifiJsonConfig(FFWifiOptions* options, yyjson_mut_doc* doc, yyjso
103144
ffInitWifiOptions(&defaultOptions);
104145

105146
ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs);
147+
148+
ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent);
106149
}
107150

108151
void ffGenerateWifiJsonResult(FF_MAYBE_UNUSED FFWifiOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module)
@@ -156,10 +199,11 @@ void ffPrintWifiHelpFormat(void)
156199
"Connection SSID - ssid",
157200
"Connection BSSID - bssid",
158201
"Connection protocol - protocol",
159-
"Connection signal quality (percentage) - signal-quality",
202+
"Connection signal quality (percentage num) - signal-quality",
160203
"Connection RX rate - rx-rate",
161204
"Connection TX rate - tx-rate",
162205
"Connection Security algorithm - security",
206+
"Connection signal quality (percentage bar) - signal-quality-bar",
163207
}));
164208
}
165209

@@ -177,6 +221,8 @@ void ffInitWifiOptions(FFWifiOptions* options)
177221
ffGenerateWifiJsonConfig
178222
);
179223
ffOptionInitModuleArg(&options->moduleArgs);
224+
225+
options->percent = (FFColorRangeConfig) { 50, 20 };
180226
}
181227

182228
void ffDestroyWifiOptions(FFWifiOptions* options)

0 commit comments

Comments
 (0)