first version
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user