@@ -34,6 +34,12 @@ type JSONRPCEvent struct {
3434 Params interface {} `json:"params,omitempty"`
3535}
3636
37+ type BacklightSettings struct {
38+ MaxBrightness int `json:"max_brightness"`
39+ DimAfter int `json:"dim_after"`
40+ OffAfter int `json:"off_after"`
41+ }
42+
3743func writeJSONRPCResponse (response JSONRPCResponse , session * Session ) {
3844 responseBytes , err := json .Marshal (response )
3945 if err != nil {
@@ -219,6 +225,43 @@ func rpcTryUpdate() error {
219225 return nil
220226}
221227
228+ func rpcSetBacklightSettings (data * BacklightSettings ) error {
229+ LoadConfig ()
230+
231+ blConfig := * data
232+
233+ if blConfig .MaxBrightness > 100 || blConfig .MaxBrightness < 0 {
234+ return fmt .Errorf ("maxBrightness must be between 0 and 100" )
235+ }
236+
237+ if blConfig .DimAfter < 0 {
238+ return fmt .Errorf ("dimAfter must be a positive integer" )
239+ }
240+
241+ if blConfig .OffAfter < 0 {
242+ return fmt .Errorf ("offAfter must be a positive integer" )
243+ }
244+
245+ config .DisplayMaxBrightness = blConfig .MaxBrightness
246+ config .DisplayDimAfterMs = int64 (blConfig .DimAfter )
247+ config .DisplayOffAfterMs = int64 (blConfig .OffAfter )
248+
249+ if err := SaveConfig (); err != nil {
250+ return fmt .Errorf ("failed to save config: %w" , err )
251+ }
252+ return nil
253+ }
254+
255+ func rpcGetBacklightSettings () (* BacklightSettings , error ) {
256+ LoadConfig ()
257+
258+ return & BacklightSettings {
259+ MaxBrightness : config .DisplayMaxBrightness ,
260+ DimAfter : int (config .DisplayDimAfterMs ),
261+ OffAfter : int (config .DisplayOffAfterMs ),
262+ }, nil
263+ }
264+
222265const (
223266 devModeFile = "/userdata/jetkvm/devmode.enable"
224267 sshKeyDir = "/userdata/dropbear/.ssh"
@@ -554,4 +597,6 @@ var rpcHandlers = map[string]RPCHandler{
554597 "getWakeOnLanDevices" : {Func : rpcGetWakeOnLanDevices },
555598 "setWakeOnLanDevices" : {Func : rpcSetWakeOnLanDevices , Params : []string {"params" }},
556599 "resetConfig" : {Func : rpcResetConfig },
600+ "setBacklightSettings" : {Func : rpcSetBacklightSettings , Params : []string {"settings" }},
601+ "getBacklightSettings" : {Func : rpcGetBacklightSettings },
557602}
0 commit comments