From 7392f8514de9d68659c744fb956c089f7b3932ef Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Thu, 16 Sep 2010 01:22:36 +0000 Subject: [PATCH] Fix to drop packets in Wire library (issue #335). --- libraries/Wire/utility/twi.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libraries/Wire/utility/twi.c b/libraries/Wire/utility/twi.c index 694e68a8f..236878c4a 100644 --- a/libraries/Wire/utility/twi.c +++ b/libraries/Wire/utility/twi.c @@ -413,12 +413,14 @@ SIGNAL(TWI_vect) if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ twi_rxBuffer[twi_rxBufferIndex] = '\0'; } + // sends ack and stops interface for clock stretching + twi_stop(); // callback to user defined callback twi_onSlaveReceive(twi_rxBuffer, twi_rxBufferIndex); - // ack future responses - twi_reply(1); - // leave slave receiver state - twi_state = TWI_READY; + // since we submit rx buffer to "wire" library, we can reset it + twi_rxBufferIndex = 0; + // ack future responses and leave slave receiver state + twi_releaseBus(); break; case TW_SR_DATA_NACK: // data received, returned nack case TW_SR_GCALL_DATA_NACK: // data received generally, returned nack