1. 13 Mar, 2018 1 commit
    • Nathaniel Wesley Filardo's avatar
      Update to sdk 2.2 · c972d86e
      Nathaniel Wesley Filardo authored
      Initial commit for
      https://github.com/nodemcu/nodemcu-firmware/issues/2225 .
      
      Replay patches from Espressif's repository at
      https://github.com/espressif/ESP8266_NONOS_SDK between tags v2.1.0 and
      v2.2.0:
      
      	0001-sync-from-ccca00f2.patch
      
      		Superseded by existing changes, but lines reordered in app/driver/key.c
      		to minimize divergences.
      
      	0002-sync-from-3f38ad5a.patch
      
      		Upstream files only
      
      	0003-Update-links.patch
      
      		Not meaningful to NodeMCU
      
      	0004-sync-from-01990ad0.patch
      	0005-sync-from-cdf6877d.patch
      
      		Upstream files only
      
      	0006-sync-from-f29e744c.patch
      
      		Upstream files only, user_interface.h override non-conflicting
      
      	0009-feat-lwip-Move-lwip-source-code-to-third_party-folde.patch
      
      		Merged change to lwip/app/espconn_udp.c; rest is just moves or
      		appears to not apply.
      
      	0010-feat-mbedtls-Add-mbedtls-source-code-in-third_party-.patch
      
      		Does not apply; we use our own mbedtls
      
      	0011-added-C-support.patch
      
      		Merged to Makefile
      
      	0012-feat-mbedtls-Rebuild-libmbedtls.patch
      
      		Already applied
      
      	0013-fix-at-Fix-some-bugs-of-AT.patch
      
      		Upstream files only
      
      	0014-feat-err_t-Redefine-err_t-to-s32_t.patch
      
      		Merged to app/include/arch/cc.h and ./app/include/lwip/app/espconn.h;
      		the rest is upstream files.
      
      	0015-fix-wpa-Fix-wpa-wpa2-ptk-gtk-reinstallation-vulnerab.patch
      	0016-fix-wifi-Remove-group-key-entry-before-connecting-to.patch
      	0017-feat-lib-Remove-time-function-in-libmain.patch
      
      		Upstream files only
      
      	0018-feat-espconn-Modification-for-espconn.patch
      
      		Merged to app/include/lwip/app/espconn.h,
      		app/include/lwip/app/espconn_tcp.h, app/lwip/app/espconn.c,
      		app/lwip/app/espconn_tcp.c
      
      	0019-feat-at-Use-new-espconn_recv-to-fix-tcp-server-issue.patch
      	0020-feat-examples-Update-mqtt-demo-and-auto-bin-generate.patch
      
      		Upstream files only
      
      	0021-wifi-Add-scan-threshold-and-dwell-time.patch
      	0022-feat-wifi-Add-country-code-API.patch
      	0023-feat-wifi-Record-more-information-of-scanned-ap.patch
      
      		Upstream files only, user_interface.h override non-conflicting
      
      	0024-fix-example-Fix-IoT_Demo-user-sector-error.patch
      
      		Upstream files only
      
      	0025-fix-lwip-Fix-sequence-number-error-of-RST-ACK.patch
      
      		Merged app/lwip/core/tcp_in.c
      
      	0026-fix-mbedtls-Fix-memory-leak.patch
      
      		Merged app/mbedtls/app/lwIPSocket.c
      
      	0027-fix-mbedtls-Fix-call-send-callback-function-failed.patch
      
      		Merged app/mbedtls/app/espconn_mbedtls.c
      
      	0028-feat-Add-USE_OPTIMIZE_PRINTF-in-third_party-Makefile.patch
      
      		Merged app/Makefile
      
      	0029-fix-api-Fix-ets_delay_us-declaration.patch
      
      		Upstream files only, osapi.h override non-conflicting
      
      	0030-fix-wifi-Remove-max_tx_power-in-wifi_country_t-in-li.patch
      	0031-fix-wifi-Fix-softAP-wrong-behavior-after-call-system.patch
      	0032-fix-wifi-bugfix-of-scan-fail-after-connected-if-max-.patch
      	0033-feat-at-Enable-scan-time-scan-type-and-add-scan-resu.patch
      	0034-feat-at-Add-command-AT-CWCOUNTRY.patch
      	0035-fix-at-Fix-that-AT-CIPSTART-causes-busy-if-the-serve.patch
      
      		Upstream files only
      
      	0036-feat-mbedtls-Speed-up-mbedtls-handshake-process.patch
      
      		Merged app/mbedtls/app/espconn_mbedtls.c
      
      	0037-fix-api-Fix-os_calloc-declaration.patch
      
      		Merged app/include/lwip/mem.h; sdk-overrides/include/mem.h
      		non-conflicting.
      
      	0038-fix-mbedtls-Fix-disconnect-callback-function-never-b.patch
      
      		Merged app/mbedtls/app/espconn_mbedtls.c; minor revision to logic in
      		6576af95.  Whitespace fixes.
      
      	0039-feat-at-Add-country-code-start-channel-in-AT-CWCOUNT.patch
      	0040-fix-net80211-Fix-Null-pointer-in-ieee80211_rfid_locp.patch
      
      		Upstream files only
      
      	0041-feat-wifi-Add-new-esp_init_data_default-v08-bin.patch
      
      		Upstream files only, but impacts Makefile
      
      	0042-fix-mbedtls-Fix-load-cert-fail-when-the-private-key-.patch
      
      		Merged app/mbedtls/app/espconn_mbedtls.c
      
      	0043-fix-wifi-The-start-channel-can-be-any-valid-channel.patch
      	0044-fix-wifi-Fix-scan-do-not-start-after-connect.patch
      	0045-feat-wifi-Add-keep-connection-for-station-to-keep-co.patch
      	0046-feat-at-Update-AT-version-to-1.6.0.0.patch
      	0047-fix-at-Fix-GSLP-too-long-time.patch
      	0048-fix-at-Fix-the-message-is-incorrect-when-creating-UD.patch
      	0049-feat-at-Add-AT-CIPSERVERMAXCONN.patch
      
      		Upstream files only
      
      	0050-feat-system-Add-softap-distributes-station-ip-event.patch
      
      		Upstream files only, user_interface.h override non-conflicting
      
      	0051-feat-example-Use-libmbedtls.a-instead-of-libssl.a-in.patch
      
      		Upstream files only
      
      	0052-feat-mesh-Remove-mesh-support.patch
      
      		Upstream files only, but go ahead and remove comment from
      		ld/nodemcu.ld.
      
      	0053-fix-example-Fix-forget-to-add-integer-parameter-when.patch
      
      		Upstream files only
      
      	0054-fix-mbedtls-Fix-reconnect_callback-is-not-triggered-.patch
      
      		Merged app/mbedtls/app/espconn_mbedtls.c
      
      	0055-feat-at-Add-AT-SYSMSG-to-enable-some-report-informat.patch
      	0056-fix-at-Fix-the-incorrect-link-id-when-client-connect.patch
      	0057-fix-at-Fix-the-bug-that-it-should-be-error-when-the-.patch
      	0058-fix-smartconfig-Fix-the-smartconfig-scan-time-issue.patch
      	0059-fix-lwip-Fix-the-bug-of-lwip-output.patch
      
      		Upstream files only
      
      	0060-fix-lwip-Fix-the-length-of-TCP-data-in-one-packet-is.patch
      	0061-fix-lwip-Fix-send-TCP-data-with-two-or-more-pbuf.patch
      
      		Merged app/lwip/core/tcp_out.c
      
      	0062-fix-wifi-Fix-assert-happen-when-smartconfig-start-th.patch
      
      		Upstream files only
      
      	0063-fix-mbedtls-Fix-memory-leak-when-ESP8266-as-SSL-TLS-.patch
      
      		Merged app/mbedtls/app/espconn_mbedtls.c
      
      	0064-fix-mbedtls-Fix-already-freed-and-exception-bug-when.patch
      
      		Merged app/mbedtls/app/lwIPSocket.c
      
      	0065-fix-at-Fix-bug-that-there-is-no-result-when-sending-.patch
      	0066-feat-example-Add-AT-bin-version.patch
      	0067-feat-version-Update-version-to-2.2.0-and-add-version.patch
      	0068-feat-bin-Update-AT-bin-for-SDK-2.2.0.patch
      
      		Upstream files only
      
      Apply local changes to build:
      
      	app/include/lwip/app/espconn.h pulls changes (and license decl) from
      	upstream SDK.  Makefile is altered to use this file ahead of the
      	SDK's.
      
      	Remove lwip's sntp support, since it was never really wired in anyway.
      	See https://github.com/nodemcu/nodemcu-firmware/issues/2042 for more
      	information.  Patch Makefile to strip time.o, the consumer of lwip's
      	sntp functionality, from libmain.a, resulting in much
      	easier-to-understand error messages.
      
      	This has consequences for mbedtls.  The simplest thing to do, which is,
      	impressively, not a change in behavior, is to completely disable TLS
      	certificate time validation; a later patch can optionally couple this to
      	RTCTIME support.
      
      	Similarly, it happens that the sqlite3 import was calling time(), but
      	this was not going to work out well for it.  Just stub it out to always
      	return unix timestamp 0, as would have happened anyway.
      
      Changes unprocessed:
      
      	0007-sync-from-080c37e1.patch
      	0008-feat-lib-Compile-some-libraries-with-ffunction-secti.patch
      
      		These two make changes to the linker script; perhaps
      		they are worth porting over, but I have not done so
      		here.
      
      This is build-tested (ADC, BIT, COLOR_UTILS, CRON, CRYPTO, DHT, ENCODER,
      FILE, GPIO, HTTP, I2C, MQTT, NET, NODE, OW, PCM, PERF, PWM, RTCFIFO,
      RTCMEM, RTCTIME, SNTP, SPI, SQLITE3, STRUCT, TLS, TMR, UART, WIFI,
      WS2812, WS2812_EFFECTS) and boots, but only limited run-time testing has
      been performed.  Testing done does, however, include having made a few
      TLS connections through the HTTP module, so things are not hopelessly
      broken, at the very least.
      c972d86e
  2. 07 Feb, 2018 1 commit
  3. 16 May, 2017 1 commit
  4. 26 Dec, 2016 1 commit
  5. 07 Dec, 2016 1 commit
  6. 04 Dec, 2016 1 commit
  7. 01 Dec, 2016 1 commit
    • Marcel Stör's avatar
      Next 1.5.4.1 master drop (#1627) · 04ce0adf
      Marcel Stör authored
      * add u8g.fb_rle display
      
      * move comm drivers to u8g_glue.c
      
      * disable fb_rle per default
      
      * implement file.size for spiffs (#1516)
      
      Another bug squashed!
      
      * Fix start-up race between UART & start_lua. (#1522)
      
      Input during startup (especially while doing initial filesystem format)
      ran the risk of filling up the task queue, preventing the start_lua task
      from being queued, and hence NodeMCU would not start up that time.
      
      * Reimplemented esp_init_data_default.
      
      To work around the pesky "rf_cal[0] !=0x05" hang when booting on a chip
      which doesn't have esp_init_data written to it.
      
      It is no longer possible to do the writing of the esp_init_data_default
      from within nodemcu_init(), as the SDK now hangs long before it gets
      there.  As such, I've had to reimplement this in our user_start_trampoline
      and get it all done before the SDK has a chance to look for the init data.
      It's unfortunate that we have to spend IRAM on this, but I see no better
      alternative at this point.
      
      * Replace hardcoded init data with generated data from SDK
      
      The esp_init_data_default.bin is now extracted from the SDK (and its
      patch file, if present), and the contents are automatically embedded
      into user_main.o.
      
      * Rework flashing instructions
      
      Clarifies issues around SDK init data and hopefully clears up some
      confusion, when paired with the esp_init_data_default changes in
      NodeMCU.
      
      * Fix typo
      
      * Fixes the gpio.serout problem from #1534 (#1535)
      
      * Fix some issues in gpio.serout
      * Minor cleanup
      
      * fix dereferencing NULL pointer in vfs_errno() (#1539)
      
      * add map ids for flash sizes 32m-c2, 64m, 128m in user_rf_cal_sector_set() (#1529)
      
      * Somfy/TELIS driver (#1521)
      
      * Reduced LUAL_BUFFERSIZE to 256. Should free up some stack (#1530)
      
      * avoid task queue overrun for serial input (#1540)
      
      Thank you.
      
      * Increase irom0_0_seg size for PR build
      
      * Improve reliability of FS detection. (#1528)
      
      * Version to make filesystem detection more reliable
      * Improve bad fs detection
      
      * Version of printf that doesn't suffer from buffer overflows (#1564)
      
      * Small improvement to http client (#1558)
      
      * Remove luaL_buffer from file_g_read() (#1541)
      
      * remove luaL_buffer from file_g_read()
      - avoid memory leak when function gets terminated by lua_error
      - skip scanning for end_char when reading until EOF
      * attempt to free memory in any case
      
      * Change HTTP failures from debug to error messages (#1568)
      
      * Change HTTP failures from debug to error messages
      
      * Add tag to HTTP error messages
      
      * Create macro for error msg and improve dbg msg
      
      * Add ssd1306_128x32 for U8G (#1571)
      
      * Update CONTRIBUTING.md
      
      * Add support to mix ws2812.buffer objects.  (#1575)
      
      * Add load/dump/mix/power operations on the buffer object
      * Calculate the pixel value in mix and then clip to the range.
      * Fixed the two wrong userdata types
      * Added a couple more useful methods
      * Add support for shifting a piece of the buffer.
      * Fix a minor bug with offset shifts
      
      * Update to the wifi module (#1497)
      
      * Removed inline documentation for several functions and update comments
      Since documentation is now part of the repository, the inline
      documentation just adds to the already huge wifi.c
      
      * Wifi module: add new functionality, update documentation
      
      Functions Added:
      wifi.getdefaultmode(): returns default wifi opmode
      wifi.sta.apchange(): select alternate cached AP
      wifi.sta.apinfo(): get cached AP list 
      wifi.sta.aplimit(): set cached AP limit
      wifi.sta.getapindex(): get index of currently configured AP
      wifi.sta.getdefaultconfig(): get default station configuration
      wifi.ap.getdefaultconfig(): get default AP configuration
      
      functions modified:
      wifi.setmode: saving mode to flash is now optional
      wifi.sta.config: now accepts table as an argument and save config to
      flash is now optional
      wifi.sta.getconfig: added option to return table
      wifi.ap.config: save config to flash is now optional
      wifi.ap.getconfig: added option to return table
      
      Documentation changes:
      - Modified documentation to reflect above changes
      - Removed unnecessary inline documentation from `wifi.c` 
      - Updated documentation for `wifi.sta.disconnect`to address issue #1480 
      - Fixed inaccurate documentation for function `wifi.sleeptype`
      - Added more details to `wifi.nullmodesleep()`
      
      * Move function `wifi.sleeptype()` to `wifi.sta.sleeptype()`
      
      * Fixed problem where wifi.x.getconfig() returned invalid strings when
      ssid or password were set to maximum length.
      
      * fix error in documentation for `wifi.sta.getapindex`
      
      * Renamed some wifi functions
      wifi.sta.apinfo -> getapinfo
      wifi.sta.aplimit -> setaplimit 
      wifi.sta.apchange -> changeap
      
      also organized the wifi_station_map array
      
      * Make the MQTT PING functionality work better. (#1557)
      
      Deal with flow control stopped case
      
      * Implement object model for files (#1532)
      
      * Eus channelfix (#1583)
      
      Squashed commits included:
      
      Bug fixes and final implementation
      - Added Content-Length: 0 to all headers
      - Endpoint name checks not using trailing space so cache-busting techniques can be used (i.e., append a nonce to the URL)
      - Track when connecting so APList scan doesn't take place during (which changes the channel)
      - More debugging output added to assist in tracking down some issues
      
      Added /status.json endpoint for phone apps/XHR to get JSON response
      
      Station Status caching for wifi channel workaround + AJAX/CORS
      - During checkstation poll, cache the last station status
      - Shut down the station if status = 2,3,4 and channel is different than SoftAP
      - Add Access-Control-Allow-Origin: * to endpoint responses used by a service
      - Add a /setwifi GET endpoint for phone apps/XHR to use (same parameters as /update endpoint). Returns a JSON response containing chip id and status code.
      - Add handler for OPTIONS verb (needed for CORS support)
      
      Wi-Fi Channel Issue Workaround
      - Do a site survey upon startup, set SoftAP channel to the strongest rssi's channel
      - Compare successful station connect channel to SoftAP's. If different, then defer the Lua success callback to the end. Shut down Station and start the SoftAP back up with original channel.
      - After the 10 second shutdown timer fires, check to see if success callback was already called. If not, then call it while starting the Station back up.
      
      HTTP Response and DNS enhancements
      - If DNS's UDP buffer fills up, keep going as non-fatal. It's UDP and not guaranteed anyways. I've seen this occur when connecting a PC to the SoftAP and every open program tries to phone home at the same time, overwhelming the EUS DNS server.
      - Support for detecting/handling pre-gzipped `enduser_setup.html` (and `http_html_backup`) payload. Nice for keeping the size of the `state->http_payload_data` as small as possible (also makes minimization not as critical)
      - Corrected misuse of HTTP 401 response status (changed one occurrence to 400/Bad Request, and changed another to 405/Method Not Allowed)
      
      * Normalized formatting (tabs-to-spaces)
      * Added documentation
      * Corrected misuse of strlen for binary (gzip) data.
      * Added NULL check after malloc
      
      * fix vfs_lseek() result checking in enduser_setup and clarify SPIFFS_lseek() return value (#1570)
      
      * Fix link
      
      * Overhaul flashing docs once again (#1587)
      
      * Add chapter about determine flash size plus small fixes
      * Rewrite esptool.py chapter, move flash size chapter to end
      
      * i2c - allow slave stretching SCL (just loop and check) (#1589)
      
      * Add note on dev board usage of SPI bus 0 (#1591)
      
      * Turn SPI busses note to admonition note
      
      * support for custom websocket headers (#1573)
      
      Looks good to me. Thank you.
      
      Also:
       - allow for '\0's in received messages
      
      * add client:config for setting websocket headers
      
      Also:
       - headers are case-insensitive now
      
      * fix docs
      
      * fix typo
      
      * remove unnecessary luaL_argcheck calls
      
      * replace os_sprintf with simple string copy
      
      * Handle error condition in file.read() (#1599)
      
      * handle error condition in file.read()
      
      * simplify loop initialization
      
      * Fix macro as suggested in #1548
      
      * Extract and hoist net receive callbacks
      
      This is done to avoid the accidental upval binding
      
      * Fix typo at rtctime.md
      
      rtctime.dsleep -> rtctime.dsleep_aligned
      04ce0adf
  8. 27 Oct, 2016 1 commit
  9. 18 Oct, 2016 1 commit
  10. 13 Oct, 2016 1 commit
  11. 04 Oct, 2016 2 commits
    • Jim Paris's avatar
      Replace hardcoded init data with generated data from SDK · 407eaa45
      Jim Paris authored
      The esp_init_data_default.bin is now extracted from the SDK (and its
      patch file, if present), and the contents are automatically embedded
      into user_main.o.
      407eaa45
    • Johny Mattsson's avatar
      Reimplemented esp_init_data_default. · 088d2c38
      Johny Mattsson authored
      To work around the pesky "rf_cal[0] !=0x05" hang when booting on a chip
      which doesn't have esp_init_data written to it.
      
      It is no longer possible to do the writing of the esp_init_data_default
      from within nodemcu_init(), as the SDK now hangs long before it gets
      there.  As such, I've had to reimplement this in our user_start_trampoline
      and get it all done before the SDK has a chance to look for the init data.
      It's unfortunate that we have to spend IRAM on this, but I see no better
      alternative at this point.
      088d2c38
  12. 03 Oct, 2016 1 commit
  13. 05 Sep, 2016 1 commit
    • Arnim Läuger's avatar
      Add FatFs and SD card support (#1397) · ecf8bd98
      Arnim Läuger authored
      * Add FatFs
      * enable BUILD_FATFS for all-module build
      * push vfs into rest of firmware
      * align maximum filename length
      * increase timeout for acmd41 during card initialization
      * switch from DOS to Unix path semantics chdrive() is substituted by chdir()
      * update to fatfs R.012a incl. patches 1-6
      * add callback for rtc provisioning in file
      * update docs
      ecf8bd98
  14. 04 Sep, 2016 1 commit
  15. 24 Jul, 2016 1 commit
  16. 22 Jul, 2016 1 commit
  17. 05 Jun, 2016 2 commits
  18. 27 May, 2016 2 commits
  19. 18 May, 2016 1 commit
    • Johny Mattsson's avatar
      Rework ADC mode setting approach (#1285) · 30d354c2
      Johny Mattsson authored
      - Stop fighting against the SDK in terms of owning/writing the init_data block.
        NodeMCU included a default init_data block because originally the SDK did
        not, but by now it's not needed.
      
      - Expose a way to reconfigure the ADC mode from Lua land. With most people
        using the cloud builder and not able to change the #define for byte 107
        this has been a pain point.
      
      - Less confusion about which init_data has been used. Lua code can now simply
        state what mode it wants the ADC to be in, and not worry about the rest of
        the init_data complexities such as the init_data changing location due to
        flashing with wrong flash_size setting, or doing/not doing a chip-erase
        before loading new NodeMCU firmware.
      30d354c2
  20. 23 Mar, 2016 1 commit
  21. 20 Mar, 2016 1 commit
  22. 11 Mar, 2016 1 commit
  23. 10 Mar, 2016 1 commit
  24. 26 Feb, 2016 1 commit
    • TerryE's avatar
      Make the wifi.smart functions options and remove wofs and upgrade · 46ea2aa4
      TerryE authored
      AFAIK no one uses the wifi.startsmart() and wifi.stopsmart().  Removing
      them frees up an extra 20-25K of Flash to use as filesystem.  So I have
      added a new config define WIFI_SMART_ENABLE which is enabled by default
      so the default functionality is the same, but if this is commented out
      then this code is omitted.
      
      I have also removed wofs and upgrade from this build as we no longer
      support these.
      46ea2aa4
  25. 17 Feb, 2016 1 commit
    • TerryE's avatar
      Add New Tasking I/F and rework GPIO, UART, etc to support it · 49733f6f
      TerryE authored
      As with the last commit this rolls up the follwowing, but include the various
      review comments on the PR.
      
      -   **Documentation changes**. I've added the taks FAQ as a stub new Extension
      developer FAQ, and split the old FAQ into a Lua Developer FAQ and a Hardware
      FAQ.
      
      -   **Tasking I/F**.  New `app/task/Makefile`, `app/task/task.c`,
      `app/include/task/task.h` and `app/Makefile` as per previous commit.  Cascade
      changes to `app/driver/uart.c`, `app/include/driver/uart.h`,
      `app/user/user_main.c` and `app/modules/node.c`
      
      -   **GPIO Rework** to `app/modules/gpio.c` and `pin_map.[hc]`, `platform.[hc]`
      in `app/platform`
      
      -   **Other Optimisations** Move the `platform_*_exists()` from
      `app/platform/common.c` to static inline declarations in `platform.h` as
      this generates faster, smaller code. Move lgc.a routines out of iram0.
      49733f6f
  26. 23 Dec, 2015 1 commit
  27. 12 Nov, 2015 1 commit
  28. 05 Nov, 2015 1 commit
    • Johny Mattsson's avatar
      Fix to do TCP port number randomization at boot. · f82415f6
      Johny Mattsson authored
      This addresses the issue where a server would otherwise reject a valid
      connection attempt from a rebooted node, due to the server thinking that
      packet belonged to a recently closed session. By starting off the local
      TCP port numbers at random* points each boot the risk of port reuse
      across a reboot is significantly reduced.
      
      *) As random as can be had via the lower 12 bits of the ccounter.
      f82415f6
  29. 01 Nov, 2015 1 commit
  30. 12 Oct, 2015 4 commits
  31. 10 Jul, 2015 2 commits
    • Johny Mattsson's avatar
      Imported reworked rtctime support. · dd38a0a0
      Johny Mattsson authored
      dd38a0a0
    • Johny Mattsson's avatar
      Imported RTC+sleep timekeeping from an internal DiUS project. · 21874249
      Johny Mattsson authored
      Added Lua module rtctime to interface with it.
      
      This keeps as accurate time as is possible on the ESP8266, including across
      deep sleeps (provided rtctime.dsleep() is used rather than node.dsleep()).
      Intended to be used together with NTP for high accuracy time keeping. The
      API is via rtctime.{get,set}timeofday(), working from Unix epoch.
      
      Note that 160MHz CPU clock is not currently supported by the rtctime code,
      as it is only aware of the 52MHz boot clock and the regular 80Mhz default
      clock.
      
      See rtctime.h for detailed info on how this all works.
      21874249
  32. 23 Jun, 2015 2 commits