annotate service/laundry/laundry.go @ 901:c06fdb61157f

more laundry web support Ignore-this: c7313465fbd93fa902b909f9128c2ad darcs-hash:20130831173350-312f9-49b5bd4b435f9fa9523a637ce1555ef511de9b33
author drewp <drewp@bigasterisk.com>
date Sat, 31 Aug 2013 10:33:50 -0700
parents 2d718e542198
children d620e60bd397
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 package main
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3 import (
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 "io/ioutil"
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 "log"
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 "net/http"
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 "strconv"
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
8 "time"
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 "encoding/json"
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10 "github.com/bmizerany/pat"
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 "github.com/mrmorphic/hwio"
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 )
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 /*
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 hwio.DebugPinMap() wrote this:
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 Pin 1: 3.3V, cap:
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 Pin 2: 5V, cap:
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 Pin 3: SDA,GPIO0 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 Pin 5: SCL,GPIO1 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 Pin 6: GROUND, cap:
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 Pin 7: GPIO4 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 Pin 8: TXD,GPIO14 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 Pin 10: RXD,GPIO15 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 Pin 11: GPIO17 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 Pin 12: GPIO18 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 Pin 13: GPIO21 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 Pin 15: GPIO22 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 Pin 16: GPIO23 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 Pin 18: GPIO24 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31 Pin 19: MOSI,GPIO10 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 Pin 21: MISO,GPIO9 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 Pin 22: GPIO25 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 Pin 23: SCLK,GPIO11 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 Pin 24: CE0N,GPIO8 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36 Pin 26: CE1N,GPIO7 cap:output,input,input_pullup,input_pulldown
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37 */
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 type Pins struct {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40 InMotion, InSwitch3, InSwitch1, InSwitch2, OutLed, OutSpeaker, InDoorClosed, OutStrike hwio.Pin
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41 LastOutLed, LastOutStrike int
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44 // hwio.GetPin with a panic instead of an error return
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45 func GetPin(id string) hwio.Pin {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
46 p, e := hwio.GetPin(id)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
47 if e != nil {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
48 panic(e)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
49 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
50 return p
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
51 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
52
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53 func DigitalRead(p hwio.Pin) int {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54 v, err := hwio.DigitalRead(p)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55 if err != nil {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56 panic(err)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
58 return v
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
59 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
60
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 func SetupIo() Pins {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62 pins := Pins{
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63 InMotion: GetPin("GPIO0"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64 InSwitch3: GetPin("GPIO1"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65 InSwitch1: GetPin("GPIO4"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66 InSwitch2: GetPin("GPIO17"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67 OutLed: GetPin("GPIO21"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68 OutSpeaker: GetPin("GPIO22"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 InDoorClosed: GetPin("GPIO10"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70 OutStrike: GetPin("GPIO9"),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
72
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
73 if err := hwio.PinMode(pins.InMotion, hwio.INPUT_PULLUP); err != nil { panic(err) }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
74 if err := hwio.PinMode(pins.InSwitch1, hwio.INPUT_PULLUP); err != nil { panic(err) }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
75 if err := hwio.PinMode(pins.InSwitch2, hwio.INPUT_PULLUP); err != nil { panic(err) }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
76 if err := hwio.PinMode(pins.InSwitch3, hwio.INPUT_PULLUP); err != nil { panic(err) }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
77 if err := hwio.PinMode(pins.InDoorClosed, hwio.INPUT_PULLUP); err != nil { panic(err) }
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
78 if err := hwio.PinMode(pins.OutLed, hwio.OUTPUT); err != nil { panic(err) }
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
79 if err := hwio.PinMode(pins.OutSpeaker, hwio.OUTPUT); err != nil { panic(err) }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
80 if err := hwio.PinMode(pins.OutStrike, hwio.OUTPUT); err != nil { panic(err) }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
81 return pins
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
82 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
83
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
84
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
85 func booleanBody(w http.ResponseWriter, r *http.Request) (level int, err error) {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
86 body, err := ioutil.ReadAll(r.Body)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
87 if err != nil {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
88 panic(err)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
89 }
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
90 level, err2 := strconv.Atoi(string(body[:]))
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
91 if err2 != nil {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
92 http.Error(w, "body must be '0' or '1'", http.StatusBadRequest)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
93 return 0, err
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
94 }
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
95 return level, nil
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
96 }
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
97
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
98 func main() {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
99 pins := SetupIo()
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
100
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
101 m := pat.New()
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
102
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
103 m.Get("/", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
104 // this one needs to fail if the hardware is broken in
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
105 // any way that we can determine, though I'm not sure
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
106 // what that will mean on rpi
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
107 http.ServeFile(w, r, "index.html")
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
108 }));
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
109
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
110 m.Get("/static/:any", http.FileServer(http.Dir("./")));
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
111
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
112 m.Get("/status", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
113 jsonEncode := json.NewEncoder(w)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
114 jsonEncode.Encode(map[string]int{
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
115 "motion": DigitalRead(pins.InMotion),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
116 "switch1": DigitalRead(pins.InSwitch1),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
117 "switch2": DigitalRead(pins.InSwitch2),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
118 "switch3": DigitalRead(pins.InSwitch3),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
119 "doorClosed": DigitalRead(pins.InDoorClosed),
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
120 "led": pins.LastOutLed,
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
121 "strike": pins.LastOutStrike,
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
122 })
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
123 }));
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
124
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
125 m.Put("/led", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
126 body, err := ioutil.ReadAll(r.Body)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
127 if err != nil {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
128 panic(err)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
129 }
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
130 var level int
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
131 if string(body) == "on" {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
132 level = 1
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
133 } else if string(body) == "off" {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
134 level = 0
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
135 } else {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
136 http.Error(w, "body must be 'on' or 'off'", http.StatusBadRequest)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
137 return
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
138 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
139
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
140 hwio.DigitalWrite(pins.OutLed, level)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
141 pins.LastOutLed = level
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
142 http.Error(w, "", http.StatusAccepted)
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
143 }))
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
144
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
145 setStrike := func (level int) {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
146 hwio.DigitalWrite(pins.OutStrike, level)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
147 pins.LastOutStrike = level
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
148 }
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
149
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
150 m.Put("/strike", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
151 level, err := booleanBody(w, r)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
152 if err != nil {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
153 panic(err)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
154 }
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
155 setStrike(level)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
156 http.Error(w, "", http.StatusAccepted)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
157 }))
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
158
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
159 m.Put("/strike/temporaryUnlock", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
160 err := r.ParseForm()
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
161 if err != nil {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
162 panic(err)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
163 }
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
164 seconds, err2 := strconv.ParseFloat(string(r.Form["seconds"][0]), 32)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
165 if err2 != nil {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
166 http.Error(w, "seconds must be a float", http.StatusBadRequest)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
167 return
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
168 }
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
169
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
170 // This is not correctly reentrant. There should be a
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
171 // stack of temporary effects that unpop correctly,
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
172 // and status should show you any running effects.
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
173 setStrike(1)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
174 go func() {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
175 time.Sleep(time.Duration(seconds * float64(time.Second)))
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
176 setStrike(0)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
177 }()
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
178 http.Error(w, "", http.StatusAccepted)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
179 }))
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
180
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
181 m.Put("/speaker/beep", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
182 // queue a beep
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
183 http.Error(w, "", http.StatusAccepted)
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
184 }))
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
185
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
186 http.Handle("/", m)
901
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
187 log.Printf("Listening on port 8081")
c06fdb61157f more laundry web support
drewp <drewp@bigasterisk.com>
parents: 899
diff changeset
188 err := http.ListenAndServe(":8081", nil)
899
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
189 if err != nil {
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
190 log.Fatal("ListenAndServe: ", err)
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
191 }
2d718e542198 laundry add .go files
drewp <drewp@bigasterisk.com>
parents:
diff changeset
192 }