From b605ab316e31a86cce3f656473c097754c7b8dcb Mon Sep 17 00:00:00 2001 From: John Doe <ficeto@Hristos-Mac-mini.local> Date: Fri, 10 Jul 2015 22:21:48 +0300 Subject: [PATCH] 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 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 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. *