Skip to content

Commit c3d27dd

Browse files
author
DozenCrows
committed
I2C button matrix now fails gracefully on error
1 parent e1a7c17 commit c3d27dd

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

I2C.py

+16-10
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,26 @@
2828
def init():
2929
global bus;
3030
bus = smbus.SMBus(I2C_BUS)
31-
32-
bus.write_byte_data(I2C_ADDR, MCP23017_IODIRA, GPIOA_SETUP_MASK)
33-
bus.write_byte_data(I2C_ADDR, MCP23017_GPPUA, GPIOA_SETUP_MASK)
34-
bus.write_byte_data(I2C_ADDR, MCP23017_IPOLA, GPIOA_SETUP_MASK)
31+
32+
try:
33+
bus.write_byte_data(I2C_ADDR, MCP23017_IODIRA, GPIOA_SETUP_MASK)
34+
bus.write_byte_data(I2C_ADDR, MCP23017_GPPUA, GPIOA_SETUP_MASK)
35+
bus.write_byte_data(I2C_ADDR, MCP23017_IPOLA, GPIOA_SETUP_MASK)
36+
except IOError:
37+
pass
3538

3639
def poll_keys():
37-
bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL1)
38-
column_data = bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f
40+
try:
41+
bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL1)
42+
column_data = bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f
3943

40-
bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL2)
41-
column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 4
44+
bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL2)
45+
column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 4
4246

43-
bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL3)
44-
column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 8
47+
bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL3)
48+
column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 8
49+
except IOError:
50+
column_data = 0
4551

4652
return column_data
4753

0 commit comments

Comments
 (0)