Skip to content

Commit 35fd325

Browse files
Merge branch 'master' into i2s_input
2 parents 4472df0 + a3a3654 commit 35fd325

26 files changed

+748
-165
lines changed

boards.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1795,6 +1795,7 @@ nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600
17951795
##############################################################
17961796
modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV)
17971797
modwifi.build.board=MOD_WIFI_ESP8266
1798+
modwifi.build.variant=modwifi
17981799
modwifi.upload.tool=esptool
17991800
modwifi.upload.maximum_data_size=81920
18001801
modwifi.upload.wait_for_upload_port=true
@@ -1803,7 +1804,6 @@ modwifi.serial.disableDTR=true
18031804
modwifi.serial.disableRTS=true
18041805
modwifi.build.mcu=esp8266
18051806
modwifi.build.core=esp8266
1806-
modwifi.build.variant=generic
18071807
modwifi.build.spiffs_pagesize=256
18081808
modwifi.build.debug_port=
18091809
modwifi.build.debug_level=

cores/esp8266/HardwareSerial.cpp

Lines changed: 2 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,8 @@ void HardwareSerial::end()
5555
uart_set_debug(UART_NO);
5656
}
5757

58-
if (_uart) {
59-
uart_uninit(_uart);
60-
_uart = NULL;
61-
}
58+
uart_uninit(_uart);
59+
_uart = NULL;
6260
}
6361

6462
size_t HardwareSerial::setRxBufferSize(size_t size){
@@ -70,30 +68,6 @@ size_t HardwareSerial::setRxBufferSize(size_t size){
7068
return _rx_size;
7169
}
7270

73-
void HardwareSerial::swap(uint8_t tx_pin)
74-
{
75-
if(!_uart) {
76-
return;
77-
}
78-
uart_swap(_uart, tx_pin);
79-
}
80-
81-
void HardwareSerial::set_tx(uint8_t tx_pin)
82-
{
83-
if(!_uart) {
84-
return;
85-
}
86-
uart_set_tx(_uart, tx_pin);
87-
}
88-
89-
void HardwareSerial::pins(uint8_t tx, uint8_t rx)
90-
{
91-
if(!_uart) {
92-
return;
93-
}
94-
uart_set_pins(_uart, tx, rx);
95-
}
96-
9771
void HardwareSerial::setDebugOutput(bool en)
9872
{
9973
if(!_uart) {
@@ -113,16 +87,6 @@ void HardwareSerial::setDebugOutput(bool en)
11387
}
11488
}
11589

116-
bool HardwareSerial::isTxEnabled(void)
117-
{
118-
return _uart && uart_tx_enabled(_uart);
119-
}
120-
121-
bool HardwareSerial::isRxEnabled(void)
122-
{
123-
return _uart && uart_rx_enabled(_uart);
124-
}
125-
12690
int HardwareSerial::available(void)
12791
{
12892
int result = static_cast<int>(uart_rx_available(_uart));
@@ -132,27 +96,6 @@ int HardwareSerial::available(void)
13296
return result;
13397
}
13498

135-
int HardwareSerial::peek(void)
136-
{
137-
// this may return -1, but that's okay
138-
return uart_peek_char(_uart);
139-
}
140-
141-
int HardwareSerial::read(void)
142-
{
143-
// this may return -1, but that's okay
144-
return uart_read_char(_uart);
145-
}
146-
147-
int HardwareSerial::availableForWrite(void)
148-
{
149-
if(!_uart || !uart_tx_enabled(_uart)) {
150-
return 0;
151-
}
152-
153-
return static_cast<int>(uart_tx_free(_uart));
154-
}
155-
15699
void HardwareSerial::flush()
157100
{
158101
if(!_uart || !uart_tx_enabled(_uart)) {
@@ -165,33 +108,9 @@ void HardwareSerial::flush()
165108
delayMicroseconds(11000000 / uart_get_baudrate(_uart) + 1);
166109
}
167110

168-
size_t HardwareSerial::write(uint8_t c)
169-
{
170-
if(!_uart || !uart_tx_enabled(_uart)) {
171-
return 0;
172-
}
173-
174-
uart_write_char(_uart, c);
175-
return 1;
176-
}
177-
178-
int HardwareSerial::baudRate(void)
179-
{
180-
// Null pointer on _uart is checked by SDK
181-
return uart_get_baudrate(_uart);
182-
}
183-
184-
185-
HardwareSerial::operator bool() const
186-
{
187-
return _uart != 0;
188-
}
189-
190-
191111
#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL)
192112
HardwareSerial Serial(UART0);
193113
#endif
194114
#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL1)
195115
HardwareSerial Serial1(UART1);
196116
#endif
197-

cores/esp8266/HardwareSerial.h

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,26 +93,50 @@ class HardwareSerial: public Stream
9393
{
9494
swap(1);
9595
}
96-
void swap(uint8_t tx_pin); //toggle between use of GPIO13/GPIO15 or GPIO3/GPIO(1/2) as RX and TX
96+
void swap(uint8_t tx_pin) //toggle between use of GPIO13/GPIO15 or GPIO3/GPIO(1/2) as RX and TX
97+
{
98+
uart_swap(_uart, tx_pin);
99+
}
97100

98101
/*
99102
* Toggle between use of GPIO1 and GPIO2 as TX on UART 0.
100103
* Note: UART 1 can't be used if GPIO2 is used with UART 0!
101104
*/
102-
void set_tx(uint8_t tx_pin);
105+
void set_tx(uint8_t tx_pin)
106+
{
107+
uart_set_tx(_uart, tx_pin);
108+
}
103109

104110
/*
105111
* UART 0 possible options are (1, 3), (2, 3) or (15, 13)
106112
* UART 1 allows only TX on 2 if UART 0 is not (2, 3)
107113
*/
108-
void pins(uint8_t tx, uint8_t rx);
114+
void pins(uint8_t tx, uint8_t rx)
115+
{
116+
uart_set_pins(_uart, tx, rx);
117+
}
109118

110119
int available(void) override;
111-
int peek(void) override;
112-
int read(void) override;
113-
int availableForWrite(void);
120+
121+
int peek(void) override
122+
{
123+
// this may return -1, but that's okay
124+
return uart_peek_char(_uart);
125+
}
126+
int read(void) override
127+
{
128+
// this may return -1, but that's okay
129+
return uart_read_char(_uart);
130+
}
131+
int availableForWrite(void)
132+
{
133+
return static_cast<int>(uart_tx_free(_uart));
134+
}
114135
void flush(void) override;
115-
size_t write(uint8_t) override;
136+
size_t write(uint8_t c) override
137+
{
138+
return uart_write_char(_uart, c);
139+
}
116140
inline size_t write(unsigned long n)
117141
{
118142
return write((uint8_t) n);
@@ -129,13 +153,36 @@ class HardwareSerial: public Stream
129153
{
130154
return write((uint8_t) n);
131155
}
132-
using Print::write; // pull in write(str) and write(buf, size) from Print
133-
operator bool() const;
134-
156+
size_t write(const uint8_t *buffer, size_t size)
157+
{
158+
return uart_write(_uart, (const char*)buffer, size);
159+
}
160+
size_t write(const char *buffer)
161+
{
162+
return buffer? uart_write(_uart, buffer, strlen(buffer)): 0;
163+
}
164+
operator bool() const
165+
{
166+
return _uart != 0;
167+
}
135168
void setDebugOutput(bool);
136-
bool isTxEnabled(void);
137-
bool isRxEnabled(void);
138-
int baudRate(void);
169+
bool isTxEnabled(void)
170+
{
171+
return uart_tx_enabled(_uart);
172+
}
173+
bool isRxEnabled(void)
174+
{
175+
return uart_rx_enabled(_uart);
176+
}
177+
int baudRate(void)
178+
{
179+
return uart_get_baudrate(_uart);
180+
}
181+
182+
bool hasOverrun(void)
183+
{
184+
return uart_has_overrun(_uart);
185+
}
139186

140187
protected:
141188
int _uart_nr;

cores/esp8266/Print.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@
3333

3434
/* default implementation: may be overridden */
3535
size_t Print::write(const uint8_t *buffer, size_t size) {
36+
37+
#ifdef DEBUG_ESP_CORE
38+
static char not_the_best_way [] ICACHE_RODATA_ATTR STORE_ATTR = "Print::write(data,len) should be overridden for better efficiency\r\n";
39+
static bool once = false;
40+
if (!once) {
41+
once = true;
42+
os_printf_plus(not_the_best_way);
43+
}
44+
#endif
45+
3646
size_t n = 0;
3747
while (size--) {
3848
size_t ret = write(*buffer++);

cores/esp8266/Updater.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ bool UpdaterClass::begin(size_t size, int command) {
8686
//size of the update rounded to a sector
8787
uint32_t roundedSize = (size + FLASH_SECTOR_SIZE - 1) & (~(FLASH_SECTOR_SIZE - 1));
8888
//address where we will start writing the update
89-
updateStartAddress = updateEndAddress - roundedSize;
89+
updateStartAddress = (updateEndAddress > roundedSize)? (updateEndAddress - roundedSize) : 0;
9090

9191
#ifdef DEBUG_UPDATER
9292
DEBUG_UPDATER.printf("[begin] roundedSize: 0x%08X (%d)\n", roundedSize, roundedSize);
@@ -390,4 +390,4 @@ void UpdaterClass::printError(Print &out){
390390
}
391391
}
392392

393-
UpdaterClass Update;
393+
UpdaterClass Update;

0 commit comments

Comments
 (0)