self.__values = self.__pi.i2c_read_byte(self.__handle)
def _onInterrupt(_value: bool):
- oldValues = self.__values
- self.__values = self.__pi.i2c_read_byte(self.__handle)
-
- emitDiff(self._emit, oldValues, self.__values)
- self.__interrupt.on('change', _onInterrupt)
+ self._fetchValues()
+ self.__int_handle = self.__interrupt.on('change', _onInterrupt)
self.__pins = tuple(PCF8574InputPin(self, i) for i in range(0, 8))
+ def _fetchValues(self) -> None:
+ oldValues = self.__values
+ self.__values = self.__pi.i2c_read_byte(self.__handle)
+ emitDiff(self._emit, oldValues, self.__values)
+
def close(self) -> None:
+ self.__interrupt.off(self.__int_handle)
try:
self.__pi.i2c_close(self.__handle)
except AttributeError:
return not bool(self.__values & (1 << pin))
def getValues(self) -> int:
- self.__values = self.__pi.i2c_read_byte(self.__handle)
- return self.__values
+ return ~self.__values
class PCF8574Output(graphit.event.EventEmitterMixin):
return not bool(self.__values & (1 << pin))
+ def getValues(self) -> int:
+ return ~self.__values
+
def setValue(self, pin: int, value: bool) -> None:
assert isinstance(pin, int), 'pin must be an integer'
assert pin >= 0 and pin <= 7, 'pin must be >= 0 and <= 7'