* Fix ambiguous for TwoWire::requestFrom() methods.
* Remove TwoWire::begin(int) overload
Inside the function, this overload truncated the data type to a shorter one. This could break some users' hopes.
* Rewrite TwoWire with using HardwareI2C
- implement proposal https://github.com/espressif/arduino-esp32/pull/8818#issuecomment-1792191815
to bring the HARDWARE interface into compliance
* Fix TwoWire::end() return type.
* Fix TwoWire::setClock() return type.
* Fix no return statement in the TwoWire::requestFrom.
* fix(libraries/Wire): fix bad return-statement
Remove non-void values of the return-statements in function returning 'void'.
* style(libraries/Wire): replace tabs with spaces
* refactor(libraries/Wire): use slave without support
TwoWire::begin(uint8_t address) should be available without slave
support by SoC?
* refactor(libraries/Wire): remove unused variables
Compiler reports "Wire.cpp:393:15: error: variable 'err' set but not used [-Werror=unused-but-set-variable]".
* refactor(libraries/Wire): remove unused variables
Compiler reports "Wire.cpp:337:15: error: variable 'err' set but not used [-Werror=unused-but-set-variable]".
* fix(libraries/Wire): hide slave support elements
TwoWire::user_onRequest is used only in conjunction with slave support?
* refactor(libraries/Wire): remove temporary comment
* fix(libraries/Wire): restore an accidentally deleted implementation
TwoWire::endTransmission() was accidentally deleted from a cpp file.
* refactor(libraries/Wire): return return types
In TwoWire class return return types.
* fix(libraries/Wire): fix return type
* refactor(libraries/Wire): add return statement if slave isn't supported
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* refactor(libraries/Wire): fix indentation
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* refactor(libraries/Wire): fix indentation
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* refactor(libraries/Wire): fix indentation
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* refactor(libraries/Wire): remove unnecessary empty lines
---------
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* feat(wifi): Improves WiFiMulti
* fix(wifi): Fixes Initialization of Security Mode
* feat(wifi): simplifies the example by using HTTPClient
* fix(WiFi): fixes a type in the commentaries
because print-to-all-clients is not implemented
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* feat(i2s): Add I2S examples
- ES8388 loopback example using the LyraT board
- ESP32-S3-EYE record WAV to SD card example
- Simple tone example
* docs(i2s): Add I2S API docs
* feature(spi): Allow detach of some SPI pins
* fix(spi): Remove unnecessary check
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
* feat(spi): Rename CS pin to SS to match Arduino standard
* fix(spi): Remove unnecessary checks
* remove lock from spiAttackMISO
---------
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
Co-authored-by: me-no-dev <hristo@espressif.com>
* First stab ad simplyfing webserver auth and adding a handler.
* Tweaks after testing against docs and latest Library tree
* Add documentatin for callback handler
* Bodge to allow things to compile without the dependencies
* Remove dependency on sodium to make it compile with 4.4
* Fix hex conversion
* Move some common HEX functions into a static HEX class, remove those from MD5 and add some examples. This allows for the cleanup of various to/from HEX routines elsewhere.
* Remove some duplicated code
* Add simplfiied HEXBuilder under MD5Bulder to CMakefile.
* Update for 3.0.0 and QoL improvements
* Remove examples that depend on external libraries
* Skip H2 testing
* Formatting improvements
* Move builders examples to Utilities folder
* Fix indentation
* Add HashBuilder abstract class
* Add SHA1Builder
* Fix comment
* Fix whitespace
* Fix crashes and improve log messages
* Fix indentation for webserver
---------
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com>
there may be other copy of WiFiClient working with that connection.
let shared_ptr stop the connection when it is not refered anymore.
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* IPv6 for Arduino 3.0.0
* Fix warning in WifiUdp
* remove comment / formating
* Add zone to IPAddress and update WiFiUDP and WiFiGeneric
* Add from ip_addr_t conversion and better toString implementation
* Use constant for IPAddress offset
@sgryphon is this better?
* Combine hostByName to support both IPv6 and IPv4 results
* implement logic to use v6 dns only when global v6 address is assigned and remove IPv6Address
* Rename softAPenableIPv6
* Rename mDNS methods
* fix IPAddress method to work with const address
* Some cleanup and do not print zone in IPAddress
* rename WiFiMulti method
* Fix AP DHCPS not properly working on recent IDF
* Add option to print the zone at the end of IPv6
@TD-er
* remove log prints from hostByName
* Use correct array length for listing IPv6 addresses
* Implement some Tasmota requirements
Added constructor that takes `const ip_addr_t *`.
Added `addr_type()` getter
Organize header to highlight the Espressif additions to IPAddress
* add 'const' to IPAddress::addr_type()
* Fix WiFiUdp not updating mapped v4 address
* Update WiFiServer.cpp
---------
Co-authored-by: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
* Added Serial as RS485 interface demo
* Added more detail to initial comment
* Switched to UART_MODE definitions from uart_types.h in order to accomodate some versions of Arduino core
* Update libraries/ESP32/examples/Serial/RS485_Echo_Demo/RS485_Echo_Demo.ino
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
* Update libraries/ESP32/examples/Serial/RS485_Echo_Demo/RS485_Echo_Demo.ino
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
* Update libraries/ESP32/examples/Serial/RS485_Echo_Demo/RS485_Echo_Demo.ino
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
* Removed HardwareSerial.h include. Switched RTS pin to GPIO 4 for broader compatability.
* using 115200 for UART0 - console
---------
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
* DNSServer: switch to AsyncUDP instead of WiFiUDP
AsyncUDP offers event driven approch for handling udp dns req's
WiFiUDP hooks to loop() for packet processing and making useless malloc's each run
* DNSServer code refactoring
get rid of intermediate mem buffers and extra data copies,
most of the data could be referenced or copied from the source packet
- removed _buffer member
- replaced DNSQuestion.QName from uint8_t[] to char*
added sanity checks for mem bounds
optimize label/packet length calculations
other code cleanup
* DNSServer drop dynamically allocated member structs
DNSHeader and DNSQuestion structs could be created on stack
no need to keep it as obj members
* DNSServer: labels min length checks, simplified labels parser
* DNSServer use default settings for catch-all setup
- default constructor and start() method simply runs a catch-all DNS setup
- avoid string comparison for domain reqs in catch-all mode
- use IPaddress class for _resolvedIP (looking for IPv6 support in future)
* CaptivePortal example refactored
- use webserver instead of simple tcp setver
- use redirects to allows CaptivePortal detection pop-ups in modern systems
* DNSServer status getters added
add isUp() method - returns 'true' if server is up and UDP socket is listening for UDP req's
add isCaptive() method - returns 'true' if server runs in catch-all (captive portal mode)
some doxygen comments added
start() method now keeps existing IP address if any
---------
Co-authored-by: Lucas Saavedra Vaz <lucas.vaz@espressif.com>
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* Removed virtual + moved socketOptions ot read/write
* Removed no needed code + edit
* removed Client::getTimeout
* removed setTimeout from WifiClient - read/write timeouts in constructor now
* Changed seconds to miliseconds in other classes relaed + examples
* Applied same changes for WifiClientSecure
* Added 0 init values to constructor
* Seconds are not rounded now
* removed +500 for previous rounding
+ unnecessary comments removed.
* fix rebased code in WifiClientSecure
* Fix rebased code
* Fix rebase code
* Create WiFiScanAsync.ino
* Create .skip.esp32h2
* Create README.md
* Update README.md - adds C6
* Update wifi.rst with new example
* avoid timeout with Async Mode
---------
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
dns_gethostbyname, as used in hostByName, is required to run in lwIP's TCP/IP
context. This can be verified by enabling LWIP_CHECK_THREAD_SAFETY in the
sdkconfig.
Calling dns_gethostbyname from the Arduino task can trigger race conditions
in lwIP or lower layers. One possibility is a corruption of IDF's Ethernet
buffers, causing an unstoppable flood of "insufficient TX buffer size" errors,
effectively severing all Ethernet connectivity.
This patch makes sure to call dns_gethostbyname from lwIP's TCP/IP context.
* Compile error if CONFIG_FREERTOS_HZ != 1000
* add a check at the CMake level, per feedback
* fix a punctuation glitch
* Remove `_Static_assert` per feedback
* add documentation on threading issues with WiFi.onEvent()
* more comments
* thin out comments, add docs
* Update WiFiProv.ino merge conflict issue fixed
* Added the CLK type and MAC from eFuse to Ethernet begin
* Fixed the order and arguments on the Ethernet begin function
---------
Co-authored-by: Pedro Minatel <pedro.minatel@espressif.com>
Co-authored-by: Pedro Minatel <pminatel@gmail.com>
* Added USBMIDI support to libraries/USB
* Added MIDI examples to libraries/USB
* Added missing newline at end of file to MidiController.ino
* Added USBMIDI.cpp to CMake file
* Fix narrowing conversion warning in USBMIDI.cpp
* Fix incomplete initializers warning in USBMIDI.cpp
* Apply suggestions from code review
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
* add skip files for C6+H2
* remove already patched workaroud for bug
* move #define to top of file
---------
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
Co-authored-by: Lucas Saavedra Vaz <lucas.vaz@espressif.com>
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
1. Like a real keyboard, the USB interface descriptor will have an interface
subclass of boot and an interface protocol of keyboard. This will cause
some PC BIOS to send a SET PROTOCOL BOOT request to the device.
2. When the device sends reports to the host, if the host requested boot
protocol, don't send a report ID because boot protocol does not use report
IDs.
3. To work with some simple PC BIOS:
a. Use endpoint address of 1 for input and output.
b. Use separate reports for the shift key. These extra reports can be
disabled by calling USBHIDKeyboard::setShiftKeyReports(false).
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* Update BLERemoteCharacteristic.cpp
Fix kernel panic issue when trying to release BLEClient when the target device have a ble descriptor.
* Update BLERemoteCharacteristic.cpp
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
---------
Co-authored-by: Lucas Saavedra Vaz <lucas.vaz@espressif.com>
Co-authored-by: Lucas Saavedra Vaz <lucassvaz@yahoo.com.br>
Turns out that disabling the periman APIs from remap has a negligible
effect on the source: the core is already excluded from remapping, as
are most of the libraries. It's also expected to be a private API not
exposed by default.
This patch removes it from both esp32-hal.h and io_pin_remap.h,
adjusting the relevant libraries.
* Modified 'BLEAdvertising.h' & 'BLEAdvertising.cpp'
Added three methods for removing service UUID from BLEAdvertised
* Update BLEAdvertising.cpp
Changed 'i' to 'index'
---------
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
* esp32-hal-bt.c free Bluetooth LE memory if CONFIG_BTDM_CONTROLLER_MODE_BR_EDR_ONLY is set
BLE memory can be released if bluetooth-classic - only is requested
* tStart( add error output
* ble mem_release only for esp32
* disable BLE with BT_MODE define
* BluetoothSerial add begin()+disableBLE; add memrelease
* btStart with BT_MODE parameter
* beautification
* Update BluetoothSerial.cpp fix wrong merges
---------
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* [pin_remap 1/3] platform: define ARDUINO_CORE_BUILD when building core files
* [pin_remap 2/3] core,libs: add pin remap hooks
* platform: remove previous build options if file is missing
"touch" would create the file if not present, but not delete its
contents if a previous run left the file in the build dir.
* platform: make debug_custom.json file customizable by board
* platform: fix default debug prefix
"debug.toolchain.prefix" must end with a dash, since only the tool name is
appended to this string.
The reason this is not a major issue is that the "debug_custom.json" file
(copied in the sketch directory when debugging is enabled) forces its own
prefix. And to make things more interesting, the "toolchainPrefix" entry
in that file should _not_ end with a dash.
* [pin_remap 3/3]: add Arduino Nano ESP32 board
* fix: periman: include it by default, add include guard
* fix: io_pin_remap: adjust for new perimap APIs
* fix: libraries: manually handled pin remapping files
Previously all libraries invoked either high-level APIs (transparently
remapped, like the user sketch) or low-level ESP-IDF calls (where the
remap to GPIO numbers had to be added manually).
Since 3.x, some of these are mixed (for example, periman* APIs are
remapped, while soc* are not). This must be handled by disabling the
automatic API remapping and making sure all calls use GPIO numbers.
* feat: show remapped pins in chip debug reports
---------
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* Example sketch prints MAC for different interfaces
Interfaces described in documenation: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/misc_system_api.html#mac-address
* Update README.md to include 'MacAddress'
* Add files via upload
* Delete libraries/ESP32/examples/MacAddress/GetMacAddress.ino
* Delete libraries/ESP32/examples/MacAddress/GetMacAddress/GetMacAddress.ino
* Delete libraries/ESP32/examples/MacAddress/GetMacAddress/MacAddress directory
* Add files via upload
* Add files via upload
* Adds necessary MAC header file
* Reverting - moving to the sketch
* Adds include with esp_mac_type_t values
---------
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
* Update WiFiClient.h
Added missing getSocketOption() with full access to level and option
* Update WiFiClient.h
* Handle timeout settings below 1 second
Fix error with connect timeout settings below 1000ms.
Add getsocketoptions function.
* Add cast for setsockopt length
---------
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
* Added Bandwith setting method
* Separted AP and STA on it's own class each
* Missing WiFi
* Rename for consistency
---------
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
esp8266 and esp32 server.available() is not implemented as documented
it is implemented like server.accept() is documented by Arduino
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
* Extended bus types for peripheral manager
* add extra_type to peripheral manager
* Fix function call
* Fix check for no extra_type
* Add extra_type for SD and ETH CS pin
* added bus_num and bus_channel to pin structure
* update printPerimanInfo with new fields
* replaced setting bus to INIT with DetachPin call
* add defines for extra attributes
* use new required parameters in perimanSetPinBus
* function rename
* removed duplicate define
* Update print format
---------
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>