Skip to content

Commit

Permalink
use inofity
Browse files Browse the repository at this point in the history
  • Loading branch information
nzlov committed Mar 3, 2021
1 parent c3499b8 commit 0c01880
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 13 deletions.
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
module github.com/nzlov/afps

go 1.16

require github.com/fsnotify/fsnotify v1.4.9 // indirect
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9 h1:L2auWcuQIvxz9xSEqzESnV/QN/gNRXNApHi3fYwl2w0=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
111 changes: 100 additions & 11 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,27 @@ import (
"strings"
"sync"
"time"

"github.com/fsnotify/fsnotify"
)

var (
TOUCHING = int64(0)
FPS = "60"
LOCK *sync.Mutex
SLOCK *sync.Mutex
FLOCK *sync.Mutex
M map[string]PF
CFGTIME = int64(0)
ACTIVITY = "*"
CPF PF
w *W
c *exec.Cmd
t *time.Ticker
Running bool
)

const (
LEDPATH = "/sys/class/leds/lcd-backlight/brightness"
CFGPATH = "/sdcard/afps_nzlov.conf"
)

Expand Down Expand Up @@ -85,28 +93,108 @@ func loadConfig() error {
}

func main() {

loadConfig()
changeActivity("*")

LOCK = &sync.Mutex{}
c := exec.Command("getevent")
c.Stderr = &W{}
c.Stdout = &W{}
start()
log(c.Run())
watcher, err := fsnotify.NewWatcher()
if err != nil {
log(err)
}
defer watcher.Close()

go func() {
defer func() {
log("watcher exit")
}()
for {
log("watcher for")
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
log("event:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
switch event.Name {
case CFGPATH:
loadConfig()
case LEDPATH:
data, _ := os.ReadFile(LEDPATH)
log("rled:", string(data[0]))
if "0" == string(data[0]) {
stop()
} else {
start()
}
}
}
case err, ok := <-watcher.Errors:
if !ok {
return
}
log("error:", err)
}
}
}()

err = watcher.Add(LEDPATH)
if err != nil {
log(err)
}
err = watcher.Add(CFGPATH)
if err != nil {
log(err)
}

SLOCK = &sync.Mutex{}
FLOCK = &sync.Mutex{}
w = &W{}

select {}
}

func start() {
SLOCK.Lock()
defer SLOCK.Unlock()
if Running {
return
}
Running = true

log("start")
t = time.NewTicker(time.Second)
go func() {
t := time.NewTicker(time.Second)
for n := range t.C {
loadConfig()
changeActivity(getActivity())
if n.Unix()-TOUCHING > 1 {
upfps(CPF.idle)
}
}
}()
c = exec.Command("getevent")
c.Stderr = w
c.Stdout = w
c.Start()
}

func stop() {
SLOCK.Lock()
defer SLOCK.Unlock()

if !Running {
return
}
Running = false

log("stop")
if t != nil {
t.Stop()
}
if c != nil {
c.Process.Kill()
}
upfps(CPF.idle)
}

type PF struct {
Expand All @@ -119,13 +207,14 @@ type W struct {

func (w *W) Write(p []byte) (n int, err error) {
TOUCHING = time.Now().Unix()
log(string(p))
upfps(CPF.touching)
return len(p), nil
}

func upfps(i string) {
LOCK.Lock()
defer LOCK.Unlock()
FLOCK.Lock()
defer FLOCK.Unlock()
if FPS == i {
return
}
Expand Down
3 changes: 1 addition & 2 deletions nolog.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@

package main

func log(s ...interface{}) {
}
func log(s ...interface{}) {}

0 comments on commit 0c01880

Please sign in to comment.