220 size_t write(
const uint8_t* buffer,
size_t size)
222 uint8_t nextWriteSize;
223 uint16_t bytesWritten = 0;
224 uint32_t startTime = millis();
233 nextWriteSize = (uint8_t)size;
238 for (i = 0; i < nextWriteSize; ++i)
240 tx[4 + i] = buffer[i];
242 tx[3] = nextWriteSize;
244 int16_t sendResult = _sw.sendPacket(tx, rx);
247 return(bytesWritten);
249 bytesWritten += rx[3];
251 while ((size - bytesWritten) >= 7)
255 buffer[bytesWritten],
256 buffer[bytesWritten + 1],
257 buffer[bytesWritten + 2],
258 buffer[bytesWritten + 3],
259 buffer[bytesWritten + 4],
260 buffer[bytesWritten + 5],
261 buffer[bytesWritten + 6] };
264 int16_t sendResult = _sw.sendPacket(tx, rx);
267 return(bytesWritten);
269 bytesWritten += rx[3];
271 if ((rx[3] == 0) && millis() >= startTime + _timeout)
273 return(bytesWritten);
277 while (size - bytesWritten > 0)
280 if (size - bytesWritten >= 4)
286 nextWriteSize = (uint8_t)(size - bytesWritten);
290 for (i = 0; i < nextWriteSize; ++i)
292 tx[4 + i] = buffer[i + bytesWritten];
294 tx[3] = nextWriteSize;
296 int16_t sendResult = _sw.sendPacket(tx, rx);
299 return(bytesWritten);
301 bytesWritten += rx[3];
302 if ( (rx[3] == 0) && millis() >= startTime + _timeout)
304 return(bytesWritten);
307 return (bytesWritten);
338 uint16_t bytesAvailable = 0;
339 uint32_t startTime = millis();
344 int16_t sendResult = _sw.sendPacket(tx, rx);
347 bytesAvailable = (rx[4] + 256 * rx[5]);
350 if (bytesAvailable <
length)
355 uint16_t bytesRead = 0;
356 while (bytesRead <
length)
359 uint8_t bytesToRead =(uint8_t)(
length - bytesRead);
366 int16_t sendResult = _sw.sendPacket(tx, rx);
370 for (i = 0; i < rx[1] && bytesRead <
length; ++i)
372 buffer[bytesRead] = rx[2 + i];
381 if (millis() >= startTime + _timeout)
411 uint16_t bytesAvailable = 0;
415 int16_t sendResult = _sw.sendPacket(tx, rx);
418 bytesAvailable = (rx[4] + 256 * rx[5]);
420 uint16_t wordsAvailable = bytesAvailable /2;
421 if (wordsAvailable <
length)