aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-09-08 01:02:07 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-09-08 01:02:07 +0200
commitce079660d29e274804b8affd70acb4efe7ae4958 (patch)
treeaa0e2645cbb25c7e09147adc672618f96caf6534
parent8d00ca8b0278b11915771a09ab7636028e9ab226 (diff)
Rename Button to Event
-rw-r--r--button_string.go16
-rw-r--r--cmd/runcmd/main.go8
-rw-r--r--event_string.go27
-rw-r--r--redbutton.go22
4 files changed, 42 insertions, 31 deletions
diff --git a/button_string.go b/button_string.go
deleted file mode 100644
index 50d3b2e..0000000
--- a/button_string.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Code generated by "stringer -type=Button"; DO NOT EDIT
-
-package redbutton
-
-import "fmt"
-
-const _Button_name = "UnknownClosedPressedArmed"
-
-var _Button_index = [...]uint8{0, 7, 13, 20, 25}
-
-func (i Button) String() string {
- if i < 0 || i >= Button(len(_Button_index)-1) {
- return fmt.Sprintf("Button(%d)", i)
- }
- return _Button_name[_Button_index[i]:_Button_index[i+1]]
-}
diff --git a/cmd/runcmd/main.go b/cmd/runcmd/main.go
index 7832742..aaaa36c 100644
--- a/cmd/runcmd/main.go
+++ b/cmd/runcmd/main.go
@@ -8,9 +8,9 @@ import (
"dim13.org/redbutton"
)
-type StateFn func(redbutton.Button) StateFn
+type StateFn func(redbutton.Event) StateFn
-func Init(b redbutton.Button) StateFn {
+func Init(b redbutton.Event) StateFn {
if b == redbutton.Armed {
log.Println("Ready...")
return Armed
@@ -18,7 +18,7 @@ func Init(b redbutton.Button) StateFn {
return Init
}
-func Armed(b redbutton.Button) StateFn {
+func Armed(b redbutton.Event) StateFn {
if b == redbutton.Pressed {
log.Println("Go!")
go Exec(os.Args[1:])
@@ -27,7 +27,7 @@ func Armed(b redbutton.Button) StateFn {
return Init
}
-func Reset(b redbutton.Button) StateFn {
+func Reset(b redbutton.Event) StateFn {
if b == redbutton.Closed {
return Init
}
diff --git a/event_string.go b/event_string.go
new file mode 100644
index 0000000..fc9466e
--- /dev/null
+++ b/event_string.go
@@ -0,0 +1,27 @@
+// Code generated by "stringer -type=Event"; DO NOT EDIT.
+
+package redbutton
+
+import "fmt"
+
+const (
+ _Event_name_0 = "Unknown"
+ _Event_name_1 = "LidClosedButtonPressedLidOpen"
+)
+
+var (
+ _Event_index_0 = [...]uint8{0, 7}
+ _Event_index_1 = [...]uint8{0, 9, 22, 29}
+)
+
+func (i Event) String() string {
+ switch {
+ case i == 0:
+ return _Event_name_0
+ case 21 <= i && i <= 23:
+ i -= 21
+ return _Event_name_1[_Event_index_1[i]:_Event_index_1[i+1]]
+ default:
+ return fmt.Sprintf("Event(%d)", i)
+ }
+}
diff --git a/redbutton.go b/redbutton.go
index 0b8980e..d31864e 100644
--- a/redbutton.go
+++ b/redbutton.go
@@ -1,7 +1,5 @@
package redbutton
-//go:generate stringer -type=Button
-
import (
"errors"
"time"
@@ -15,16 +13,18 @@ const (
PollInterval = 200 * time.Millisecond
)
-type Button int
+//go:generate stringer -type=Event
+
+type Event int
const (
- Unknown Button = iota
- Closed
- Pressed
- Armed
+ Unknown Event = 0x00
+ LidClosed Event = 0x15
+ ButtonPressed Event = 0x16
+ LidOpen Event = 0x17
)
-func State(dev *hid.Device) (Button, error) {
+func State(dev *hid.Device) (Event, error) {
buf := []byte{0, 0, 0, 0, 0, 0, 0, 0, 2}
if _, err := dev.Write(buf); err != nil {
@@ -35,14 +35,14 @@ func State(dev *hid.Device) (Button, error) {
return Unknown, err
}
- return Button(buf[0] & 0x03), nil
+ return Event(buf[0]), nil
}
-func Poll(dev *hid.Device, d time.Duration) <-chan Button {
+func Poll(dev *hid.Device, d time.Duration) <-chan Event {
if d == 0 {
d = PollInterval
}
- ch := make(chan Button)
+ ch := make(chan Event)
go func() {
prev := Unknown
tick := time.NewTicker(d)