1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-13 02:22:55 +03:00

Inefficient Print::write(data,len) shows message if used (only in debug mode) (#4537)

* inefficient Print::write(data,len) shows message if used (only in debug mode)
* make HardwareSerial's write(data,len) efficient
* HardwareSerial: remove duplicate tests, move trivial code from .cpp to .h
This commit is contained in:
david gauchard
2018-03-22 01:23:58 +01:00
committed by GitHub
parent 2013af1b19
commit f8f205d54a
5 changed files with 82 additions and 108 deletions

View File

@ -93,26 +93,50 @@ public:
{
swap(1);
}
void swap(uint8_t tx_pin); //toggle between use of GPIO13/GPIO15 or GPIO3/GPIO(1/2) as RX and TX
void swap(uint8_t tx_pin) //toggle between use of GPIO13/GPIO15 or GPIO3/GPIO(1/2) as RX and TX
{
uart_swap(_uart, tx_pin);
}
/*
* Toggle between use of GPIO1 and GPIO2 as TX on UART 0.
* Note: UART 1 can't be used if GPIO2 is used with UART 0!
*/
void set_tx(uint8_t tx_pin);
void set_tx(uint8_t tx_pin)
{
uart_set_tx(_uart, tx_pin);
}
/*
* UART 0 possible options are (1, 3), (2, 3) or (15, 13)
* UART 1 allows only TX on 2 if UART 0 is not (2, 3)
*/
void pins(uint8_t tx, uint8_t rx);
void pins(uint8_t tx, uint8_t rx)
{
uart_set_pins(_uart, tx, rx);
}
int available(void) override;
int peek(void) override;
int read(void) override;
int availableForWrite(void);
int peek(void) override
{
// this may return -1, but that's okay
return uart_peek_char(_uart);
}
int read(void) override
{
// this may return -1, but that's okay
return uart_read_char(_uart);
}
int availableForWrite(void)
{
return static_cast<int>(uart_tx_free(_uart));
}
void flush(void) override;
size_t write(uint8_t) override;
size_t write(uint8_t c) override
{
return uart_write_char(_uart, c);
}
inline size_t write(unsigned long n)
{
return write((uint8_t) n);
@ -129,13 +153,27 @@ public:
{
return write((uint8_t) n);
}
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool() const;
size_t write(const uint8_t *buffer, size_t size)
{
return uart_write(_uart, (const char*)buffer, size);
}
operator bool() const
{
return _uart != 0;
}
void setDebugOutput(bool);
bool isTxEnabled(void);
bool isRxEnabled(void);
int baudRate(void);
bool isTxEnabled(void)
{
return uart_tx_enabled(_uart);
}
bool isRxEnabled(void)
{
return _uart && uart_rx_enabled(_uart);
}
int baudRate(void)
{
return uart_get_baudrate(_uart);
}
bool hasOverrun(void)
{