From b605ab316e31a86cce3f656473c097754c7b8dcb Mon Sep 17 00:00:00 2001 From: John Doe Date: Fri, 10 Jul 2015 22:21:48 +0300 Subject: [PATCH 1/4] add synchronous ota --- bootloaders/eboot/eboot.elf | Bin 11229 -> 10040 bytes cores/esp8266/Updater.cpp | 6 +++++- tools/espota.py | 4 +++- tools/sdk/include/ip_addr.h | 6 ------ 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bootloaders/eboot/eboot.elf b/bootloaders/eboot/eboot.elf index 08536aa72a4c83c9788ce38dd40d440db9669dc0..36c480fe0ccb399f1bc6e2237fe79c0a97febe80 100755 GIT binary patch delta 3904 zcmb_edr(x@89(RVyLVUJ7t2Fl!tPyU7av(r1lp2eB|uO}q)L>ki9x^#D6C;gW79Ni zI!$WZB<=RpP9J23F|nP=kZBy!8ONcmkLc7)J3~@pacn0wb=stoM9{Wo+GhLv?nCaF zf881O{C>ahalUizw;%V<+m7G=z5K;>^Zs}>W9-S|wD$G98HF+Wb3ozd-?&4(70gRd zwTd7w;vb57Ua|hKnUjn?x5llV3$v*2J6eS=ny6@SOWGz^w4v%kCbCv>2MjWuiA=a5 z{=qK3C4R;$_;1A&FXz7!|K|7dS4D%=yZSKY<@z^ee>RKN?TVJRHt^@o4cDA=lN5vW zoS2gKrAEkbj(XrFev zlJ}76KEk_otM7NapPa9VMK@J6Ad%FhjqT$*$fAw)@-EYLtM1y+e4!3mw6Q+EnFQ?6 zp&RtH_nW@$hBVq3x;InRk~tYXzaCIVtoP3oY~AtO}g+d#=sg@W*Fvh;OTfyh$8YBfL`lUX3B)|I}JuCe}G4 zd{R8kfasuh?2Q$5g8;$Ei`2h8NRrR3@%5Q0$tAk!0vF#xyPZZ zha{F_avp^;^&^U0N|>v^z_(mTSW@35TtZk@-=Oc{c6=*Ld6NP{Nf0C~yMk2>lC+%c zOnn7ka=GbylSt$YzMTmwP04b@)pe1_v7PGxqzpbjw&*^Av%C8LiOv$>6SeTdwQK9`KHm5i>H|3()uO?HRbLq7#p8!yt4)P){$nmsfFtLqSg zl)^25%w_b@Q-F%g=po(3bxE|kOX{hImT;Vw%j8Z6`4Lt=`X%Id_YC)#2K12UGJLsA z1}WX^DV4<$cic~pKkE!x3Mj#(n0H4vyD4EQ{d)ADzn)NqkGp5E7Y2ez7k3>VTZB?d>7Cghi+!Gm^Fz`q+r>{j#T)e4byjSW3auG5VzZMNPIn>F z+s}Bdk)ne!pF-ZbKcpn}<8Ud{>-xUGSaf9-Ph|U6NaBqwKjzsxS*1&@M+zVP^LNV4 zu8Ng`qD_1Hd-_Hav8KM{-jT%qSo4;Sx-~U5vGv2fkM$2FRuA?M^~H8S*1xYeHrU;h zNFInio*3S1neXb}zdv?QVrZmqXe1fi*!|^hF%bABZyNHnBdhg>Q{Lkn9^y#_s$LEfduRdE#t-%|uJVAGrudb3|QHy_)QQ zqHouTNEUrw+$`!(F-$Ugn?R51^N=2$5;brH7`Myz!iVfM0`>uWuxj|DDTqba2^RyC ze%PiHw)A7bxu(xKU@yb}6$+RJ$u|wNz<_#E!r7*t0k(=@7@1*H4+8`0{)DMGDw@VB z7UsfX2(JPreJ8L3EA87oms$w!hGCa!I0;P7bmG&%OHKVEFrcmzwu+mz>4Ysk1AMD! zj6)i3v~evk7UoK!I(nh21fdOS(qhp!AbcE{^dQCzMuZ+51_so9s&OlRVA_O!fLQd$ zN0@Yqt+x9E=Rl((T7gqmbsIqLHVw}LW9;irqrgEEPXYt#S4ubtOdHV1!lLVh3xP@h zm!+Gy5i4z6hf!iaf*y7^2sHgPgstYJ$l=KNpH}M**l$7QZ7QF~-R+0bI z4Y4wKUR)36N;8UB9MT-)*!vMt6$-04PV}BbY=`*18|@&T4uu^Xe2m4#qgu9@4Efb> zfn9Nkx8X8~-YplOgu;@@7bRM`<8}0Go$k3)^E+n2{9s|}zxm>+P@Wjq{L+;o@oTNz zGhM=1hl2Tvf_!35D{_>fe{)1u_`1j`^QQ`+(+eUN=4W#moSFHqWil3T0kGRKoSB~< z9j)*mz&d4%9|5;6A%NyM1a6Q20r>kXSsV++r!w?UX(0h;FN50yUIQ0S7Zt(1Gg902yQQ63%EVL_cr^mZeO^8Z-5*5wi!+F zGK84z%1=|kttR2@Jh=6?Oa;9S9@L9A;%C8WR6L9@vNLfw5}i03IVer+Uh!4_f8W_v A#Q*>R delta 4910 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 D;ezJ` diff --git a/cores/esp8266/Updater.cpp b/cores/esp8266/Updater.cpp index 4d9dca9e2..cfce272a8 100644 --- a/cores/esp8266/Updater.cpp +++ b/cores/esp8266/Updater.cpp @@ -114,8 +114,12 @@ bool UpdaterClass::end(bool evenIfRemaining){ bool UpdaterClass::_writeBuffer(){ noInterrupts(); int rc = SPIEraseSector(_currentAddress/FLASH_SECTOR_SIZE); - if (!rc) { + interrupts(); + yield(); + if(!rc){ + noInterrupts(); rc = SPIWrite(_currentAddress, _buffer, _bufferLen); + interrupts(); } interrupts(); if (rc) { diff --git a/tools/espota.py b/tools/espota.py index dbd22eb45..01d79d558 100755 --- a/tools/espota.py +++ b/tools/espota.py @@ -48,12 +48,14 @@ def serve(remoteAddr, remotePort, filename): sys.stderr.write('Uploading') sys.stderr.flush() while True: - chunk = f.read(4096) + chunk = f.read(1460) if not chunk: break sys.stderr.write('.') sys.stderr.flush() + connection.settimeout(10) try: connection.sendall(chunk) + res = connection.recv(4) except: print('\nError Uploading', file=sys.stderr) connection.close() diff --git a/tools/sdk/include/ip_addr.h b/tools/sdk/include/ip_addr.h index fc488ea8f..de8a61d16 100644 --- a/tools/sdk/include/ip_addr.h +++ b/tools/sdk/include/ip_addr.h @@ -15,12 +15,6 @@ struct ip_info { struct ip_addr gw; }; -#define IP4_ADDR(ipaddr, a,b,c,d) \ - (ipaddr)->addr = ((uint32)((d) & 0xff) << 24) | \ - ((uint32)((c) & 0xff) << 16) | \ - ((uint32)((b) & 0xff) << 8) | \ - (uint32)((a) & 0xff) - /** * Determine if two address are on the same network. * From 954499bc120b129d69de104a321085cd27b34a07 Mon Sep 17 00:00:00 2001 From: Kiril Zyapkov Date: Sat, 11 Jul 2015 12:35:02 +0300 Subject: [PATCH 2/4] httpUpdate: fix case sensitivity issues On Linux (presumably Mac too), the header of the library could not be included, caps changed to match the filename. The line 'architectures=ESP8266' in library.properties caused: WARNING: library ESP8266httpUpdate claims to run on [ESP8266] architecture(s) and may be incompatible with your current board which runs on [esp8266] architecture(s). --- libraries/ESP8266httpUpdate/library.properties | 4 ++-- libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266httpUpdate/library.properties b/libraries/ESP8266httpUpdate/library.properties index 9be2f7d6d..fa53da051 100644 --- a/libraries/ESP8266httpUpdate/library.properties +++ b/libraries/ESP8266httpUpdate/library.properties @@ -1,8 +1,8 @@ name=ESP8266httpUpdate version=1.0 author=Markus Sattler -maintainer=Markus Sattler +maintainer=Markus Sattler sentence=Http Update for ESP8266 paragraph= url=https://github.com/Links2004/Arduino/tree/esp8266/hardware/esp8266com/esp8266/libraries/ESP8266httpUpdate -architectures=ESP8266 +architectures=esp8266 diff --git a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp index d6d3becec..8c42afffc 100644 --- a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp +++ b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp @@ -23,7 +23,7 @@ * */ -#include "ESP8266HTTPUpdate.h" +#include "ESP8266httpUpdate.h" ESP8266HTTPUpdate::ESP8266HTTPUpdate(void) { From 1cd50e481f7e9f7b90cd41b7182f0adb91917f37 Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Sat, 11 Jul 2015 13:55:39 +0300 Subject: [PATCH 3/4] Update OTA Sketch --- .../examples/DNS_SD_Arduino_OTA/DNS_SD_Arduino_OTA.ino | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266mDNS/examples/DNS_SD_Arduino_OTA/DNS_SD_Arduino_OTA.ino b/libraries/ESP8266mDNS/examples/DNS_SD_Arduino_OTA/DNS_SD_Arduino_OTA.ino index e7dc97795..31c30f2eb 100644 --- a/libraries/ESP8266mDNS/examples/DNS_SD_Arduino_OTA/DNS_SD_Arduino_OTA.ino +++ b/libraries/ESP8266mDNS/examples/DNS_SD_Arduino_OTA/DNS_SD_Arduino_OTA.ino @@ -54,8 +54,11 @@ void loop() { WiFiClient client; if (client.connect(remote, port)) { - Serial.setDebugOutput(true); - while(!Update.isFinished()) Update.write(client); + uint32_t written; + while(!Update.isFinished()){ + written = Update.write(client); + if(written > 0) client.print(written, DEC); + } Serial.setDebugOutput(false); if(Update.end()){ From 2f34d6d74aace39888ac141525db4c98afcb866f Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 13 Jul 2015 04:20:25 +0300 Subject: [PATCH 4/4] Upload doc folder along with a package --- changes.md => doc/changes.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changes.md => doc/changes.md (100%) diff --git a/changes.md b/doc/changes.md similarity index 100% rename from changes.md rename to doc/changes.md