Uptime / Battery: add formatted duration string in custom format

This commit is contained in:
李通洲
2025-07-30 14:44:19 +08:00
parent a0174e8666
commit ce554dbdd0
3 changed files with 10 additions and 4 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ typedef struct FFBatteryResult
double capacity;
double temperature;
uint32_t cycleCount;
int32_t timeRemaining;
int32_t timeRemaining; // in seconds, -1 if unknown
} FFBatteryResult;
const char* ffDetectBattery(FFBatteryOptions* options, FFlist* results);
+6
View File
@@ -101,6 +101,9 @@ static void printBattery(FFBatteryOptions* options, FFBatteryResult* result, uin
ffPercentAppendBar(&capacityBar, result->capacity, options->percent, &options->moduleArgs);
FF_STRBUF_AUTO_DESTROY tempStr = ffStrbufCreate();
ffTempsAppendNum(result->temperature, &tempStr, options->tempConfig, &options->moduleArgs);
FF_STRBUF_AUTO_DESTROY timeStr = ffStrbufCreate();
if (result->timeRemaining > 0)
ffDurationAppendNum((uint32_t) result->timeRemaining, &timeStr);
FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, ((FFformatarg[]) {
FF_FORMAT_ARG(result->manufacturer, "manufacturer"),
@@ -117,6 +120,7 @@ static void printBattery(FFBatteryOptions* options, FFBatteryResult* result, uin
FF_FORMAT_ARG(hours, "time-hours"),
FF_FORMAT_ARG(minutes, "time-minutes"),
FF_FORMAT_ARG(seconds, "time-seconds"),
FF_FORMAT_ARG(result->timeRemaining, "time-formatted"),
}));
}
}
@@ -254,6 +258,8 @@ void ffGenerateBatteryJsonResult(FFBatteryOptions* options, yyjson_mut_doc* doc,
yyjson_mut_obj_add_uint(doc, obj, "cycleCount", battery->cycleCount);
if (battery->timeRemaining > 0)
yyjson_mut_obj_add_int(doc, obj, "timeRemaining", battery->timeRemaining);
else
yyjson_mut_obj_add_null(doc, obj, "timeRemaining");
}
FF_LIST_FOR_EACH(FFBatteryResult, battery, results)
+3 -3
View File
@@ -19,13 +19,12 @@ void ffPrintUptime(FFUptimeOptions* options)
}
uint64_t uptime = result.uptime;
FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate();
ffDurationAppendNum((uptime + 500) / 1000, &buffer);
if(options->moduleArgs.outputFormat.length == 0)
{
ffPrintLogoAndKey(FF_UPTIME_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT);
FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate();
ffDurationAppendNum((uptime + 500) / 1000, &buffer);
ffStrbufPutTo(&buffer, stdout);
}
else
@@ -52,6 +51,7 @@ void ffPrintUptime(FFUptimeOptions* options)
FF_FORMAT_ARG(age.years, "years"),
FF_FORMAT_ARG(age.daysOfYear, "days-of-year"),
FF_FORMAT_ARG(age.yearsFraction, "years-fraction"),
FF_FORMAT_ARG(buffer, "formatted")
}));
}
}