Brightness (Linux): allow specifying busno for ddcutil

Ref: #580
This commit is contained in:
李通洲
2023-10-14 01:38:02 +08:00
parent 839ff311de
commit 42e87b498c
3 changed files with 97 additions and 26 deletions
+24
View File
@@ -88,6 +88,10 @@ void ffInitBrightnessOptions(FFBrightnessOptions* options)
{
ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_BRIGHTNESS_MODULE_NAME, ffParseBrightnessCommandOptions, ffParseBrightnessJsonObject, ffPrintBrightness, ffGenerateBrightnessJson, ffPrintBrightnessHelpFormat);
ffOptionInitModuleArg(&options->moduleArgs);
#ifdef __linux__
ffListInit(&options->busNos, sizeof(int));
#endif
}
bool ffParseBrightnessCommandOptions(FFBrightnessOptions* options, const char* key, const char* value)
@@ -103,6 +107,10 @@ bool ffParseBrightnessCommandOptions(FFBrightnessOptions* options, const char* k
void ffDestroyBrightnessOptions(FFBrightnessOptions* options)
{
ffOptionDestroyModuleArg(&options->moduleArgs);
#ifdef __linux__
ffListDestroy(&options->busNos);
#endif
}
void ffParseBrightnessJsonObject(FFBrightnessOptions* options, yyjson_val* module)
@@ -118,6 +126,22 @@ void ffParseBrightnessJsonObject(FFBrightnessOptions* options, yyjson_val* modul
if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs))
continue;
#ifdef __linux__
if(ffStrEqualsIgnCase(key, "busNos"))
{
if (!yyjson_is_arr(val)) continue;
yyjson_val* item;
size_t idx, max;
yyjson_arr_foreach(val, idx, max, item)
{
if (!yyjson_is_int(item)) continue;
*(int*) ffListAdd(&options->busNos) = yyjson_get_int(item);
}
continue;
}
#endif
ffPrintError(FF_BRIGHTNESS_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key);
}
}
+4
View File
@@ -8,4 +8,8 @@ typedef struct FFBrightnessOptions
{
FFModuleBaseInfo moduleInfo;
FFModuleArgs moduleArgs;
#ifdef __linux__
FFlist busNos;
#endif
} FFBrightnessOptions;