diff --git a/doc/changes.md b/doc/changes.md index 7d19d6166..763371c3c 100644 --- a/doc/changes.md +++ b/doc/changes.md @@ -6,10 +6,44 @@ title: Change Log ### Core +- Allow control of enabling debug and debug level from IDE +- Make HardwareSerial::begin() and end() interrupt safe +- Put HardwareSerial and cbuf methods called from interrupt context in RAM +- Re-enable interrupts before directly enqueuing characters in the UART FIFO +- Add espduino board +- Rework StreamString::write to use String internal buffer directly (#1289) +- Add function to measure stack high water mark +- Update SDK to esp_iot_sdk_v1.5.0_15_12_15_p1 +- Fix RAM corruption caused by our hook of register_chipv6_phy(init_data*). +- Optimize PWM interrupt handler for better precision +- Add warning levels configurable through Preferences +- Protect HardwareSerial's cbuf usage with InterruptLock +- SPIFFS: check if path length is valid (#1089) +- Set CPU frequency before running setup +- Add core_esp8266_features.h to be able to detect the features and libraries included in the ESP core +- Added ESPino to supported boards + ### Libraries +- ESP8266HTTPClient: add CHUNKED encoding support (#1324) +- Fixed crash bug with mDNS where a string buffer could be used uninitialized +- Add WiFi TX power control +- Add WiFi sleep management +- Allow to hook into WiFi events from sketch +- Allow setting TCP timeout +- Add setSleepMode + getSleepMode and setPhyMode + getPhyMode to WiFi +- Update GDBStub library with the source of esp-gdbstub +- Servo: fix detach and attach +- ESP8266mDNS: refactoring, add TXT support +- Add HTTP Basic Auth to WebServer and libb64 (base64) to core +- Fix link-time dependency of ESP8266WebServer on SPIFFS (#862) +- Allow setting client side TLS key and certificate +- Replace chain of UDP pbufs with a single pbuf before sending (#1009) + ### Tools +- espota.py: add support for manually selecting ip and port for host side + --- ## 2.0.0 November 30, 2015 diff --git a/tools/espota.py b/tools/espota.py index 9913f0045..d3b125492 100755 --- a/tools/espota.py +++ b/tools/espota.py @@ -5,11 +5,12 @@ # # Modified since 2015-09-18 from Pascal Gollor (https://github.com/pgollor) # Modified since 2015-11-09 from Hristo Gochkov (https://github.com/me-no-dev) +# Modified since 2016-01-03 from Matthew O'Gorman (https://githumb.com/mogorman) # # This script will push an OTA update to the ESP -# use it like: python espota.py -i -p [-a password] -f +# use it like: python espota.py -i -I -p -P [-a password] -f # Or to upload SPIFFS image: -# python espota.py -i -p [-a password] -s -f +# python espota.py -i -I -p -P [-a password] -s -f # # Changes # 2015-09-18: @@ -22,6 +23,10 @@ # - Added digest authentication # - Enchanced error tracking and reporting # +# Changes +# 2016-01-03: +# - Added more options to parser. +# from __future__ import print_function import socket @@ -64,11 +69,10 @@ def update_progress(progress): sys.stderr.write('.') sys.stderr.flush() -def serve(remoteAddr, remotePort, password, filename, command = FLASH): +def serve(remoteAddr, localAddr, remotePort, localPort, password, filename, command = FLASH): # Create a TCP/IP socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - serverPort = random.randint(10000,60000) - server_address = ('0.0.0.0', serverPort) + server_address = (localAddr, localPort) logging.info('Starting on %s:%s', str(server_address[0]), str(server_address[1])) try: sock.bind(server_address) @@ -82,7 +86,7 @@ def serve(remoteAddr, remotePort, password, filename, command = FLASH): file_md5 = hashlib.md5(f.read()).hexdigest() f.close() logging.info('Upload size: %d', content_size) - message = '%d %d %d %s\n' % (command, serverPort, content_size, file_md5) + message = '%d %d %d %s\n' % (command, localPort, content_size, file_md5) # Wait for a connection logging.info('Sending invitation to: %s', remoteAddr) @@ -209,12 +213,24 @@ def parser(): help = "ESP8266 IP Address.", default = False ) + group.add_option("-I", "--host_ip", + dest = "host_ip", + action = "store", + help = "Host IP Address.", + default = "0.0.0.0" + ) group.add_option("-p", "--port", dest = "esp_port", type = "int", help = "ESP8266 ota Port. Default 8266", default = 8266 ) + group.add_option("-P", "--host_port", + dest = "host_port", + type = "int", + help = "Host server ota Port. Default random 10000-60000", + default = random.randint(10000,60000) + ) parser.add_option_group(group) # auth @@ -294,7 +310,7 @@ def main(args): command = SPIFFS # end if - return serve(options.esp_ip, options.esp_port, options.auth, options.image, command) + return serve(options.esp_ip, options.host_ip, options.esp_port, options.host_port, options.auth, options.image, command) # end main