72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
package backlight
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"git.trj.tw/golang/utils"
|
|
)
|
|
|
|
type Backlight struct {
|
|
Directory string
|
|
}
|
|
|
|
const currentValueFile = "brightness"
|
|
const maxValueFile = "max_brightness"
|
|
|
|
func NewInstance(path string) (*Backlight, error) {
|
|
bl := &Backlight{Directory: path}
|
|
|
|
if !utils.CheckExists(path, true) {
|
|
return nil, fmt.Errorf("backlight class directory check fail")
|
|
}
|
|
|
|
// check brightness and max_brightness file exists
|
|
brightnessFile := filepath.Join(path, currentValueFile)
|
|
maxBrightnessFile := filepath.Join(path, maxValueFile)
|
|
|
|
if !utils.CheckExists(brightnessFile, false) {
|
|
return nil, fmt.Errorf("brightness file check fail")
|
|
}
|
|
if !utils.CheckExists(maxBrightnessFile, false) {
|
|
return nil, fmt.Errorf("max_brightness file check fail")
|
|
}
|
|
|
|
return bl, nil
|
|
}
|
|
|
|
func readBrightnessValue(file string) (val int, err error) {
|
|
cnt, err := os.ReadFile(file)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
val, err = strconv.Atoi(strings.TrimSpace(string(cnt)))
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (b *Backlight) GetCurrent() (val int, err error) {
|
|
return readBrightnessValue(filepath.Join(b.Directory, currentValueFile))
|
|
}
|
|
|
|
func (b *Backlight) GetMax() (val int, err error) {
|
|
return readBrightnessValue(filepath.Join(b.Directory, maxValueFile))
|
|
}
|
|
|
|
func (b *Backlight) SetValue(val int) (err error) {
|
|
brightness := filepath.Join(b.Directory, "brightness")
|
|
|
|
if err := os.WriteFile(brightness, []byte(fmt.Sprintf("%d", val)), 0644); err != nil {
|
|
return err
|
|
}
|
|
|
|
return
|
|
}
|