From b602bb20c2efcfc72e529c7de77efbbdf8efbcdd Mon Sep 17 00:00:00 2001 From: Carter Li Date: Thu, 8 Feb 2024 14:07:39 +0800 Subject: [PATCH] Battery (Linux): print the same format of battery status as other platforms --- src/detection/battery/battery_linux.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/detection/battery/battery_linux.c b/src/detection/battery/battery_linux.c index 085e4a892..080183c8d 100644 --- a/src/detection/battery/battery_linux.c +++ b/src/detection/battery/battery_linux.c @@ -5,6 +5,8 @@ #include +// https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-power + static void parseBattery(FFstrbuf* dir, const char* id, FFBatteryOptions* options, FFlist* results) { uint32_t dirLength = dir->length; @@ -68,6 +70,26 @@ static void parseBattery(FFstrbuf* dir, const char* id, FFBatteryOptions* option ffStrbufTrimRightSpace(&result->status); ffStrbufSubstrBefore(dir, dirLength); + // Unknown, Charging, Discharging, Not charging, Full + if (ffStrbufEqualS(&result->status, "Not charging") || ffStrbufEqualS(&result->status, "Full")) + ffStrbufSetStatic(&result->status, "AC Connected"); + else if (ffStrbufEqualS(&result->status, "Unknown")) + ffStrbufClear(&result->status); + + ffStrbufAppendS(dir, "/capacity_level"); + if (ffReadFileBuffer(dir->chars, &tmpBuffer)) + { + ffStrbufTrimRightSpace(&result->manufacturer); + if (ffStrbufEqualS(&tmpBuffer, "Critical")) + { + if (result->status.length) + ffStrbufAppendS(&result->status, ", Critical"); + else + ffStrbufSetStatic(&result->status, "Critical"); + } + } + ffStrbufSubstrBefore(dir, dirLength); + ffStrbufInit(&result->serial); ffStrbufAppendS(dir, "/serial_number"); if (ffReadFileBuffer(dir->chars, &result->serial))