* Deprecate SPIFFS, move examples to LittleFS
SPIFFS has been a great filesystem, but it has significant problems in
many cases (and it's also pretty slow). Development seems to have
slowed/stopped on the upstream version, and we're not able to provide
support or fix the known issues with it as-is.
Deprecate SPIFFS variable.
Update all examples to use LittleFS instead of SPIFFS.
Also, minor cleanup on very old examples which has obsolete delays
waiting for the Serial port to come up, or which were stuck at 9600 baud
because of their ancient AVR heritage.
Fixes#7095
* Remove leftover debug code
* Clean up comments in some examples
* Update documentation on SPIFFS deprecation
* Fix host tests to avoid deprecation warnings
* Fix cut-n-paste error
* Restore SpeedTest.ino, adjust to allow custom FSes
Co-authored-by: Develo <deveyes@gmail.com>
Add minor NULL and double-free checks to source, identified using GCC10
pre-release static `-fanalyzer` on the coude. These are harmless to
other versions.
Also add explicit include of stdint to Schedule.h, because libstdc++20
will not automatically include it. Safe and no-op on earlier versions.
* Refactored to make getContentType public for 3rd party use.
* Added missing "jpeg" extension
* Use getContentType() from mime namespace.
* Also add .jpeg extension
* Minimal file with a few ESP8266-specific keywords - github issue #3701
* Renamed "SDWebServer" to the more universal "WebFileManager"
* SD was replaced by SDFS, and sketch now works on either SDFS, SPIFFS or
LittleFS based on a #define logic (required adding a second param to open() and
replacing 'FILE_WRITE' by "w") + Added size information to file list and a /status request handler to return filesystem status
* Tree panel width is now proportional to window. Changed icons (lighter and
more neutral), including one for files. Show size of files. Fill
"filename" box upon clicking on a file. Sort files alphabetically.
* Replaced by a lighter version
* Return the filesystem time in the status object
+ Massive cleanup/merge/align with some code from the FSBrowser example
and misc refactorings
* Fixed folder handling
* Replaced the FILESYSTEM #define by a filesystem variable, and introduced FSConfig to prevent FS formating.
Fixed recursive deletion.
Got rid of specific isDir() for SPIFFS.
* Made 8.3 lowercase filenames formating optional (disabled by default).
Refresh only part of the tree when possible.
Selecting a file for upload defaults to the same folder as the last
clicked file.
Removed the Mkdir button on SPIFFS.
* Added 'wait' cursor during asynchronous operations.
Slight refactoring of XMLHttpRequest completion handling
* Removed limitation "files must have an extension, folders may not".
Case insensivity of the extension for the editor and preview.
* Support Filenames without extension, Dirnames with extension.
Added Save/Discard/Help buttons to Editor, discard confirmation on leave, and refresh tree/status upon save.
Removed redundant Ctrl-Z + Ctrl-Shift-Z shortcut declarations.
Small bug fixes.
+ some refactoring
* Fixed tree refresh on delete in all cases by returning the remaining path as response to the delete request.
Refactoring
* Changed FS status in text by a percentage graph, with numbers as tooltip.
Unsupported files on SPIFFS (files at root not sarting with "/", files with double "/", files ending with "/") are now detected and reported in the page.
* Small fix + refactoring
* Restrict filename support check to SPIFFS.
* Implemented Move/Rename.
Added "loading" screen during async operations (dim with spinner and status).
Fixed "discard" feature that kept prompting even after an image was loaded.
Improved refresh of parts of the tree, with recursive listing.
Moved the "path" id attribute to the "li" elements for folders (was already the case for files).
Refactoring and cleanup.
* Fixed broken spinner
* Cosmetic improvements.
Removed non-functional Upload context menu.
Fixed error in response to move requests.
Added minified version.
* Added specific icons for text and image files.
Fixed incompatibilities with SPIFFS.
Fixed a race condition between deletion and reinsertion of nodes when multiple folders are refreshed.
Fixed missing URL decoding for files with special chars (e.g. space char).
Moved info from source code comment to a readme.md file.
Added source PNG to git.
Cleanup.
* Added favicon.ico.
* Renamed project
* Small changes
* Add a note about the ace.js dependency
* Minor changes
* Define LittleFS by default.
If both uncompressed and gz versions exist, use uncompressed version.
Small fixes.
* Define LittleFS by default.
If both uncompressed and gz versions exist, use uncompressed version.
Small fixes.
* Restyled version
* (dummy edit to retrigger broken CI)
* Using unsigned int for comparison with String.length()
* Return an error when upload fails (e.g. filesystem full)
* Trying to reorder functions to please CI
* Reordered functions to please CI.
* Moved file
* Renamed "SDWebServer" to the more universal "WebFileManager"
* SD was replaced by SDFS, and sketch now works on either SDFS, SPIFFS or
LittleFS based on a #define logic (required adding a second param to open() and
replacing 'FILE_WRITE' by "w") + Added size information to file list and a /status request handler to return filesystem status
* Tree panel width is now proportional to window. Changed icons (lighter and
more neutral), including one for files. Show size of files. Fill
"filename" box upon clicking on a file. Sort files alphabetically.
* Replaced by a lighter version
* Return the filesystem time in the status object
+ Massive cleanup/merge/align with some code from the FSBrowser example
and misc refactorings
* Fixed folder handling
* Replaced the FILESYSTEM #define by a filesystem variable, and introduced FSConfig to prevent FS formating.
Fixed recursive deletion.
Got rid of specific isDir() for SPIFFS.
* Made 8.3 lowercase filenames formating optional (disabled by default).
Refresh only part of the tree when possible.
Selecting a file for upload defaults to the same folder as the last
clicked file.
Removed the Mkdir button on SPIFFS.
* Added 'wait' cursor during asynchronous operations.
Slight refactoring of XMLHttpRequest completion handling
* Removed limitation "files must have an extension, folders may not".
Case insensivity of the extension for the editor and preview.
* Support Filenames without extension, Dirnames with extension.
Added Save/Discard/Help buttons to Editor, discard confirmation on leave, and refresh tree/status upon save.
Removed redundant Ctrl-Z + Ctrl-Shift-Z shortcut declarations.
Small bug fixes.
+ some refactoring
* Fixed tree refresh on delete in all cases by returning the remaining path as response to the delete request.
Refactoring
* Changed FS status in text by a percentage graph, with numbers as tooltip.
Unsupported files on SPIFFS (files at root not sarting with "/", files with double "/", files ending with "/") are now detected and reported in the page.
* Small fix + refactoring
* Restrict filename support check to SPIFFS.
* Implemented Move/Rename.
Added "loading" screen during async operations (dim with spinner and status).
Fixed "discard" feature that kept prompting even after an image was loaded.
Improved refresh of parts of the tree, with recursive listing.
Moved the "path" id attribute to the "li" elements for folders (was already the case for files).
Refactoring and cleanup.
* Fixed broken spinner
* Cosmetic improvements.
Removed non-functional Upload context menu.
Fixed error in response to move requests.
Added minified version.
* Added specific icons for text and image files.
Fixed incompatibilities with SPIFFS.
Fixed a race condition between deletion and reinsertion of nodes when multiple folders are refreshed.
Fixed missing URL decoding for files with special chars (e.g. space char).
Moved info from source code comment to a readme.md file.
Added source PNG to git.
Cleanup.
* Added favicon.ico.
* Renamed project
* Small changes
* Add a note about the ace.js dependency
* Minor changes
* Define LittleFS by default.
If both uncompressed and gz versions exist, use uncompressed version.
Small fixes.
* Define LittleFS by default.
If both uncompressed and gz versions exist, use uncompressed version.
Small fixes.
* Restyled version
* (dummy edit to retrigger broken CI)
* Using unsigned int for comparison with String.length()
* Return an error when upload fails (e.g. filesystem full)
* Trying to reorder functions to please CI
* Reordered functions to please CI.
* Update to use chunked response API
* Removed temp files commited by mistake
* Avoid using args() as requested
* Use html entity for non-breaking space to avoid losing char when minifying
* Script to preprocess index.htm
* (reformated code)
* (comments)
* Preprocessed files
* Fixed dump to create an actual include file
* Optionally embed index.htm in code.
(+ documentation and preprocessing script)
* (reformated)
* If editor cannot be loaded from the web, try a local version, or default
to a text viewer if not present
* (removed a TODO item :-))
* (forgot to reprocess files after last commit)
* (reprocess should be ok this time)
* Return error 500 when upload fails immediately (e.g. filesystem full)
* Use standard <meter> tag for filesystem use
* (updated following changes to index.htm)
* Do not include gzipped version in the data folder by default. Leave it in the extras folder and change readme accordingly (plus some reformatingi of the readme file)
* Gzipped index file not included in data/edit by default. It is now left in the extras folder.
Readme file was updated accordingly (+ some reformating)
* Reduce String clutter by reserving and concatenating elements one by one.
* Use clear() to reset String.
* Avoid comparisons against empty String.
* Use char instead of single-char String where possible.
* Prefer direct logic over inverted.
* Rename returnBlah to replyBlah.
* Renamed h2int to hexDigitToInt
* Renamed getFileError() to checkForUnsupportedPath(), to avoid confusion
with a getter.
* Misc improvements.
* Added comments about mandatory rebuilding gz and h files in case of update
to index.htm.
* Addressed a few comments.
* Improve replies: bad requests vs server error
* (reformated)
* Reduce clutter by reserving String size beforehand.
* Moved most Strings of more than 10 chars to flash.
* Use lib version of urlDecode() instead of a local one, and only call it when required.
* Added a comment about the dangers of recursion on embedded devices.
* Added a more explicit warning in the .h header comment.
* Added a typical set of required files to load ace editor from the ESP.
* (reformated)
* More explicit warning at the beginning of the .h version.
Co-authored-by: david gauchard <gauchard@laas.fr>
Co-authored-by: Earle F. Philhower, III <earlephilhower@yahoo.com>
Co-authored-by: Develo <deveyes@gmail.com>
- Add using namespace experimental::crypto; to HelloCrypto.ino.
- Add mention about new random function in libraries.rst.
- Update keywords.
Co-authored-by: Anders <andlo151@student.liu.se>
* - Add CryptoInterface library.
- Add TypeConversion core files.
* Fix compiler errors.
- Make HelloCrypto.ino stylish.
- Include assert.h in CryptoInterface.cpp.
* - Move base36 arrays to PROGMEM in TypeConversionFunctions.cpp.
- Add deprecated attribute to SHA1 and MD5 hashes.
- Remove _warningsEnabled since this has been replaced by the deprecated attribute.
- Prefix all getters with "get".
- Move all CryptoInterface functionality to the experimental namespace.
- Change formatting of core files.
- Improve comments.
* - Update keywords.txt.
* - Remove WiFi.disconnect() from setup() in HelloCrypto example since it no longer seems to be required.
* - Classify everything.
- Remove delay in setup() from HelloCrypto example since it does not seem to be required to prevent missing initial Serial prints.
- Mark type conversion functions as big endian.
- Update keywords.txt.
* - Remove namespace experimental.
- Create ESP.random functions in the core based on the defaultNonceGenerator code, and use these in defaultNonceGenerator.
- Rename CryptoInterface to esp8266::Crypto and move all functionality to the core.
- Remove need to #include <bearssl/bearssl.h> in the Crypto header file by changing br_hkdf_context to ::br_hkdf_context.
- Restyle code files for core usage.
* - Re-add namespace experimental.
- Improve comments.
* - Remove namespace esp8266.
- Rename namespace Crypto to namespace crypto.
Co-authored-by: Anders <andlo151@student.liu.se>
Co-authored-by: Develo <deveyes@gmail.com>
Fix/clarify comments.
Fix redundancies in Tone, end Tone waveform on exact period limit for proper sound.
Fix redundancies in wiring_pwmExtend Servo to map in-use pins, Tone already has this.
Added meta viewport element for better mobile device viewing.
For example CaptivePortalAdvanced, increased size of ssid and password array
to hold maximums 32 and 64 charcter strings. Added missing HTML elments
to main splash and wifi config. They should now pass an HTML checker.
Also added meta viewport element for better mobile device viewing.
Fixes exception 28 in IPAddress(const ipv4_addr* fw_addr); with null ip_addr
pointer passed in by WiFiCient.cpp localIP(). I assumed that localIP()
was called shortly after _pcb became null.
The OTA script was not reporting the actual reported upload status from
the ESP8266, and instead always printed "Result: OK" no matter what
happened.
Now check for ERROR or OK in final message (and ensure the message is
not accidentally merged with the final byte count) and report properly.
Fixes#7162
lwIP's tcp/udp_connect() and tcp/udp_bind() functions automatically
set the zone if it is required but missing, but udp_connect() is not
used so this doesn't happen.
Explicitly set the zone to the default network interface if it is
required for the type of address being used. Otherwise there is no
zone set and packets to a link local destination don't go anywhere.
* Make DNS resolution order selectable during runtime or compile time (only in dual stack mode).
* Extend IPv6 example to show usage of new hostByName function with selectable resolving order
* Fix function definition of fqdn_rt in IPv6.ino.
* Fix function call.
* Fix missing bracket...
* Only run if built with dual stack support
* Make DNS resolution order selectable during runtime or compile time (only in dual stack mode).
* Extend IPv6 example to show usage of new hostByName function with selectable resolving order
* Fix function definition of fqdn_rt in IPv6 example.
* Implement enum class for resolve type
* Fix example IPv6.ino
* Fix typedef in ESP8266WiFiGeneric.h function call
* Change enum class definition to not depend on lwip/dns.h
* Move err_t err definition outside switch. Fix typecast.
* Always define DNSResolveType as pio test otherwise failes even if the enum class isn't used.
Co-authored-by: altelch <heiko.krupp@rhrk.uni-kl.de>
Co-authored-by: david gauchard <gauchard@laas.fr>
* wifi: ARP gratuitous API for wifi station mode
* fix with lwip1
* update comment
* update API to allow changing interval on the fly
* update API
* remove debug lines
* mock lwIP's etharp_request()
* unsigned interval
* use scheduled ticker
* ticker: +attach_ms_scheduled_accurate
ticker: +comment
gratuitous: use attach_ms_scheduled_accurate
* move to experimental namespace
* fix for lwIP-v1.4
* attempt to make pio happy
* use directly ETSTimer instead of Ticker
* Add way to force follow redirections in `HTTPClient`
* Follow other client implementations about `HTTP_CODE_FOUND`; Small rewrite of `sendRequest` function of `HTTPClient`
* Better names for follow redirection modes in `HTTPClient`
Also changed a bit order of the enums (0 element to be DISABLED)
* Rewrite `sendRequest` to remove recursion
Also got rid of unnecessary `redirectCount` field. Now redirect counting and limiting is handled in `sendRequest` directly.
* Use new `setFollowRedirects` of `HTTPClient` instead deprecated one.
* More explanatory comment for `followRedirects_t` in HTTPClient
* Use 2nd stack for update signature verification
Fixes#7145
When doing a signed update, the signature calculation can use a lot of
stack, so move it silently to the BearSSL second stack.
Also fix a memory leak of signature-bytes found by @JiriBilek
* Reset state on any error condition in Updater::end
* MultiDelegate breaking change and improvements.
The event-multiplexer specialization no longer removes items based on invoke return value.
This is mitigated by new iterators and erase(iterator). Check the documentation comments for
details.
* MultiDelegate: constness on return type warning fix.
* EspSoftwareSerial: Conform to C++ 17 and later.
* EspSoftwareSerial: Resolve g++ 9's c++17 deprecation warnings.
* EspSoftwareSerial, Delegate.h: gcc 9.2 is very strict about template inheritance of ctor and assignment operators, needing a lot
of code duplication, this commit provides that.
* Delegate.h, fix both ambiguous operator= and infinite ctor recursion.
* EspSoftwareSerial release 6.7.2
* Update Uri.h
* Add a simple test for the new constructor
Convert a c-str to a FPSTR in the example to have a section
of code in our CI that will catch any future breaks of this specific
kind.
Co-authored-by: Earle F. Philhower, III <earlephilhower@yahoo.com>
Previously, when the path was a directory, but didn't have a slash at
the end, a 0 byte response would be sent when using LittleFS. Now, it
will return a 404, like was always the case when using SPIFFS.
* Resolved issue #3359
Made severing connections optional as per the patch
in the issue.
Also fixed a minor spacing issue.
* Renamed sever to close and added information to readme
Also my editor automatically removed some odd whitespace at the
end of a few lines.
* Add fileCreation/getCreation create-time accessors
For SDFS and LittleFS, enable a creation time accessor for files and Dir
iterators, similar to the existing fileTime/getLastWrite calls.
Remove spurious Dir::getLastWrite method (the proper and only documented
way is really Dir::fileTime).
Update json to point to new mklittlefs which copies the creation date of
files to the image.
Fixes#6992
* Remove malloc(), use stack vars for temp names
LFS filenames are limited in size and generally very small. Use a stack
variable instead of a dynamic allocation when performing full-path
computations.
* Replace "Creation" w/"CreationTime" in FS accessor
Per review, `getCreation` -> `getCreationTime`, `fileCreation` ->
`fileCreationTime`.
The names `fileTime()` and `getLastWrite()` are inherited from ESP32
implementation and unchanged.
* Add creation time to listfiles SD example
* Enable SdFat's sateTime callback for timestamping
SdFat requries the dateTimeCallback call (global for everything) to
update dates and times on created files.
Because the callback signature doesn't have space for us to provide
any parameters, we cannot get the the File, Dir, or FS object's
dateTimeCB member. Instead, just go with `time(null)` as the callback
function which is right in all but the most esoteric cases.
* Correct DOS year/month offset in dateTime callback
* Fix docs to match new xxxCreationTime() API names
Co-authored-by: Develo <deveyes@gmail.com>
* Add path args
* Add example
* Update code format
* Add missing include
* Fix codestyle and unsigned int
* fix unsigned int
* Remove tabs
* use vector<>.resize
* rename j to requestUriIndex
* using assert checking the path argument index
* Add missing include "assert.h"
* The order no longer matters.
Path arguments may not contain the value '/'
Updated the example
* make pathArg return a const
* Update PathArgServer.ino
fix trailing space
* const String&
* Add regex support
* Fix to match templating
* Add Uri with support for staticUri, regexUri and globUri
* Update example
* Add deconstructor to remove _uri pointer
* Add newline to end of files
* Suppress gcc warnings (unused params)
* Replace regex with regex.h
* Use the standard STASSID/PSK settings for example
Make the example match the existing examples which allow setting
the SSID/PSK in the local platform.txt file.
* Use 115.2Kbaud for example, match others
Co-authored-by: david gauchard <gauchard@laas.fr>
Co-authored-by: Earle F. Philhower, III <earlephilhower@yahoo.com>
* Fix/enable UDP packet reassembly
UdpContext didn't care about pbuf chaining when receiving datagrams, leading
to fragments delivered to the application as individual packets.
* Provide pbuf_get_contiguous for backwards compatibility with LwIP 1.4
Implementation copied verbatim from LwIP 2.1.2
* Cosmetic changes to meet coding style
Co-authored-by: david gauchard <gauchard@laas.fr>
Co-authored-by: Develo <deveyes@gmail.com>
* configTime(tzsec,dstsec,): fix UTC/local management
This PR also remove dead code since probably newlib updates
The NTP-TZ-DST example is also updated
* restore sntp_set_timezone_in_seconds()
fixes#6678
* +configTzTime()
* upstream lwIP is now downloaded by a makefile, not subsubmoduled
* lwip2: upstream lwIP not sub-sub-modules anymore
lwip2: Allow IPv4 and IPv6 DNS and SNTP server configured via DHCP to co-exist (patch against upstream)
* lwip2: enable tcp-listen-with-backlog feature
* lwip2 submodule update:
- enable more efficient chksum algorithm thanks to Richard Allen
- enable tcp listener with backlog
* more comments, fix backlog management, fix API
* move default value definition in .cpp
because one must not believe it can be redefined before including WiFiServer.h
* improved backlog handling, it is no more a breaking change
Fixes#6984
When a directory index is requested with an explicit index.html, follow
the original webserver order and check for: index.htm, index.htm.gz,
index.html, index.html.gz, in order.
Fixes the regressions introduced in 9f2cfb8 and 6768116
sendRequest has a major problem when sending a big payload, the comparator in the IF loop has its two operators changed, so the last part of payload is never sent
In some cases, `initCertStore` may need to be called multiple times
(i.e. to update certs w/oa reboot). In that case, the saved file names
leaked when the new ones were `malloc()`'d.
Fix by freeing the old strings, if present.