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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func rpcSetBacklightSettings(data *BacklightSettings) error {
|
func rpcSetBacklightSettings(params BacklightSettings) error {
|
||||||
LoadConfig()
|
LoadConfig()
|
||||||
|
|
||||||
blConfig := *data
|
blConfig := params
|
||||||
|
|
||||||
if blConfig.MaxBrightness > 100 || blConfig.MaxBrightness < 0 {
|
// NOTE: by default, the frontend limits the brightness to 64, as that's what the device originally shipped with.
|
||||||
return fmt.Errorf("maxBrightness must be between 0 and 100")
|
if blConfig.MaxBrightness > 255 || blConfig.MaxBrightness < 0 {
|
||||||
|
return fmt.Errorf("maxBrightness must be between 0 and 255")
|
||||||
}
|
}
|
||||||
|
|
||||||
if blConfig.DimAfter < 0 {
|
if blConfig.DimAfter < 0 {
|
||||||
|
@ -243,12 +244,24 @@ func rpcSetBacklightSettings(data *BacklightSettings) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
config.DisplayMaxBrightness = blConfig.MaxBrightness
|
config.DisplayMaxBrightness = blConfig.MaxBrightness
|
||||||
config.DisplayDimAfterMs = int64(blConfig.DimAfter)
|
config.DisplayDimAfterSec = blConfig.DimAfter
|
||||||
config.DisplayOffAfterMs = int64(blConfig.OffAfter)
|
config.DisplayOffAfterSec = blConfig.OffAfter
|
||||||
|
|
||||||
if err := SaveConfig(); err != nil {
|
if err := SaveConfig(); err != nil {
|
||||||
return fmt.Errorf("failed to save config: %w", err)
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,8 +270,8 @@ func rpcGetBacklightSettings() (*BacklightSettings, error) {
|
||||||
|
|
||||||
return &BacklightSettings{
|
return &BacklightSettings{
|
||||||
MaxBrightness: config.DisplayMaxBrightness,
|
MaxBrightness: config.DisplayMaxBrightness,
|
||||||
DimAfter: int(config.DisplayDimAfterMs),
|
DimAfter: int(config.DisplayDimAfterSec),
|
||||||
OffAfter: int(config.DisplayOffAfterMs),
|
OffAfter: int(config.DisplayOffAfterSec),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,7 +435,7 @@ func callRPCHandler(handler RPCHandler, params map[string]interface{}) (interfac
|
||||||
}
|
}
|
||||||
args[i] = reflect.ValueOf(newStruct).Elem()
|
args[i] = reflect.ValueOf(newStruct).Elem()
|
||||||
} else {
|
} 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 {
|
} else {
|
||||||
args[i] = convertedValue.Convert(paramType)
|
args[i] = convertedValue.Convert(paramType)
|
||||||
|
@ -597,6 +610,6 @@ var rpcHandlers = map[string]RPCHandler{
|
||||||
"getWakeOnLanDevices": {Func: rpcGetWakeOnLanDevices},
|
"getWakeOnLanDevices": {Func: rpcGetWakeOnLanDevices},
|
||||||
"setWakeOnLanDevices": {Func: rpcSetWakeOnLanDevices, Params: []string{"params"}},
|
"setWakeOnLanDevices": {Func: rpcSetWakeOnLanDevices, Params: []string{"params"}},
|
||||||
"resetConfig": {Func: rpcResetConfig},
|
"resetConfig": {Func: rpcResetConfig},
|
||||||
"setBacklightSettings": {Func: rpcSetBacklightSettings, Params: []string{"settings"}},
|
"setBacklightSettings": {Func: rpcSetBacklightSettings, Params: []string{"params"}},
|
||||||
"getBacklightSettings": {Func: rpcGetBacklightSettings},
|
"getBacklightSettings": {Func: rpcGetBacklightSettings},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue