Delaying and repeating i2c operation automatically when i2c interface is busy removed. User has to deal with concurrency using semaphores.

This commit is contained in:
Gunar Schorcht 2017-11-04 14:23:24 +01:00
parent 5f58090924
commit 6eb6ac34cf

View file

@ -488,11 +488,7 @@ static bool ccs811_reg_read(ccs811_sensor_t* dev, uint8_t reg, uint8_t *data, ui
debug_dev ("Read %d byte from i2c slave starting at reg addr %02x.", __FUNCTION__, dev, len, reg); debug_dev ("Read %d byte from i2c slave starting at reg addr %02x.", __FUNCTION__, dev, len, reg);
int result = 0; int result = i2c_slave_read(dev->bus, dev->addr, &reg, data, len);
int count = 10;
while (count-- && (result = i2c_slave_read(dev->bus, dev->addr, &reg, data, len)) == -EBUSY)
vTaskDelay (1);
if (result) if (result)
{ {
@ -531,11 +527,7 @@ static bool ccs811_reg_write(ccs811_sensor_t* dev, uint8_t reg, uint8_t *data, u
# endif # endif
int result; int result = i2c_slave_write(dev->bus, dev->addr, &reg, data, len);
int count = 10;
while (count-- && (result = i2c_slave_write(dev->bus, dev->addr, &reg, data, len)) == -EBUSY)
vTaskDelay (1);
if (result) if (result)
{ {