1# test I2C errors, with polling (disabled irqs) and DMA
2
3import pyb
4from pyb import I2C
5
6if not hasattr(pyb, "Accel"):
7    print("SKIP")
8    raise SystemExit
9
10# init accelerometer
11pyb.Accel()
12
13# get I2C bus
14i2c = I2C(1, I2C.MASTER, dma=True)
15
16# test polling mem_read
17pyb.disable_irq()
18i2c.mem_read(1, 76, 0x0A)  # should succeed
19pyb.enable_irq()
20try:
21    pyb.disable_irq()
22    i2c.mem_read(1, 77, 0x0A)  # should fail
23except OSError as e:
24    pyb.enable_irq()
25    print(repr(e))
26i2c.mem_read(1, 76, 0x0A)  # should succeed
27
28# test polling mem_write
29pyb.disable_irq()
30i2c.mem_write(1, 76, 0x0A)  # should succeed
31pyb.enable_irq()
32try:
33    pyb.disable_irq()
34    i2c.mem_write(1, 77, 0x0A)  # should fail
35except OSError as e:
36    pyb.enable_irq()
37    print(repr(e))
38i2c.mem_write(1, 76, 0x0A)  # should succeed
39
40# test DMA mem_read
41i2c.mem_read(1, 76, 0x0A)  # should succeed
42try:
43    i2c.mem_read(1, 77, 0x0A)  # should fail
44except OSError as e:
45    print(repr(e))
46i2c.mem_read(1, 76, 0x0A)  # should succeed
47
48# test DMA mem_write
49i2c.mem_write(1, 76, 0x0A)  # should succeed
50try:
51    i2c.mem_write(1, 77, 0x0A)  # should fail
52except OSError as e:
53    print(repr(e))
54i2c.mem_write(1, 76, 0x0A)  # should succeed
55