summaryrefslogtreecommitdiffstats
path: root/src/detection/brightness/brightness_obsd.c
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/brightness/brightness_obsd.c
Add the files
Diffstat (limited to 'src/detection/brightness/brightness_obsd.c')
-rw-r--r--src/detection/brightness/brightness_obsd.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/detection/brightness/brightness_obsd.c b/src/detection/brightness/brightness_obsd.c
new file mode 100644
index 0000000..102a8c2
--- /dev/null
+++ b/src/detection/brightness/brightness_obsd.c
@@ -0,0 +1,44 @@
+#include "brightness.h"
+#include "common/io.h"
+
+#include <dev/wscons/wsconsio.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+const char* ffDetectBrightness(FF_A_UNUSED FFBrightnessOptions* options, FFlist* result) {
+ char path[] = "/dev/ttyCX";
+ for (char i = '0'; i <= '9'; ++i) {
+ path[strlen("/dev/ttyC")] = i;
+
+ FF_AUTO_CLOSE_FD int devfd = open(path, O_RDONLY | O_CLOEXEC);
+
+ if (devfd < 0) {
+ if (errno == EACCES && i == '0') {
+ return "Permission denied when opening tty device";
+ }
+ if (errno == ENOENT) {
+ break;
+ }
+ continue;
+ }
+
+ struct wsdisplay_param param = {
+ .param = WSDISPLAYIO_PARAM_BRIGHTNESS,
+ };
+
+ if (ioctl(devfd, WSDISPLAYIO_GETPARAM, &param) < 0) {
+ continue;
+ }
+
+ FFBrightnessResult* brightness = FF_LIST_ADD(FFBrightnessResult, *result);
+ ffStrbufInitF(&brightness->name, "ttyC%c", i);
+
+ brightness->max = param.max;
+ brightness->min = param.min;
+ brightness->current = param.curval;
+ brightness->builtin = true;
+ }
+
+ return NULL;
+}