Skip to content

Commit b28be23

Browse files
author
Me No Dev
committed
Merge remote-tracking branch 'esp8266/master'
2 parents f0f9114 + 4b90db4 commit b28be23

File tree

16 files changed

+243
-111
lines changed

16 files changed

+243
-111
lines changed

boards.txt

Lines changed: 73 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,78 @@ esp210.menu.FlashSize.4M1M.build.spiffs_pagesize=256
577577
#
578578

579579
##############################################################
580-
d1.name=WeMos D1
580+
d1_mini.name=WeMos D1 R2 & mini
581+
582+
d1_mini.upload.tool=esptool
583+
d1_mini.upload.speed=460800
584+
d1_mini.upload.resetmethod=nodemcu
585+
d1_mini.upload.maximum_size=1044464
586+
d1_mini.upload.maximum_data_size=81920
587+
d1_mini.upload.wait_for_upload_port=true
588+
d1_mini.serial.disableDTR=true
589+
d1_mini.serial.disableRTS=true
590+
591+
d1_mini.build.mcu=esp8266
592+
d1_mini.build.f_cpu=80000000L
593+
d1_mini.build.board=ESP8266_ESP12
594+
d1_mini.build.core=esp8266
595+
d1_mini.build.variant=d1_mini
596+
d1_mini.build.flash_mode=dio
597+
d1_mini.build.flash_size=4M
598+
d1_mini.build.flash_freq=40
599+
600+
d1_mini.menu.CpuFrequency.80=80 MHz
601+
d1_mini.menu.CpuFrequency.80.build.f_cpu=80000000L
602+
d1_mini.menu.CpuFrequency.160=160 MHz
603+
d1_mini.menu.CpuFrequency.160.build.f_cpu=160000000L
604+
605+
d1_mini.menu.UploadTool.esptool=Serial
606+
d1_mini.menu.UploadTool.esptool.upload.tool=esptool
607+
d1_mini.menu.UploadTool.esptool.upload.verbose=-vv
608+
609+
d1_mini.menu.UploadTool.espota=OTA
610+
d1_mini.menu.UploadTool.espota.upload.tool=espota
611+
612+
d1_mini.menu.UploadSpeed.921600=921600
613+
d1_mini.menu.UploadSpeed.921600.upload.speed=921600
614+
d1_mini.menu.UploadSpeed.115200=115200
615+
d1_mini.menu.UploadSpeed.115200.upload.speed=115200
616+
d1_mini.menu.UploadSpeed.9600=9600
617+
d1_mini.menu.UploadSpeed.9600.upload.speed=9600
618+
d1_mini.menu.UploadSpeed.57600=57600
619+
d1_mini.menu.UploadSpeed.57600.upload.speed=57600
620+
d1_mini.menu.UploadSpeed.256000.windows=256000
621+
d1_mini.menu.UploadSpeed.256000.upload.speed=256000
622+
d1_mini.menu.UploadSpeed.230400.linux=230400
623+
d1_mini.menu.UploadSpeed.230400.macosx=230400
624+
d1_mini.menu.UploadSpeed.230400.macosx=230400
625+
d1_mini.menu.UploadSpeed.230400.upload.speed=230400
626+
d1_mini.menu.UploadSpeed.460800.linux=460800
627+
d1_mini.menu.UploadSpeed.460800.macosx=460800
628+
d1_mini.menu.UploadSpeed.460800.upload.speed=460800
629+
d1_mini.menu.UploadSpeed.512000.windows=512000
630+
d1_mini.menu.UploadSpeed.512000.upload.speed=512000
631+
632+
633+
d1_mini.menu.FlashSize.4M3M=4M (3M SPIFFS)
634+
d1_mini.menu.FlashSize.4M3M.build.flash_size=4M
635+
d1_mini.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
636+
d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000
637+
d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
638+
d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
639+
d1_mini.menu.FlashSize.4M3M.build.spiffs_pagesize=256
640+
641+
d1_mini.menu.FlashSize.4M1M=4M (1M SPIFFS)
642+
d1_mini.menu.FlashSize.4M1M.build.flash_size=4M
643+
d1_mini.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
644+
d1_mini.menu.FlashSize.4M1M.build.spiffs_start=0x300000
645+
d1_mini.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
646+
d1_mini.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
647+
d1_mini.menu.FlashSize.4M1M.build.spiffs_pagesize=256
648+
649+
650+
##############################################################
651+
d1.name=WeMos D1(Retired)
581652

582653
d1.upload.tool=esptool
583654
d1.upload.speed=460800
@@ -648,77 +719,7 @@ d1.menu.FlashSize.4M1M.build.spiffs_pagesize=256
648719

649720

650721
##############################################################
651-
d1_mini.name=WeMos D1 mini
652722

653-
d1_mini.upload.tool=esptool
654-
d1_mini.upload.speed=460800
655-
d1_mini.upload.resetmethod=nodemcu
656-
d1_mini.upload.maximum_size=1044464
657-
d1_mini.upload.maximum_data_size=81920
658-
d1_mini.upload.wait_for_upload_port=true
659-
d1_mini.serial.disableDTR=true
660-
d1_mini.serial.disableRTS=true
661-
662-
d1_mini.build.mcu=esp8266
663-
d1_mini.build.f_cpu=80000000L
664-
d1_mini.build.board=ESP8266_ESP12
665-
d1_mini.build.core=esp8266
666-
d1_mini.build.variant=d1_mini
667-
d1_mini.build.flash_mode=dio
668-
d1_mini.build.flash_size=4M
669-
d1_mini.build.flash_freq=40
670-
671-
d1_mini.menu.CpuFrequency.80=80 MHz
672-
d1_mini.menu.CpuFrequency.80.build.f_cpu=80000000L
673-
d1_mini.menu.CpuFrequency.160=160 MHz
674-
d1_mini.menu.CpuFrequency.160.build.f_cpu=160000000L
675-
676-
d1_mini.menu.UploadTool.esptool=Serial
677-
d1_mini.menu.UploadTool.esptool.upload.tool=esptool
678-
d1_mini.menu.UploadTool.esptool.upload.verbose=-vv
679-
680-
d1_mini.menu.UploadTool.espota=OTA
681-
d1_mini.menu.UploadTool.espota.upload.tool=espota
682-
683-
d1_mini.menu.UploadSpeed.921600=921600
684-
d1_mini.menu.UploadSpeed.921600.upload.speed=921600
685-
d1_mini.menu.UploadSpeed.115200=115200
686-
d1_mini.menu.UploadSpeed.115200.upload.speed=115200
687-
d1_mini.menu.UploadSpeed.9600=9600
688-
d1_mini.menu.UploadSpeed.9600.upload.speed=9600
689-
d1_mini.menu.UploadSpeed.57600=57600
690-
d1_mini.menu.UploadSpeed.57600.upload.speed=57600
691-
d1_mini.menu.UploadSpeed.256000.windows=256000
692-
d1_mini.menu.UploadSpeed.256000.upload.speed=256000
693-
d1_mini.menu.UploadSpeed.230400.linux=230400
694-
d1_mini.menu.UploadSpeed.230400.macosx=230400
695-
d1_mini.menu.UploadSpeed.230400.macosx=230400
696-
d1_mini.menu.UploadSpeed.230400.upload.speed=230400
697-
d1_mini.menu.UploadSpeed.460800.linux=460800
698-
d1_mini.menu.UploadSpeed.460800.macosx=460800
699-
d1_mini.menu.UploadSpeed.460800.upload.speed=460800
700-
d1_mini.menu.UploadSpeed.512000.windows=512000
701-
d1_mini.menu.UploadSpeed.512000.upload.speed=512000
702-
703-
704-
d1_mini.menu.FlashSize.4M3M=4M (3M SPIFFS)
705-
d1_mini.menu.FlashSize.4M3M.build.flash_size=4M
706-
d1_mini.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
707-
d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000
708-
d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
709-
d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
710-
d1_mini.menu.FlashSize.4M3M.build.spiffs_pagesize=256
711-
712-
d1_mini.menu.FlashSize.4M1M=4M (1M SPIFFS)
713-
d1_mini.menu.FlashSize.4M1M.build.flash_size=4M
714-
d1_mini.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
715-
d1_mini.menu.FlashSize.4M1M.build.spiffs_start=0x300000
716-
d1_mini.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
717-
d1_mini.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
718-
d1_mini.menu.FlashSize.4M1M.build.spiffs_pagesize=256
719-
720-
721-
##############################################################
722723
espino.name=ESPino
723724

724725
espino.upload.tool=esptool
@@ -810,7 +811,7 @@ wifinfo.serial.disableDTR=true
810811
wifinfo.serial.disableRTS=true
811812

812813
wifinfo.build.mcu=esp8266
813-
wifinfo.build.f_cpu=80000000L
814+
wifinfo.build.f_cpu=160000000L
814815
wifinfo.build.core=esp8266
815816
wifinfo.build.variant=wifinfo
816817
wifinfo.build.flash_mode=qio

cores/esp8266/StreamString.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@
2323
#include <Arduino.h>
2424
#include "StreamString.h"
2525

26-
size_t StreamString::write(const uint8_t *buffer, size_t size) {
27-
if(reserve(length() + size + 1)) {
28-
for(size_t i = 0; i < size; i++) {
29-
if(write(*buffer)) {
30-
buffer++;
31-
} else {
32-
return i;
33-
}
26+
size_t StreamString::write(const uint8_t *data, size_t size) {
27+
if(size && data) {
28+
if(reserve(length() + size + 1)) {
29+
memcpy((void *) (buffer + len), (const void *) data, size);
30+
len += size;
31+
*(buffer + len) = 0x00; // add null for string end
32+
return size;
3433
}
35-
3634
}
3735
return 0;
3836
}

cores/esp8266/cont.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ void cont_yield(cont_t*);
6060
// return 1 if guard bytes were overwritten.
6161
int cont_check(cont_t* cont);
6262

63+
// Go through stack and check how many bytes are most probably still unchanged
64+
// and thus weren't used by the user code. i.e. that stack space is free. (high water mark)
65+
int cont_get_free_stack(cont_t* cont);
66+
6367
// Check if yield() may be called. Returns true if we are running inside
6468
// continuation stack
6569
bool cont_can_yield(cont_t* cont);

cores/esp8266/cont_util.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ void ICACHE_RAM_ATTR cont_init(cont_t* cont) {
3030
cont->stack_guard2 = CONT_STACKGUARD;
3131
cont->stack_end = cont->stack + (sizeof(cont->stack) / 4);
3232
cont->struct_start = (unsigned*) cont;
33+
34+
// fill stack with magic values to check high water mark
35+
for(int pos = 0; pos < sizeof(cont->stack) / 4; pos++)
36+
{
37+
cont->stack[pos] = CONT_STACKGUARD;
38+
}
3339
}
3440

3541
int ICACHE_RAM_ATTR cont_check(cont_t* cont) {
@@ -38,6 +44,19 @@ int ICACHE_RAM_ATTR cont_check(cont_t* cont) {
3844
return 0;
3945
}
4046

47+
int ICACHE_RAM_ATTR cont_get_free_stack(cont_t* cont) {
48+
uint32_t *head = cont->stack;
49+
int freeWords = 0;
50+
51+
while(*head == CONT_STACKGUARD)
52+
{
53+
head++;
54+
freeWords++;
55+
}
56+
57+
return freeWords * 4;
58+
}
59+
4160
bool ICACHE_RAM_ATTR cont_can_yield(cont_t* cont) {
4261
return !ETS_INTR_WITHINISR() &&
4362
cont->pc_ret != 0 && cont->pc_yield == 0;

cores/esp8266/spiffs_api.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ class SPIFFSImpl : public FSImpl {
6666

6767
bool rename(const char* pathFrom, const char* pathTo) override {
6868
if (!isSpiffsFilenameValid(pathFrom)) {
69-
DEBUGV("SPIFFSImpl::rename: invalid pathFrom=`%s`\r\n", path);
69+
DEBUGV("SPIFFSImpl::rename: invalid pathFrom=`%s`\r\n", pathFrom);
7070
return false;
7171
}
7272
if (!isSpiffsFilenameValid(pathTo)) {
73-
DEBUGV("SPIFFSImpl::rename: invalid pathTo=`%s` \r\n", path);
73+
DEBUGV("SPIFFSImpl::rename: invalid pathTo=`%s` \r\n", pathTo);
7474
return false;
7575
}
7676
auto rc = SPIFFS_rename(&_fs, pathFrom, pathTo);

doc/platformio.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,8 @@ platformio run --target upload
7171
- [IDE Integration](http://docs.platformio.org/en/latest/ide.html) (Atom, CLion, Eclipse, Qt Creator, Sublime Text, VIM, Visual Studio)
7272
- [Project Examples](http://docs.platformio.org/en/latest/platforms/espressif.html#examples)
7373

74-
## Demo of OTA update
75-
[![PlatformIO and OTA firmware uploading to Espressif ESP8266 ESP-01](http://img.youtube.com/vi/W8wWjvQ8ZQs/0.jpg)](http://www.youtube.com/watch?v=W8wWjvQ8ZQs "PlatformIO and OTA firmware uploading to Espressif ESP8266 ESP-01")
74+
## Demo of Over-the-Air (OTA) ESP8266 programming using PlatformIO
75+
76+
http://www.penninkhof.com/2015/12/1610-over-the-air-esp8266-programming-using-platformio/
77+
78+
[![Over-the-Air ESP8266 programming using PlatformIO](http://img.youtube.com/vi/lXchL3hpDO4/0.jpg)](http://www.youtube.com/watch?v=lXchL3hpDO4 "Over-the-Air ESP8266 programming using PlatformIO")

libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ HTTPClient::HTTPClient() {
5050
_returnCode = 0;
5151
_size = -1;
5252
_canReuse = false;
53+
_tcpTimeout = HTTPCLIENT_DEFAULT_TCP_TIMEOUT;
5354

5455
}
5556

@@ -252,6 +253,17 @@ void HTTPClient::setAuthorization(const char * auth) {
252253
}
253254
}
254255

256+
/**
257+
* set the timeout for the TCP connection
258+
* @param timeout unsigned int
259+
*/
260+
void HTTPClient::setTimeout(uint16_t timeout) {
261+
_tcpTimeout = timeout;
262+
if(connected()) {
263+
_tcp->setTimeout(timeout);
264+
}
265+
}
266+
255267
/**
256268
* send a GET request
257269
* @return http code
@@ -354,16 +366,25 @@ int HTTPClient::sendRequest(const char * type, Stream * stream, size_t size) {
354366

355367
if(buff) {
356368
// read all data from stream and send it to server
357-
while(connected() && stream->available() && (len > 0 || len == -1)) {
369+
while(connected() && (stream->available() > -1) && (len > 0 || len == -1)) {
358370

359371
// get available data size
360372
size_t s = stream->available();
361373

374+
if(len) {
375+
s = ((s > len) ? len : s);
376+
}
377+
362378
if(s) {
363379
int c = stream->readBytes(buff, ((s > buff_size) ? buff_size : s));
364380

365381
// write it to Stream
366-
bytesWritten += _tcp->write((const uint8_t *) buff, c);
382+
int w = _tcp->write((const uint8_t *) buff, c);
383+
bytesWritten += w;
384+
if(w != c) {
385+
DEBUG_HTTPCLIENT("[HTTP-Client][sendRequest] short write asked for %d but got %d\n", c, w);
386+
break;
387+
}
367388

368389
if(len > 0) {
369390
len -= c;
@@ -378,15 +399,15 @@ int HTTPClient::sendRequest(const char * type, Stream * stream, size_t size) {
378399
free(buff);
379400

380401
if(size && (int) size != bytesWritten) {
381-
DEBUG_HTTPCLIENT("[HTTP-Client][sendRequest] Stream payload bytesWritten %d and size %d mismatch!.\n", bytesWritten, _size);
402+
DEBUG_HTTPCLIENT("[HTTP-Client][sendRequest] Stream payload bytesWritten %d and size %d mismatch!.\n", bytesWritten, size);
382403
DEBUG_HTTPCLIENT("[HTTP-Client][sendRequest] ERROR SEND PAYLOAD FAILED!");
383404
return HTTPC_ERROR_SEND_PAYLOAD_FAILED;
384405
} else {
385406
DEBUG_HTTPCLIENT("[HTTP-Client][sendRequest] Stream payload written: %d\n", bytesWritten);
386407
}
387408

388409
} else {
389-
DEBUG_HTTPCLIENT("[HTTP-Client][writeToStream] too less ram! need " HTTP_TCP_BUFFER_SIZE);
410+
DEBUG_HTTPCLIENT("[HTTP-Client][sendRequest] too less ram! need %d\n", HTTP_TCP_BUFFER_SIZE);
390411
return HTTPC_ERROR_TOO_LESS_RAM;
391412
}
392413

@@ -470,7 +491,12 @@ int HTTPClient::writeToStream(Stream * stream) {
470491
int c = _tcp->readBytes(buff, ((size > buff_size) ? buff_size : size));
471492

472493
// write it to Stream
473-
bytesWritten += stream->write(buff, c);
494+
int w = stream->write(buff, c);
495+
bytesWritten += w;
496+
if(w != c) {
497+
DEBUG_HTTPCLIENT("[HTTP-Client][writeToStream] short write asked for %d but got %d\n", c, w);
498+
break;
499+
}
474500

475501
if(len > 0) {
476502
len -= c;
@@ -491,7 +517,7 @@ int HTTPClient::writeToStream(Stream * stream) {
491517
}
492518

493519
} else {
494-
DEBUG_HTTPCLIENT("[HTTP-Client][writeToStream] too less ram! need " HTTP_TCP_BUFFER_SIZE);
520+
DEBUG_HTTPCLIENT("[HTTP-Client][writeToStream] too less ram! need %d\n", HTTP_TCP_BUFFER_SIZE);
495521
return HTTPC_ERROR_TOO_LESS_RAM;
496522
}
497523

@@ -659,7 +685,7 @@ bool HTTPClient::connect(void) {
659685
}
660686

661687
// set Timeout for readBytesUntil and readStringUntil
662-
_tcp->setTimeout(HTTPCLIENT_TCP_TIMEOUT);
688+
_tcp->setTimeout(_tcpTimeout);
663689

664690
#ifdef ESP8266
665691
_tcp->setNoDelay(true);

libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#define DEBUG_HTTPCLIENT(...)
3232
#endif
3333

34-
#define HTTPCLIENT_TCP_TIMEOUT (1000)
34+
#define HTTPCLIENT_DEFAULT_TCP_TIMEOUT (1000)
3535

3636
/// HTTP client errors
3737
#define HTTPC_ERROR_CONNECTION_REFUSED (-1)
@@ -127,6 +127,7 @@ class HTTPClient {
127127
void setUserAgent(const char * userAgent);
128128
void setAuthorization(const char * user, const char * password);
129129
void setAuthorization(const char * auth);
130+
void setTimeout(uint16_t timeout);
130131

131132
/// request handling
132133
int GET();
@@ -170,7 +171,7 @@ class HTTPClient {
170171
String _host;
171172
uint16_t _port;
172173
bool _reuse;
173-
174+
uint16_t _tcpTimeout;
174175

175176
String _url;
176177
bool _https;

libraries/ESP8266WebServer/src/detail/RequestHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
class RequestHandler {
55
public:
6+
virtual ~RequestHandler() { }
67
virtual bool canHandle(HTTPMethod method, String uri) { return false; }
78
virtual bool canUpload(String uri) { return false; }
89
virtual bool handle(ESP8266WebServer& server, HTTPMethod requestMethod, String requestUri) { return false; }

0 commit comments

Comments
 (0)