feat(rpc): add methods to get and set BacklightSettings

This commit is contained in:
Cameron Fleming 2025-01-03 22:07:21 +00:00
parent cd7258efd0
commit bec1443fe6
1 changed files with 45 additions and 0 deletions

View File

@ -34,6 +34,12 @@ type JSONRPCEvent struct {
Params interface{} `json:"params,omitempty"`
}
type BacklightSettings struct {
MaxBrightness int `json:"max_brightness"`
DimAfter int `json:"dim_after"`
OffAfter int `json:"off_after"`
}
func writeJSONRPCResponse(response JSONRPCResponse, session *Session) {
responseBytes, err := json.Marshal(response)
if err != nil {
@ -219,6 +225,43 @@ func rpcTryUpdate() error {
return nil
}
func rpcSetBacklightSettings(data *BacklightSettings) error {
LoadConfig()
blConfig := *data
if blConfig.MaxBrightness > 100 || blConfig.MaxBrightness < 0 {
return fmt.Errorf("maxBrightness must be between 0 and 100")
}
if blConfig.DimAfter < 0 {
return fmt.Errorf("dimAfter must be a positive integer")
}
if blConfig.OffAfter < 0 {
return fmt.Errorf("offAfter must be a positive integer")
}
config.DisplayMaxBrightness = blConfig.MaxBrightness
config.DisplayDimAfterMs = int64(blConfig.DimAfter)
config.DisplayOffAfterMs = int64(blConfig.OffAfter)
if err := SaveConfig(); err != nil {
return fmt.Errorf("failed to save config: %w", err)
}
return nil
}
func rpcGetBacklightSettings() (*BacklightSettings, error) {
LoadConfig()
return &BacklightSettings{
MaxBrightness: config.DisplayMaxBrightness,
DimAfter: int(config.DisplayDimAfterMs),
OffAfter: int(config.DisplayOffAfterMs),
}, nil
}
const (
devModeFile = "/userdata/jetkvm/devmode.enable"
sshKeyDir = "/userdata/dropbear/.ssh"
@ -554,4 +597,6 @@ var rpcHandlers = map[string]RPCHandler{
"getWakeOnLanDevices": {Func: rpcGetWakeOnLanDevices},
"setWakeOnLanDevices": {Func: rpcSetWakeOnLanDevices, Params: []string{"params"}},
"resetConfig": {Func: rpcResetConfig},
"setBacklightSettings": {Func: rpcSetBacklightSettings, Params: []string{"settings"}},
"getBacklightSettings": {Func: rpcGetBacklightSettings},
}