@@ -181,39 +181,20 @@ uint8_t TwoWire::endTransmission(void)
181181// or after beginTransmission(address)
182182size_t TwoWire::write (uint8_t data)
183183{
184- /* If master transmitter */
185- if (transmitting){
186-
187- /* Check if buffer is full */
188- if (txBufferLength >= BUFFER_LENGTH){
189- setWriteError ();
190- return 0 ;
191- }
192-
193- /* Put byte in txBuffer */
194- txBuffer[txBufferIndex] = data;
195- txBufferIndex++;
196-
197- /* Update buffer length */
198- txBufferLength = txBufferIndex;
199-
184+ /* Check if buffer is full */
185+ if (txBufferLength >= BUFFER_LENGTH){
186+ setWriteError ();
187+ return 0 ;
200188 }
201-
202- /* If slave transmitter */
203- else {
204-
205- /* Check if buffer full */
206- if (slave_bytesToWrite >= TWI_BUFFER_SIZE){
207- setWriteError ();
208- return 0 ;
209- }
210189
211- slave_writeData[slave_bytesToWrite] = data;
212- slave_bytesToWrite++;
190+ /* Put byte in txBuffer */
191+ txBuffer[txBufferIndex] = data;
192+ txBufferIndex++;
213193
214- }
194+ /* Update buffer length */
195+ txBufferLength = txBufferIndex;
215196
216- return 1 ;
197+ return 1 ;
217198}
218199
219200// must be called in:
@@ -324,10 +305,14 @@ void TwoWire::onRequestService(void)
324305 }
325306
326307 // reset slave write buffer iterator var
327- slave_bytesToWrite = 0 ;
308+ txBufferIndex = 0 ;
309+ txBufferLength = 0 ;
328310
329311 // alert user program
330312 user_onRequest ();
313+
314+ slave_bytesToWrite = txBufferLength;
315+ slave_writeData = txBuffer;
331316}
332317
333318// sets function called on slave write
0 commit comments