Skip to content

Commit 53a07ca

Browse files
committed
manual ACK write fixes
1 parent 2bd59fb commit 53a07ca

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/i2c.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,7 @@ impl<I2C: Instance, A, R> I2cTarget<I2C, A, R> {
11411141
for (i, data) in bytes.iter().chain(iter::repeat(&0)).enumerate() {
11421142
match self.write_byte(*data) {
11431143
Ok(()) => {}
1144-
Err(Error::NotAcknowledge) => return Ok(i),
1144+
Err(Error::NotAcknowledge) => return Ok(core::cmp::min(i, bytes.len())),
11451145
Err(error) => return Err(error),
11461146
}
11471147
}
@@ -1283,7 +1283,7 @@ impl<I2C: Instance, R> TargetAckMode for I2cTarget<I2C, ManualAck, R> {
12831283
} else {
12841284
self.restart_transfer(buf.len())
12851285
}
1286-
let count = if buf.len() < (u8::MAX as usize) {
1286+
let count = if bytes_written + buf.len() == bytes.len() {
12871287
// This is the last chunk so write out zeroes if we reach the end of the buffer
12881288
self.write_buf_fill_zeroes(buf)?
12891289
} else {

0 commit comments

Comments
 (0)