File tree Expand file tree Collapse file tree 1 file changed +16
-16
lines changed Expand file tree Collapse file tree 1 file changed +16
-16
lines changed Original file line number Diff line number Diff line change @@ -219,13 +219,26 @@ void TwoWire::onService(void)
219219{
220220 if ( sercom->isSlaveWIRE () )
221221 {
222- if (sercom->isAddressMatch ()) // Address Match
222+ if (sercom->isStopDetectedWIRE () ||
223+ (sercom->isAddressMatch () && sercom->isRestartDetectedWIRE ())) // Stop or Restart detected
223224 {
224225 sercom->prepareAckBitWIRE ();
225226 sercom->prepareCommandBitsWire (0x03 );
226227
227- // Is a request ?
228- if (sercom->isMasterReadOperationWIRE ())
228+ // Calling onReceiveCallback, if exists
229+ if (onReceiveCallback)
230+ {
231+ onReceiveCallback (available ());
232+ }
233+
234+ rxBuffer.clear ();
235+ }
236+ else if (sercom->isAddressMatch ()) // Address Match
237+ {
238+ sercom->prepareAckBitWIRE ();
239+ sercom->prepareCommandBitsWire (0x03 );
240+
241+ if (sercom->isMasterReadOperationWIRE ()) // Is a request ?
229242 {
230243 // Calling onRequestCallback, if exists
231244 if (onRequestCallback)
@@ -247,19 +260,6 @@ void TwoWire::onService(void)
247260
248261 sercom->prepareCommandBitsWire (0x03 );
249262 }
250- else if (sercom->isStopDetectedWIRE () || sercom->isRestartDetectedWIRE ()) // Stop or Restart detected
251- {
252- sercom->prepareAckBitWIRE ();
253- sercom->prepareCommandBitsWire (0x03 );
254-
255- // Calling onReceiveCallback, if exists
256- if (onReceiveCallback)
257- {
258- onReceiveCallback (available ());
259- }
260-
261- rxBuffer.clear ();
262- }
263263 }
264264}
265265
You can’t perform that action at this time.
0 commit comments