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 }