Repository: espressif/arduino-esp32
Pull request #11191: Add an option to force IDF's default UART clock source
Author: login: gonzabrusco
Labels: name: Status: Pending Merge
description: Pull Request is ready to be merged
name: Area: UART
description: Related to the UART peripheral or its functionality.
Created: 2025-03-27T19:56:05Z | Merged: 2025-04-09T08:25:06Z

## Description of Change
Using the ESP32 and baud rates lower than 250000, Arduino 3.X forces you to use `REF_TICK` as clock source for the UART (instead of the APB as Arduino 2.X). Only if the baud rate is higher than 250000, it switches to `APB`. This restricts on the RX timeout you can configure with the `setRxTimeout` method of `Serial`. You can only set a maximum of 1 symbol timeout while using `REF_TICK `. For using longer timeouts, you need to use `APB` as clock source, but Arduino was not giving me the possibility. So I created this option that overrides this automatic selection.

This pull request introduces changes to the UART clock source configuration for the ESP32 platform, adding new options and improving flexibility. The key changes include adding a new configuration option in the Kconfig file, defining new clock source options, and updating the UART initialization and configuration methods to support these new options.

### Configuration Updates:
* ~[`Kconfig.projbuild`](diffhunk://#diff-cf481a75bbf9113f776cf1d94c5d6cc843774885f5392563ae1c63b0758a26deR121-R131): Added a new configuration option `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` to force the default UART clock source from IDF, allowing users to override Arduino's automatic clock selection.~ \
** This was the initial approach and motivation, but it was replaced by the new `HardwareSerial::setClockSource()` API.**

### Code Enhancements:
* [`cores/esp32/HardwareSerial.cpp`](diffhunk://#diff-ba8326df1da045f1f613db50d92fefb7bd8ed28256aff9af66685f091f64557aR610-R624): Implemented a new method `setClockSource` to set the UART clock source before starting UART using `begin()`. This method supports various clock sources based on the SoC.
* [`cores/esp32/HardwareSerial.h`](diffhunk://#diff-ba8df4ae3e43ea0d34307f26d6def560d7c458d88bf6fb2ddd315a94a60dbdaeR99-R123): Added `SerialClkSrc` enum to define different UART clock sources and updated the `HardwareSerial` class to include the `setClockSource` method. [[1]](diffhunk://#diff-ba8df4ae3e43ea0d34307f26d6def560d7c458d88bf6fb2ddd315a94a60dbdaeR99-R123) [[2]](diffhunk://#diff-ba8df4ae3e43ea0d34307f26d6def560d7c458d88bf6fb2ddd315a94a60dbdaeR372-L349)

### Structural Changes:
* [`cores/esp32/esp32-hal-uart.c`](diffhunk://#diff-3d9c6876ed404db1b65230f87978c06285493ebaba9ceac1d2f45446f8cf8a87R61): Modified the `uart_struct_t` structure to include `_uart_clock_source` and updated the UART initialization (`uartBegin`) and baud rate setting (`uartSetBaudRate`) methods to utilize the new clock source configuration. [[1]](diffhunk://#diff-3d9c6876ed404db1b65230f87978c06285493ebaba9ceac1d2f45446f8cf8a87R61) [[2]](diffhunk://#diff-3d9c6876ed404db1b65230f87978c06285493ebaba9ceac1d2f45446f8cf8a87L668-R690) [[3]](diffhunk://#diff-3d9c6876ed404db1b65230f87978c06285493ebaba9ceac1d2f45446f8cf8a87L978-R1060)
* [`cores/esp32/esp32-hal-uart.h`](diffhunk://#diff-49a988ec8cbc8364d7aa2bb277c54dddb72d30293e4e97e26132c8d188ba1947R100-R112): Added the `uartSetClockSource` function to set the UART clock source mode, ensuring it is called before `uartBegin()`.

## Tests scenarios
- With this option disabled, on an ESP32, try to set the timeout to 2 using `setRxTimeout`. You will see the following IDF error in the console:
`E (215) uart: tout_thresh = 2 > maximum value = 1`
- With this option enabled, you can set a higher rx timeout than 1.

## Related links
https://github.com/espressif/arduino-esp32/issues/11132



Diff:
diff --git a/cores/esp32/HardwareSerial.cpp b/cores/esp32/HardwareSerial.cpp
index 76135691411..6d762da21fb 100644
--- a/cores/esp32/HardwareSerial.cpp
+++ b/cores/esp32/HardwareSerial.cpp
@@ -607,6 +607,24 @@ bool HardwareSerial::setMode(SerialMode mode) {
   return uartSetMode(_uart, mode);
 }
 
+// Sets the UART Clock Source based on the compatible SoC options
+// This method must be called before starting UART using begin(), otherwise it won't have any effect.
+// Clock Source Options are:
+// UART_CLK_SRC_DEFAULT      :: any SoC - it will set whatever IDF defines as the default UART Clock Source
+// UART_CLK_SRC_APB          :: ESP32, ESP32-S2, ESP32-C3 and ESP32-S3
+// UART_CLK_SRC_PLL          :: ESP32-C2, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2 and ESP32-P4
+// UART_CLK_SRC_XTAL         :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_CLK_SRC_RTC          :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_CLK_SRC_REF_TICK     :: ESP32 and ESP32-S2
+// Note: CLK_SRC_PLL Freq depends on the SoC - ESP32-C2 has 40MHz, ESP32-H2 has 48MHz and ESP32-C5, C6, C61 and P4 has 80MHz
+// Note: ESP32-C6, C61, ESP32-P4 and ESP32-C5 have LP UART that will use only RTC_FAST or XTAL/2 as Clock Source
+bool HardwareSerial::setClockSource(SerialClkSrc clkSrc) {
+  if (_uart) {
+    log_e("No Clock Source change was done. This function must be called before beginning UART%d.", _uart_nr);
+    return false;
+  }
+  return uartSetClockSource(_uart_nr, (uart_sclk_t)clkSrc);
+}
 // minimum total RX Buffer size is the UART FIFO space (128 bytes for most SoC) + 1. IDF imposition.
 // LP UART has FIFO of 16 bytes
 size_t HardwareSerial::setRxBufferSize(size_t new_size) {
diff --git a/cores/esp32/HardwareSerial.h b/cores/esp32/HardwareSerial.h
index b1f6df17724..e974f112701 100644
--- a/cores/esp32/HardwareSerial.h
+++ b/cores/esp32/HardwareSerial.h
@@ -96,6 +96,29 @@ typedef enum {
   UART_PARITY_ERROR
 } hardwareSerial_error_t;
 
+typedef enum {
+  UART_CLK_SRC_DEFAULT = UART_SCLK_DEFAULT,
+#if SOC_UART_SUPPORT_APB_CLK
+  UART_CLK_SRC_APB = UART_SCLK_APB,
+#endif
+#if SOC_UART_SUPPORT_PLL_F40M_CLK
+  UART_CLK_SRC_PLL = UART_SCLK_PLL_F40M,
+#elif SOC_UART_SUPPORT_PLL_F80M_CLK
+  UART_CLK_SRC_PLL = UART_SCLK_PLL_F80M,
+#elif CONFIG_IDF_TARGET_ESP32H2
+  UART_CLK_SRC_PLL = UART_SCLK_PLL_F48M,
+#endif
+#if SOC_UART_SUPPORT_XTAL_CLK
+  UART_CLK_SRC_XTAL = UART_SCLK_XTAL,
+#endif
+#if SOC_UART_SUPPORT_RTC_CLK
+  UART_CLK_SRC_RTC = UART_SCLK_RTC,
+#endif
+#if SOC_UART_SUPPORT_REF_TICK
+  UART_CLK_SRC_REF_TICK = UART_SCLK_REF_TICK,
+#endif
+} SerialClkSrc;
+
 #ifndef ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE
 #ifndef CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE
 #define ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE 2048
@@ -344,6 +367,17 @@ class HardwareSerial : public Stream {
   //    UART_MODE_RS485_COLLISION_DETECT = 0x03    mode: RS485 collision detection UART mode (used for test purposes)
   //    UART_MODE_RS485_APP_CTRL         = 0x04    mode: application control RS485 UART mode (used for test purposes)
   bool setMode(SerialMode mode);
+  // Used to set the UART clock source mode. It must be set before calling begin(), otherwise it won't have any effect.
+  // Not all clock source are available to every SoC. The compatible option are listed here:
+  // UART_CLK_SRC_DEFAULT      :: any SoC - it will set whatever IDF defines as the default UART Clock Source
+  // UART_CLK_SRC_APB          :: ESP32, ESP32-S2, ESP32-C3 and ESP32-S3
+  // UART_CLK_SRC_PLL          :: ESP32-C2, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2 and ESP32-P4
+  // UART_CLK_SRC_XTAL         :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+  // UART_CLK_SRC_RTC          :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+  // UART_CLK_SRC_REF_TICK     :: ESP32 and ESP32-S2
+  // Note: CLK_SRC_PLL Freq depends on the SoC - ESP32-C2 has 40MHz, ESP32-H2 has 48MHz and ESP32-C5, C6, C61 and P4 has 80MHz
+  // Note: ESP32-C6, C61, ESP32-P4 and ESP32-C5 have LP UART that will use only RTC_FAST or XTAL/2 as Clock Source
+  bool setClockSource(SerialClkSrc clkSrc);
   size_t setRxBufferSize(size_t new_size);
   size_t setTxBufferSize(size_t new_size);
 
diff --git a/cores/esp32/esp32-hal-uart.c b/cores/esp32/esp32-hal-uart.c
index 75e2da013ea..d2e98a2341a 100644
--- a/cores/esp32/esp32-hal-uart.c
+++ b/cores/esp32/esp32-hal-uart.c
@@ -58,6 +58,7 @@ struct uart_struct_t {
   uint16_t _rx_buffer_size, _tx_buffer_size;  // UART RX and TX buffer sizes
   bool _inverted;                             // UART inverted signal
   uint8_t _rxfifo_full_thrhd;                 // UART RX FIFO full threshold
+  int8_t _uart_clock_source;                  // UART Clock Source used when it is started using uartBegin()
 };
 
 #if CONFIG_DISABLE_HAL_LOCKS
@@ -66,21 +67,21 @@ struct uart_struct_t {
 #define UART_MUTEX_UNLOCK()
 
 static uart_t _uart_bus_array[] = {
-  {0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #if SOC_UART_NUM > 1
-  {1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 2
-  {2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 3
-  {3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 4
-  {4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 5
-  {5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 };
 
@@ -95,21 +96,21 @@ static uart_t _uart_bus_array[] = {
   xSemaphoreGive(uart->lock)
 
 static uart_t _uart_bus_array[] = {
-  {NULL, 0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {NULL, 0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #if SOC_UART_NUM > 1
-  {NULL, 1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {NULL, 1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 2
-  {NULL, 2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {NULL, 2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 3
-  {NULL, 3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {NULL, 3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 4
-  {NULL, 4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {NULL, 4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 #if SOC_UART_NUM > 5
-  {NULL, 5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0},
+  {NULL, 5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1},
 #endif
 };
 
@@ -664,30 +665,40 @@ uart_t *uartBegin(
   rxfifo_full_thrhd = uart_config.rx_flow_ctrl_thresh;  // makes sure that it will be set correctly in the struct
   uart_config.baud_rate = baudrate;
 #if SOC_UART_LP_NUM >= 1
-  if (uart_nr >= SOC_UART_HP_NUM) {                    // it is a LP UART NUM
-    uart_config.lp_source_clk = LP_UART_SCLK_DEFAULT;  // use default LP clock
-    log_v("Setting UART%d to use LP clock", uart_nr);
+  if (uart_nr >= SOC_UART_HP_NUM) {  // it is a LP UART NUM
+    if (uart->_uart_clock_source > 0) {
+      uart_config.lp_source_clk = (soc_periph_lp_uart_clk_src_t)uart->_uart_clock_source;  // use user defined LP UART clock
+      log_v("Setting UART%d to user defined LP clock source (%d) ", uart_nr, uart->_uart_clock_source);
+    } else {
+      uart_config.lp_source_clk = LP_UART_SCLK_DEFAULT;  // use default LP clock
+      log_v("Setting UART%d to Default LP clock source", uart_nr);
+    }
   } else
-#endif
+#endif  // SOC_UART_LP_NUM >= 1
   {
-    // there is an issue when returning from light sleep with the C6 and H2: the uart baud rate is not restored
-    // therefore, uart clock source will set to XTAL for all SoC that support it. This fix solves the C6|H2 issue.
+    if (uart->_uart_clock_source >= 0) {
+      uart_config.source_clk = (soc_module_clk_t)uart->_uart_clock_source;  // use user defined HP UART clock
+      log_v("Setting UART%d to user defined HP clock source (%d) ", uart_nr, uart->_uart_clock_source);
+    } else {
+      // there is an issue when returning from light sleep with the C6 and H2: the uart baud rate is not restored
+      // therefore, uart clock source will set to XTAL for all SoC that support it. This fix solves the C6|H2 issue.
 #if SOC_UART_SUPPORT_XTAL_CLK
-    uart_config.source_clk = UART_SCLK_XTAL;  // valid for C2, S3, C3, C6, H2 and P4
-    log_v("Setting UART%d to use XTAL clock", uart_nr);
+      uart_config.source_clk = UART_SCLK_XTAL;  // valid for C2, S3, C3, C6, H2 and P4
+      log_v("Setting UART%d to use XTAL clock", uart_nr);
 #elif SOC_UART_SUPPORT_REF_TICK
-    if (baudrate <= REF_TICK_BAUDRATE_LIMIT) {
-      uart_config.source_clk = UART_SCLK_REF_TICK;  // valid for ESP32, S2 - MAX supported baud rate is 250 Kbps
-      log_v("Setting UART%d to use REF_TICK clock", uart_nr);
-    } else {
-      uart_config.source_clk = UART_SCLK_APB;  // baudrate may change with the APB Frequency!
-      log_v("Setting UART%d to use APB clock", uart_nr);
-    }
+      if (baudrate <= REF_TICK_BAUDRATE_LIMIT) {
+        uart_config.source_clk = UART_SCLK_REF_TICK;  // valid for ESP32, S2 - MAX supported baud rate is 250 Kbps
+        log_v("Setting UART%d to use REF_TICK clock", uart_nr);
+      } else {
+        uart_config.source_clk = UART_SCLK_APB;  // baudrate may change with the APB Frequency!
+        log_v("Setting UART%d to use APB clock", uart_nr);
+      }
 #else
-    // Default CLK Source: CLK_APB for ESP32|S2|S3|C3 -- CLK_PLL_F40M for C2 -- CLK_PLL_F48M for H2 -- CLK_PLL_F80M for C6
-    uart_config.source_clk = UART_SCLK_DEFAULT;  // baudrate may change with the APB Frequency!
-    log_v("Setting UART%d to use DEFAULT clock", uart_nr);
-#endif
+      // Default CLK Source: CLK_APB for ESP32|S2|S3|C3 -- CLK_PLL_F40M for C2 -- CLK_PLL_F48M for H2 -- CLK_PLL_F80M for C6|P4
+      uart_config.source_clk = UART_SCLK_DEFAULT;  // baudrate may change with the APB Frequency!
+      log_v("Setting UART%d to use DEFAULT clock", uart_nr);
+#endif  // SOC_UART_SUPPORT_XTAL_CLK
+    }
   }
 
   UART_MUTEX_LOCK();
@@ -716,6 +727,14 @@ uart_t *uartBegin(
     uart->_tx_buffer_size = tx_buffer_size;
     uart->has_peek = false;
     uart->peek_byte = 0;
+#if SOC_UART_LP_NUM >= 1
+    if (uart_nr >= SOC_UART_HP_NUM) {
+      uart->_uart_clock_source = uart_config.lp_source_clk;
+    } else
+#endif
+    {
+      uart->_uart_clock_source = uart_config.source_clk;
+    }
   }
   UART_MUTEX_UNLOCK();
 
@@ -975,22 +994,52 @@ bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
     return false;
   }
   bool retCode = true;
-  UART_MUTEX_LOCK();
-#if SOC_UART_SUPPORT_XTAL_CLK  // ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2 and ESP32-P4
-  soc_module_clk_t newClkSrc = UART_SCLK_XTAL;
+  soc_module_clk_t newClkSrc = UART_SCLK_DEFAULT;
+  int8_t previousClkSrc = uart->_uart_clock_source;
 #if SOC_UART_LP_NUM >= 1
   if (uart->num >= SOC_UART_HP_NUM) {  // it is a LP UART NUM
-    newClkSrc = LP_UART_SCLK_DEFAULT;  // use default LP clock
+    if (uart->_uart_clock_source > 0) {
+      newClkSrc = (soc_periph_lp_uart_clk_src_t)uart->_uart_clock_source;  // use user defined LP UART clock
+      log_v("Setting UART%d to user defined LP clock source (%d) ", uart->num, newClkSrc);
+    } else {
+      newClkSrc = LP_UART_SCLK_DEFAULT;  // use default LP clock
+      log_v("Setting UART%d to Default LP clock source", uart->num);
+    }
+  } else
+#endif  // SOC_UART_LP_NUM >= 1
+  {
+    if (uart->_uart_clock_source >= 0) {
+      newClkSrc = (soc_module_clk_t)uart->_uart_clock_source;  // use user defined HP UART clock
+      log_v("Setting UART%d to use HP clock source (%d) ", uart->num, newClkSrc);
+    } else {
+      // there is an issue when returning from light sleep with the C6 and H2: the uart baud rate is not restored
+      // therefore, uart clock source will set to XTAL for all SoC that support it. This fix solves the C6|H2 issue.
+#if SOC_UART_SUPPORT_XTAL_CLK
+      newClkSrc = UART_SCLK_XTAL;  // valid for C2, S3, C3, C6, H2 and P4
+      log_v("Setting UART%d to use XTAL clock", uart->num);
+#elif SOC_UART_SUPPORT_REF_TICK
+      if (baud_rate <= REF_TICK_BAUDRATE_LIMIT) {
+        newClkSrc = UART_SCLK_REF_TICK;  // valid for ESP32, S2 - MAX supported baud rate is 250 Kbps
+        log_v("Setting UART%d to use REF_TICK clock", uart->num);
+      } else {
+        newClkSrc = UART_SCLK_APB;  // baudrate may change with the APB Frequency!
+        log_v("Setting UART%d to use APB clock", uart->num);
+      }
+#else
+      // Default CLK Source: CLK_APB for ESP32|S2|S3|C3 -- CLK_PLL_F40M for C2 -- CLK_PLL_F48M for H2 -- CLK_PLL_F80M for C6|P4
+      // using newClkSrc = UART_SCLK_DEFAULT as defined in the variable declaration
+      log_v("Setting UART%d to use DEFAULT clock", uart->num);
+#endif  // SOC_UART_SUPPORT_XTAL_CLK
+    }
   }
-#endif
-  // ESP32-P4 demands an atomic operation for setting the clock source
-  HP_UART_SRC_CLK_ATOMIC() {
-    uart_ll_set_sclk(UART_LL_GET_HW(uart->num), newClkSrc);
+  UART_MUTEX_LOCK();
+  // if necessary, set the correct UART Clock Source before changing the baudrate
+  if (previousClkSrc < 0 || previousClkSrc != newClkSrc) {
+    HP_UART_SRC_CLK_ATOMIC() {
+      uart_ll_set_sclk(UART_LL_GET_HW(uart->num), newClkSrc);
+    }
+    uart->_uart_clock_source = newClkSrc;
   }
-#else  // ESP32, ESP32-S2
-  soc_module_clk_t newClkSrc = baud_rate <= REF_TICK_BAUDRATE_LIMIT ? SOC_MOD_CLK_REF_TICK : SOC_MOD_CLK_APB;
-  uart_ll_set_sclk(UART_LL_GET_HW(uart->num), newClkSrc);
-#endif
   if (uart_set_baudrate(uart->num, baud_rate) == ESP_OK) {
     log_v("Setting UART%d baud rate to %ld.", uart->num, baud_rate);
     uart->_baudrate = baud_rate;
@@ -1084,6 +1133,31 @@ bool uartSetMode(uart_t *uart, uart_mode_t mode) {
   return retCode;
 }
 
+// this function will set the uart clock source
+// it must be called before uartBegin(), otherwise it won't change any thing.
+bool uartSetClockSource(uint8_t uartNum, uart_sclk_t clkSrc) {
+  if (uartNum >= SOC_UART_NUM) {
+    log_e("UART%d is invalid. This device has %d UARTs, from 0 to %d.", uartNum, SOC_UART_NUM, SOC_UART_NUM - 1);
+    return false;
+  }
+  uart_t *uart = &_uart_bus_array[uartNum];
+#if SOC_UART_LP_NUM >= 1
+  if (uart->num >= SOC_UART_HP_NUM) {
+    switch (clkSrc) {
+      case UART_SCLK_XTAL:    uart->_uart_clock_source = LP_UART_SCLK_XTAL_D2; break;
+      case UART_SCLK_RTC:     uart->_uart_clock_source = LP_UART_SCLK_LP_FAST; break;
+      case UART_SCLK_DEFAULT:
+      default:                uart->_uart_clock_source = LP_UART_SCLK_DEFAULT;
+    }
+  } else
+#endif
+  {
+    uart->_uart_clock_source = clkSrc;
+  }
+  //log_i("UART%d set clock source to %d", uart->num, uart->_uart_clock_source);
+  return true;
+}
+
 void uartSetDebug(uart_t *uart) {
   // LP UART is not supported for debug
   if (uart == NULL || uart->num >= SOC_UART_HP_NUM) {
diff --git a/cores/esp32/esp32-hal-uart.h b/cores/esp32/esp32-hal-uart.h
index 4d686fdd23d..41b005aa151 100644
--- a/cores/esp32/esp32-hal-uart.h
+++ b/cores/esp32/esp32-hal-uart.h
@@ -97,6 +97,19 @@ bool uartSetHwFlowCtrlMode(uart_t *uart, uart_hw_flowcontrol_t mode, uint8_t thr
 //    UART_MODE_RS485_APP_CTRL         = 0x04    mode: application control RS485 UART mode (used for test purposes)
 bool uartSetMode(uart_t *uart, uart_mode_t mode);
 
+// Used to set the UART clock source mode. It must be set before calling uartBegin(), otherwise it won't have any effect.
+// Not all clock source are available to every SoC. The compatible option are listed here:
+// UART_SCLK_DEFAULT      :: any SoC - it will set whatever IDF defines as the default UART Clock Source
+// UART_SCLK_APB          :: ESP32, ESP32-S2, ESP32-C3 and ESP32-S3
+// UART_SCLK_PLL_F80M     :: ESP32-C5, ESP32-C6, ESP32-C61 and ESP32-P4
+// UART_SCLK_PLL_F40M     :: ESP32-C2
+// UART_SCLK_PLL_F48M     :: ESP32-H2
+// UART_SCLK_XTAL         :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_SCLK_RTC          :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_SCLK_REF_TICK     :: ESP32 and ESP32-S2
+// Note: ESP32-C6, C61, ESP32-P4 and ESP32-C5 have LP UART that will use only LP_UART_SCLK_LP_FAST (RTC_FAST) or LP_UART_SCLK_XTAL_D2 (XTAL/2) as Clock Source
+bool uartSetClockSource(uint8_t uartNum, uart_sclk_t clkSrc);
+
 void uartStartDetectBaudrate(uart_t *uart);
 unsigned long uartDetectBaudrate(uart_t *uart);
 


Reviews:
user: login: SuGlider
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-02T16:53:32Z
user: login: SuGlider
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-02T19:38:13Z
user: login: SuGlider
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-02T19:39:22Z
user: login: SuGlider
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-02T20:17:49Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR adds a configuration option to force the IDF default UART clock source for ESP32 platforms and updates the UART initialization logic accordingly.  
- Introduces a new Kconfig option to override Arduino's default clock source selection.  
- Adds a new uartSetClockSource function and updates UART initialization in both HardwareSerial and hal-uart modules.  
- Modifies data structures and logging to support user-defined clock source selections.

### Reviewed Changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated no comments.

| File                                | Description                                                    |
| ----------------------------------- | -------------------------------------------------------------- |
| cores/esp32/esp32-hal-uart.h         | Adds function prototype for setting UART clock source.         |
| cores/esp32/esp32-hal-uart.c         | Updates uart_struct_t, UART initialization, and baud rate logic to use the clock source configuration. |
| cores/esp32/HardwareSerial.h         | Introduces SerialClkSrc enum and a new setClockSource method in HardwareSerial. |
| cores/esp32/HardwareSerial.cpp       | Implements the HardwareSerial::setClockSource method using uartSetClockSource. |

<details>
<summary>Files not reviewed (1)</summary>

* **Kconfig.projbuild**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**cores/esp32/HardwareSerial.h:99**
* The SerialClkSrc enum defines UART_CLK_SRC_PLL multiple times, which may cause naming conflicts during compilation. Consider renaming each PLL option (e.g., UART_CLK_SRC_PLL_F40M, UART_CLK_SRC_PLL_F80M, UART_CLK_SRC_PLL_F48M) to ensure unique identifiers.
```
typedef enum {
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T12:16:11Z
user: login: SuGlider
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-03T13:57:45Z
user: login: SuGlider
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-03T14:07:16Z
user: login: copilot-pull-request-reviewer[bot]
body: Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:55:51Z
user: login: copilot-pull-request-reviewer[bot]
body: Copilot wasn't able to review any files in this pull request.
<details>
<summary>Files not reviewed (4)</summary>

* **cores/esp32/HardwareSerial.cpp**: Language not supported
* **cores/esp32/HardwareSerial.h**: Language not supported
* **cores/esp32/esp32-hal-uart.c**: Language not supported
* **cores/esp32/esp32-hal-uart.h**: Language not supported
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:56:34Z
user: login: SuGlider
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-04T22:07:31Z
user: login: copilot-pull-request-reviewer[bot]
body: Copilot wasn't able to review any files in this pull request.
<details>
<summary>Files not reviewed (4)</summary>

* **cores/esp32/HardwareSerial.cpp**: Language not supported
* **cores/esp32/HardwareSerial.h**: Language not supported
* **cores/esp32/esp32-hal-uart.c**: Language not supported
* **cores/esp32/esp32-hal-uart.h**: Language not supported
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T22:07:45Z
user: login: me-no-dev
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-05T15:41:06Z
user: login: copilot-pull-request-reviewer[bot]
body: 

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.




state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-05T15:42:14Z
user: login: me-no-dev
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-05T15:43:37Z
user: login: SuGlider
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-06T15:20:54Z

Review comments:
diff_hunk: @@ -975,22 +993,58 @@ bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
     return false;
   }
   bool retCode = true;
-  UART_MUTEX_LOCK();
-#if SOC_UART_SUPPORT_XTAL_CLK  // ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2 and ESP32-P4
-  soc_module_clk_t newClkSrc = UART_SCLK_XTAL;
+  soc_module_clk_t newClkSrc = UART_SCLK_DEFAULT;
+  uint8_t previousClkSrc = uart->_uart_clock_source;
 #if SOC_UART_LP_NUM >= 1
-  if (uart->num >= SOC_UART_HP_NUM) {  // it is a LP UART NUM
-    newClkSrc = LP_UART_SCLK_DEFAULT;  // use default LP clock
+  if (uart->num >= SOC_UART_HP_NUM) {                    // it is a LP UART NUM
path: cores/esp32/esp32-hal-uart.c
user: login: SuGlider
body: ```suggestion
  if (uart->num >= SOC_UART_HP_NUM) { // it is a LP UART NUM
```
created_at: 2025-04-02T16:53:31Z
author_association: COLLABORATOR
diff_hunk: @@ -975,22 +996,61 @@ bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
     return false;
   }
   bool retCode = true;
-  UART_MUTEX_LOCK();
-#if SOC_UART_SUPPORT_XTAL_CLK  // ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2 and ESP32-P4
-  soc_module_clk_t newClkSrc = UART_SCLK_XTAL;
+  soc_module_clk_t newClkSrc = UART_SCLK_DEFAULT;
+  uint8_t previousClkSrc = uart->_uart_clock_source;
path: cores/esp32/esp32-hal-uart.c
user: login: SuGlider
body: ```suggestion
  int8_t previousClkSrc = uart->_uart_clock_source;
```
created_at: 2025-04-02T19:38:13Z
author_association: COLLABORATOR
diff_hunk: @@ -975,22 +996,61 @@ bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
     return false;
   }
   bool retCode = true;
-  UART_MUTEX_LOCK();
-#if SOC_UART_SUPPORT_XTAL_CLK  // ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2 and ESP32-P4
-  soc_module_clk_t newClkSrc = UART_SCLK_XTAL;
+  soc_module_clk_t newClkSrc = UART_SCLK_DEFAULT;
+  uint8_t previousClkSrc = uart->_uart_clock_source;
 #if SOC_UART_LP_NUM >= 1
-  if (uart->num >= SOC_UART_HP_NUM) {  // it is a LP UART NUM
-    newClkSrc = LP_UART_SCLK_DEFAULT;  // use default LP clock
-  }
+  if (uart->num >= SOC_UART_HP_NUM) { // it is a LP UART NUM
+#if !(CONFIG_ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE)
+    if (uart->_uart_clock_source > 0) {
+      newClkSrc = (soc_periph_lp_uart_clk_src_t) uart->_uart_clock_source;  // use user defined LP UART clock
+      log_v("Setting UART%d to user defined LP clock source (%d) ", uart->num, newClkSrc);
+    } else
 #endif
-  // ESP32-P4 demands an atomic operation for setting the clock source
-  HP_UART_SRC_CLK_ATOMIC() {
-    uart_ll_set_sclk(UART_LL_GET_HW(uart->num), newClkSrc);
+    {
+      newClkSrc = LP_UART_SCLK_DEFAULT;  // use default LP clock
+      log_v("Setting UART%d to Default LP clock source", uart->num);
+    }
+  } else 
+#endif // SOC_UART_LP_NUM >= 1
+  {
+#if CONFIG_ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE
+    // Default CLK Source: CLK_APB for ESP32|S2|S3|C3 -- CLK_PLL_F40M for C2 -- CLK_PLL_F48M for H2 -- CLK_PLL_F80M for C6|P4
+    // newClkSrc already set in the variable declaration
+    log_v("Setting UART%d to use DEFAULT clock", uart->num);
+#else
+    if (uart->_uart_clock_source >= 0) {
+      newClkSrc = (soc_module_clk_t) uart->_uart_clock_source;  // use user defined HP UART clock
+      log_v("Setting UART%d to use HP clock source (%d) ", uart->num, newClkSrc);
+    } else {    
+    // there is an issue when returning from light sleep with the C6 and H2: the uart baud rate is not restored
+    // therefore, uart clock source will set to XTAL for all SoC that support it. This fix solves the C6|H2 issue.
+#if SOC_UART_SUPPORT_XTAL_CLK
+      newClkSrc = UART_SCLK_XTAL;  // valid for C2, S3, C3, C6, H2 and P4
+      log_v("Setting UART%d to use XTAL clock", uart->num);
+#elif SOC_UART_SUPPORT_REF_TICK
+      if (baud_rate <= REF_TICK_BAUDRATE_LIMIT) {
+        newClkSrc = UART_SCLK_REF_TICK;  // valid for ESP32, S2 - MAX supported baud rate is 250 Kbps
+        log_v("Setting UART%d to use REF_TICK clock", uart->num);
+      } else {
+        newClkSrc = UART_SCLK_APB;  // baudrate may change with the APB Frequency!
+        log_v("Setting UART%d to use APB clock", uart->num);
+      }
+#else
+      // Default CLK Source: CLK_APB for ESP32|S2|S3|C3 -- CLK_PLL_F40M for C2 -- CLK_PLL_F48M for H2 -- CLK_PLL_F80M for C6|P4
+      // using newClkSrc = UART_SCLK_DEFAULT as defined in the variable declaration
+      log_v("Setting UART%d to use DEFAULT clock", uart->num);
+#endif // SOC_UART_SUPPORT_XTAL_CLK
+    }
+#endif // CONFIG_ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE
+  }
+  UART_MUTEX_LOCK();
+  // if necessary, set the correct UART Clock Source before changing the baudrate
+  if (previousClkSrc != newClkSrc) {
path: cores/esp32/esp32-hal-uart.c
user: login: SuGlider
body: ```suggestion
  if (previousClkSrc < 0 || previousClkSrc != newClkSrc) {
```
created_at: 2025-04-02T19:39:22Z
author_association: COLLABORATOR
diff_hunk: @@ -716,6 +736,7 @@ uart_t *uartBegin(
     uart->_tx_buffer_size = tx_buffer_size;
     uart->has_peek = false;
     uart->peek_byte = 0;
+    uart->_uart_clock_source = uart_config.source_clk;
path: cores/esp32/esp32-hal-uart.c
user: login: SuGlider
body: ```suggestion
#if SOC_UART_LP_NUM >= 1
    if (uart_nr >= SOC_UART_HP_NUM) {
      uart->_uart_clock_source = uart_config.lp_source_clk;
    } else
#endif
    {
      uart->_uart_clock_source = uart_config.source_clk;
    }
```
created_at: 2025-04-02T20:17:49Z
author_association: COLLABORATOR
diff_hunk: @@ -607,6 +607,21 @@ bool HardwareSerial::setMode(SerialMode mode) {
   return uartSetMode(_uart, mode);
 }
 
+// Sets the UART Clock Source based on the compatible SoC options
+// This method must be called before starting UART using begin(), otherwise it won't have any effect.
+// Clock Source Options are:
+// UART_CLK_SRC_DEFAULT      :: any SoC - it will set whatever IDF defines as the default UART Clock Source
+// UART_CLK_SRC_APB          :: ESP32, ESP32-S2, ESP32-C3 and ESP32-S3
+// UART_CLK_SRC_PLL          :: ESP32-C2, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2 and ESP32-P4
+// UART_CLK_SRC_XTAL         :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_CLK_SRC_RTC          :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_CLK_SRC_REF_TICK     :: ESP32 and ESP32-S2
+// Note: CLK_SRC_PLL Freq depends on the SoC - ESP32-C2 has 40MHz, ESP32-H2 has 48MHz and ESP32-C5, C6, C61 and P4 has 80MHz
+// Note: ESP32-C6, C61, ESP32-P4 and ESP32-C5 have LP UART that will use only RTC_FAST or XTAL/2 as Clock Source
+bool HardwareSerial::setClockSource(SerialClkSrc clkSrc) {
+    return uartSetClockSource(_uart, (uart_sclk_t) clkSrc); // allows negative values for UART_CLK_SRC_DEFAULT
path: cores/esp32/HardwareSerial.cpp
user: login: SuGlider
body: ```suggestion
    return uartSetClockSource(_uart, (uart_sclk_t) clkSrc);
```
created_at: 2025-04-03T13:57:44Z
author_association: COLLABORATOR
diff_hunk: @@ -607,6 +607,21 @@ bool HardwareSerial::setMode(SerialMode mode) {
   return uartSetMode(_uart, mode);
 }
 
+// Sets the UART Clock Source based on the compatible SoC options
+// This method must be called before starting UART using begin(), otherwise it won't have any effect.
+// Clock Source Options are:
+// UART_CLK_SRC_DEFAULT      :: any SoC - it will set whatever IDF defines as the default UART Clock Source
+// UART_CLK_SRC_APB          :: ESP32, ESP32-S2, ESP32-C3 and ESP32-S3
+// UART_CLK_SRC_PLL          :: ESP32-C2, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2 and ESP32-P4
+// UART_CLK_SRC_XTAL         :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_CLK_SRC_RTC          :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
+// UART_CLK_SRC_REF_TICK     :: ESP32 and ESP32-S2
+// Note: CLK_SRC_PLL Freq depends on the SoC - ESP32-C2 has 40MHz, ESP32-H2 has 48MHz and ESP32-C5, C6, C61 and P4 has 80MHz
+// Note: ESP32-C6, C61, ESP32-P4 and ESP32-C5 have LP UART that will use only RTC_FAST or XTAL/2 as Clock Source
+bool HardwareSerial::setClockSource(SerialClkSrc clkSrc) {
+    return uartSetClockSource(_uart, (uart_sclk_t) clkSrc);
path: cores/esp32/HardwareSerial.cpp
user: login: SuGlider
body: ```suggestion
  return uartSetClockSource(_uart, (uart_sclk_t) clkSrc);
```
created_at: 2025-04-03T14:07:16Z
author_association: COLLABORATOR
diff_hunk: @@ -96,6 +96,31 @@ typedef enum {
   UART_PARITY_ERROR
 } hardwareSerial_error_t;
 
+  typedef enum {
path: cores/esp32/HardwareSerial.h
user: login: Copilot
body: The enum 'SerialClkSrc' defines 'UART_CLK_SRC_PLL' multiple times with different underlying values. Consider using unique identifiers (or conditional compilation that ensures only one definition is active) for each PLL option to avoid redefinition errors.
created_at: 2025-04-05T15:42:14Z
author_association: CONTRIBUTOR
diff_hunk: @@ -96,6 +96,31 @@ typedef enum {
   UART_PARITY_ERROR
 } hardwareSerial_error_t;
 
+  typedef enum {
path: cores/esp32/HardwareSerial.h
user: login: me-no-dev
body: I will agree with Copilot here. Use `#if ... #elif` instead of just ifs
created_at: 2025-04-05T15:43:37Z
author_association: MEMBER
diff_hunk: @@ -96,6 +96,31 @@ typedef enum {
   UART_PARITY_ERROR
 } hardwareSerial_error_t;
 
+  typedef enum {
path: cores/esp32/HardwareSerial.h
user: login: SuGlider
body: done.
created_at: 2025-04-06T15:20:54Z
author_association: COLLABORATOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-27T19:56:46Z
body: 
<!--
  0 failure: 
  1 warning:  
**Some issues fo...
  
  1 markdown notices
  DangerID: danger-id-Danger;
-->


<table>
  <thead>
    <tr>
      <th width="50"></th>
      <th width="100%" data-danger-table="true">Warnings</th>
    </tr>
  </thead>
  <tbody><tr>
      <td>:warning:</td>
      <td>

  
**Some issues found for the commit messages in this PR:**
- the commit message `"Add an option to force IDF's default UART clock source"`:
  - *summary* looks empty
  - *type/action* looks empty
			
***
			
**Please fix these commit messages** - here are some basic tips:
- follow [Conventional Commits style](https://www.conventionalcommits.org/en/v1.0.0/)
- correct format of commit message should be: `<type/action>(<scope/component>): <summary>`, for example `fix(esp32): Fixed startup timeout issue`
- allowed types are: `change,ci,docs,feat,fix,refactor,remove,revert,test`
- sufficiently descriptive message summary should be between 10 to 72 characters and start with upper case letter
- avoid Jira references in commit messages (unavailable/irrelevant for our customers)
            
 `TIP:` Install pre-commit hooks and run this check when committing (uses the [Conventional Precommit Linter](https://github.com/espressif/conventional-precommit-linter)).
            
  </td>
    </tr>
  </tbody>
</table>


👋 <strong>Hello gonzabrusco</strong>, we appreciate your contribution to this project!<br><hr>📘 Please review the project's <a href="https://github.com/espressif/arduino-esp32/blob/master/docs/en/contributing.rst">Contributions Guide</a> for key guidelines on code, documentation, testing, and more.<br><hr>🖊️ Please also make sure you have <strong>read and signed</strong> the <a href="https://cla-assistant.io/espressif/arduino-esp32">Contributor License Agreement</a> for this project.<br><hr><details><summary>Click to see more instructions ...</summary><p><br>This automated output is generated by the <a href="https://github.com/espressif/shared-github-dangerjs">PR linter DangerJS</a>, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.<br><br>DangerJS is triggered with each `push` event to a Pull Request and modify the contents of this comment.<br><br><strong>Please consider the following:</strong><br>- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.<br>- Danger is <strong>not a substitute for human code reviews</strong>; it's still important to request a code review from your colleagues.<br>- <strong>Resolve all warnings (⚠️ )</strong> before requesting a review from human reviewers - they will appreciate it.<br>- To manually <a href="https://github.com/espressif/arduino-esp32/actions">retry these Danger checks</a>, please navigate to the <kbd>Actions</kbd> tab and re-run last Danger workflow.<br></p></details><details><summary>Review and merge process you can expect ...</summary><p><br><strong>We do welcome contributions in the form of bug reports, feature requests and pull requests.</strong><br><br><strong>1.</strong> An internal issue has been created for the PR, we assign it to the relevant engineer.<br><strong>2.</strong> They review the PR and either approve it or ask you for changes or clarifications.<br><strong>3.</strong> Once the GitHub PR is approved we do the final review, collect approvals from core owners and make sure all the automated tests are passing.<br>    - At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.<br><strong>4.</strong> If the change is approved and passes the tests it is merged into the default branch.<br></p></details>

<p align="right">
  Generated by :no_entry_sign: <a href="https://danger.systems/js">dangerJS</a> against 3e78c460ee86b7762bad0e6fcd33e6c37dcf5df4
</p>

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-27T20:06:41Z
body: ## Test Results
 76 files   76 suites   12m 47s ⏱️
 38 tests  38 ✅ 0 💤 0 ❌
241 runs  241 ✅ 0 💤 0 ❌

Results for commit 3e78c460.

[test-results]:data:application/gzip;base64,H4sIAN/s8mcC/12MSw7CIBQAr9KwdoEFH8TLmPbxSIhtMXxWjXeXktaiy5lJZmXWTRTZvVNw6VjMLp1kchiS80tlVURpaatCH/CIGfHPPN2rGP4VdnDTj6AQfNhNyMt27OV1h+PYmvNYuRlWbn/o59mlAkyQ0iiBE2kYlYJ+HAwnsGiEIEChDNqbsZK9PzhEcKMFAQAA

:recycle: This comment has been updated with latest results.
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-27T21:28:31Z
body: ### Memory usage test (comparing PR against master branch)

The table below shows the summary of memory usage change (decrease - increase) in bytes and percentage for each target.

<table>
<tr><th nowrap>Memory</th><th colspan='2' align='center' nowrap>FLASH [bytes]</th><th colspan='2' align='center' nowrap>FLASH [%]</th><th colspan='2' align='center' nowrap>RAM [bytes]</th><th colspan='2' align='center' nowrap>RAM [%]</th></tr>
<tr><td nowrap>Target</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td><td align='center' nowrap>DEC</td><td align='center' nowrap>INC</td></tr>
<tr><td nowrap>ESP32P4</td><td align='center' nowrap>0</td><td align='center' nowrap>:warning: +140</td><td align='center' nowrap>0.00</td><td align='center' nowrap>:warning: +0.04</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
<tr><td nowrap>ESP32S3</td><td align='center' nowrap>0</td><td align='center' nowrap>:warning: +176</td><td align='center' nowrap>0.00</td><td align='center' nowrap>:warning: +0.05</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
<tr><td nowrap>ESP32S2</td><td align='center' nowrap>0</td><td align='center' nowrap>:warning: +96</td><td align='center' nowrap>0.00</td><td align='center' nowrap>:warning: +0.03</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
<tr><td nowrap>ESP32C3</td><td align='center' nowrap>0</td><td align='center' nowrap>:warning: +122</td><td align='center' nowrap>0.00</td><td align='center' nowrap>:warning: +0.04</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
<tr><td nowrap>ESP32C6</td><td align='center' nowrap>0</td><td align='center' nowrap>:warning: +140</td><td align='center' nowrap>0.00</td><td align='center' nowrap>:warning: +0.06</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
<tr><td nowrap>ESP32H2</td><td align='center' nowrap>0</td><td align='center' nowrap>:warning: +178</td><td align='center' nowrap>0.00</td><td align='center' nowrap>:warning: +0.06</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
<tr><td nowrap>ESP32</td><td align='center' nowrap>0</td><td align='center' nowrap>:warning: +120</td><td align='center' nowrap>0.00</td><td align='center' nowrap>:warning: +0.03</td><td align='center' nowrap>0</td><td align='center' nowrap>0</td><td align='center' nowrap>0.00</td><td align='center' nowrap>0.00</td></tr>
</table>

<details>
<summary>Click to expand the detailed deltas report [usage change in BYTES]</summary>

<table>
<tr><th nowrap>Target</th><th colspan='2' align='center' nowrap>ESP32P4</th><th colspan='2' align='center' nowrap>ESP32S3</th><th colspan='2' align='center' nowrap>ESP32S2</th><th colspan='2' align='center' nowrap>ESP32C3</th><th colspan='2' align='center' nowrap>ESP32C6</th><th colspan='2' align='center' nowrap>ESP32H2</th><th colspan='2' align='center' nowrap>ESP32</th></tr>
<tr><td nowrap>Example</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td><td nowrap>FLASH</td><td nowrap>RAM</td></tr>
<tr><td nowrap>ArduinoOTA/examples/BasicOTA</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>AsyncUDP/examples/AsyncUDPClient</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>AsyncUDP/examples/AsyncUDPMulticastServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +60</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +60</td><td nowrap>0</td></tr>
<tr><td nowrap>AsyncUDP/examples/AsyncUDPServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>DNSServer/examples/CaptivePortal</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>EEPROM/examples/eeprom_class</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +120</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>EEPROM/examples/eeprom_extra</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>EEPROM/examples/eeprom_write</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogOut/LEDCFade</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogOut/LEDCSingleChannel</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogOut/LEDCSoftwareFade</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogOut/SigmaDelta</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogOut/ledcFrequency</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogOut/ledcWrite_RGB</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogRead</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/AnalogReadContinuous</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/ArduinoStackSize</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/CI/CIBoardsTest</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/ChipID/GetChipID</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/DeepSleep/TimerWakeUp</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/DeepSleep/TouchWakeUp</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/FreeRTOS/BasicMultiThreading</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +120</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/FreeRTOS/Mutex</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/FreeRTOS/Queue</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/FreeRTOS/Semaphore</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/GPIO/BlinkRGB</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/GPIO/FunctionalInterrupt</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/GPIO/FunctionalInterruptStruct</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/GPIO/GPIOInterrupt</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/HWCDC_Events</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>ESP32/examples/MacAddress/GetMacAddress</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/Legacy_RMT_Driver_Compatible</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/RMTCallback</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/RMTLoopback</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/RMTReadXJT</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/RMTWrite_RGB_LED</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/RMT_CPUFreq_Test</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +120</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/RMT_EndOfTransmissionState</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/RMT/RMT_LED_Blink</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/ResetReason/ResetReason</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/ResetReason/ResetReason2</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/BaudRateDetect_Demo</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/OnReceiveError_BREAK_Demo</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/OnReceive_Demo</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/RS485_Echo_Demo</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/RxFIFOFull_Demo</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/RxTimeout_Demo</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/Serial_All_CPU_Freqs</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/Serial_STD_Func_OnReceive</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Serial/onReceiveExample</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/TWAI/TWAIreceive</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/TWAI/TWAItransmit</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Template/ExampleTemplate</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Time/SimpleTime</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Timer/RepeatTimer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Timer/WatchdogTimer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Touch/TouchInterrupt</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Touch/TouchRead</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Utilities/HEXBuilder</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Utilities/MD5Builder</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Utilities/SHA1Builder</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_I2S/examples/ES8388_loopback</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_I2S/examples/Record_to_WAV</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_I2S/examples/Simple_tone</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +120</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESPmDNS/examples/mDNS-SD_Extended</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +164</td><td nowrap>0</td><td nowrap>:warning: +64</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESPmDNS/examples/mDNS_Web_Server</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +112</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Ethernet/examples/ETH_TLK110</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Ethernet/examples/ETH_W5500_Arduino_SPI</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Ethernet/examples/ETH_W5500_IDF_SPI</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>Ethernet/examples/ETH_WIFI_BRIDGE</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +84</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>FFat/examples/FFat_Test</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>FFat/examples/FFat_time</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +64</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPClient/examples/Authorization</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +100</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPClient/examples/BasicHttpClient</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPClient/examples/BasicHttpsClient</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPClient/examples/ReuseConnection</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +64</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +116</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPClient/examples/StreamHttpClient</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPUpdate/examples/httpUpdate</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPUpdate/examples/httpUpdateSPIFFS</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPUpdate/examples/httpUpdateSecure</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +132</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>HTTPUpdateServer/examples/WebUpdater</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +64</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>LittleFS/examples/LITTLEFS_test</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>LittleFS/examples/LITTLEFS_time</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +84</td><td nowrap>0</td></tr>
<tr><td nowrap>NetBIOS/examples/ESP_NBNST</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>NetworkClientSecure/examples/WiFiClientInsecure</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>NetworkClientSecure/examples/WiFiClientPSK</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +84</td><td nowrap>0</td></tr>
<tr><td nowrap>NetworkClientSecure/examples/WiFiClientSecure</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +164</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +84</td><td nowrap>0</td></tr>
<tr><td nowrap>NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>NetworkClientSecure/examples/WiFiClientShowPeerCredentials</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>NetworkClientSecure/examples/WiFiClientTrustOnFirstUse</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +164</td><td nowrap>0</td><td nowrap>:warning: +68</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>PPP/examples/PPP_Basic</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>PPP/examples/PPP_WIFI_BRIDGE</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Preferences/examples/Prefs2Struct</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Preferences/examples/StartCounter</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>SD/examples/SD_Test</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>SD/examples/SD_time</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>SD_MMC/examples/SD2USBMSC</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>SD_MMC/examples/SDMMC_Test</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>SD_MMC/examples/SDMMC_time</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>SPI/examples/SPI_Multiple_Buses</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>SPIFFS/examples/SPIFFS_Test</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>SPIFFS/examples/SPIFFS_time</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>TFLiteMicro/examples/hello_world</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>Ticker/examples/Blinker</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>Ticker/examples/TickerBasic</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>Ticker/examples/TickerParameter</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>USB/examples/CompositeDevice</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/ConsumerControl</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/CustomHIDDevice</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/FirmwareMSC</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/Gamepad</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/HIDVendor</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/Keyboard/KeyboardLogout</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/Keyboard/KeyboardMessage</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/Keyboard/KeyboardReprogram</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/Keyboard/KeyboardSerial</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/KeyboardAndMouseControl</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/MIDI/MidiController</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/MIDI/MidiInterface</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/MIDI/MidiMusicBox</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/MIDI/ReceiveMidi</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/Mouse/ButtonMouseControl</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/SystemControl</td><td nowrap>0</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>:warning: +28</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/USBMSC</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/USBSerial</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>USB/examples/USBVendor</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Update/examples/AWS_S3_OTA_Update</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Update/examples/HTTPS_OTA_Update</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +168</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>Update/examples/HTTP_Client_AES_OTA_Update</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Update/examples/HTTP_Server_AES_OTA_Update</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Update/examples/OTAWebUpdater</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Update/examples/SD_Update</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/AdvancedWebServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/FSBrowser</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/Filters</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +68</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/HelloServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +60</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +56</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/HttpAdvancedAuth</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/HttpAuthCallback</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/HttpAuthCallbackInline</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/HttpBasicAuth</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/HttpBasicAuthSHA1</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +132</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/HttpBasicAuthSHA1orBearerToken</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/MultiHomedServers</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/PathArgServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +136</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/SDWebServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +148</td><td nowrap>0</td><td nowrap>:warning: +64</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/SimpleAuthentification</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/UploadHugeFile</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/WebServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/WebUpdate</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +52</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/FTM/FTM_Initiator</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/FTM/FTM_Responder</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/SimpleWiFiServer</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +128</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiAccessPoint</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiClient</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +112</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiClientBasic</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +84</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiClientConnect</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiClientEvents</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +124</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiClientStaticIP</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +84</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiExtender</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiIPv6</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +144</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiMulti</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiMultiAdvanced</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +164</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiScan</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +64</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiScanAsync</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiScanDualAntenna</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiScanTime</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiTelnetToSerial</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +136</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiUDPClient</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +104</td><td nowrap>0</td></tr>
<tr><td nowrap>Wire/examples/WireMaster</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Wire/examples/WireScan</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Wire/examples/WireSlave</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/BLE5_extended_scan</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +148</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>BLE/examples/BLE5_multi_advertising</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>BLE/examples/BLE5_periodic_advertising</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>BLE/examples/BLE5_periodic_sync</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>BLE/examples/Beacon_Scanner</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/Client</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/EddystoneTLM_Beacon</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/EddystoneURL_Beacon</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/Notify</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/Scan</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/Server</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/Server_multiconnect</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +168</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/UART</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/Write</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BLE/examples/iBeacon</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Camera/CameraWebServer (1)</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +148</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Camera/CameraWebServer (2)</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +68</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +104</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/Camera/CameraWebServer (3)</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +148</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>ESP32/examples/DeepSleep/ExternalWakeUp</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Broadcast_Master</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +96</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Broadcast_Slave</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +128</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Network</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_NOW/examples/ESP_NOW_Serial</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP_SR/examples/Basic</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>HTTPClient/examples/HTTPClientEnterprise</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +52</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Insights/examples/DiagnosticsSmokeTest</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Insights/examples/MinimalDiagnostics</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterColorLight</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +164</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +120</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterCommissionTest</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +84</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterComposedLights</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterContactSensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +168</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterDimmableLight</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +52</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterEnhancedColorLight</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +84</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterFan</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterHumiditySensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +84</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterMinimum</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterOccupancySensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +122</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterOnIdentify</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +148</td><td nowrap>0</td><td nowrap>:warning: +60</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterOnOffLight</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +144</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +64</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterOnOffPlugin</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +148</td><td nowrap>0</td><td nowrap>:warning: +68</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterPressureSensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterSmartButon</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +122</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterTemperatureLight</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterTemperatureSensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/MatterThermostat</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Matter/examples/WiFiProvWithinMatter</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +168</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>NetworkClientSecure/examples/WiFiClientSecureEnterprise</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>RainMaker/examples/RMakerCustom</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +68</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>RainMaker/examples/RMakerCustomAirCooler</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>RainMaker/examples/RMakerSonoffDualR3</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +48</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>RainMaker/examples/RMakerSwitch</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>SimpleBLE/examples/SimpleBleDevice</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +140</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WebServer/examples/Middleware</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WPS</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +80</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +76</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiBlueToothSwitch</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiClientEnterprise</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +152</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFi/examples/WiFiSmartConfig</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +168</td><td nowrap>0</td><td nowrap>:warning: +68</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>WiFiProv/examples/WiFiProv</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +144</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +28</td><td nowrap>0</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Color_Dimmer_Switch</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +120</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Gateway</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_On_Off_Switch</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +76</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Range_Extender</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +156</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Thermostat</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +160</td><td nowrap>0</td><td nowrap>:warning: +72</td><td nowrap>0</td><td nowrap>:warning: +118</td><td nowrap>0</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>:warning: +92</td><td nowrap>0</td></tr>
<tr><td nowrap>OpenThread/examples/COAP/coap_lamp</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/COAP/coap_switch</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/SimpleCLI</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/SimpleNode</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/SimpleThreadNetwork/ExtendedRouterNode</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/SimpleThreadNetwork/LeaderNode</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/SimpleThreadNetwork/RouterNode</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/ThreadScan</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>OpenThread/examples/onReceive</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Analog_Input_Output</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_CarbonDioxide_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Color_Dimmable_Light</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Contact_Switch</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Dimmable_Light</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Illuminance_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_OTA_Client</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Occupancy_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_On_Off_Light</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_PM25_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Pressure_Flow_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Scan_Networks</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Temperature_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Vibration_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Wind_Speed_Sensor</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +178</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>Zigbee/examples/Zigbee_Window_Covering</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +138</td><td nowrap>0</td><td nowrap>:warning: +176</td><td nowrap>0</td><td nowrap>-</td><td nowrap>-</td></tr>
<tr><td nowrap>BluetoothSerial/examples/DiscoverConnect</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +64</td><td nowrap>0</td></tr>
<tr><td nowrap>BluetoothSerial/examples/GetLocalMAC</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBT</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +96</td><td nowrap>0</td></tr>
<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBTM</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBT_Legacy</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BluetoothSerial/examples/SerialToSerialBT_SSP</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BluetoothSerial/examples/bt_classic_device_discovery</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>BluetoothSerial/examples/bt_remove_paired_devices</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>ESP32/examples/DeepSleep/SmoothBlink_ULP_Code</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
<tr><td nowrap>Ethernet/examples/ETH_LAN8720</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>-</td><td nowrap>:warning: +88</td><td nowrap>0</td></tr>
</table>

</details>

author_association: CONTRIBUTOR
user: login: SuGlider
created_at: 2025-03-28T12:04:35Z
body: @gonzabrusco - Thank you for the PR and for the consistent collaboration! This PR is, certainly, a way for solving it.

After the discussion in #11132, I have been thinking about it. I was considering adding an extra parameter directly into `HardwareSerial::begin(...)` (last parameter) that will allow the application to set any UART Clock Source based on the possible SoC options.

KConfig is not used by most Arduino Users.
It makes a lot of sense when building an application using Arduino as IDF Component.

May I add the extra parameter for defining the UART Clock Source on top of your PR?
Let me know. Otherwise I can open a new one.

author_association: COLLABORATOR
user: login: gonzabrusco
created_at: 2025-03-28T12:10:53Z
body: > @gonzabrusco - Thank you for the PR and for the consistent collaboration! This PR is, certainly, a way for solving it.
> 
> After the discussion in #11132, I have been thinking about it. I was considering adding an extra parameter directly into `HardwareSerial::begin(...)` (last parameter) that will allow the application to set any UART Clock Source based on the possible SoC options.
> 
> KConfig is not used by most Arduino Users. It makes a lot of sense when building an application using Arduino as IDF Component.
> 
> May I add the extra parameter for defining the UART Clock Source on top of your PR? Let me know. Otherwise I can open a new one.

@SuGlider  Wow, I was just thinking exactly the same. I was about to propose that. Yes, the alternative to this is to have a last parameter in HardwareSerial::begin(...) that has a default value of -1 (Arduino current automatic clock selection). That way you don't break current sketches, and you also provide clock selection for each UART controller individually. I think that is a better approach to my original pull request.

If you want me to help you with that, just let me know. It's a pity this didn't make it into Arduino 3.2.0. 

PS: Yes, you can add that on top of this PR. No problem. 
author_association: CONTRIBUTOR
user: login: SuGlider
created_at: 2025-04-02T14:27:44Z
body: @gonzabrusco - After discussing this change internally, we have decided not to add an extra parameter to the already full of parameters `begin(...)`.
Therefore, I'm adding a new method called `bool HardwareSerial::setClockSource(SerialClkSrc clkSrc)` that must be called before `HardwareSerial::begin()` in order to apply choosen UART Clock Source.

In case that none is set, it will follow the current algorithm (REF_TICK for ESP32/S2 when baud rate < 250,000 - or APB otherwise || XTAL for all other SOC). It will also keep the option from kConfig as defined in your PR.

Let me know if you agree and/or have another suggestion.
author_association: COLLABORATOR
user: login: gonzabrusco
created_at: 2025-04-02T14:29:24Z
body: > @gonzabrusco - After discussing this change internally, we have decided not to add an extra parameter to the already full of parameters `begin(...)`. Therefore, I'm adding a new method called `bool HardwareSerial::setClockSource(SerialClkSrc clkSrc)` that must be called before `HardwareSerial::begin()` in order to apply choosen UART Clock Source.
> 
> In case that none is set, it will follow the current algorithm (REF_TICK for ESP32/S2 when baud rate < 250,000 - or APB otherwise || XTAL for all other SOC). It will also keep the option from kConfig as defined in your PR.
> 
> Let me know if you agree and/or have another suggestion.

That makes sense! LGTM

author_association: CONTRIBUTOR
user: login: SuGlider
created_at: 2025-04-03T18:23:19Z
body: @gonzabrusco - The change I've proposed to this PR is ready for final review.
It is possible to set the UART Clock Source to default using the API:

``` cpp
  Serial1.setClockSource(UART_CLK_SRC_APB);  // call before begin()
  Serial1.begin(115200);
```
author_association: COLLABORATOR
user: login: gonzabrusco
created_at: 2025-04-04T13:05:01Z
body: @SuGlider I was checking the code and everything seems fine except for my description of the KConfig option that, because of the changes, it didn't age well hehe. 

> Note: This configuration is not applicable to the low-power (LP) UART controller.

I think this note should be removed since you made that option apply to LP UART too! 
author_association: CONTRIBUTOR
user: login: SuGlider
created_at: 2025-04-04T15:16:59Z
body: > @SuGlider I was checking the code and everything seems fine except for my description of the KConfig option that, because of the changes, it didn't age well hehe.
> 
> > Note: This configuration is not applicable to the low-power (LP) UART controller.
> 
> I think this note should be removed since you made that option apply to LP UART too!

I have changed the kconfig description. I think that I should change `HardwareSerial::setClockSource()` to check `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` and display a warning (log_w()) when it is enabled, becuase this function won't have any effect.

Another solution is to just allow it be there when `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` is off, something similar to a `#if 0` to remove it completly from the code, in case `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` is on

Other option would be just leave `HardwareSerial::setClockSource()` and remove the `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` kconfig option.

What do think that makes more sense?
author_association: COLLABORATOR
user: login: gonzabrusco
created_at: 2025-04-04T16:09:41Z
body: > > @SuGlider I was checking the code and everything seems fine except for my description of the KConfig option that, because of the changes, it didn't age well hehe.
> > > Note: This configuration is not applicable to the low-power (LP) UART controller.
> > 
> > 
> > I think this note should be removed since you made that option apply to LP UART too!
> 
> I have changed the kconfig description. I think that I should change `HardwareSerial::setClockSource()` to check `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` and display a warning (log_w()) when it is enabled, becuase this function won't have any effect.
> 
> Another solution is to just allow it be there when `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` is off, something similar to a `#if 0` to remove it completly from the code, in case `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` is on
> 
> Other option would be just leave `HardwareSerial::setClockSource()` and remove the `ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURCE` kconfig option.
> 
> What do think that makes more sense?

To be completely honest, after all your hard work, I think the KConfig option has become virtually unnecessary. Although it was the initial trigger for this pull request, it has now evolved into something else, something better. So feel free to remove the KConfig option; it will also make the code more readable.
author_association: CONTRIBUTOR
user: login: SuGlider
created_at: 2025-04-04T16:21:01Z
body: @me-no-dev
Changed status to work on removing kconfig option and just leaving the new `HardwareSerial::setClockSource()` method.
It will get back to review in a couple days.
author_association: COLLABORATOR
user: login: SuGlider
created_at: 2025-04-04T16:55:13Z
body: >To be completely honest, after all your hard work, I think the KConfig option has become virtually unnecessary. Although it was the initial trigger for this pull request, it has now evolved into something else, something better. So feel free to remove the KConfig option; it will also make the code more readable.

Thanks! I agree to you. I have changed the code to remove kconfig setting.
Please go for a final review and then we will move forward for merging.
author_association: COLLABORATOR
user: login: SuGlider
created_at: 2025-04-04T22:08:45Z
body: @me-no-dev @P-R-O-C-H-Y @lucasssvaz - All set. Ready for review.
author_association: COLLABORATOR