mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-24 08:45:10 +03:00
* uart fixes and BW improvements * uart: read_char straightly use hw buffer * +attributes for functions called by ISR * uart: BW improvements read_char straightly use hw buffer (+ ~10%bw) read by block (+ ~190%bw) (instead of generic Stream::readBytes) attributes for functions called by ISR remove overrun message remove some ISR flags which were not honoured * fix merge * fix buffer overflow * serial stress test sketch * astyle * serial stress example: interactive keyboard, stop reading, overrun * serial device test: bandwidth & overrun * update + HardwareSerial::hasError() * interactive overrun in example * astyle * Test using @plerup's SoftwareSerial as submodule (tag 3.4.1) * update upstream ref (fix warning) * host mock uart/read(buf,size) * reset style changes in submodules before style diff * update build_boards_manager_package.sh for submodules * trigger CI (removing space) * cannot reproduce locally the CI issue, setting bash -x option to get live trace * remove previously added (in this PR) 'set -e' in package builder (passes local tests, not real CI) script-comment new recipe.hooks.core.prebuild.3 (along with already commented .1 and .2) moved CI package test to be first on the test list remove 'set -x', wish me luck
120 lines
3.0 KiB
C++
120 lines
3.0 KiB
C++
/*
|
|
Arduino Hardware Serial emulation
|
|
Copyright (c) 2018 david gauchard. All rights reserved.
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
copy of this software and associated documentation files (the "Software"),
|
|
to deal with the Software without restriction, including without limitation
|
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
and/or sell copies of the Software, and to permit persons to whom the
|
|
Software is furnished to do so, subject to the following conditions:
|
|
|
|
- Redistributions of source code must retain the above copyright notice,
|
|
this list of conditions and the following disclaimers.
|
|
|
|
- Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimers in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
- The names of its contributors may not be used to endorse or promote
|
|
products derived from this Software without specific prior written
|
|
permission.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
DEALINGS WITH THE SOFTWARE.
|
|
*/
|
|
|
|
#include <Arduino.h>
|
|
|
|
#include <unistd.h> // write
|
|
|
|
HardwareSerial Serial(UART0);
|
|
|
|
HardwareSerial::HardwareSerial (int uart_nr)
|
|
{
|
|
if (uart_nr != 0)
|
|
fprintf(stderr, MOCK "FIXME HardwareSerial::HardwareSerial(%d)\n", uart_nr);
|
|
}
|
|
|
|
void HardwareSerial::begin (unsigned long baud, SerialConfig config, SerialMode mode, uint8_t tx_pin)
|
|
{
|
|
if (config != SERIAL_8N1 || mode != SERIAL_FULL || tx_pin != 1)
|
|
fprintf(stderr, MOCK "FIXME HardwareSerial::begin(baud=%ld config=0x%x mode=0x%x)\n", baud, (int)config, (int)mode);
|
|
}
|
|
|
|
void HardwareSerial::setDebugOutput (bool on)
|
|
{
|
|
(void)on;
|
|
}
|
|
|
|
int HardwareSerial::available (void)
|
|
{
|
|
printf(MOCK "TODO HardwareSerial::available\n");
|
|
return 0;
|
|
}
|
|
|
|
void HardwareSerial::flush ()
|
|
{
|
|
//XXXTODO
|
|
fflush(stdout);
|
|
}
|
|
|
|
// uart.c
|
|
|
|
extern "C"
|
|
{
|
|
|
|
size_t uart_write_char (uart_t* uart, char c)
|
|
{
|
|
//XXXTODO
|
|
(void)uart;
|
|
return write(1, &c, 1);
|
|
}
|
|
|
|
int uart_peek_char (uart_t* uart)
|
|
{
|
|
///XXXTODO
|
|
static bool notimpl = false;
|
|
if (!notimpl)
|
|
{
|
|
notimpl = true;
|
|
fprintf(stderr, MOCK "FIXME uart_peek_char\n");
|
|
}
|
|
(void)uart;
|
|
return -1;
|
|
}
|
|
|
|
int uart_read_char (uart_t* uart)
|
|
{
|
|
///XXXTODO
|
|
static bool notimpl = false;
|
|
if (!notimpl)
|
|
{
|
|
notimpl = true;
|
|
fprintf(stderr, MOCK "FIXME uart_read_char\n");
|
|
}
|
|
(void)uart;
|
|
return -1;
|
|
}
|
|
|
|
size_t uart_write (uart_t* uart, const char* buf, size_t size)
|
|
{
|
|
///XXXTODO
|
|
(void)uart;
|
|
return write(1, buf, size);
|
|
}
|
|
|
|
size_t uart_read(uart_t* uart, char* userbuffer, size_t usersize)
|
|
{
|
|
///XXXTODO
|
|
(void)uart;
|
|
return read(0, userbuffer, usersize);
|
|
}
|
|
|
|
} // extern "C"
|