forked from ponty/pysimavr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ledrow.py
26 lines (19 loc) · 757 Bytes
/
ledrow.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from pysimavr.proxy import Proxy
from pysimavr.swig.ledrow import ledrow_t, ledrow_core_init
from pysimavr.swig.simavr import get_irq_at
class LedRow(Proxy):
_reserved = 'getirq pinstate reset_dirty'.split()
def __init__(self, avr, size=8):
self.backend = ledrow_t()
ledrow_core_init(avr.backend, self.backend, size)
def _getirq(self, index):
return get_irq_at(self.backend.irq, index)
def getirq(self, pin):
return self._getirq(int(pin))
def pinstate(self, i):
return bool(self.backend.pinstate & (1 << i))
def reset_dirty(self, i):
'read and reset'
x = bool(self.backend.pinstate_changed & (1 << i))
self.backend.pinstate_changed &= ~(1 << i)
return x