summaryrefslogtreecommitdiff
path: root/shared-module
diff options
context:
space:
mode:
authorgamblor21 <mark.komus@gmail.com>2020-11-11 09:58:08 -0600
committergamblor21 <mark.komus@gmail.com>2020-11-11 09:58:08 -0600
commit03b110b44c8e8fed1feb43b7c14b03bbfddf4f2c (patch)
tree3149a33fc9f022364293d6385b1bc2f87d1a90cf /shared-module
parent4c93db35959e96889b3a28af792c837fbe1fdca5 (diff)
Add abort check in I2C lock
Diffstat (limited to 'shared-module')
-rw-r--r--shared-module/adafruit_bus_device/I2CDevice.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/shared-module/adafruit_bus_device/I2CDevice.c b/shared-module/adafruit_bus_device/I2CDevice.c
index d790ff53a..ee4b4fa55 100644
--- a/shared-module/adafruit_bus_device/I2CDevice.c
+++ b/shared-module/adafruit_bus_device/I2CDevice.c
@@ -29,6 +29,7 @@
#include "py/mperrno.h"
#include "py/nlr.h"
#include "py/runtime.h"
+#include "lib/utils/interrupt_char.h"
void common_hal_adafruit_bus_device_i2cdevice_construct(adafruit_bus_device_i2cdevice_obj_t *self, busio_i2c_obj_t *i2c, uint8_t device_address) {
self->i2c = i2c;
@@ -36,11 +37,15 @@ void common_hal_adafruit_bus_device_i2cdevice_construct(adafruit_bus_device_i2cd
}
void common_hal_adafruit_bus_device_i2cdevice_lock(adafruit_bus_device_i2cdevice_obj_t *self) {
- bool success = false;
+ bool success = common_hal_busio_i2c_try_lock(self->i2c);
+
while (!success) {
+ RUN_BACKGROUND_TASKS;
+ if (mp_hal_is_interrupted()) {
+ break;
+ }
+
success = common_hal_busio_i2c_try_lock(self->i2c);
- //RUN_BACKGROUND_TASKS;
- //mp_handle_pending();
}
}