* feat(display.go): impl setDisplayBrightness()
Implements setDisplayBrightness(brightness int) which allows setting the
backlight brightness on JetKVM's hardware.
Needs to be implemented into the RPC, config and frontend.
* feat(config): add backlight control settings
* feat(display): add automatic dimming & switch off to display
WIP, dims the display to 50% of the BacklightMaxBrightness after
BacklightDimAfterMS expires. Turns the display off after
BacklightOffAfterMS
* feat(rpc): add methods to get and set BacklightSettings
* WIP: feat(settings): add Max backlight setting
* chore: use constant for backlight control file
* fix: only attempt to wake the display if it's off
* feat(display): wake on touch
* fix: re-use buffer between reads
* fix: wakeDisplay() on start to fix warm start issue
If the application had turned off the display before exiting, it
wouldn't be brought on when the application restarted without a device
reboot.
* chore: various comment & string updates
* fix: newline on set brightness log
Noticed by @eric
https://github.com/jetkvm/kvm/pull/17#discussion_r1903338705
* fix: set default value for display
Set the DisplayMaxBrightness to the default brightness used
out-of-the-box by JetKVM. Also sets the dim/timeout to 2 minutes and 30
mintes respectively.
* feat(display.go): use tickers to countdown to dim/off
As suggested by tutman in https://github.com/jetkvm/kvm/pull/17, use
tickers set to the duration of dim/off to avoid a loop running every
second. The tickers are reset to the dim/off times whenever
wakeDisplay() is called.
* chore: update config
Changed Dim & Off values to seconds instead of milliseconds, there's no
need for it to be that precise.
* feat(display.go): wakeDisplay() force
Adds the force boolean to wakedisplay() which allows skipping the
backlightState == 0 check, this means you can force a ticker reset, even
if the display is currently in the "full bright" state
* feat(display.go): move tickers into their own method
This allows them to only be started if necessary. If the user has chosen
to keep the display on and not-dimmed all the time, the tickers can't
start as their tick value must be a positive integer.
* feat(display.go): stop tickers when auto-dim/auto-off is disabled
* feat(rpc): implement display backlight control methods
* feat(ui): implement display backlight control
* chore: update variable names
As part of @joshuasing's review on #17, updated variables & constants to
match the Go best practices.
Signed-off-by: Cameron Fleming <cameron@nevexo.space>
* fix(display): move backlightTicker setup into screen setup goroutine
Signed-off-by: Cameron Fleming <cameron@nevexo.space>
* chore: fix some start-up timing issues
* fix(display): Don't attempt to start the tickers if the display is disabled
If max_brightness is zero, then there's no point in trying to dim it (or
turn it off...)
* fix: wakeDisplay() doesn't need to stop the tickers
The tickers only need to be reset, if they're disabled, they won't have
been started.
* fix: Don't wake up the display if it's turned off
---------
Signed-off-by: Cameron Fleming <cameron@nevexo.space>
This commit adds the config entry "EdidString" and saves the EDID string
when it's modified via the RPC.
The EDID is restored when the jetkvm_native control socket connects
(usually at boot)
Signed-off-by: Cameron Fleming <cameron@nevexo.space>