Skip to content

Commit ef5f266

Browse files
committed
tests: For pyboard, add test for I2C error handling and recovery.
1 parent db57308 commit ef5f266

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

tests/pyb/i2c_error.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# test I2C errors, with polling (disabled irqs) and DMA
2+
3+
import pyb
4+
from pyb import I2C
5+
6+
# init accelerometer
7+
pyb.Accel()
8+
9+
# get I2C bus
10+
i2c = I2C(1, I2C.MASTER)
11+
12+
# test polling mem_read
13+
pyb.disable_irq()
14+
i2c.mem_read(1, 76, 0x0a) # should succeed
15+
pyb.enable_irq()
16+
try:
17+
pyb.disable_irq()
18+
i2c.mem_read(1, 77, 0x0a) # should fail
19+
except OSError as e:
20+
pyb.enable_irq()
21+
print(repr(e))
22+
i2c.mem_read(1, 76, 0x0a) # should succeed
23+
24+
# test polling mem_write
25+
pyb.disable_irq()
26+
i2c.mem_write(1, 76, 0x0a) # should succeed
27+
pyb.enable_irq()
28+
try:
29+
pyb.disable_irq()
30+
i2c.mem_write(1, 77, 0x0a) # should fail
31+
except OSError as e:
32+
pyb.enable_irq()
33+
print(repr(e))
34+
i2c.mem_write(1, 76, 0x0a) # should succeed
35+
36+
# test DMA mem_read
37+
i2c.mem_read(1, 76, 0x0a) # should succeed
38+
try:
39+
i2c.mem_read(1, 77, 0x0a) # should fail
40+
except OSError as e:
41+
print(repr(e))
42+
i2c.mem_read(1, 76, 0x0a) # should succeed
43+
44+
# test DMA mem_write
45+
i2c.mem_write(1, 76, 0x0a) # should succeed
46+
try:
47+
i2c.mem_write(1, 77, 0x0a) # should fail
48+
except OSError as e:
49+
print(repr(e))
50+
i2c.mem_write(1, 76, 0x0a) # should succeed

tests/pyb/i2c_error.py.exp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
OSError(5,)
2+
OSError(5,)
3+
OSError(5,)
4+
OSError(5,)

0 commit comments

Comments
 (0)