When building the core with `-Wextra` a few locations have `case:` fall throughs or skipped field initializers. Add proper comments for B64 cases to avoid GCC warnings Initialized unused fields in Tone and WiFiGeneric to avoid missing field initializer warnings. ```` 2022-05-19T17:40:42.2280300Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cdecode.c: In function 'base64_decode_block_signed': 2022-05-19T17:40:42.2282122Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cdecode.c:42:23: warning: this statement may fall through [-Wimplicit-fallthrough=] 2022-05-19T17:40:42.2283247Z *plainchar = (fragment & 0x03f) << 2; 2022-05-19T17:40:42.2284240Z ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 2022-05-19T17:40:42.2285087Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cdecode.c:43:7: note: here 2022-05-19T17:40:42.2285435Z case step_b: 2022-05-19T17:40:42.2285691Z ^~~~ 2022-05-19T17:40:42.2286515Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cdecode.c:53:23: warning: this statement may fall through [-Wimplicit-fallthrough=] 2022-05-19T17:40:42.2286932Z *plainchar = (fragment & 0x00f) << 4; 2022-05-19T17:40:42.2287219Z ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 2022-05-19T17:40:42.2287609Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cdecode.c:54:7: note: here 2022-05-19T17:40:42.2287909Z case step_c: 2022-05-19T17:40:42.2288200Z ^~~~ 2022-05-19T17:40:42.2288972Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cdecode.c:64:23: warning: this statement may fall through [-Wimplicit-fallthrough=] 2022-05-19T17:40:42.2289491Z *plainchar = (fragment & 0x003) << 6; 2022-05-19T17:40:42.2289745Z ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 2022-05-19T17:40:42.2290162Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cdecode.c:65:7: note: here 2022-05-19T17:40:42.2290509Z case step_d: 2022-05-19T17:40:42.2290714Z ^~~~ 2022-05-19T17:40:42.2482744Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cencode.c: In function 'base64_encode_block': 2022-05-19T17:40:42.2484713Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cencode.c:46:20: warning: this statement may fall through [-Wimplicit-fallthrough=] 2022-05-19T17:40:42.2485415Z result = (fragment & 0x003) << 4; 2022-05-19T17:40:42.2486713Z ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 2022-05-19T17:40:42.2487696Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cencode.c:47:9: note: here 2022-05-19T17:40:42.2488519Z case step_B: 2022-05-19T17:40:42.2489175Z ^~~~ 2022-05-19T17:40:42.2492458Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cencode.c:56:20: warning: this statement may fall through [-Wimplicit-fallthrough=] 2022-05-19T17:40:42.2493351Z result = (fragment & 0x00f) << 2; 2022-05-19T17:40:42.2494227Z ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 2022-05-19T17:40:42.2496324Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/libb64/cencode.c:57:9: note: here 2022-05-19T17:40:42.2496937Z case step_C: 2022-05-19T17:40:42.2497261Z ^~~~ 2022-05-19T17:40:44.6354962Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp: In function 'void setToneChannel(uint8_t)': 2022-05-19T17:40:44.6356417Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp:99:5: warning: missing initializer for member 'tone_msg_t::pin' [-Wmissing-field-initializers] 2022-05-19T17:40:44.6357120Z }; 2022-05-19T17:40:44.6358732Z ^ 2022-05-19T17:40:44.6364470Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp:99:5: warning: missing initializer for member 'tone_msg_t::frequency' [-Wmissing-field-initializers] 2022-05-19T17:40:44.6367914Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp:99:5: warning: missing initializer for member 'tone_msg_t::duration' [-Wmissing-field-initializers] 2022-05-19T17:40:44.6372875Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp: In function 'void noTone(uint8_t)': 2022-05-19T17:40:44.6373943Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp:110:5: warning: missing initializer for member 'tone_msg_t::frequency' [-Wmissing-field-initializers] 2022-05-19T17:40:44.6375154Z }; 2022-05-19T17:40:44.6375825Z ^ 2022-05-19T17:40:44.6379852Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp:110:5: warning: missing initializer for member 'tone_msg_t::duration' [-Wmissing-field-initializers] 2022-05-19T17:40:44.6383291Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp:110:5: warning: missing initializer for member 'tone_msg_t::channel' [-Wmissing-field-initializers] 2022-05-19T17:40:44.6388688Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp: In function 'void tone(uint8_t, unsigned int, long unsigned int)': 2022-05-19T17:40:44.6389829Z /home/runner/arduino_ide/hardware/espressif/esp32/cores/esp32/Tone.cpp:128:5: warning: missing initializer for member 'tone_msg_t::channel' [-Wmissing-field-initializers] 2022-05-19T17:40:44.6390677Z }; 2022-05-19T17:40:44.6391420Z ^ 2022-05-19T17:42:00.6768353Z /home/runner/arduino_ide/hardware/espressif/esp32/libraries/WiFi/src/WiFiGeneric.cpp: In static member function 'static bool WiFiGenericClass::setDualAntennaConfig(uint8_t, uint8_t, wifi_rx_ant_t, wifi_tx_ant_t)': 2022-05-19T17:42:00.6769293Z /home/runner/arduino_ide/hardware/espressif/esp32/libraries/WiFi/src/WiFiGeneric.cpp:1333:5: warning: missing initializer for member 'wifi_ant_config_t::rx_ant_default' [-Wmissing-field-initializers] 2022-05-19T17:42:00.6769658Z }; 2022-05-19T17:42:00.6769824Z ^ ````
ESP32 Libraries
arduino-esp32 includes libraries for Arduino compatibility along with some object wrappers around hardware specific devices. Examples are included in the examples folder under each library folder. The ESP32 includes additional examples which need no special drivers.
ArduinoOTA
Over The Air firmware update daemon. Use espota.py to upload to the device.
AsyncUDP
Asynchronous task driven UDP datagram client/server
BLE
Bluetooth Low Energy v4.2 client/server framework
BluetoothSerial
Serial to Bluetooth redirection server
Note: This library depends on Bluetooth Classic which is only available for ESP32
(Bluetoothserial is not available for ESP32-S2, ESP32-C3, ESP32-S3).
DNSServer
A basic UDP DNS daemon (includes captive portal demo)
EEPROM
Arduino compatibility for EEPROM (using flash)
ESP32
Additional examples
- AnalogOut
- Camera
- ChipID
- DeepSleep
- ESPNow
- FreeRTOS
- GPIO
- HallSensor
- I2S
- ResetReason
- RMT
- Time
- Timer
- Touch
ESPmDNS
mDNS service advertising
Ethernet
Ethernet networking
FFat
FAT indexed filesystem on SPI flash
FS
Filesystem virtualization framework
HTTPClient
A simple HTTP client, compatible with WiFiClientSecure
HTTPUpdate
Download a firmware update from HTTPd and apply it using Update
HTTPUpdateServer
Upload a firmware for the update from HTTPd
LittleFS
LittleFS (File System)
NetBIOS
NetBIOS name advertiser
Preferences
Flash keystore using ESP32 NVS
ESP RainMaker
End-to-end platform by Espressif that enables Makers to realize their IoT ideas faster
SD
Secure Digital card filesystem using SPI access
SD_MMC
Secure Digital card filesystem using 4-lane access
SimpleBLE
Minimal BLE advertiser
SPI
Arduino compatible Serial Peripheral Interface driver (master only)
SPIFFS
SPI Flash Filesystem (see spiffs-plugin to upload to device)
Ticker
A timer to call functions on an interval
Update
Sketch Update using ESP32 OTA functionality
USB
Universal Serial Bus driver (device only)
WebServer
A simple HTTP daemon
WiFi
Arduino compatible WiFi driver (includes Ethernet driver)
WiFiClientSecure
Arduino compatible WiFi client object using embedded encryption
Wire
Arduino compatible I2C driver