Brightness: report more detailed values

This commit is contained in:
李通洲
2023-09-19 13:25:50 +08:00
parent 48cecd0ad1
commit 26e5790a78
6 changed files with 39 additions and 18 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
typedef struct FFBrightnessResult
{
FFstrbuf name;
float value;
double min, max, current;
} FFBrightnessResult;
const char* ffDetectBrightness(FFlist* result); // list of FFBrightnessResult
+6 -2
View File
@@ -20,7 +20,9 @@ static const char* detectWithDisplayServices(const FFDisplayServerResult* displa
if(DisplayServicesGetBrightness((CGDirectDisplayID) display->id, &value) == kCGErrorSuccess)
{
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
brightness->value = value * 100;
brightness->current = value;
brightness->max = 1;
brightness->min = 0;
ffStrbufInitCopy(&brightness->name, &display->name);
}
}
@@ -90,7 +92,9 @@ FF_MAYBE_UNUSED static const char* detectWithDdcci(FFlist* result)
uint32_t max = ((uint32_t) i2cOut[6] << 8u) + (uint32_t) i2cOut[7];
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
brightness->value = (float) current * 100.f / max;
brightness->max = max;
brightness->min = 0;
brightness->current = current;
ffStrbufInit(&brightness->name);
uint8_t edid[128] = {};
+8 -5
View File
@@ -26,13 +26,16 @@ const char* ffDetectBrightness(FFlist* result)
if(ioctl(blfd, BACKLIGHTGETSTATUS, &status) < 0)
continue;
FFBrightnessResult* display = (FFBrightnessResult*) ffListAdd(result);
ffStrbufInit(&display->name);
display->value = (float) status.brightness / BACKLIGHTMAXLEVELS;
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
ffStrbufInit(&brightness->name);
brightness->max = BACKLIGHTMAXLEVELS;
brightness->min = 0;
brightness->current = status.brightness;
struct backlight_info info;
if(ioctl(blfd, BACKLIGHTGETINFO, &info) < 0)
ffStrbufAppendS(&display->name, info.name);
ffStrbufAppendS(&brightness->name, info.name);
}
return NULL;
}
@@ -44,4 +47,4 @@ const char* ffDetectBrightness(FF_MAYBE_UNUSED FFlist* result)
return "Backlight is supported only on FreeBSD 13 and newer";
}
#endif
#endif
+6 -3
View File
@@ -72,8 +72,9 @@ static const char* detectWithBacklight(FFlist* result)
}
else
ffStrbufInitS(&brightness->name, entry->d_name);
double maxBrightness = ffStrbufToDouble(&buffer);
brightness->value = (float) (actualBrightness * 100 / maxBrightness);
brightness->max = ffStrbufToDouble(&buffer);
brightness->min = 0;
brightness->current = actualBrightness;
}
}
ffStrbufSubstrBefore(&backlightDir, backlightDirLength);
@@ -123,7 +124,9 @@ static const char* detectWithDdcci(FFlist* result)
ffddca_free_any_vcp_value(vcpValue);
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
brightness->value = (float) current * 100.f / (float) max;
brightness->max = max;
brightness->min = 0;
brightness->current = current;
ffStrbufInitS(&brightness->name, display->model_name);
}
ffddca_close_display(handle);
@@ -20,7 +20,9 @@ static const char* detectWithWmi(FFlist* result)
if(FFWmiVariant vtValue = record.get(L"CurrentBrightness"))
{
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
brightness->value = vtValue.get<uint8_t>();
brightness->max = 100;
brightness->min = 0;
brightness->current = vtValue.get<uint8_t>();
ffStrbufInit(&brightness->name);
if (FFWmiVariant vtName = record.get(L"InstanceName"))
@@ -51,7 +53,9 @@ static char* detectWithDdcci(const FFDisplayServerResult* displayServer, FFlist*
else
ffStrbufInitWS(&brightness->name, physicalMonitor.szPhysicalMonitorDescription);
brightness->value = (float) (curr - min) * 100.f / (float) (max - min);
brightness->max = max;
brightness->min = min;
brightness->current = curr;
}
}
}