1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-21 10:26:06 +03:00

3308 Commits

Author SHA1 Message Date
david gauchard
455583b40f
scheduled functions: calls from yield are now optional (#6158)
* scheduled functions: calls from yield are now optional
* add move constructors
* yield every 100ms
2019-05-29 11:10:30 +02:00
Earle F. Philhower, III
dddc8d2495
64 bytes more free by moving DES init constants to flash (#6160) 2019-05-28 13:33:18 -07:00
Earle F. Philhower, III
dae64c4dae
Move umm_malloc back to IRAM (#6161)
As found by @mhightower83, umm_malloc was placed in flash during the
.c->.cpp conversion because of a missed linker change.

Adjust the link script to the new name .cpp
2019-05-28 11:48:59 -07:00
Earle F. Philhower, III
f37b4921e3 Save 484 bytes of heap foe BSSL applications (#6157)
Move additional constants to flash and use _P/pgm_read routines to
access them.  Minimal runtime impact, but remove variables from RODATA
and gives addition 484 bytes of heap to SSL applications.

Fixes #6005
2019-05-28 17:12:47 +02:00
david gauchard
b6935af93a
IDE menu info: change SPIFFS -> FS and show max OTA size (#6159) 2019-05-28 14:55:11 +02:00
Earle F. Philhower, III
7c4961e83c
Add basic canary check to BSSL stack thunk (#6156)
On return from a BSSL call, check that the last element of the stack is
still untouched.  If it is modified, print an error and abort().

Will catch problems like #6143 many times with an informative error
message instead of corrupting the heap and having a random crash
sometime later.
2019-05-27 20:51:27 -07:00
Earle F. Philhower, III
d83eabe5b3
Expand BSSL stack to 5750 bytes (#6153)
Fix #6143 which found a cipher combination which overran the old limit
of 5600 bytes (it required 5700 bytes).
2019-05-27 12:51:33 -07:00
david gauchard
a4ae8564f7
schedule: fix linked-list (per @dok-net review) (#6147) 2019-05-27 09:13:38 +02:00
Dirk O. Kaar
2d9253e46c The use of bind in Ticker.h is prone to type inference failure (#6129)
* std::bind has issues with type inference, use lambdas whereever possible.

* Fix indentation.

* More descriptive placeholder name in lambda expression

* Use formal argument names for remaining currying placeholders
2019-05-25 20:12:48 +02:00
david gauchard
09f6b87ef5
scheduled functions: fixes (#6137)
* scheduled functions: properly reset structure

* fence against recursion, rename variables for clarity

* update comments
2019-05-25 17:15:01 +02:00
Alex Huang
0a8f2a13a6 Document ISRs need ICACHE_RAM_ATTR before them (#6141) 2019-05-25 13:53:30 +02:00
Earle F. Philhower, III
a389a995fb Add LittleFS as an optional filesystem, API compatible w/SPIFFS (but not on-flash-format compatible) (#5511)
* Add LittleFS as internal flash filesystem

Adds a LittleFS object which uses the ARMmbed littlefs embedded filesystem,
https://github.com/ARMmbed/littlefs, to enable a new filesystem for onboard
flash utilizing the exact same API as the existing SPIFFS filesystem.

LittleFS is built for low memory systems that are subject to random power
losses, is actively supported by the ARMmbed community, supports directories,
and seems to be much faster in the large-ish read-mostly applications I use.

LittleFS, however, has a larger minimum file allocation unit and does not do
static wear levelling.  This means that for systems that need many little
files (<4K), have small SPIFFS areas (64K), or which have a large static
set of files covering the majority of flash coupled with a frequently
updated set of other files, it may not perform as well.

Simply replace SPIFFS.begin() with LittleFS.begin() in your sketch,
use LittleFS.open in place of SPIFFS.open to open files, and everything
else just works thanks to the magic of @igrr's File base class.

**LITTLEFS FLASH LAYOUT IS INCOMPATIBLE WITH SPIFFS**
Since it is a completely different filesystem, you will need to reformat
your flash (and lose any data therein) to use it. Tools to build the
flash filesystem and upload are at
https://github.com/earlephilhower/arduino-esp8266littlefs-plugin and
https://github.com/earlephilhower/mklittlefs/ .  The mklittlefs tool
is installed as part of the Arduino platform installation, automatically.

The included example shows a contrived read-mostly example and
demonstrates how the same calls work on either SPIFFS.* or LittleFS.*
Host tests are also included as part of CI.

Directories are fully supported in LittleFS. This means that LittleFS
will have a slight difference vs. SPIFFS when you use
LittleFS.openDir()/Dir.next().  On SPIFFS dir.next()
will return all filesystem entries, including ones in "subdirs"
(because in SPIFFS there are no subdirs and "/" is the same as any
other character in a filename).

On LittleFS, dir.next() will only return entries in the directory
specified, not subdirs.  So to list files in "/subdir/..." you need
to actually openDir("/subdir") and use Dir.next() to parse through
just those elements.  The returned filenames also only have the
filename returned, not full paths.  So on a FS with "/a/1", "/a/2"
when you do openDir("/a"); dir.next().getName(); you get "1" and "2"
and not "/a/1" and "/a/2" like in SPIFFS.  This is consistent with
POSIX ideas about reading directories and more natural for a FS.

Most code will not be affected by this, but if you depend on
openDir/Dir.next() you need to be aware of it.

Corresponding ::mkdir, ::rmdir, ::isDirectory, ::isFile,
::openNextFile, and ::rewind methods added to Filesystem objects.
Documentation has been updated with this and other LittleFS information.

Subdirectories are made silently when they do not exist when you
try and create a file in a subdir.  They are silently removed when
the last file in them is deleted.  This is consistent with what
SPIFFS does but is obviously not normal POSIX behavior.  Since there
has never been a "FS.mkdir()" method this is the only way to be
compatible with legacy SPIFFS code.

SPIFFS code has been refactored to pull out common flash_hal_* ops
and placed in its own namespace, like LittleFS.

* Fix up merge blank line issue

* Merge in the FSConfig changs from SDFS PR

Enable setConfig for LittleFS as well plys merge the SPIFFS changes
done in the SDFS PR.

* Fix merge errors

* Update to use v2-alpha branch

The V2-alpha branch supports small file optimizations which can help
increase the utilization of flash when small files are prevalent.
It also adds support for metadata, which means we can start adding
things like file creation times, if desired (not yet).

* V2 of littlefs is now in upstream/master

* Update test to support non-creation-ordered files

In a directory, the order in which "readNextFile()" will return a name
is undefined.  SPIFFS may return it in order, but LittleFS does not as
of V2.  Update the test to look for files by name when doing
readNextFile() testing.

* Fix LittleFS.truncate implementation

* Fix SDFS tests

SDFS, SPIFFS, and LittleFS now all share the same common set of tests,
greatly increasing the SDFS test coverage.

* Update to point to mklittlefs v2

Upgrade mklittlefs to V2 format support

* Remove extra FS::write(const char *s) method

This was removed in #5861 and erroneously re-introduced here.

* Minimize spurious differences from master

* Dramatically reduce memory usage

Reduce the program and read chunk sizes which impacts performance
minimally but reduces per-file RAM usage of 16KB to <1KB.

* Add @d-a-v's host emulation for LittleFS

* Fix SW Serial library version

* Fix free space reporting

Thanks to @TD-er for discovering the issue

* Update littlefs to latest upstream

* Remove sdfat version included by accident

* Update SDFAT to include MOCK changes required

* Update to include SD.h test of file append
2019-05-25 09:53:24 +02:00
david gauchard
b55199227b
add regular scheduled functions, now also callable on yield() (#6039)
* add regular scheduled functions, now also callable on `yield()`

added bool schedule_function_us(std::function<bool(void)> fn, uint32_t repeat_us)
lambda must return true to be not removed from the schedule function list
if repeat_us is 0, then the function is called only once.

Legacy schedule_function() is preserved

This addition allows network drivers like ethernet chips on lwIP to be regularly called
- even if some user code loops on receiving data without getting out from main loop
  (callable from yield())
- without the need to call the driver handling function
  (transparent)

This may be also applicable with common libraries (mDNS, Webserver, )
2019-05-23 22:03:53 +02:00
Tyler Moore
6191fbbd92 Modified ESP8266WebServer (#6020)
-Expose HTTP Digest authentication with H1 hash as the argument
-Preserved HTTP authentication with username/password arguments
-Added a public  static function for generating the H1 hash
-Created an example of how to use this called HttpHashCredAuth.ino
2019-05-23 09:57:51 -07:00
Jean Lescut-Muller
147b5fbb98 Typo fix in ESP8266WiFiAP.cpp (#6134) 2019-05-23 07:55:46 -07:00
Earle F. Philhower, III
0bd36bf02b
Back to 2.6.0-dev (#6122)
2.5.2 release completed, time for 2.6.0 work
2019-05-20 14:06:05 -07:00
Earle F. Philhower, III
8b899c12fb
Release 2.5.2 (#6121)
Changes since 2.5.1 (to 2.5.2)

Core
----
* Add explicit Print::write(char) (#6101)

Build system
----
* Fix typo in elf2bin for QOUT binary generation (#6116)
* Support PIO Wl-T and Arduino -T linking properly (#6095)
* Allow *.cc files to be linked into flash by default (#6100)
* Use custom "ElfToBin" builder for PIO (#6091)
* Fail if generated JSON file cannot be read (#6076)
* Moved 'Dropping' print from stdout to stderr in drop_versions.py (#6071)
* Fix PIO issue when build environment contains spaces (#6119)

Libraries
----
* Remove deadlock when server is not acking our data (#6107)
* Bugfix for stuck in write method of WiFiClient and WiFiClientSecure until the remote peer closed connection (#6104)
* Re-add original SD FAT info access methods (#6092)
* Make FILE_WRITE append in SD.h wrapper (#6106)
* Drop X509 after connection, avoid hang on TLS broken (#6065)
2.5.2
2019-05-20 10:43:23 -07:00
Ivan Kravets
68ee121645 Fix issue when build environment contains spaces (#6119) 2019-05-19 19:32:19 -07:00
Dave
912c0db091 Remove deadlock when server is not acking our data (#6107)
* Use bounded waiting instead of infinite one to avoid deadlock

* Reduce timeout to fail much sooner if server is not acking our data

* Return timeout to 15 seconds on every disconnect

* Add comment to introduced delay to make it super clear
2019-05-19 22:38:24 +02:00
Earle F. Philhower, III
2b7846da5a
Fix typo in elf2bin for QOUT binary generation (#6116)
Fixes #6115 as found by @micjoc
2019-05-19 10:45:25 -07:00
Earle F. Philhower, III
b5560759ec
Re-add original SD FAT info access methods (#6092)
Fixes #6081

The SD rewrite blanked out some of the internal FAT info.. Restore the
function calls and return proper values.

Because size() is used in many printf()s, we can't just change its
return type to uint64.  Instead, when size is > size-max warn.

Add SD.size64 which can be used by new apps who care about >4GB cards.
Prints a warning if debugging enabled
2019-05-19 08:43:23 -07:00
Earle F. Philhower, III
82adc95d64
Add explicit Print::write(char) (#6101)
W/o this change, file::write('a'); tries to use the template and fails
since char is a basic type.

The reason it is needed is due to pre 2.5.x behavior, File::write(char)
silently was cast to File::write(uint8_t).  With the template write,
though, this is not performed.

* Add Print::write tests and add'l overrides

Ensure that print::write does something sane and doesn't cause a compile
time error about templates when used for Files.

Test using SPIFFS file since Print is an abstract type.
2019-05-18 14:07:13 -07:00
Earle F. Philhower, III
48fc8aff20
Support PIO Wl-T and Arduino -T linking properly (#6095)
The interrupt vectors in IRAM are omitted when there is a PROVIDE
statement in the linker control files when using the PIO method of
-Wl,-T<linkfile>.

Drop the PROVIDES (they're in RAM anyway and not ROM related), and
add the required "-u"s to the PIO build script.

Should have no impact on the Arduino side.

Fixes #6087
2019-05-18 12:51:27 -07:00
Earle F. Philhower, III
968d6fcb0a
Make FILE_WRITE append in SD.h wrapper (#6106)
* Make FILE_WRITE append in SD.h wrapper

Fixes #6105

* Update host tests
2019-05-16 17:12:09 -07:00
Dave
25c95ac185 Bugfix for stuck in write method of WiFiClient and WiFiClientSecure until the remote peer closed connection (#6104)
* Bugfix - write method of WiFiClient and WiFiClientSecure can stuck forever

* Adjustment of uint8_t to bool to have it clear flag
2019-05-17 00:00:12 +02:00
Earle F. Philhower, III
2dff28abc7
Allow *.cc files to be linked into flash by default (#6100)
Fixes #6096
2019-05-15 11:30:57 -07:00
Dave
75f01dc35a Drop X509 after connection, avoid hang on TLS broken (#6065)
* Drop X509 context after successful server verification to save heap space

After completing handshake in BSSL, server is already verified and X509 context is no longer needed. Depending on verification method it save more or less heap space.

* Bugfix: Report not connected if there is no ready data and TLS connection is broken

Added the change for reporting not connected if TLS session is broken and there is no more buffered decrypted data. TLS can be broken if message authentication (MAC) cannot be verified. BearSSL enters BR_SSL_CLOSED state when processing invalid encrypted application data fragment. In such situation the current implementation get stuck forever unless user has own timeout mechanism build on top of WiFiClientSecureBearSSL. This change introduce fail fast via connected() returning false. Further it imply return -1 from read methods indicating broken channel upon which user should perform reconnect if needed.

Fixes #6005
2019-05-15 09:55:06 -07:00
Earle F. Philhower, III
501022404f
Minor README fix (#6098)
Fix Linux location typos (lowercase "arduino" and missing "/").

Fixes #6093
2019-05-15 08:38:53 -07:00
david gauchard
818a55f575 device tests: updates for esptool.py (#6084)
Makefile new rule: 'make distclean' removes virtualenv
attempt to use python3 (python2 is still default)
2019-05-14 08:59:46 -07:00
Ivan Kravets
2df33de1e7 Use custom "ElfToBin" builder for PIO (#6091) 2019-05-14 07:42:10 -07:00
Allman-astyler
eea9999dc5 Revert "Allman now (#6080)" (#6090)
This reverts commit 98125f88605cd7e46e9be4e1b3ad0600dd5d2b51.
2019-05-14 00:09:54 +02:00
Allman-astyler
98125f8860 Allman now (#6080)
* switch restyle script for CI

* remove confirmation

* restyle with allman
2019-05-13 16:41:34 +02:00
Earle F. Philhower, III
625c3a62c4
Fail if generated JSON file cannot be read (#6076)
To avoid issues as seen in 2.5.1 release where an invalid JSON was
published for a few hours, fail the board script if JQ can't parse the
generated output file.
2019-05-12 08:15:50 -07:00
Subhajit Das
9b8d4cca52 Moved 'Dropping' print from stdout to stderr in drop_versions.py (#6071)
Printing 'Dropping' debug strings to stdout leads to write in package json.
This moved that to stderr stream.
2019-05-12 06:54:11 -07:00
david gauchard
d65de4aa95 back to 2.6.0-dev (#6072)
* back to dev

* emergency procedure

* per review

* 2.6.0-dev per review
2019-05-11 20:28:09 -04:00
david gauchard
ac02aff575
hide dropping message in json package file (#6070) 2.5.1 2019-05-11 13:29:23 +02:00
david gauchard
024b1c15ca
attempt to include submodules in deploy stage (#6067) 2019-05-11 12:08:53 +02:00
Jorge Ferreira
479741e2fc Fixing minor grammar typos (#6060) 2019-05-11 09:46:26 +02:00
Develo
67b59beff4
Release 2.5.1 (#6059) 2019-05-10 13:26:50 -04:00
Ivan Grokhotkov
5b5e56ad43 ci: deploy package index to esp8266.github.io (#6062)
* ci: deploy package index to esp8266.github.io

* Update deploy_package_index.sh

Fix path for git add
2019-05-10 10:11:33 -04:00
Earle F. Philhower, III
0ab76fcb37
Fix naming of obsolete version removal tool (#6058) 2019-05-07 13:33:50 -07:00
david gauchard
e67cc90b7a
Honor timeout in HTTPClient (#6056)
* check for timeout in ESP8266HTTPClient::writeToStreamDataBlock
2019-05-06 21:26:17 +02:00
Develo
ac53c2998e Clarify analog output doc for pwm limits (#6051)
* Update reference.rst

Clarify analogWrite and PWM limitations.

* Update reference.rst
2019-05-05 11:22:01 -07:00
Max Prokhorov
95fd7b55e4 Fix default git_ver (#6044) 2019-05-04 11:55:41 +02:00
david gauchard
e071033c3c
minor fix for host emulation (#6046) 2019-05-04 10:32:12 +02:00
david gauchard
66c84ec514
fix lwip2 submodule pointer to match actual libraries (#6045) 2019-05-04 02:03:42 +02:00
Develo
3dbac1cab4 Update time.cpp (#5835)
* Update time.cpp

Migrate configTime() to use sntp_set_timezone_in_seconds() to correctly allow timezone spec in seconds without rounding

* Add sntp-lwip2.h for timezone function
2019-05-03 22:56:49 +02:00
Harald
a67aa569da Test for StreamString SSO bug (#6035) (#6041) 2019-05-03 07:09:32 -07:00
Dirk O. Kaar
a3c556e490 git clean honors .gitignore, leaving the build tools downloaded by tools/get.py in place - (#6036)
tools/python is missing from .gitignore.
2019-05-02 11:13:57 -07:00
Harald
a994b75d75 StreamString SSO bug (#6035)
With SSO implementation in String, StreamString::write generates wrong strings under some circumstances.
Reason is that String::len() returns strlen(sso_buf) if SSO=true but with newly written data (in StreamString::write) the null-termination missing at the time len() is called.
Furthermore, len() is called twice which is inefficient if SSO=true.

* Git ignore

* - StreamString fix

* Remove changes to gitignore

* Fix missing space for 0-terminator lost in conversion
2019-05-02 09:55:43 -07:00