1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-15 00:02:49 +03:00
Commit Graph

4267 Commits

Author SHA1 Message Date
05454df164 Root page should be of type text/html (#6776)
In order to be displayed properly by a browser the HTML should be returned as text/html.
2019-11-15 00:29:31 +01:00
95c740705e Add missing "LittleFS.begin()" in LittleFS_Timestamp example. (#6762)
* Add missing "LittleFS.begin()"

Add missing first LittleFS.begin() call.

* Update LittleFS_Timestamp.ino
2019-11-14 18:25:56 -03:00
48ea3a3e9e Update platform to 2.7.0-dev, bump Readme to 2.6.1 (#6774) 2019-11-14 17:36:32 +01:00
482516e393 Minimize header use, move Ticker function definitions into cpp file (#6496)
* Backport from ESP32

* Use new library layout (.../src)

* Cleanup test case.

* C++ style cast required.

* Whitespace

* Inlining via header has better baseline ROM footprint.

* Reordered functions for better code-compare to master

* Reduces ROM footprint some more.

* Avoid unnecessary parameter passing - refactoring, same generated footprint.

* Reformat example sources
2.6.1
2019-11-14 10:02:32 -03:00
af85bd2efc release process for 2.6.1 (#6773) 2019-11-14 10:24:22 +01:00
b52c52791a a single esptool command for erasing and flashing (#6765)
* esptool: a single command for erasing and flashing
(and update to esptool-2.8)

* fixes per review
2019-11-14 02:46:20 -03:00
6f3c57b7fa Fix issue with functions scheduled from scheduled functions (#6770)
Calling schedule_function() from a scheduled function would result in an infinite loop, because the list traversal would never end.
2019-11-14 00:56:18 -03:00
2f26d94f64 minor: examples: reorder functions for declarations prior to call (#6766)
* minor: reorder functions for declaration prior to call
harmless for arduino, helps with emulation on host or PIO

* fixes per review
2019-11-13 22:35:30 -03:00
09896d5287 Add String::concat(char*, len) to allow non null-term strings (#6754)
* Add comcat(char*, len) to Sting

Fixes #5061

Adds a concat(const char *data, int len) method which allows arbitrary
sequences of data (including ones w/embedded \0s) to be appended to a
String.  May be useful for certain MQTT operations.

Adds sanity test for the feature to host suite

* Review comment cleanups
2019-11-14 00:58:07 +01:00
d2d0ee3d43 Update to LittleFS 2.1.3 (#6757) 2019-11-12 19:55:50 +01:00
41d99ad48a WString explicit converters to reduce Flash size (#6759)
* WString explicit converters to reduce Flash size

* Fix add return value for start/endsWith

* Adding const to startsWith() and endsWith()
2019-11-12 18:47:26 +01:00
8222acedaf EspSoftwareSerial release 6.1.1, "9bit" support (#6761)
* EspSoftwareSerial release 6.1.0:

New feature, a.k.a. "9bit": Supports parity bit on TX and RX and 2 stop bits.

* Fix for local relative #include
2019-11-12 15:57:11 +01:00
bc60e97489 board NodeMCUv1 menu: led selection (2, 16) (#6748) 2019-11-10 22:07:51 +01:00
2fef67dcb0 - Generalize CryptoInterface.
- Add more HMAC and hash functions to CryptoInterface.

- Add MeshCryptoInterface as a holder of mesh specific crypto functionality.

- Rename broadcastMetadataDelimiter to metadataDelimiter in FloodingMesh since it is not just used for broadcasts, and to save some typing.
2019-11-10 21:50:43 +01:00
4e5bf118c1 release script: remove makecorever.py call in released version (#6747)
* (fix) remove makecorever.py call in released version

* fix regexp
2019-11-10 18:22:21 +01:00
739bcd3fd5 Updated EspSoftwareSerial brings backward compatibility for ctor/begin() pair (only for the common cases with complete default argument use) (#6746) 2019-11-10 10:48:12 +01:00
43e0554b9c Add some useful links (#6744)
Fixes #1360
2019-11-10 03:52:40 -03:00
dde76d1b5d Puts to rest the confusion about the builtin leds for nodemcu boards (#6743)
Given that most nodemcu boards are based on the ESP12 boards, the definition of the builtin led is now changed to 2.
In addition, for those nodemcu boards that have an additional LED on the board connected to gpio16, an additional define is added called LED_BUILTIN_AUX.
2019-11-10 02:01:02 -03:00
adda7da485 Mention erasing arduino15 contents before installing git (#6741) 2019-11-09 23:53:38 -03:00
2c2468f962 Add ipv4_addr_t for espconn/LwIP1.4 compat (#6740)
`espconnn.h` references ipv4_addr_t, so it seems appropriate it be defined here also.
2019-11-10 00:41:26 +01:00
6626b2fb07 add docs: how to get POST body in ESP8266WebSever (#6736) 2019-11-09 08:55:18 +01:00
b5f873ecc3 Update platform to 2.7.0-dev, bump Readme to 2.6.0 (#6734) 2019-11-08 22:17:53 -03:00
643ec203b3 Release 2.6.0 (#6733) 2.6.0 2019-11-08 19:08:14 -03:00
9f6d3c7c3e Add board filter support ... (#6643)
* Add boards filter support - allows for the creation of an abridged boards.txt.
Add some of the ITEAD Sonoff boards to boards.txt.py.
Minor reorder of presentation of board menu items, mainly grouped
board Model and module selection to the top.

* Corrected, I think, LED_BUILTIN vs BUILTIN_LED??

* Updated boards.txt

* Added support for DOIT ESP-Mx DevKit (ESP8285) board.
Adjusted wording and fixed side bar formating issue on the
Sonoff description. Also, removed resetmethod menu
and assigned resetmethod of none.
2019-11-08 14:49:29 -03:00
5260b30730 EspSoftwareSerial release 5.4.0 with performance/error rate improvement in TX (#6722)
* EspSoftwareSerial release 5.3.5 with performance/error rate improvement in TX

* EspSoftwareSerial 5.3.6 with CI fix and, tadaaa, reliable tx and rx at 115200bps and beyond.

* Version 5.4.0 stabilized work of past 24h.
2019-11-08 17:53:03 +01:00
3b1ad418b3 Add missing time.h include, use relative include path on time.h includes (#6730)
* Add missing time.h include

* Change other includes of time.h as well

* Added comment
2019-11-08 13:16:03 -03:00
1ec3683ca0 FW: use NONOS-SDK branch 2.2.x from 2019-10-24 by default (#6724)
* FW: use NONOS-SDK branch 2.2.x from 2019-10-24 by default
former one is available when using generic board configuration

* tv qvoqve, Platform-ii

* nonos-sdk v2.2.x from 2019-11-05 by default for all boards
(previous ones can be selected with the generic board)

* (w/ fw files)

* 191024 by default, 191105 is an option
2019-11-08 11:41:22 +01:00
453eb2d064 Add wait loop at the end of mode, refactor can_yield (#6721)
* Add wait loop at the end of mode, refactor can_yield

* fix mock build
2019-11-07 18:25:20 -03:00
6f7eb2828a Make SPIFFS and LittleFS stay out of link when not needed (#6699)
* define two weak functions defaulting to no-op
redefine them to do something useful when either spiffs or littlefs are used

* noop

* single entry point for closing FSes

* rename functions, override when instanciated, add link to explanation

* spiffs: call end on destructor
2019-11-06 21:37:52 -03:00
c28838d980 Update esptool reset method (#6429)
* Reset method changes for esptool.py

* Workaround - to be reverted in case esptool do erase/write_flash in one command

* Keep previous resetmethod names and translate to esptool.py options

* Regenerated boards.txt
2019-11-06 22:55:33 +01:00
98785f7cdf Rollback setContentLength removal (#6715) (#6719)
Apparently I messed up testing #6715 and something broke. This rolls back that PR.
That means #2132 remains closed with no action.
2019-11-06 16:08:28 -03:00
3132325bf8 - Replace Crypto files with CryptoInterface which uses BearSSL as a cryptographic backend.
- Move cryptographic functions from JsonTranslator to CryptoInterface.

- Make AP activation separate from FloodingMesh::begin().

- Fix English bug.

- Improve comments.
2019-11-06 12:55:34 +01:00
ffa9e3c7c2 Remove useless call to setContentLength() (#6715)
* Update ESP8266WebServer-impl.h

Remove useless call to setContentLength()

* Fix warning unused param
2019-11-05 21:50:52 -03:00
2abcd16efb Implementation of a generic CallBackList (#5710)
* Initial version

Move to experimental namespace

Change namespace
2019-11-05 19:48:04 -03:00
e2959eefd5 Adds SparkFun Blynk Board (#6713)
* adds initial commit to boards.txt before actual edits

* reminder to remove vim .swp file

* Removes spaces and modifies outdated tags for menu `CpuFrequency -> xtal` for example

* Adds SparkFun Bynk Board to boards.txt.py, moves .build flags all together for SparkFun Blynk

* runs boards.txt.py to generate files for pull request - all files have been included as instructed at top of boards.txt file

* Deletes three .orig files generated by boards.txt.py: rst, txt, and json

* Moves boards.txt.py back to /tools directory and attempts to change its mode.

* restore 'x' flag
2019-11-05 17:56:52 +01:00
d14419efa2 Save 16 bytes RAM by placing esp8266_gpioToFn (core_esp8266_wiring_digital.cpp) array in PROGMEM (#6703)
* Save 16 bytes RAM by placing the array in PROGMEM.

* Reduce runtime computation at expense of switching from uint8_t[16] to uint32_t*[16]
2019-11-05 12:37:15 -03:00
60c8975feb Spi0command (#6674)
* precache() - preload code into the flash cache.

By preloading code into the flash cache we can take control over when
SPI Flash reads will occur when code is executing.
This can be useful where the timing of a section of code is extremely
critical and we don't want random pauses to pull code in from the SPI
flash chip.

It can also be useful for code that accesses/uses SPI0 which is connected
to the flash chip.

Non interrupt handler code that is infrequently called but might otherwise
require being in valuable IRAM - such as bit-banging I/O code or some code
run at bootup can avoid being permanently in IRAM.

Macros are provided to make precaching one or more blocks of code in any
function easy.

* Fix missing include

* Make precache extern "C"

* Attempt 2 at making precache extern "C"

* Fix calculation of number of cache lines to preload

With certain alignments/lengths of code it was possible to not read enough
into the flash cache.

This commit makes the length calculation clearer and adds an extra cache
line to ensure we precache enough code.

* SPI0Command - A utility function for generic SPI commands on SPI0

The rom code does not support some flash functions, or have a generic
way of sending custom commands to the flash chip.
In particular XMC flash chips have a third status register, and the
ROM only supports two.

There are also certain requirements for using SPI0 such as waiting
for the flash to be idle and not allowing your code to trigger a flash
cache miss while using SPI0.

* Clean some trailing spaces

* Upgrade _SPI0Command to _SPICommand

We needed to assess the SPI registers as base+offset to avoid referring to the
registers using constant addresses as these addresses were loaded from flash
and had the potential to trigger a flash cache miss.
For similar reasons functions need to be called via function pointers stored
in RAM. Also avoid constants in FLASH, use a copy stored in RAM.

As a side effect we can now select which controller to access as a parameter.

* Tidy up a comment thats no longer applicable

* Comments, formatting and variable renames

Added a number of comments to better explain the code and improved the
formatting.

Also renamed some variables for consistency.

* put SPI0Command in namespace experimental

* Add a comment noting that the code has only been tested on bus 0

* Replace use of memcpy with for loops in _SPICommand()

memcpy is not guaranteed to be safe (IRAM_ATTR or ROM) like I thought.
As a bonus the for loop is guaranteed to do 32-bit wide transfers, unlike memcpy.

* Typo fix

what happens when you forget to edit after copy/paste

* Move the SpiOpResult enum into experimental namespace
2019-11-04 23:14:35 -03:00
afc88f2652 - Improve HelloMesh.ino. 2019-11-04 12:59:49 +01:00
78812a7333 - Add HelloTcpIp.ino example for the TcpIpMeshBackend.
- Update HelloEspnow.ino and HelloMesh.ino examples.

- Fix bug with TransmissionOutcomesUpdateHook not being called when the TCP/IP backend retained WiFi.status() == WL_CONNECTED.
2019-11-03 22:26:52 +01:00
6b763686de - Add working FloodingMesh. Unencrypted broadcasts should work well, but are untested in large mesh networks. Encrypted broadcast support is currently experimental.
- Add BroadcastTransmissionRedundancy and related functionality to reduce the transmission loss during broadcasts. Broadcast transmissions are now re-transmitted once per default. Broadcast throughput halved per default.

- Add getSenderAPMac method.

- Add FloodingMesh example in the HelloMesh.ino file.

- Improve JSON identifier names.

- Improve comments.

- Improve documentation.
2019-11-03 14:00:05 +01:00
692e542d58 precache() - preload code into the flash cache. (#6628)
* precache() - preload code into the flash cache.

By preloading code into the flash cache we can take control over when
SPI Flash reads will occur when code is executing.
This can be useful where the timing of a section of code is extremely
critical and we don't want random pauses to pull code in from the SPI
flash chip.

It can also be useful for code that accesses/uses SPI0 which is connected
to the flash chip.

Non interrupt handler code that is infrequently called but might otherwise
require being in valuable IRAM - such as bit-banging I/O code or some code
run at bootup can avoid being permanently in IRAM.

Macros are provided to make precaching one or more blocks of code in any
function easy.

* Fix missing include

* Make precache extern "C"

* Attempt 2 at making precache extern "C"

* Fix calculation of number of cache lines to preload

With certain alignments/lengths of code it was possible to not read enough
into the flash cache.

This commit makes the length calculation clearer and adds an extra cache
line to ensure we precache enough code.

* Add noinline to PRECACHE_ATTR macro

Precached code needs to be noinline to ensure the no-reorder-blocks is applied.
2019-11-03 05:23:36 -03:00
bf4a4351b6 increase include file compatibility with other architectures (#6700) 2019-11-02 02:48:23 +01:00
176f2851e4 Fix space. 2019-11-01 12:55:31 +01:00
8194197e9d Even better fix of conflict with master branch. 2019-11-01 12:37:09 +01:00
7ca5a7e5bb Fix conflict with master branch.
- Avoid single character String concatenations done via String literals instead of char literals, as this is inefficient because of temporary String creations (#6571).
2019-11-01 12:17:24 +01:00
f8ec4f1c72 - Make connectionQueue(), latestTransmissionOutcomes() and latestTransmissionSuccessful() methods static in order to match the underlying data storage.
- Make it possible to transfer elements directly between connectionQueues.

- Add defaultBSSID value.

- Fix bug where encrypted Espnow-connections expired 1 ms too late.

- Add MutexTracker::captureBan() functionality and use it in the espnowReceiveCallbackWrapper method to ensure a consistent mutex environment there.

- Rename acceptRequest to acceptRequests since several requests can be accepted, not just one.

- Reorganize EspnowMeshBackend.cpp.

- Split sendEspnowResponses() method into sendEspnowResponses() and sendPeerRequestConfirmations().

- Add sendStoredEspnowMessages() method to provide the same functionality as the previous version of sendEspnowResponses().

- Add logic for handling peerRequestConfirmations received at the same time as a peer request is being made, to avoid lockups when there are simultaneous cyclic peer requests.

- Add logic for handling simultaneous reciprocal peer requests.

- Include MAC addresses in HMAC calculations for peer requests and use HMAC for all unencrypted peer request messages, to make sure we receive valid MAC combinations.

- Add asserts to ensure ESP-NOW encryption integrity during code changes.

- Add estimatedMaxDuration argument to performEspnowMaintainance and related methods.

- Add methods to EncryptedConnectionData for setting peer MAC.

- Remove createEncryptionRequestMessage function from JsonTranslator since it is not used, to increase clarity.

- Add encryptedConnectionsSoftLimit() and related functionality.

- Add mutex to protect connectionQueue usage during attemptTransmission.

- Add _ongoingPeerRequestMac variable.

- Add reservedEncryptedConnections() method.

- Add TransmissionOutcomesUpdateHook() callback.

- Add constConnectionQueue() method to allow connectionQueue usage while connectionQueue mutex is active.

- Rearrange attemptAutoEncryptingTransmission argument order to increase efficiency.

- Add functionality for serializing the unencrypted ESP-NOW connection.

- Add some constness.

- Improve comments.

- Improve documentation.

- Update keywords.txt.
2019-10-31 22:25:12 +01:00
14262af0d1 Cleanup base64::encode functions (#6607)
* Cleanup base64::encode functions

The implementation choice here using libb64 is generally good as it
is a relatively fast implementation, however the adaptation to
use PROGMEM for the translation function was a bad choice, as reading
randomly PROGMEM with byte-wide access is very very very slow.

Doing a naive if-snake is between 20% and 55% faster and uses less
flash (about 120 bytes less) and also for reasons I don't understand
8 bytes less data RAM (maybe the removal of static?).

In addition the base64::encode function was allocating for larger
input a huge amount of memory (twice the total size). we can reduce
that by doing a chunk-wise conversation to base64.

* Create authorisation base64 encoded string without newlines

Rather than first creating a string with newlines and then
stripping it away in the fast path of constructing the query,
we can call the right method and trust that the result does
not have newlines anymore.
2019-10-31 13:18:36 -07:00
348c58b644 added public cleanAPlist() function (#4107)
* added public cleanAPlist() function.

* Update ESP8266WiFiMulti.cpp

* Update ESP8266WiFiMulti.cpp

* Add cleanAPlist to object method header
2019-10-31 10:58:35 -07:00
d776ca5875 Re-wording of ATOMIC_FS_UPDATE documenation (#6693) 2019-10-31 10:04:22 -07:00
70e8c99019 fix doc and update ci (#6692) 2019-10-31 16:55:11 +01:00