1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-24 08:45:10 +03:00

2834 Commits

Author SHA1 Message Date
Earle F. Philhower, III
d0171574d8
Fix TCP race condition, remove fixed delay in CC (#5167)
ClientContext::_wait_for_sent() could dereference a TCP's _pcb after
the connection was dropped by the OS, resulting in a crash.

Move the connection dropped check to catch this case, and replace
a fixed millisecond delay() with a yield and timeout value to minimize
wasted time when transmission completes.
2018-09-26 08:47:10 -07:00
david gauchard
83a8076db8 ClientContext (tcp) updates (#5089)
* +sync, get/set default nodelay, sync

* default nodelay=1

* update flush()

* fix return value

* ClientContext: put things together

* ClientContext: fix debugging messages

* WiFiClient: move static members out of the class, add comments

* remove circular dependency

* parameter and return value for Client::flush&stop, flush timeout raised to 300ms

* tcp flush: restart timer on ack receive

* OTA protocol needs setNoDelay(true)

* fix Ethernet with Client changes

* 1 line unredable -> 5 lines readable code

* doc

* Update client-class.rst

* Added details for getters
2018-09-25 10:47:27 -03:00
aerlon
88bd26bd74 WiFi Mesh Update 2.1 (#5157)
* - Add assert in HelloMesh.ino for invalid transmission status.
- Make uint64ToString and stringToUint64 methods into stand-alone type conversion functions.
- Add getters and setters for requestHandler and responseHandler.
- Polish HelloMesh.ino code by adding networkIndex as networkFilter loop variable and switching networkFilter definition position.
- Add initial WiFi.disconnect() in HelloMesh.ino setup() function to ensure smooth WiFi operation.
- Add latestTransmissionSuccessful() convenience method.
- Change default WiFi mode to WIFI_STA and improve handling of WiFi mode (fixes issue #5071).
- Add checks to methods that change AP properties to avoid unnecessary AP restarts.
- Add getter for ESP8266WiFiMesh SSID and getters and setters for ESP8266WiFiMesh settings related to hidden SSID usage, max station connections allowed per AP and WiFi timeouts.
- Make waitForClientTransmission method use more accurate timekeeping.
- Improve type usage.
- Improve comments.
- Update README.md, keywords.txt and library.properties.

* Make getter and setter order consistent throughout code.

* - Fix active AP getting turned off when calling begin().
- Fix crash bug due to WiFiServer duplication when using the ESP8266WiFiMesh copy constructor with the AP controller as argument, under certain circumstances.

* - Move non performance-sensitive Strings to flash memory to save RAM.

- Add comments explaining F(), FPSTR() and PROGMEM.

- Fix README.md formatting.

* Remove the uint64ToString and stringToUint64 methods from the ESP8266WiFiMesh class since they are now stand-alone functions in the TypeConversionFunctions files.

* Change the minimum valid argument value of the setMaxAPStations method to 0, since this value is also supported by the ESP8266.

* Fix compiler warning.
2018-09-24 16:11:09 -03:00
david gauchard
d8a7a34caf automatically WiFiClient::flush before ::stop (#5135) 2018-09-22 00:23:36 -03:00
Earle F. Philhower, III
38779149d0 Move ICACHE_* to unique sections, local LD script (#5150)
* Move ICACHE_* to unique sections, local LD script

Similar to PROGMEM changes, make the name of each ICACHE_* variable/fuction
unique to avoid issues with section conflicts.

Also rename the generated LD linker script to avoid issue with older copies
of the eagle.app.v6.common.ld which were generated by the build process
in a global directory before being moved to the {build.path}.  The linker
would use the older, generated *.ld file instead of the generated one, which
would lead to runtime failures on some systems and cause the VTABLE location
to not correspond to the IDE menu selection.

Fixes #5115, and is an update to #5117 and #5116.

* Update boards.txt.py and platform.io build
2018-09-21 15:33:54 -03:00
Earle F. Philhower, III
0a04ebf76d Add full debug builds for all tests (#5146)
* Add full debug builds for all tests

In order to ensure the -DEBUG builds don't fail with checked-in code, add
two jobs which build even/odd with full debug flags to Travis.

Fixes #5143

* Add in dump of platform.txt to verify build options

* Fix BASH comparison of strings

* Fix debug-mode compile error in ESP8266AVRISP

* Add -Wextra to CI (matches IDE "All" warnings)
2018-09-21 13:14:13 -03:00
Earle F. Philhower, III
cc284bb533 Allow cipher specification for BearSSL (#5151)
* Allow cipher specification for BearSSL

BearSSL has many more ciphers than axTLS, but they are more compute intensive
and slower.  Add an option to use only the same, limited security, axTLS ciphers
as well as allow users to specify any suite of ciphers they want using standard
BearSSL formats.

Fixes #5110

* Rename methods to avoid axtls references.

* Allow std::vector to set a list of allowed ciphers

For C++ afficionados, allow std::vectors to be passed in to the setCipher()
routine.

The BearSSL object will now keep a copy of any set ciphers and free on object
destruction.  These custom lists should normally only be 1-4 entries long, so it
is not expected to be a memory hog having this extra copy.
2018-09-21 11:47:20 -03:00
Earle F. Philhower, III
1a44f79a9e
Update api.github.com certificate signature (#5145)
Fixes #5144
2018-09-18 08:28:16 -07:00
Earle F. Philhower, III
bc2d4ec18b Allow GPIO 9 and 10 for waveform generation (#5055)
* Allow GPIO 9 and 10 for waveform generation

While most ESP8266 modules use quad-io mode for their SPI flash ROM,
there are some which only use dual-io mode.  Allow the unused pins
(GPIO 9 and 10) to have waveforms generated on them.  Should the user try
this on a quad-io mode board, expect very bad things to happen.

* Add variant for 8285 to init GPIO 9/10

The 8285 only has 2-bit flash IO, so the other two pins can be used as
inputs (9/10).  Set them to input to mirror the way other pins are set
up.

* Update waveform gen to only allow 9/10 on 8285

Update the common.h in both generic (remove TODO, it's done!) and the
8285 variant to make isFlashInterfacePin macro correct.  Use that macro
to disable pins 9 and 10 in the common, non-8285 case.
2018-09-17 22:58:06 -03:00
Earle F. Philhower, III
cd43337f4f Fix connection options and update github pubkey (#5120)
As part of the "clear connection configuration for reused objects"
patch, a ::stop would reset the self-signed, trust anchors, etc.
WiFiClient, unfortunately, calls ::stop as part of the connection
process, so all of these settings were lost.

Now only clear the connection settings on ::stop if we've already
been connected.

Also update the github public key which changed yet again.

Fixes #5086
2018-09-16 23:24:42 -03:00
Earle F. Philhower, III
991d738176 Move SSLContext to its own header (#5121)
Simple refactor to make WiFiClientSecureAxTLS use an external header to
define its SSLContext, just as it does for several other classes.

Fixes #3648
2018-09-16 22:25:39 -03:00
sadykowich
5902103669 Create library.properties (#5129)
This file need to using this library in Eclipes CDT Arduino.
Without this file the library manager doesn't listing this library.
2018-09-13 18:28:54 -03:00
sadykowich
1f25997c16 Create library.properties (#5128)
This file need to using this library in Eclipes CDT Arduino.
Without this file the library manager doesn't listing this library.
2018-09-13 17:44:56 -03:00
sadykowich
bd613beb5c Create library.properties (#5127)
This file need to using this library in Eclipes CDT Arduino.
Without this file the library manager doesn't listing this library.
2018-09-13 16:56:33 -03:00
Develo
0e0e34c614
implement EspClass::getFreeContStack method (#5133)
* implement EspClass::getFreeContStack method

* Remove unneeded extern

* Really remove unneeded extern
2018-09-13 16:02:53 -03:00
Earle F. Philhower, III
7e1bdb225d
Require sphinx 1.7 due to bugs with new v1.8 (#5132)
Sphinx 1.8.0 seems to always fail to build the docs due to interactions
with doctest.py.  This means no CI builds can pass and no new PRs can be
applied.

Fix the version at 1.7.9 for now until the dependencies get updated to with 1.8.

The error seen is:
  File "/home/travis/.local/lib/python2.7/site-packages/sphinx/highlighting.py", line 26, in <module>
    from sphinx.ext import doctest
SyntaxError: unqualified exec is not allowed in function 'run' it contains a nested function with free variables (doctest.py, line 97)
The full traceback has been saved in /tmp/sphinx-err-e8JyUQ.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks!
2018-09-12 14:20:02 -07:00
Earle F. Philhower, III
aa8c53537a
Undo 5117 changes to ICACHE macros (#5130)
With the changes in PR #5117, blink and other examples compile but the 8266
gets stuck in a reset loop.  Undo the changes from that commit until we can
figure out the root cause and fix it.
2018-09-12 08:56:15 -07:00
Ivan Grokhotkov
8f438b18db Update axTLS to e634adf (#5125) 2018-09-12 07:49:42 -07:00
Takayuki 'January June' Suwa
622569cde2 Make unique sections for ICACHE_* variables (#5117)
Similar to PROGMEM changes, make the name of each ICACHE_* variable/fuction
unique to avoid issues with section conflicts.

Fixes #5115
2018-09-11 14:38:37 -03:00
sadykowich
91519309d0 Add files via upload (#5119)
add missing ESP8266mDNS/library.properties
(needed for eclipse)
2018-09-11 15:36:14 +02:00
david gauchard
cee458a68e
restore SPIFFS symbols when null-sized (#5122)
fix comments
fix cc0bfa04d4 (commitcomment-30462616)
2018-09-11 14:25:05 +02:00
david gauchard
ce28a76a24 metric for heap fragmentation (#5090)
* +Esp.getHeapUnfragness()

* only in debug mode

* default value

* always enable, 64->32, light 32 integer square root, comments

* fix when debugging is disabled

* give credits

* cosmetics

* fragmentation metric updates (doc, better api, added getMaxFreeBlockSize())

* api reworked, +example

* fixe types, fix names

* coding style fix

* use astyle for example
2018-09-10 01:50:01 -03:00
yoursunny
bbaea5a358 ESP8266HTTPClient: allow getString() more than once (#5091)
fixes #4951
2018-09-09 00:34:20 -03:00
Develo
4fdff072e8
read all lines from slow servers (#5113)
Replaces #1829
2018-09-07 15:07:59 -03:00
david gauchard
cc0bfa04d4
boards generator: updates (#5103)
boards generator updates:
* simplified mapping description: only flash and spiffs sizes are needed
* some ldscripts are renamed due to autogenerated names
* +2M/0, +2M/512K spiffs, +4M0
* reduce length of hidden strings in boards.txt (#5100, https://github.com/arduino/arduino-builder/issues/284)
* give more details in ldscripts (address, size,  +rf-cal, +sdk-wifi-settings)
2018-09-03 22:29:27 +02:00
aerlon
c33ef89f60 Fix formatting of bullet lists (#5098) 2018-08-31 14:03:37 -03:00
David Albert
3164af0f35 Update readme.rst (#5092)
Document additional build flag needed to support WPS under 2.4.2
2018-08-30 13:24:52 -03:00
David Albert
a917ad9941 Update a05-board-generator.rst (#5093)
Added additional information about where to find the core root directory (often deeply hidden) so users can run board generator
2018-08-29 23:52:44 -04:00
aerlon
1d841953ab Soft-AP documentation update (#5088)
* Add information about the max_connection constructor argument.

* Correct information about max soft-AP connections.

* Add information about what happens when max_connection is reached.

* Correct terminology

* - Correct the valid range of max_connection to 1 - 8.
- Include reference.
2018-08-29 11:17:44 -04:00
yoursunny
1ed7bee15e doc: improve WiFi.persistent documentation (#5081)
fixes #3641
2018-08-29 01:39:09 -04:00
jlpuder
9634f79f45 Format lists for readability (#5082)
Changed in-line style to bulleted lists for improved readability
2018-08-27 09:58:25 -04:00
Ivan Grokhotkov
0713a01db8 Fix iostream related issues (#5047)
* add stubs for more exception throw calls

Fixes https://github.com/esp8266/Arduino/issues/3358

* libc: make putc_r implementation weak

newlib provides its own implementation of _putc_r, which will call
_write_r (possibly after buffering). Make our implementation weak to
allow using the one from newlib.

Fixes https://github.com/esp8266/Arduino/issues/4630

* libc: fix incorrect return value of _write_r call

Should return number of bytes written, actually returned zero. This
resulted in std::cout going into failed state after the first write.

* tests: add test for output to std::cout
2018-08-26 13:47:01 -04:00
yoursunny
0da54d88a9 Hash: make actual SHA1 result and comment consistent (#5057)
fixes #3437
2018-08-25 23:24:23 -04:00
Philip Dorr
18f643c7e2 Fix min and max for Servo library (#5064)
Use the optionally defined min/max values instead of the hard-coded limits
for pulse widths.
2018-08-20 09:01:07 -07:00
david gauchard
85e68093e9
Automatic stack location selection (SYS or HEAP), enable per library AR-chive in arduino build system (#5018)
Automatic stack location selection (SYS or HEAP), enable per library AR-chive in arduino build system 

* enable dot_a_linkage on internal libraries
* add device tests
* boards generator: deprecate --noextra4k/--allowWPS and fix documentation
2018-08-20 14:35:52 +02:00
Ivan Grokhotkov
9f67d83907
build: place generated ld script into build directory (#5043)
arduino-builder 1.3.25 (shipped with Arduino 1.8.5) forces full
recompilation when any file in the core directory is modified. Avoid
full recompilation by placing generated ld script into build
directory, not source directory.

Also fix an issue where git version description would not be generated
if there were spaces in build path.
2018-08-20 17:17:49 +08:00
Ivan Grokhotkov
b65709021a
package: add version to board package name (#5046)
In tools menu, boards belonging to each platform are grouped together.
The title of the groups is the board package name. When switching
between versions, mentioning the version number in package name helps
identify the installed version.

Rename board group from "ESP8266 Modules" to "ESP8266 Boards", to be
more similar to other platforms, and to reflect the fact that most
entries included are boards, not modules.

As an extra change, when building the boards manager package, set
version number in platform.txt based on git tag name. This saves one
step when creating the release — don't need to update platform.txt
twice.

Closes https://github.com/esp8266/Arduino/issues/5007.
2018-08-20 17:16:51 +08:00
Anthony Elder
5c7dbf4e4b Add instantly option to deepSleep (#5052)
* Add instantly option to deepSleep

* Move system_deep_sleep_instant to a new deepSleepInstant function
2018-08-19 05:46:33 -03:00
Anthony Elder
61cc11da22 revert e02932f (#619 works now without it) (#5056) 2018-08-19 04:38:18 -03:00
Earle F. Philhower, III
d96c8f393e
Move some exception strings to PROGMEM (#5050)
The memory allocation failure message was accidentally stored in RAM
and not in PROGMEM.

panic() did not place the __FILE__ string in PROGMEM, either.

Move both to PROGMEM, save ~64 bytes of heap (depends on size of path
of the Arduino core library).
2018-08-16 08:15:02 -07:00
Earle F. Philhower, III
831e75d79e Enclose PROGMEM segment names in quotes (#5049)
__FILE__ is used to name the segments used for each PROGMEM constant,
but __FILE__ may have a space in it.  This would cause compilation
errors.

Add quotes around the entire segment name to work around this.
2018-08-15 16:04:56 -03:00
Earle F. Philhower, III
56b98fd4df Move all PROGMEM to their own section (#5048)
According to the GCC man page, __section__ attributes should only be used
for global variables.  However, the PROGMEM and ICACHE_RODATA macros use
this variable decorator even for local variables.  Most of the time it works,
but when a static or inlined function tries to use a PROGMEM/PSTR/etc.
variable the compiler can throw an error like:
  error: XXX causes a section type conflict with YYY

Change the PROGMEM macro to emit a section name that is unique (a combo
of the file, line, and counter variables to ensure uniqueness).  The
standard linker script will place them properly in .IROM without
any changes.

Fixes #5036 and others.
2018-08-15 11:46:13 -03:00
hreintke
adde93bcaa Implementation of Functional and Scheduled option in Ticker lib (#5030)
* Implementation of Functional and Scheduled option in Ticker lib

* Update example formatting

* More example updates

* More updates to example

* More updates to example
2018-08-14 16:00:20 -03:00
SarenT
cbcefa7d3f Analog input voltage can be 3.3V (#5020)
* Analog input voltage can be 3.3V

According to this tutorial and my personal test with my Amica, 1.0V delivers 320 and 3.3V delivers 1024 at 10-bit resolution. I guess 3.3V is possible.

* Update reference.rst

Added warnings.

* Update reference.rst

* Update reference.rst

requested  changes
2018-08-13 22:53:39 -03:00
Ivan Kravets
a0e6d22ac1
Switch to isolated build flags per framework (#5028) 2018-08-11 20:01:20 +03:00
Ivan Grokhotkov
559a286f02 Minor fixes for #4999 (#5003)
* ci: work around tagging issue in Travis CI deployment

When `draft: true` is set, incorrect commit/tag information is sent to
Github. Override tag/target fields for correct behavior.

Ref. https://github.com/travis-ci/travis-ci/issues/9852

* doc: clarify some points in the release process
2018-08-08 14:12:02 -04:00
Jiří Engelthaler
f77645465c CaptivePortalAdvanced: Change debug print to println 2018-08-04 15:01:54 +03:00
WEMOS Electronics
319adc6b8a Fix boards.txt.py compatible with python3 (#4998) 2018-08-03 10:45:03 +02:00
Ivan Grokhotkov
8b55758546 Bump version to 2.5.0-dev 2018-08-03 09:56:17 +03:00
Ivan Grokhotkov
bb28d4a392 Release 2.4.2 2.4.2 2018-08-03 09:54:08 +03:00