projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Automatically decrement transfer size.
[bertos.git]
/
bertos
/
drv
/
i2c.h
diff --git
a/bertos/drv/i2c.h
b/bertos/drv/i2c.h
index eea0073a1dd016859485fbbea077a4c0f6eb710c..f527f359d19d375998633260ba90453e65ea600a 100644
(file)
--- a/
bertos/drv/i2c.h
+++ b/
bertos/drv/i2c.h
@@
-214,12
+214,16
@@
INLINE uint8_t i2c_get(I2c *i2c)
ASSERT(i2c->vt);
ASSERT(i2c->vt->get);
ASSERT(i2c->vt);
ASSERT(i2c->vt->get);
- ASSERT(i2c->xfer_size
>= 1
);
+ ASSERT(i2c->xfer_size);
ASSERT(I2C_TEST_START(i2c->flags) == I2C_START_R);
if (!i2c->errors)
ASSERT(I2C_TEST_START(i2c->flags) == I2C_START_R);
if (!i2c->errors)
- return i2c->vt->get(i2c);
+ {
+ uint8_t data = i2c->vt->get(i2c);
+ i2c->xfer_size--;
+ return data;
+ }
else
return 0xFF;
}
else
return 0xFF;
}
@@
-230,12
+234,15
@@
INLINE void i2c_put(I2c *i2c, uint8_t data)
ASSERT(i2c->vt);
ASSERT(i2c->vt->put);
ASSERT(i2c->vt);
ASSERT(i2c->vt->put);
- ASSERT(i2c->xfer_size
>= 1
);
+ ASSERT(i2c->xfer_size);
ASSERT(I2C_TEST_START(i2c->flags) == I2C_START_W);
if (!i2c->errors)
ASSERT(I2C_TEST_START(i2c->flags) == I2C_START_W);
if (!i2c->errors)
+ {
i2c->vt->put(i2c, data);
i2c->vt->put(i2c, data);
+ i2c->xfer_size--;
+ }
}
INLINE void i2c_send(I2c *i2c, const void *_buf, size_t count)
}
INLINE void i2c_send(I2c *i2c, const void *_buf, size_t count)