Wifi: print signal quality

This commit is contained in:
李通洲
2024-07-08 16:08:20 +08:00
parent fa872d7c9b
commit 5a39b69d1d
2 changed files with 58 additions and 10 deletions
+2
View File
@@ -8,4 +8,6 @@ typedef struct FFWifiOptions
{
FFModuleBaseInfo moduleInfo;
FFModuleArgs moduleArgs;
FFColorRangeConfig percent;
} FFWifiOptions;
+56 -10
View File
@@ -4,7 +4,7 @@
#include "modules/wifi/wifi.h"
#include "util/stringUtils.h"
#define FF_WIFI_NUM_FORMAT_ARGS 10
#define FF_WIFI_NUM_FORMAT_ARGS 11
void ffPrintWifi(FFWifiOptions* options)
{
@@ -30,22 +30,56 @@ void ffPrintWifi(FFWifiOptions* options)
if(options->moduleArgs.outputFormat.length == 0)
{
ffPrintLogoAndKey(FF_WIFI_MODULE_NAME, moduleIndex, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT);
FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate();
if(item->conn.ssid.length)
{
ffStrbufWriteTo(&item->conn.ssid, stdout);
if(item->conn.protocol.length)
printf(" - %s", item->conn.protocol.chars);
if(item->conn.security.length)
printf(" - %s", item->conn.security.chars);
putchar('\n');
if(item->conn.signalQuality == item->conn.signalQuality)
{
if(instance.config.display.percentType & FF_PERCENTAGE_TYPE_BAR_BIT)
{
ffPercentAppendBar(&buffer, item->conn.signalQuality, options->percent, &options->moduleArgs);
ffStrbufAppendC(&buffer, ' ');
}
}
if (!(instance.config.display.percentType & FF_PERCENTAGE_TYPE_HIDE_OTHERS_BIT))
{
ffStrbufAppend(&buffer, &item->conn.ssid);
if(item->conn.protocol.length)
{
ffStrbufAppendS(&buffer, " - ");
ffStrbufAppend(&buffer, &item->conn.protocol);
}
if(item->conn.security.length)
{
ffStrbufAppendS(&buffer, " - ");
ffStrbufAppend(&buffer, &item->conn.security);
}
ffStrbufAppendC(&buffer, ' ');
}
if(item->conn.signalQuality == item->conn.signalQuality)
{
if(instance.config.display.percentType & FF_PERCENTAGE_TYPE_NUM_BIT)
ffPercentAppendNum(&buffer, item->conn.signalQuality, options->percent, buffer.length > 0, &options->moduleArgs);
}
ffStrbufTrimRight(&buffer, ' ');
}
else
{
puts(item->inf.status.chars);
ffStrbufAppend(&buffer, &item->inf.status);
}
ffStrbufPutTo(&buffer, stdout);
}
else
{
FF_STRBUF_AUTO_DESTROY percentNum = ffStrbufCreate();
ffPercentAppendNum(&percentNum, item->conn.signalQuality, options->percent, false, &options->moduleArgs);
FF_STRBUF_AUTO_DESTROY percentBar = ffStrbufCreate();
ffPercentAppendBar(&percentBar, item->conn.signalQuality, options->percent, &options->moduleArgs);
FF_PRINT_FORMAT_CHECKED(FF_WIFI_MODULE_NAME, moduleIndex, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_WIFI_NUM_FORMAT_ARGS, ((FFformatarg[]){
{FF_FORMAT_ARG_TYPE_STRBUF, &item->inf.description, "inf-desc"},
{FF_FORMAT_ARG_TYPE_STRBUF, &item->inf.status, "inf-status"},
@@ -53,10 +87,11 @@ void ffPrintWifi(FFWifiOptions* options)
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.ssid, "ssid"},
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.macAddress, "mac-address"},
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.protocol, "protocol"},
{FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.signalQuality, "signal-quality"},
{FF_FORMAT_ARG_TYPE_DOUBLE, &percentNum, "signal-quality"},
{FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.rxRate, "rx-rate"},
{FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.txRate, "tx-rate"},
{FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.security, "security"},
{FF_FORMAT_ARG_TYPE_STRBUF, &percentBar, "signal-quality-bar"},
}));
}
@@ -77,6 +112,9 @@ bool ffParseWifiCommandOptions(FFWifiOptions* options, const char* key, const ch
if (ffOptionParseModuleArgs(key, subKey, value, &options->moduleArgs))
return true;
if (ffPercentParseCommandOptions(key, subKey, value, &options->percent))
return true;
return false;
}
@@ -93,6 +131,9 @@ void ffParseWifiJsonObject(FFWifiOptions* options, yyjson_val* module)
if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs))
continue;
if (ffPercentParseJsonObject(key, val, &options->percent))
continue;
ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key);
}
}
@@ -103,6 +144,8 @@ void ffGenerateWifiJsonConfig(FFWifiOptions* options, yyjson_mut_doc* doc, yyjso
ffInitWifiOptions(&defaultOptions);
ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs);
ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent);
}
void ffGenerateWifiJsonResult(FF_MAYBE_UNUSED FFWifiOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module)
@@ -156,10 +199,11 @@ void ffPrintWifiHelpFormat(void)
"Connection SSID - ssid",
"Connection BSSID - bssid",
"Connection protocol - protocol",
"Connection signal quality (percentage) - signal-quality",
"Connection signal quality (percentage num) - signal-quality",
"Connection RX rate - rx-rate",
"Connection TX rate - tx-rate",
"Connection Security algorithm - security",
"Connection signal quality (percentage bar) - signal-quality-bar",
}));
}
@@ -177,6 +221,8 @@ void ffInitWifiOptions(FFWifiOptions* options)
ffGenerateWifiJsonConfig
);
ffOptionInitModuleArg(&options->moduleArgs);
options->percent = (FFColorRangeConfig) { 50, 20 };
}
void ffDestroyWifiOptions(FFWifiOptions* options)