mirror of https://github.com/jetkvm/kvm.git
feat(rpc): implement display backlight control methods
This commit is contained in:
parent
cabe5b07ab
commit
309d30d3c3
33
jsonrpc.go
33
jsonrpc.go
|
@ -225,13 +225,14 @@ func rpcTryUpdate() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func rpcSetBacklightSettings(data *BacklightSettings) error {
|
||||
func rpcSetBacklightSettings(params BacklightSettings) error {
|
||||
LoadConfig()
|
||||
|
||||
blConfig := *data
|
||||
blConfig := params
|
||||
|
||||
if blConfig.MaxBrightness > 100 || blConfig.MaxBrightness < 0 {
|
||||
return fmt.Errorf("maxBrightness must be between 0 and 100")
|
||||
// NOTE: by default, the frontend limits the brightness to 64, as that's what the device originally shipped with.
|
||||
if blConfig.MaxBrightness > 255 || blConfig.MaxBrightness < 0 {
|
||||
return fmt.Errorf("maxBrightness must be between 0 and 255")
|
||||
}
|
||||
|
||||
if blConfig.DimAfter < 0 {
|
||||
|
@ -243,12 +244,24 @@ func rpcSetBacklightSettings(data *BacklightSettings) error {
|
|||
}
|
||||
|
||||
config.DisplayMaxBrightness = blConfig.MaxBrightness
|
||||
config.DisplayDimAfterMs = int64(blConfig.DimAfter)
|
||||
config.DisplayOffAfterMs = int64(blConfig.OffAfter)
|
||||
config.DisplayDimAfterSec = blConfig.DimAfter
|
||||
config.DisplayOffAfterSec = blConfig.OffAfter
|
||||
|
||||
if err := SaveConfig(); err != nil {
|
||||
return fmt.Errorf("failed to save config: %w", err)
|
||||
}
|
||||
|
||||
log.Printf("rpc: display: settings applied, max_brightness: %d, dim after: %ds, off after: %ds", config.DisplayMaxBrightness, config.DisplayDimAfterSec, config.DisplayOffAfterSec)
|
||||
|
||||
// If the device started up with auto-dim and/or auto-off set to zero, the display init
|
||||
// method will not have started the tickers. So in case that has changed, attempt to start the tickers now.
|
||||
startBacklightTickers()
|
||||
|
||||
// Wake the display after the settings are altered, this ensures the tickers
|
||||
// are reset to the new settings, and will bring the display up to maxBrightness.
|
||||
// Calling with force set to true, to ignore the current state of the display, and force
|
||||
// it to reset the tickers.
|
||||
wakeDisplay(true)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -257,8 +270,8 @@ func rpcGetBacklightSettings() (*BacklightSettings, error) {
|
|||
|
||||
return &BacklightSettings{
|
||||
MaxBrightness: config.DisplayMaxBrightness,
|
||||
DimAfter: int(config.DisplayDimAfterMs),
|
||||
OffAfter: int(config.DisplayOffAfterMs),
|
||||
DimAfter: int(config.DisplayDimAfterSec),
|
||||
OffAfter: int(config.DisplayOffAfterSec),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -422,7 +435,7 @@ func callRPCHandler(handler RPCHandler, params map[string]interface{}) (interfac
|
|||
}
|
||||
args[i] = reflect.ValueOf(newStruct).Elem()
|
||||
} else {
|
||||
return nil, fmt.Errorf("invalid parameter type for: %s", paramName)
|
||||
return nil, fmt.Errorf("invalid parameter type for: %s, type: %s", paramName, paramType.Kind())
|
||||
}
|
||||
} else {
|
||||
args[i] = convertedValue.Convert(paramType)
|
||||
|
@ -597,6 +610,6 @@ var rpcHandlers = map[string]RPCHandler{
|
|||
"getWakeOnLanDevices": {Func: rpcGetWakeOnLanDevices},
|
||||
"setWakeOnLanDevices": {Func: rpcSetWakeOnLanDevices, Params: []string{"params"}},
|
||||
"resetConfig": {Func: rpcResetConfig},
|
||||
"setBacklightSettings": {Func: rpcSetBacklightSettings, Params: []string{"settings"}},
|
||||
"setBacklightSettings": {Func: rpcSetBacklightSettings, Params: []string{"params"}},
|
||||
"getBacklightSettings": {Func: rpcGetBacklightSettings},
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue