1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-30 16:24:09 +03:00

Moving write errors out of return value into separate API methods.

write(), print(), println() now return size_t (and don't use negative values to signal errors).
Print adds writeError() for checking for write errors, clearWriteError() to reset the flag to false, and a protected setWriteError() for signalling errors.

http://code.google.com/p/arduino/issues/detail?id=598
This commit is contained in:
David A. Mellis
2011-08-26 16:08:14 -04:00
parent 929597375b
commit b73cf39d94
23 changed files with 184 additions and 173 deletions

View File

@ -124,13 +124,14 @@ uint8_t TwoWire::endTransmission(void)
// must be called in:
// slave tx event callback
// or after beginTransmission(address)
ssize_t TwoWire::write(uint8_t data)
size_t TwoWire::write(uint8_t data)
{
if(transmitting){
// in master transmitter mode
// don't bother if buffer is full
if(txBufferLength >= BUFFER_LENGTH){
return -1;
setWriteError();
return 0;
}
// put byte in tx buffer
txBuffer[txBufferIndex] = data;
@ -148,12 +149,12 @@ ssize_t TwoWire::write(uint8_t data)
// must be called in:
// slave tx event callback
// or after beginTransmission(address)
ssize_t TwoWire::write(const uint8_t *data, size_t quantity)
size_t TwoWire::write(const uint8_t *data, size_t quantity)
{
if(transmitting){
// in master transmitter mode
for(size_t i = 0; i < quantity; ++i){
if (write(data[i]) < 0) return i;
write(data[i]);
}
}else{
// in slave send mode
@ -166,7 +167,7 @@ ssize_t TwoWire::write(const uint8_t *data, size_t quantity)
// must be called in:
// slave tx event callback
// or after beginTransmission(address)
ssize_t TwoWire::write(const char *data)
size_t TwoWire::write(const char *data)
{
return write((uint8_t*)data, strlen(data));
}

View File

@ -52,9 +52,9 @@ class TwoWire : public Stream
uint8_t endTransmission(void);
uint8_t requestFrom(uint8_t, uint8_t);
uint8_t requestFrom(int, int);
virtual ssize_t write(uint8_t);
virtual ssize_t write(const char *);
virtual ssize_t write(const uint8_t *, size_t);
virtual size_t write(uint8_t);
virtual size_t write(const char *);
virtual size_t write(const uint8_t *, size_t);
virtual int available(void);
virtual int read(void);
virtual int peek(void);