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:
@ -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));
|
||||
}
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user