* fix(i2s): Check if pin is used before clearing bus
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* feat(zigbee): Add 2MB partition scheme for ED
* fix(example): Check if readings are not null
* fix(zigbee): Add a 10s timeout for temp sensor settings read
* fix(example): Remove duplicated read
* fix(zigbee): Check if device is not bound before bounding again
* fix(zigbee): Revert zigbee partitions name
* fix(zigbee): Fix warnings of missing initializer for member
* fix(zigbee): Fix typo in the comment
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* Add method for querying service name
* Added implementation for getting service name
* Update mDNS-SD_Extended example to include service name
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* fix(platform): Improve firmware size calculation
It will still have a couple of hundred of bytes difference
* fix(build): Change partition used for UploadHugeFile
* feat(matter): add new matter endpoint for thermostat
* fix(matter): not used variable from log_e() message
* feat(matter): adds specifc type name for thermostat auto mode enabled
* fix(matter): suggested changes in pr review
* feat(matter): added the whole list of thermostat operational modes
* fix(matter): fixed type in thermostat operational modes
* ci(pre-commit): Apply automatic fixes
* fix(matter): typos caught by CI codespell
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Tested on some of the popular S3 board bought from Amazon, the digitalRead of an INPUT pin is LOW, which stops the timer right after start.
Setting it to INPUT_PULLUP will fix it.
Before, the raw read would time out if the content length was not a multiple
of HTTP_RAW_BUFLEN, as it tried to read HTTP_RAW_BUFLEN bytes even if the
last chunk should actually contain less.
* feat(matter): adds new temperature sensor matter endpoint
* feat(matter): commentaries review and fixes
* feat(matter): commentaries review and fixes
* feat(matter): commentaries review and fixes
* feat(matter): commentaries review and fixes
* feat(matter): commentaries review and fixes
* feat(matter): commentaries review and fixes
* feat(matter): general commentaries and code review
* feat(matter): keeping arduino style for local variables (lower case)
* feat(matter): applies a generic temperature unit to the implementation and example
* fix(matter): fixed problem with begin(float) implementation
* fix(matter): fixed begin(float) initiallization
* feat(matter): updated matter temperature keywords with new api
* ci(pre-commit): Apply automatic fixes
* fix(matter): fixed code spell ci errors in matter temperature sensor
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* BLECharacteristic::notify() optimization
GeneralUtils::hexDump() doesn't output anything if the log level is not "VERBOSE". Additionally, it is very CPU intensive, even when it doesn't output anything. So it is much better to *not* call it at all if not needed.
In a simple program which calls BLECharacteristic::notify() every 50 ms, the performance gain of this little optimization is 37% in release mode (-O3) and 57% in debug mode.
Of course, the "#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE" guard could also be put inside the GeneralUtils::hexDump() function itself. But it's better to put it here also, as it is clearer (indicating a verbose log thing) and it allows to remove the "m_value.getValue().c_str()" call, which is in itself quite CPU intensive.
* BLECharacteristic optimization
Calls to BLEUtils::buildHexData() don't output anything when the log level is not "VERBOSE" or "DEBUG". As this function is quite CPU intensive, it is better to not call it when not needed.
* feat(matter): adds new matter generic switch endpoint
* fix(matter): no need of arduino preferences here
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* feat(asyncudp): add all current keywords to the list
* feat(asyncudp): add license information to the source code
* feat(asyncudp): add license information to the source code
* feat(asyncudp): add license information to the source code
* feat(asyncudp): add license information to the source code
* feat(asyncudp): add license information to the source code
* feat(asyncudp): revert license information to the source code
* feat(asyncudp): revert license information to the source code
* feat(asyncudp): revert license information to the source code
* feat(asyncudp): revert license information to the source code
* feat(asyncudp): revert license information to the source code
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* fix(zigbee): Add connected and minor fixes, example update
* fix(example): Use correct API call for connected
* fix(zigbee): Increase timeout and add semaphore to begin
* feat(zigbee): Add option to select debug libs for zigbee
* fix(example): fix warning by double percentage symbol
* fix(example): Fix serial prints for Windows os
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
* ci(pre-commit): Apply automatic fixes
* fix(example): Fix precommit spelling
---------
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* feat(matter): add new endpoint - color temperature light
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* feat(matter): adjust preferences labels in matter examples
* feat(matter): adjust preferences labels in matter examples
* fix(matter_example): extra blank space in code added by mistake
* feat(matter_example): use const char * instead of #define
* feat(matter_example): use const char * instead of #define
* feat(matter_example): change Preferences names
* fix(matter_example): missing semicolon in code
* fix(zigbee): Bump zigbee version and use 1.6.0 (#10563)
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* fix(zigbee): Add require public for zigbee libs
* fix(zigbee): Guard the Zigbee library
* fix(zigbee): Fix removed cluster_role attribute (#10576)
* fix(hosted): Update hosted configuration
* fix(hosted): Fix Hosted deinit and protect reinit for now
* IDF release/v5.3 a0f798cf
* IDF release/v5.3 a0f798cf
---------
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* fix(build): Allow Arduino to compile in IDF without components
This adds guards for the rest of the extra components
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* fix(wifi): Fix requirements and guards for hosted Wi-Fi
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* feat(matter): source code folder organization
* feat(matter): new matter endpoint dimmable light
* feat(matter): dimmable friend class and adjusts log levels
* feat(matter): adds new folder and source code to cmakelists.txt
* fix(matter): identation in cmakelists.txt
* feat(matter): adds license disclaimer to all source code
* feat(matter): example code simplification
* feat(matter): make it work with rgb and analog led
* feat(matter): single user callback based on lambda function
* feat(matter): commentaries and code improvement. update() and callbacks added.
* feat(matter): adde new keywords to arduino settings
* feat(matter): example code adjustment to use improved api
* fix(matter): it shuold work even when no callback is set
* feat(matter): matter.h includes all possible endpoint header files
* feat(matter): adjusts all examples to only include matter.h
* fix(matter): double declaration of ret - var scope issue
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* lib Network: add cpp syntax to structs
* [Network] deprecate NetworkEvents::removeEvent() for std::function callbacks
removing event callback via std::function pointer does not work as expected for lambdas (issue #10365)
here mark NetworkEvents::removeEvent(NetworkEventFuncCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX)
as deprecated in favor of removing by callback's id
for NetworkEvents::onEvent remove checking for dublicate event handler, this does not work for lambdas too
remove NetworkEvents::find methods as unnecessary
move cbEventList container inside the class
declare NetworkEventCbList_t as a cpp struct with constructor, allows using std::vector.emplace() when adding new items to container
optimize NetworkEvents::remove() calls to use erase-remove idiom for std::vector
* [Network] hide event task under private member of NetworkEvents class
prevent checkForEvent loop to be callable from outside the task's thread
* refactor(NetworkEvents) code polishing and comments
- rename NetworkEvents::cbEventList as private member NetworkEvents_cbEventList
- NetworkEvents::getStatusBits() add const qualifier
- turn statics into constexpr
- add indexes to enum::arduino_event_id_t to make events indexing consistent for SOCs with/without WiFi
also leave some index gaps to minimize renumbering on adding new events
- add doxygen help to NetworkEvents:: methods
- declare NetworkEvents::eventName() as static, that could be used without creating class scope
- potential mem leak in postEvent
* refactor(NetworkEvents) add (optional) mutex lock for container operations
provide thread safety for dual core SoCs
since std::mutex brings additional componetns of libstdc++ lib it impacts resulting image size significantly (around 50k)
Might be enabled on-demand if thread-safety is required
* ci(pre-commit): Apply automatic fixes
* fix(spelling): Fix spelling mistakes
---------
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* User can choose if calc MD5 from decrypted file
At the present moment, if user want use OTA, the function calculate MD5 of the decrypted file, but if file is encrypted from source, could be more useful to know the MD5 of the encrypted file.
* md5
* Update Updater.cpp
* Update libraries/Update/src/Update.h
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* Update libraries/Update/src/Update.h
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* Update libraries/Update/src/Updater.cpp
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* Update libraries/Update/src/Updater.cpp
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* feat(matter): initial commit with arduino matter lib
* feat(matter): add matter library to cmakelists.txt
* fix(matter): add correct guard for ci
* fix(matter): using correct ci requirements in ci.json
* fix(matter): using correct ci requirements in header files
* fix(matter): using correct ci requirements header and examples
* fix(typo): typo and commentaries
* fix(typo): typo and commentaries
* fix(typo): typo and commentaries
* fix(commentary): longer explanation
* feat(matter): api simplification with begin
* feat(matter): testing flashmode=qio in CI
* feat(matter): testing flashmode=qio in CI
* fix(matter): changes CI FQBN
* fix(matte): include all fqbn in ci.json using qio
* fix(matter): revert ci and guard changes
* fix(matter): typo and commentaties
* feat(matter): adds a light toggle switch button
* feat(matter): improved the button control
* feat(matter): using switch instead of if() for attibute change
* fix(matter): switch/case scope
* fix(matter): problems found after pressing reset
* feat(matter): improve example using preferences
* fix(pre-commit): Fix and apply pre-commit hooks
---------
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* feat(sdmmc): Add support for P4
* fix(board): Remove builtin led
* Update libraries/SD_MMC/examples/SDMMC_Test/SDMMC_Test.ino
Add missing note about power pin for P4
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* ci(pre-commit): Apply automatic fixes
* feat(sdmmc): Option to set power channel
* feat(sdmmc): Update pins_arduino.h
* feat(sdmmc): remove sdmmc power from periman
* fix(sdmmc): use corrent variable
* fix(sdmmc): Remove periman
* feat(sdmmc): Toggle power pin if defined
* feat(sdmmc): setPowerChannel available only when supported
* feat(sdmmc): Toggle sd power pin for 200ms
* fix(example): Remove p4 pins as they are listed already
* feat(sdmmc): Check if power channel is specified
* ci(pre-commit): Apply automatic fixes
* fix(ci): codespell fix
---------
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* feat(touch): Support NG touch driver for P4
* fix(ci): Touch test + IDF compilation fixes
* fix(ci): remove debug prints from touch test
* fix(ci): Fix touch test for esp32
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* fix(eth): Add ETH support for ESP32-P4
Also adds configuration to pins_arduino.h
* fix(eth): Enable TLK110 Example on P4
* fix(eth): Fix Ethernet examples
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* feat(p4): Add support for WiFi to ESP32-P4
Implements support for external MCU connected through SDIO
* fix(p4): Init SDIO host properly on Network boot
esp-hosted has one function marked as "constructor" that did not run in the boot phase of the chip. This calls the function when network is started
* ci(partitions): Use default partition for compilation in CI
* fix(ci): Fix paths for sdkconfig
* Fix build of camera web server
* fix(ci): Fix test requirements check
* ci(append): Add option to append to all FQBNs
* fix(json): Fix JSON files to compile examples
* fix(example): Use requires instead of target in ci.json
fix(zigbee): Improve JSON files
Co-authored-by: Jan Prochazka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* fix(regex): Trim argument before grep
* docs(ci): Add documentation about FQBNs in CI
* fix(json): Remove redundant FQBNs
* fix(json): Skip requirements if libs are not installed
* fix(partitions): Use rainmaker specific partitions
---------
Co-authored-by: me-no-dev <hristo@espressif.com>
Co-authored-by: Jan Prochazka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* Initial commit - light bulb + switch working
* Add Thermostat + fix enum
* Dev update: roles, cb removal, handlers
Fixed ep_thermostat to compile successfully
Removed cb from all EP, as it have been removed, virtual methods will be used instead.
Moved zigbee handlers out of Zigbee_core to Zigbee_handlers for better readability.
Fixed zigbeeInit to be bool and return status of initialization for begin function.
Updated examples with edited roles and custom method for on_off light
* Dev update: implement on/off light and switch methods
Implemented basic function calls of switch commands to on/off light:
lightToggle, lightOn, lightOff, ...
Implemented virtual methods for on/off light that have to be override in user code:
setOnOff, sceneControl, setOnOffTime, setOffWaitTime
APIs can be changed, still early development.
* Dev update: Factory reset, names, multiple EPs
Implemented Factory reset of Zigbee device, in order to connect to new network without reflashing/erasing flash
Implemented optional setting for Manufacturer and Model names
Added option to allow endpoint to have multiple endpoint connected -> switch - 2 lights (tested)
Minor sketches update
* Dev update: Device ID to string
Implemented easy transfer from device it to Device type (0x0000 = ESP_ZB_HA_ON_OFF_SWITCH_DEVICE_ID -> "General On/Off switch".
* Implement cmd default response handler
* Remove unused _identify_cluster
* Dev Update: Color DImmable light + switch implemented
Implemeted color dimmable light and color dimmer switch HA devices + examples.
Removed unnecessary stored attribute cluster
Renamed on/off light and switch examples
* Implement Network Scanning
Implemented Zigbee network scanning (async) to mostly match WiFi scan APIs.
Added Zigbee_Scan_Networks example
* Dev Update: Thermostat and Temperature sensor EP
Implemeted thermostat and temperature sensor HA devices + examples.
Implemented configure report handler.
Updated READMEs and description of examples.
Minor code updates
* fix(): Replace deprecated function
* Remove ported IDF examples
* Update Zigbee examples with new APIs
* Dev Update: Version setting, Thermostat fix, ...
Simplified bounded device print as the structure is common for any EP type
Allowed setting custom app version for EP, default is 0
Small fixes and code updates
* Remove EP template + add lib to CMakeLists
* Rename classes to have proper naming
* Add check for SOC_IEEE802154_SUPPORTED
* Ignore false positive unused variable/function
* Fix compilation errors in examples
* Fill keyworkds.txt, remove unnecessary defines
* Rename methods, variables + make private/protected
* Remove unnecesary defaults defines
* Remove outdated comments
* Update Scan networks Readme
* fix(example): Use proper naming of func and variables
* Change virtual methods to callbacks (TODO)
* Refactor classes methods + implement Identify command
* Apply suggestions from code review by @lucasssvaz
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* Update READMEs + add openNetwork fucntion
* Use [[maybe_unused]] instead of #pragma
* Use gpio calls for OnOff Light example
* ci(pre-commit): Apply automatic fixes
* fix(): Codespell issues
---------
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* ci(json): Add support for checking sdkconfig before running tests
* docs(ci): Add explanation about requires field in JSON
* fix(json): Ignore comments when searching requirements
* feat(json): Add extended regex support to requires field
* change(json): Move to using requirements in JSON
* fix(json): Fix requirements for touch tests
* refactor(json): Fix formatting of JSON files
* fix(spi): Fix SPI example and JSON
* DNSServer: fix improper startup code in WiFi mode
When running on WiFi-AP mode server's start() method returned true while in fact UDP listening socket was never created
Regression introduced in #8760Closes#10330
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* fix(esp32p4): Add missing touchpad definitions
* fix(esp32p4): Add missing target in SPI example
* fix(esp32p4): Start touch driver fix
* fix(esp32p4): Skip touch examples while it is not implemented
* fix(esp32p4): Add missing analog pin definitions
* refactor(formatting): Fix formatting that was broken in P4 PR
* fix(openthread): Add missing targets to skip
* fix(esp32p4): Skip ethernet sketches
* fix(esp32p4): Disable periman test while touch is not implemented
* fix(esp32p4): Disable touch test while touch is not implemented
* fix(esp32p4): Fix UART test
* fix(esp32p4): Skip Wi-Fi test
* fix(esp32): Skip unsupported example
* fix(esp32p4): Fix skip files
* ci(pre-commit): Apply automatic fixes
---------
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
* change(ESP_NOW_Serial): No teardown on retry limit
After max retries is met once the ESP_NOW_Serial_Class performs "end()".
This removes the peer from ESP_NOW.
Further messages to and from ESP_NOW_Serial are not received or sent.
Peer should stay in ESP_NOW to re-establish connection even with data loss.
This change will "retry and drop" the data piece by piece instead of aborting the connection.
* feat(espnow): Add remove on fail parameter
* feat(espnow): By default keep the peer when sending fails
---------
Co-authored-by: Jan Prochazka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* Fix(NetworkEvents): Don't skip event callbacks in NetworkEvents::removeEvent
Fixes Issue 10318
Includes pull request 10321 that fixes 10316
This change:
* Adds code to find the event callbacks
* Issues error when duplicate callbacks insertion attempts are made
* Issues error when callbacks are not found during removal
* Fix(NetworkEvents): Don't skip event callbacks in NetworkEvents::removeEvent
Fixes Issue 10318
Includes pull request 10321 that fixes 10316
This change:
* Adds code to find the event callbacks
* Issues warning when duplicate callbacks insertion attempts are made
* Issues warning when callbacks are not found during removal
---------
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* [WiFiScan] Allow allocation to fail and prevent memory leak
When there are many AP's seen during a scan, the allocation of `_scanResult` may fail.
Thus add `(std::nothrow)` to the `new` call.
Also it is possible the array was still present before allocating a new one.
* [WiFiScan] Use nullptr instead of 0
As suggested by @me-no-dev