projects
/
saartuer.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
oops, Waker needs locking
[saartuer.git]
/
pins.py
diff --git
a/pins.py
b/pins.py
index 8b699be529ef3db077af6f51da04856c8a0932c8..88a17c294428b04a4ce528a00df31bda21391833 100644
(file)
--- a/
pins.py
+++ b/
pins.py
@@
-20,7
+20,7
@@
class PinWatcher():
def read(self):
curstate = GPIO.input(self.pin)
assert curstate in (0, 1)
def read(self):
curstate = GPIO.input(self.pin)
assert curstate in (0, 1)
- if curstate != self.
_
state:
+ if curstate != self.state:
# the state is about to change
if curstate == self._newstate:
# we already saw this new state
# the state is about to change
if curstate == self._newstate:
# we already saw this new state
@@
-41,31
+41,32
@@
class PinWatcher():
class PinsWatcher():
def __init__(self, state_machine):
class PinsWatcher():
def __init__(self, state_machine):
- self.pins = {
+ self.
_
pins = {
'bell_ringing': PinWatcher(18, 2),
'bell_ringing': PinWatcher(18, 2),
- 'door_closed': PinWatcher(8,
5
),
- 'door_locked': PinWatcher(
9, 5
),
- 'space_active': PinWatcher(
10, 5
),
+ 'door_closed': PinWatcher(8,
4
),
+ 'door_locked': PinWatcher(
10, 4
),
+ 'space_active': PinWatcher(
24, 4
),
}
self._sm = state_machine
# start a thread doing the work
}
self._sm = state_machine
# start a thread doing the work
- self._t = ThreadRepeater(self._read, 0.02)
-
- def _read():
+ self._t = ThreadRepeater(self._read, 0.02
, name="PinsWatcher"
)
+
+ def _read(
self
):
saw_change = False
saw_change = False
- for name in self.pins.keys():
- pin = pins[name]
+ for name in self.
_
pins.keys():
+ pin =
self._
pins[name]
if pin.read():
saw_change = True
if pin.read():
saw_change = True
- logger.debug("Pin %s changed to %d" % (name, pin.state)
- if not saw_change: return
+ logger.debug("Pin %s changed to %d" % (name, pin.state))
+ if not saw_change:
+ return None
# create return object
pinsState = PinsState()
# create return object
pinsState = PinsState()
- for name in self.pins.keys():
- setattr(pinsState, name, self.pins[name].state)
+ for name in self.
_
pins.keys():
+ setattr(pinsState, name, self.
_
pins[name].state)
# send it to state machine
self._sm.callback(StateMachine.CMD_PINS, pinsState)
# send it to state machine
self._sm.callback(StateMachine.CMD_PINS, pinsState)
- def stop():
+ def stop(
self
):
self._t.stop()
self._t.stop()