From ef5f2669dcff068a0b7ed9cdb94acecc060440f6 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 30 Jan 2016 00:06:04 +0000 Subject: [PATCH] tests: For pyboard, add test for I2C error handling and recovery. --- tests/pyb/i2c_error.py | 50 ++++++++++++++++++++++++++++++++++++++ tests/pyb/i2c_error.py.exp | 4 +++ 2 files changed, 54 insertions(+) create mode 100644 tests/pyb/i2c_error.py create mode 100644 tests/pyb/i2c_error.py.exp diff --git a/tests/pyb/i2c_error.py b/tests/pyb/i2c_error.py new file mode 100644 index 0000000000..d6c0debe29 --- /dev/null +++ b/tests/pyb/i2c_error.py @@ -0,0 +1,50 @@ +# test I2C errors, with polling (disabled irqs) and DMA + +import pyb +from pyb import I2C + +# init accelerometer +pyb.Accel() + +# get I2C bus +i2c = I2C(1, I2C.MASTER) + +# test polling mem_read +pyb.disable_irq() +i2c.mem_read(1, 76, 0x0a) # should succeed +pyb.enable_irq() +try: + pyb.disable_irq() + i2c.mem_read(1, 77, 0x0a) # should fail +except OSError as e: + pyb.enable_irq() + print(repr(e)) +i2c.mem_read(1, 76, 0x0a) # should succeed + +# test polling mem_write +pyb.disable_irq() +i2c.mem_write(1, 76, 0x0a) # should succeed +pyb.enable_irq() +try: + pyb.disable_irq() + i2c.mem_write(1, 77, 0x0a) # should fail +except OSError as e: + pyb.enable_irq() + print(repr(e)) +i2c.mem_write(1, 76, 0x0a) # should succeed + +# test DMA mem_read +i2c.mem_read(1, 76, 0x0a) # should succeed +try: + i2c.mem_read(1, 77, 0x0a) # should fail +except OSError as e: + print(repr(e)) +i2c.mem_read(1, 76, 0x0a) # should succeed + +# test DMA mem_write +i2c.mem_write(1, 76, 0x0a) # should succeed +try: + i2c.mem_write(1, 77, 0x0a) # should fail +except OSError as e: + print(repr(e)) +i2c.mem_write(1, 76, 0x0a) # should succeed diff --git a/tests/pyb/i2c_error.py.exp b/tests/pyb/i2c_error.py.exp new file mode 100644 index 0000000000..bd403f7f47 --- /dev/null +++ b/tests/pyb/i2c_error.py.exp @@ -0,0 +1,4 @@ +OSError(5,) +OSError(5,) +OSError(5,) +OSError(5,)