Skip to content

Commit ddd3588

Browse files
committed
Turned interrupt flag properties into faster bitwise operations.
1 parent df27af0 commit ddd3588

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

adafruit_mcp230xx/mcp23017.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -239,32 +239,32 @@ def io_control(self, val):
239239
self._write_u8(_MCP23017_IOCON, val)
240240

241241
@property
242-
def flagged(self):
242+
def int_flg(self):
243243
"""Returns a list with the pin numbers that caused an interrupt
244244
port A ----> pins 0-7
245245
port B ----> pins 8-15
246246
"""
247-
intf = format(self._read_u16le(_MCP23017_INTFA), '016b')
248-
flagged = [i for i, val in enumerate(reversed(intf)) if val == '1']
249-
return flagged
247+
intf = self._read_u16le(_MCP23017_INTFA)
248+
flg = [i for i in range(16) if (intf & (1 << i))]
249+
return flg
250250

251251
@property
252-
def flaggeda(self):
252+
def int_flga(self):
253253
"""Returns a list of pin numbers that coused an interrupt in port A
254254
pins: 0-7
255255
"""
256-
intfa = format(self._read_u8(_MCP23017_INTFA), '08b')
257-
flaggeda = [i for i, val in enumerate(reversed(intfa)) if val == '1']
258-
return flaggeda
256+
intfa = self._read_u8(_MCP23017_INTFA)
257+
flga = [i for i in range(8) if (intfa & (1 << i))]
258+
return flga
259259

260260
@property
261-
def flaggedb(self):
261+
def int_flgb(self):
262262
"""Returns a list of pin numbers that coused an interrupt in port B
263263
pins: 8-15
264264
"""
265-
intfb = format(self._read_u8(_MCP23017_INTFB), '08b')
266-
flaggeda = [i+8 for i, val in enumerate(reversed(intfb)) if val == '1']
267-
return flaggeda
265+
intfb = self._read_u8(_MCP23017_INTFB)
266+
flgb = [i+8 for i in range(8) if (intfb & (1 << i))]
267+
return flgb
268268

269269
def clear_ints(self):
270270
"""Clears interrupts by reading INTCAP."""

0 commit comments

Comments
 (0)