* Fixes USB CDC setRxBufferSize(), begin(), _onRX()
* Fixes SetRxBufferSize(0) with end()
* Fixes reset when 2x call to end()
* Adds RX_OVERFLOW_EVENT and Queue Copy in setBufferSize
* changed event name to ARDUINO_USB_CDC_RX_OVERFLOW_EVENT
* Adds HardwareSerial::setTxBufferSize()
* uartBegin def fix
* checks TXBufferSize as defined in IDF
Makes sure that the buffer size will not cause a reset to the board.
* Removes double value in Rx/Tx Buffer Size
Keeps Rx/Tx buffer size as set, not doubling it. It makes the process more clear.
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
* fixes setPins and begin to keep rx/tx unmodified
* adds Hardware Flow Control mode and CTS/RTS pin setting
* adds Hardware Flow Control mode and CTS/RTS pin setting
* adds Hardware Flow Control mode and CTS/RTS pin setting
* adds Hardware Flow Control mode and CTS/RTS pin setting
* Code Review
* GPIO refactoring
GPIO now using ESP-IDF API on all chips.
LEDC interrupt fix removed - no longer needed.
Edited pins_arduino.h in variants according to changes in gpio.
* Edited analog channels functions
Summary
Touch Sensor refactoring to be based on IDF 4.4.
Adds support to ESP32S2 and future ESP32S3.
Adds some new APIs:
For all chips:
void touchAttachInterruptArg(uint8_t pin, void (*userFunc)(void*), void *arg, uint32_t threshold);
This function allows the user to add and pass a void* parameter to the ISR user callback.
void touchDetachInterrupt(uint8_t pin);
This function detaches ISR call back for the touch pad pin.
Only ESP32 chip
void touchInterruptSetThresholdDirection(bool mustbeLower);
This function allows the user to set if the ISR callback will be activated when the touch sensor readings are lower or higher than the threshold defined. See example TouchButton.ino.
Only ESP32-S2 and ESP32-S3 chips
bool touchInterruptGetLastStatus(uint8_t pin);
This function reports if the touch pad pin is touched or untouched. It can be used with ISR to identify when it is touched and untouched (released). See example TouchButtonV2.ino.
Impact
None. ll original APIs and examples now run on ESP32 and ESP32-S2.
Related links
Fix#6095Fix#6034Fix#5799Fix#5745Fix#5527Fix#5493Fix#4321Fix#4044Fix#2722Fix#2625
* Unneccesary Operation Removed
(A) extra operation not needed and incorrect:
wrong by 0.5 but happens to be thrown out
( delta * dividend + (divisor / 2) ) / divisor
delta * dividend divisor
= ---------------- + -----------
divisor 2 * divisor
= delta * dividend / divisor + 1/2
(B) check first before doing other computations
(C) changed to rise/run, easier for future maintainer
since it's closer to equation of a line
(D) before: mult, shift, add, div, add
now: mult, div, add
(E) error message easier to trace where thrown
* Update WMath.cpp
forgot to change variable name
Summary
This PR fixes an issue with UART1 default pins.
When using pins RX_1 = 18 and TX_1 = 17, UART1 will display a Break Error on those pins when they are floting (not connected).
It also defines RX_2 = 19 and TX_2 = 20 as default pins for UART2.
Impact
The deaulf pins may look different from the original pinout diagram.
I2C Slave currently doesn't compile for projects where Arduino is an IDF component. This adds missing conditionals.
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* Revert "Examples update, add a note for configTime() that only one ntp server is supported by lwip",
fixed in espressif/esp32-arduino-lib-builder#51
This reverts commit 6b1020967a.
* SimpleTime: add NTPoDHCP option and TimeZone env variable
Summary
This PR is refactoring of SigmaDelta HAL in order to use IDF instead of current Register manipulation approach.
Impact
Change in API:
uint32_t sigmaDeltaSetup(uint8_t channel, uint32_t freq);
changed to -->
uint32_t sigmaDeltaSetup(uint8_t pin, uint8_t channel, uint32_t freq);
void sigmaDeltaAttachPin(uint8_t pin); removed, no longer needed. Pin is attached in sigmaDeltaSetup()
Summary
RMT HAL refactoring based on IDF.
Impact
Improves RMT by adding IDF v4.4 support.
Receiving RMT can handle any size of data.
rmtInit() has a new parameter - RxBufferSize - to hold any number of data when receiving RMT.
rmtWrite() has a new parameter - wait_tx_done - to block writing until sending all data.
Related links
fix#5905
This PR is refactoring of LEDC HAL in order to use IDF instead of current Register manipulation approach.
Fixing duty -> if all bits in resolution are set -> FULL ON
## Summary
Arduino ```setup()``` and ```loop()``` run under a Task with a fixed Stack size of 8KB.
Users may want to change this size.
This PR adds this possibility by just adding a line of code, as for example:
``` dart
ESP_LOOP_TASK_STACK_SIZE(16384);
void setup() {
}
void loop() {
}
```
## Impact
None. It adds a new functionality to ESP32 Arduino.
If ```ESP_LOOP_TASK_STACK_SIZE(newSize);``` is not declared/used, it will compile the sketch with the default stack size of 8KB.
## Related links
fix#6010https://github.com/espressif/arduino-esp32/issues/6010#issuecomment-992701658
Thanks @igrr for the suggestion!
HardwareSerial flush() was returning before all data was sent out through serial port.
This is a problem to some RS485 libraries that depend on it to signaling.
This PR solves the issue by forcing it to block flush() until all data is sent.
This PR is refactoring of DAC HAL in order to use IDF instead of current Register manipulation approach.
Edited dacWrite() to use ESP-IDF api.
Added dacDisable() so there is an option to disable dac channel.
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
- Remove the execute bit from source and text files.
- on-pages.sh script needs the execute bit to be set.
Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com>
Function analogReadResolution set how many bits will analogRead return.
Find out that this functionality was added back 2017 by @me-no-dev in #161.
Related issues:
#5163
* Fix build compilation due to changes in the HW_TIMER's structs
* Fix compilation warnings and errors with USB
* Update USBCDC.cpp
* Update CMakeLists.txt
* Update HWCDC.cpp
* Implement Thread-Safe I2C based on ESP-IDF API
* Update esp32-hal.h
* use proper types for size and timeout
* Allow disabling of the HAL locks
* Limit frequency settings to prevent Interrupt WDT
This pull request contains a few fixes and improvements to the HWCDC implementation.
- Rework `HWCDC::write()` to accept unlimited data
- Add Semaphore to guard the TX Ring Buffer
- Add events support
- Remove unnecessary 1200bps touch for flashing over HWCDC
- Fix `HardwareSerial::setDebugOutput()` not resetting `putc` if the port is already selected, causing debug output to also show on HWCDC even when not selected.
Depending on `tud_cdc_tx_complete_cb` can cause in some cases the last packet to not be transmitted until more data is written and flushed. It's a rare case, but if the other end is expecting those last bytes, transmission will hang.
This PR also fixes debug output on CDC
## Summary
Applies the upstream changes here: https://github.com/arduino/ArduinoCore-API/compare/3b88acac8%5E...0d83f1afc3367037dbde5323c2abd0ae1bd2c583
## Impact
Adds new String convenience methods that are now available in the mainline Arduino implementation, simplifying interoperability with C code that uses pointer+length strings rather than 0-termination. Also includes a change to avoid mutating the source string when taking a substring.
## Summary
This PR is a complete reffactoring of UART Serial Hardware and respective HAL in order to use IDF instead of current Register manipulation approach.
It implements Arduino SerialEvent functionality.
Fix#5287Fix#5273Fix#5519Fix#5247Fix#5403Fix#5429Fix#5047Fix#5463Fix#5362Fix#5112Fix#5443
## Impact
It solves many reported issues related to UART.
It was tested and works fine for ESP32, ESP-S2 and ESP32-C3.
Fixes#5493
## Summary
PR #4996 has broken Touch Interrupt functionality by removing a single line of code used to set a Register.
## Impact
This PR fixes issue #5493 by reverting the removal of necessary code as described above.
Thanks @chegewara
I2C Scan was failing because i2c_master_write does not accept size of 0. This change checks and skips that call if no length is provided (usually when scanning)
* Add initial support for USB MSC
* Add Firmware Upload/Download With MSC
Current running firmware is available as file inside the MSC Disk. To update the firmware on the ESP, just copy a regular firmware bin into the drive
* Support overwriting of the firmware file
Overwriting a file is done totally differently on MacOS, Windows and Linux. This change supports it on all of them.
* Allow CDC, FirmwareMSC and DFU to be enabled on boot
* Add example ESP32-S2 USB-ONLY board
* Various device code optimizations
Added `end()` methods to MSC classes
Made begin() methods safe to be called multiple times
Optimized CDC class
* Fix CDC Connect/Disconnect detection in Arduino IDE on Windows
* Rework cdc_write
* Update ESP32-S2 board configs
lwip lib bundled with esp32 Arduino supports only one ntp server. Any additional servers set are just silently ignored.
This default is different from esp8266 Arduino core and very confusing. Most of the examples provided uses 3 different ntp servers for redundancy while only the first one is used actually.
Addressing issue #4964
* Fix compile archive arguments for the new toolchain
* Add menu to S2 for picking through which port to upload
Internal USB CDC requires to reset and wait for the new port (because persistence is not yet stable)
* USB CDC should also be started in main
* Fix URL and USB version for WebUSB
* Update vendor callback API
* Update CDC::write to use TX_DONE semaphore
* Update USB_Serial example
* Update toolchain
* Update package_esp32_index.template.json
* add optional component dependencies after Kconfig options are known (#5404)
Until this commit, Kconfig options (e.g. CONFIG_TINYUSB_ENABLED) were
used in conditions preceding idf_component_register to determine which
components need to be added to `arduino` component requirements.
However the Kconfig options aren't known at the early expansion stage,
when the component CMakeLists.txt files are expanded the first time
and requirements are evaluated. So all the conditions evaluated as if
the options were not set.
This commit changes the logic to only add these components as
dependencies when the Kconfig options are known. Dependencies become
"weak", which means that if one of the components isn't included into
the build for some reason, it is not added as a dependency.
This may happen, for example, if the component is not present in the
`components` directory or is excluded by setting `COMPONENTS` variable
in the project CMakeLists.txt file.
This also ensures that if the component is not present, it will not be
added as a dependency, and this will allow the build to proceed.
Follow-up to https://github.com/espressif/arduino-esp32/pull/5391.
Closes https://github.com/espressif/arduino-esp32/issues/5319.
* IDF master d93887f9f
* PlatformIO updates for CI (#5387)
* Update PlatformIO CI build script
- Switch to the latest toolchains 8.4.0 for ESP32, ESP32S2, ESP32C3
- Use PlatformIO from master branch for better robustness
* Update package.json for PlatformIO
Co-authored-by: Ivan Grokhotkov <ivan@espressif.com>
Co-authored-by: Valerii Koval <valeros@users.noreply.github.com>
Fixes#5112
Call to pinMatrixInDetach() was changed from version 1.0.6 in version 2.0.0 injecting a bug as seen in cores/esp32/esp32-hal-uart.c
80418fadcf
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* Make String::concat() faster for some types.
This patch removes the unneeded call to `strlen()` when concatenating some types to a `String`. Additionally it fixes some whitespace for consistency.
* Update WString.cpp