espressif / arduino-esp32

Arduino core for the ESP32
GNU Lesser General Public License v2.1
13.73k stars 7.43k forks source link

feat(uart): only enable on_receive task if necessary #10423

Closed SuGlider closed 1 month ago

SuGlider commented 1 month ago

Description of Change

The onReceive Task was created by default when Serial.begin() is executed. This creates a additonal Task that degrades the performance of the whole arduino sketch.

This will be done now only if onReceive() is called.

Tests scenarios

uint32_t  Loopcounter = 0;
static uint32_t msTick;      

void setup() 
{
 Serial.begin(115200);                     // Setup the serial port to 115200 baud //
 msTick = millis(); 

 Serial0.begin(115200); // THIS Line starts UART Arduino Driver and also starts an additional Task that "eats" CPU time...
}

void loop() 
{
 Loopcounter++;
 EverySecondCheck();
}

//--------------------------------------------//
// COMMON Update routine done every second
//--------------------------------------------
void EverySecondCheck(void)
{
 uint32_t msLeap = millis() - msTick;     // 
 if (msLeap >999)                         // Every second enter the loop
 {
  msTick = millis();
 Serial.printf("Loops per second: %u\n",Loopcounter);
 Loopcounter = 0;
 }  
}

Related links

closes #10397 closes #10420

github-actions[bot] commented 1 month ago
Warnings
:warning: **Some issues found for the commit messages in this PR:** - the commit message `"feat(uart): only enable on_receive task if necessary"`: - body's lines must not be longer than 100 characters *** **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: `(): `, 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 20 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)).

πŸ‘‹ Hello SuGlider, we appreciate your contribution to this project!


Click to see more instructions ...


This automated output is generated by the PR linter DangerJS, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.

DangerJS is triggered with each push event to a Pull Request and modify the contents of this comment.

Please consider the following:
- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.
- Danger is not a substitute for human code reviews; it's still important to request a code review from your colleagues.
- Resolve all warnings (⚠️ ) before requesting a review from human reviewers - they will appreciate it.
- To manually retry these Danger checks, please navigate to the Actions tab and re-run last Danger workflow.

Review and merge process you can expect ...


We do welcome contributions in the form of bug reports, feature requests and pull requests.

1. An internal issue has been created for the PR, we assign it to the relevant engineer.
2. They review the PR and either approve it or ask you for changes or clarifications.
3. 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.
- At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.
4. If the change is approved and passes the tests it is merged into the default branch.

Generated by :no_entry_sign: dangerJS against 5e472cbd9a1256f96cdfa213664ca1c0939f05a4

github-actions[bot] commented 1 month ago

Test Results

 56 files   -β€Šβ€‡96   56 suites   -β€Š96   4m 12s :stopwatch: - 34m 32s  21 tests  -β€Šβ€‡15   21 :white_check_mark: ± 0  0 :zzz: Β±0  0 :x: Β±0  135 runsβ€Š  -β€Š111  135 :white_check_mark:  -β€Š39  0 :zzz: Β±0  0 :x: Β±0 

Results for commit 5e472cbd. ± Comparison against base commit 8ce5f775.

This pull request removes 15 tests. ``` performance.coremark.test_coremark ‑ test_coremark performance.fibonacci.test_fibonacci ‑ test_fibonacci performance.linpack_double.test_linpack_double ‑ test_linpack_double performance.linpack_float.test_linpack_float ‑ test_linpack_float performance.psramspeed.test_psramspeed ‑ test_psramspeed performance.ramspeed.test_ramspeed ‑ test_ramspeed performance.superpi.test_superpi ‑ test_superpi test_touch_errors test_touch_interrtupt test_touch_read … ```
SuGlider commented 1 month ago

After testing it .... everything point to the UART Driver itself!

github-actions[bot] commented 1 month ago

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.

MemoryFLASH [bytes]FLASH [%]RAM [bytes]RAM [%]
TargetDECINCDECINCDECINCDECINC
ESP32S3:green_heart: -640:bangbang: +2091K:green_heart: -0.23:bangbang: +215.050:bangbang: +15K0.00:bangbang: +26.21
ESP32S2:green_heart: -744:bangbang: +3K:green_heart: -0.29:warning: +0.340:warning: +240.00:warning: +0.05
ESP32C3:green_heart: -7940:green_heart: -0.310.00000.000.00
ESP32C6:green_heart: -7860:green_heart: -0.370.00000.000.00
ESP32H2:green_heart: -7920:green_heart: -0.310.00000.000.00
ESP32:green_heart: -648:bangbang: +11K:green_heart: -0.22:bangbang: +1.080:warning: +640.00:warning: +0.11
Click to expand the detailed deltas report [usage change in BYTES]
TargetESP32S3ESP32S2ESP32C3ESP32C6ESP32H2ESP32
ExampleFLASHRAMFLASHRAMFLASHRAMFLASHRAMFLASHRAMFLASHRAM
ArduinoOTA/examples/BasicOTA:green_heart: -2320:green_heart: -2400:green_heart: -2680:green_heart: -2680--:green_heart: -2520
AsyncUDP/examples/AsyncUDPClient:green_heart: -2360:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2520
AsyncUDP/examples/AsyncUDPMulticastServer:green_heart: -2200:green_heart: -2400:green_heart: -2680:green_heart: -2680--:green_heart: -2480
AsyncUDP/examples/AsyncUDPServer:green_heart: -2160:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2480
BLE/examples/BLE5_extended_scan:green_heart: -4280--:green_heart: -4240:green_heart: -4240:green_heart: -4240--
BLE/examples/BLE5_multi_advertising:green_heart: -4320--:green_heart: -4280:green_heart: -4360:green_heart: -4280--
BLE/examples/BLE5_periodic_advertising:green_heart: -4160--:green_heart: -4280:green_heart: -4360:green_heart: -4280--
BLE/examples/BLE5_periodic_sync:green_heart: -4080--:green_heart: -4280:green_heart: -4280:green_heart: -4280--
BLE/examples/Beacon_Scanner:green_heart: -4160--:green_heart: -4220:green_heart: -4300:green_heart: -4220:green_heart: -4200
BLE/examples/Client:green_heart: -4240--:green_heart: -4240:green_heart: -4320:green_heart: -4240:green_heart: -4280
BLE/examples/EddystoneTLM_Beacon:green_heart: -4320--:green_heart: -4220:green_heart: -4220:green_heart: -4220:green_heart: -4200
BLE/examples/EddystoneURL_Beacon:green_heart: -4160--:green_heart: -4240:green_heart: -4320:green_heart: -4240:green_heart: -4040
BLE/examples/Notify:green_heart: -3800--:green_heart: -4220:green_heart: -4300:green_heart: -4220:green_heart: -4280
BLE/examples/Scan:green_heart: -4000--:green_heart: -4220:green_heart: -4220:green_heart: -4220:green_heart: -4280
BLE/examples/Server:green_heart: -4120--:green_heart: -4280:green_heart: -4360:green_heart: -4280:green_heart: -4200
BLE/examples/Server_multiconnect:green_heart: -4120--:green_heart: -4220:green_heart: -4300:green_heart: -4220:green_heart: -4360
BLE/examples/UART:green_heart: -4360--:green_heart: -4220:green_heart: -4300:green_heart: -4220:green_heart: -3960
BLE/examples/Write:green_heart: -4040--:green_heart: -4280:green_heart: -4360:green_heart: -4280:green_heart: -4080
BLE/examples/iBeacon:green_heart: -4120--:green_heart: -4220:green_heart: -4300:green_heart: -4220:green_heart: -4480
DNSServer/examples/CaptivePortal:green_heart: -2480:green_heart: -2520:green_heart: -2680:green_heart: -2680--:green_heart: -2480
EEPROM/examples/eeprom_class:green_heart: -6400:green_heart: -7320:green_heart: -7720:green_heart: -7720:green_heart: -7720:green_heart: -6480
EEPROM/examples/eeprom_extra:green_heart: -6400:green_heart: -7320:green_heart: -7760:green_heart: -7700:green_heart: -7700:green_heart: -6480
EEPROM/examples/eeprom_write:green_heart: -6240:green_heart: -7320:green_heart: -7800:green_heart: -7680:green_heart: -7760:green_heart: -6480
ESP32/examples/AnalogOut/LEDCFade:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7640:green_heart: -7720:green_heart: -6480
ESP32/examples/AnalogOut/LEDCSingleChannel000000000000
ESP32/examples/AnalogOut/LEDCSoftwareFade000000000000
ESP32/examples/AnalogOut/SigmaDelta000000000000
ESP32/examples/AnalogOut/ledcFrequency000000000000
ESP32/examples/AnalogOut/ledcWrite_RGB:green_heart: -6400:green_heart: -7320:green_heart: -7720:green_heart: -7640:green_heart: -7700:green_heart: -6480
ESP32/examples/AnalogRead:green_heart: -6240:green_heart: -7320:green_heart: -7720:green_heart: -7700:green_heart: -7720:green_heart: -6480
ESP32/examples/AnalogReadContinuous:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7720:green_heart: -7700:green_heart: -6480
ESP32/examples/ArduinoStackSize:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7640:green_heart: -7720:green_heart: -6480
ESP32/examples/CI/CIBoardsTest:green_heart: -4040:green_heart: -4000:green_heart: -4340:green_heart: -4340:green_heart: -4340:green_heart: -4120
ESP32/examples/Camera/CameraWebServer:bangbang: +2091K:bangbang: +15K:bangbang: +3K:warning: +24------:bangbang: +11K:warning: +64
ESP32/examples/ChipID/GetChipID:green_heart: -6400:green_heart: -7320:green_heart: -7820:green_heart: -7720:green_heart: -7780:green_heart: -6480
ESP32/examples/DeepSleep/ExternalWakeUp:green_heart: -6400:green_heart: -7320------:green_heart: -6480
ESP32/examples/DeepSleep/TimerWakeUp:green_heart: -6400:green_heart: -7320:green_heart: -7760:green_heart: -7680--:green_heart: -6480
ESP32/examples/DeepSleep/TouchWakeUp:green_heart: -4080:green_heart: -4000------:green_heart: -6480
ESP32/examples/FreeRTOS/BasicMultiThreading:green_heart: -4040:green_heart: -4000:green_heart: -4380:green_heart: -4360:green_heart: -4380:green_heart: -6480
ESP32/examples/FreeRTOS/Mutex:green_heart: -6240:green_heart: -7320:green_heart: -7800:green_heart: -7680:green_heart: -7780:green_heart: -6480
ESP32/examples/FreeRTOS/Queue:green_heart: -4040:green_heart: -4000:green_heart: -4360:green_heart: -4260:green_heart: -4340:green_heart: -4120
ESP32/examples/FreeRTOS/Semaphore:green_heart: -6400:green_heart: -7320:green_heart: -7800:green_heart: -7700:green_heart: -7780:green_heart: -6480
ESP32/examples/GPIO/BlinkRGB000000000000
ESP32/examples/GPIO/FunctionalInterrupt:green_heart: -4080:green_heart: -4000:green_heart: -4460:green_heart: -4420:green_heart: -4420:green_heart: -6480
ESP32/examples/GPIO/FunctionalInterruptStruct:green_heart: -4080:green_heart: -4000:green_heart: -4360:green_heart: -4220:green_heart: -4300:green_heart: -6480
ESP32/examples/GPIO/GPIOInterrupt:green_heart: -4080:green_heart: -4000:green_heart: -4340:green_heart: -4220:green_heart: -4320:green_heart: -6480
ESP32/examples/HWCDC_Events:green_heart: -4040--:green_heart: -4360:green_heart: -4220:green_heart: -4300--
ESP32/examples/MacAddress/GetMacAddress:green_heart: -6240:green_heart: -7320:green_heart: -7840:green_heart: -7840:green_heart: -7820:green_heart: -6480
ESP32/examples/RMT/Legacy_RMT_Driver_Compatible:green_heart: -6400:green_heart: -7320:green_heart: -7820:green_heart: -7700:green_heart: -7780:green_heart: -6480
ESP32/examples/RMT/RMTCallback:green_heart: -4040:green_heart: -4000:green_heart: -4340:green_heart: -4320:green_heart: -4320:green_heart: -4120
ESP32/examples/RMT/RMTLoopback:green_heart: -4040:green_heart: -4000:green_heart: -4400:green_heart: -4300:green_heart: -4360:green_heart: -4120
ESP32/examples/RMT/RMTReadXJT:green_heart: -4040:green_heart: -4000:green_heart: -4340:green_heart: -4220:green_heart: -4280:green_heart: -4120
ESP32/examples/RMT/RMTWrite_RGB_LED:green_heart: -4040:green_heart: -4000:green_heart: -4320:green_heart: -4200:green_heart: -4280:green_heart: -4120
ESP32/examples/RMT/RMT_CPUFreq_Test:green_heart: -4040:green_heart: -4000:green_heart: -4420:green_heart: -4320:green_heart: -4420:green_heart: -4120
ESP32/examples/RMT/RMT_EndOfTransmissionState:green_heart: -4040:green_heart: -4000:green_heart: -4360:green_heart: -4240:green_heart: -4300:green_heart: -4120
ESP32/examples/RMT/RMT_LED_Blink:green_heart: -4040:green_heart: -4000:green_heart: -4440:green_heart: -4340:green_heart: -4460:green_heart: -4120
ESP32/examples/ResetReason/ResetReason:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7660:green_heart: -7720:green_heart: -6480
ESP32/examples/ResetReason/ResetReason2:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7620:green_heart: -7700:green_heart: -6480
ESP32/examples/Serial/BaudRateDetect_Demo:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7680:green_heart: -7720:green_heart: -6480
ESP32/examples/Serial/OnReceiveError_BREAK_Demo:green_heart: -240:green_heart: -240:green_heart: -180:green_heart: -180:green_heart: -180:green_heart: -240
ESP32/examples/Serial/OnReceive_Demo:green_heart: -240:green_heart: -240:green_heart: -180:green_heart: -180:green_heart: -180:green_heart: -240
ESP32/examples/Serial/RS485_Echo_Demo:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7640:green_heart: -7700:green_heart: -6480
ESP32/examples/Serial/RxFIFOFull_Demo:green_heart: -6400:green_heart: -7320:green_heart: -7800:green_heart: -7700:green_heart: -7780:green_heart: -6480
ESP32/examples/Serial/RxTimeout_Demo:green_heart: -6400:green_heart: -7320:green_heart: -7740:green_heart: -7640:green_heart: -7740:green_heart: -6480
ESP32/examples/Serial/Serial_All_CPU_Freqs:green_heart: -6400:green_heart: -7320:green_heart: -7940:green_heart: -7860:green_heart: -7920:green_heart: -6480
ESP32/examples/Serial/Serial_STD_Func_OnReceive:green_heart: -240:green_heart: -240:green_heart: -180:green_heart: -180:green_heart: -180:green_heart: -240
ESP32/examples/Serial/onReceiveExample:green_heart: -240:green_heart: -240:green_heart: -180:green_heart: -180:green_heart: -180:green_heart: -240
ESP32/examples/TWAI/TWAIreceive:green_heart: -4040:green_heart: -4000:green_heart: -4420:green_heart: -4300:green_heart: -4380:green_heart: -4120
ESP32/examples/TWAI/TWAItransmit:green_heart: -4040:green_heart: -4000:green_heart: -4420:green_heart: -4300:green_heart: -4380:green_heart: -4120
ESP32/examples/Template/ExampleTemplate000000000000
ESP32/examples/Time/SimpleTime:green_heart: -4200:green_heart: -4160:green_heart: -4340:green_heart: -4380--:green_heart: -4320
ESP32/examples/Timer/RepeatTimer:green_heart: -4080:green_heart: -4000:green_heart: -4360:green_heart: -4240:green_heart: -4320:green_heart: -6480
ESP32/examples/Timer/WatchdogTimer:green_heart: -4080:green_heart: -4000:green_heart: -4360:green_heart: -4220:green_heart: -4320:green_heart: -6480
ESP32/examples/Touch/TouchButtonV2:green_heart: -4080:green_heart: -4000--------
ESP32/examples/Touch/TouchInterrupt:green_heart: -4080:green_heart: -4000------:green_heart: -6480
ESP32/examples/Touch/TouchRead:green_heart: -4080:green_heart: -4000------:green_heart: -6480
ESP32/examples/Utilities/HEXBuilder:green_heart: -6400:green_heart: -7320:green_heart: -7760:green_heart: -7740:green_heart: -7740:green_heart: -6480
ESP32/examples/Utilities/MD5Builder:green_heart: -6400:green_heart: -7320:green_heart: -7780:green_heart: -7760:green_heart: -7760:green_heart: -6480
ESP32/examples/Utilities/SHA1Builder:green_heart: -6400:green_heart: -7440:green_heart: -7840:green_heart: -7820:green_heart: -7820:green_heart: -6480
ESP_I2S/examples/ES8388_loopback:green_heart: -4040:green_heart: -4000:green_heart: -4360:green_heart: -4300:green_heart: -4320:green_heart: -4120
ESP_I2S/examples/Record_to_WAV:green_heart: -4040--------:green_heart: -4120
ESP_I2S/examples/Simple_tone:green_heart: -4040:green_heart: -4000:green_heart: -4300:green_heart: -4220:green_heart: -4300:green_heart: -4120
ESP_NOW/examples/ESP_NOW_Broadcast_Master:green_heart: -4280:green_heart: -4080:green_heart: -4340:green_heart: -4280--:green_heart: -4280
ESP_NOW/examples/ESP_NOW_Broadcast_Slave:green_heart: -4120:green_heart: -3920:green_heart: -4340:green_heart: -4280--:green_heart: -3920
ESP_NOW/examples/ESP_NOW_Network:green_heart: -4240:green_heart: -4040:green_heart: -4340:green_heart: -4260--:green_heart: -4560
ESP_NOW/examples/ESP_NOW_Serial:green_heart: -4160:green_heart: -4120:green_heart: -4340:green_heart: -4260--:green_heart: -4400
ESP_SR/examples/Basic:green_heart: -4040----------
ESPmDNS/examples/mDNS-SD_Extended:green_heart: -4240:green_heart: -4280:green_heart: -4340:green_heart: -4260--:green_heart: -4280
ESPmDNS/examples/mDNS_Web_Server:green_heart: -4280:green_heart: -4280:green_heart: -4340:green_heart: -4340--:green_heart: -4240
Ethernet/examples/ETH_W5500_Arduino_SPI:green_heart: -4080:green_heart: -4080:green_heart: -4340:green_heart: -4340:green_heart: -4340:green_heart: -4120
Ethernet/examples/ETH_W5500_IDF_SPI:green_heart: -4040:green_heart: -4120:green_heart: -4360:green_heart: -4360:green_heart: -4360:green_heart: -4120
Ethernet/examples/ETH_WIFI_BRIDGE:green_heart: -4280:green_heart: -4040:green_heart: -4340:green_heart: -4260--:green_heart: -4280
FFat/examples/FFat_Test:green_heart: -6400:green_heart: -7320:green_heart: -7680:green_heart: -7780:green_heart: -7680:green_heart: -6480
FFat/examples/FFat_time:green_heart: -4240:green_heart: -4200:green_heart: -4340:green_heart: -4260--:green_heart: -4160
HTTPClient/examples/Authorization:green_heart: -2440:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2560
HTTPClient/examples/BasicHttpClient:green_heart: -2440:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2560
HTTPClient/examples/BasicHttpsClient:green_heart: -2440:green_heart: -2400:green_heart: -2680:green_heart: -2680--:green_heart: -2400
HTTPClient/examples/HTTPClientEnterprise:green_heart: -4160:green_heart: -4040:green_heart: -4340:green_heart: -4340--:green_heart: -4280
HTTPClient/examples/ReuseConnection:green_heart: -2200:green_heart: -2400:green_heart: -2680:green_heart: -2680--:green_heart: -2520
HTTPClient/examples/StreamHttpClient:green_heart: -2400:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2560
HTTPUpdate/examples/httpUpdate:green_heart: -2440:green_heart: -2200:green_heart: -2680:green_heart: -2680--:green_heart: -2520
HTTPUpdate/examples/httpUpdateSPIFFS:green_heart: -2440:green_heart: -2520:green_heart: -2680:green_heart: -2680--:green_heart: -2560
HTTPUpdate/examples/httpUpdateSecure:green_heart: -2360:green_heart: -2240:green_heart: -2680:green_heart: -2680--:green_heart: -2480
HTTPUpdateServer/examples/WebUpdater:green_heart: -2480:green_heart: -2600:green_heart: -2680:green_heart: -2680--:green_heart: -2480
Insights/examples/DiagnosticsSmokeTest:green_heart: -4200:green_heart: -4160:green_heart: -4260:green_heart: -4300--:green_heart: -4280
Insights/examples/MinimalDiagnostics:green_heart: -4160:green_heart: -4200:green_heart: -4300:green_heart: -4260--:green_heart: -4440
LittleFS/examples/LITTLEFS_test:green_heart: -6240:green_heart: -7320:green_heart: -7680:green_heart: -7760:green_heart: -7660:green_heart: -6480
LittleFS/examples/LITTLEFS_time:green_heart: -4240:green_heart: -4240:green_heart: -4340:green_heart: -4260--:green_heart: -3880
NetBIOS/examples/ESP_NBNST:green_heart: -2520:green_heart: -2360:green_heart: -2680:green_heart: -2680--:green_heart: -2560
NetworkClientSecure/examples/WiFiClientInsecure:green_heart: -4240:green_heart: -4200:green_heart: -4340:green_heart: -4340--:green_heart: -4280
NetworkClientSecure/examples/WiFiClientPSK:green_heart: -4160:green_heart: -4200:green_heart: -4340:green_heart: -4340--:green_heart: -4320
NetworkClientSecure/examples/WiFiClientSecure:green_heart: -4200:green_heart: -4240:green_heart: -4340:green_heart: -4340--:green_heart: -4320
NetworkClientSecure/examples/WiFiClientSecureEnterprise:green_heart: -4160:green_heart: -4200:green_heart: -4340:green_heart: -4340--:green_heart: -4240
NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade:green_heart: -4240:green_heart: -4240:green_heart: -4340:green_heart: -4340--:green_heart: -4280
NetworkClientSecure/examples/WiFiClientShowPeerCredentials:green_heart: -4200:green_heart: -4040:green_heart: -4340:green_heart: -4340--:green_heart: -4360
NetworkClientSecure/examples/WiFiClientTrustOnFirstUse:green_heart: -4160:green_heart: -4240:green_heart: -4340:green_heart: -4340--:green_heart: -4240
PPP/examples/PPP_Basic:green_heart: -2360:green_heart: -2320:green_heart: -2680:green_heart: -2680:green_heart: -2680:green_heart: -2400
PPP/examples/PPP_WIFI_BRIDGE:green_heart: -2440:green_heart: -2480:green_heart: -2680:green_heart: -2680--:green_heart: -2600
Preferences/examples/Prefs2Struct:green_heart: -6400:green_heart: -7320:green_heart: -7820:green_heart: -7780:green_heart: -7760:green_heart: -6480
Preferences/examples/StartCounter:green_heart: -6400:green_heart: -7440:green_heart: -7820:green_heart: -7800:green_heart: -7760:green_heart: -6480
RainMaker/examples/RMakerCustom:green_heart: -3520:green_heart: -4040:green_heart: -4300:green_heart: -4300--:green_heart: -4520
RainMaker/examples/RMakerCustomAirCooler:green_heart: -4240:green_heart: -4000:green_heart: -4300:green_heart: -4300--:green_heart: -4200
RainMaker/examples/RMakerSonoffDualR3:green_heart: -4200:green_heart: -4160:green_heart: -4300:green_heart: -4300--:green_heart: -4520
RainMaker/examples/RMakerSwitch:green_heart: -4120:green_heart: -3880:green_heart: -4360:green_heart: -4320--:green_heart: -4440
SD/examples/SD_Test:green_heart: -4040:green_heart: -4000:green_heart: -4260:green_heart: -4340:green_heart: -4260:green_heart: -6480
SD/examples/SD_time:green_heart: -4240:green_heart: -4120:green_heart: -4340:green_heart: -4340--:green_heart: -4320
SD_MMC/examples/SD2USBMSC:green_heart: -4080----------
SD_MMC/examples/SDMMC_Test:green_heart: -4040--------:green_heart: -4120
SD_MMC/examples/SDMMC_time:green_heart: -4160--------:green_heart: -4320
SPI/examples/SPI_Multiple_Buses000000000000
SPIFFS/examples/SPIFFS_Test:green_heart: -6400:green_heart: -7320:green_heart: -7700:green_heart: -7780:green_heart: -7700:green_heart: -6480
SPIFFS/examples/SPIFFS_time:green_heart: -4240:green_heart: -3840:green_heart: -4340:green_heart: -4340--:green_heart: -4720
SimpleBLE/examples/SimpleBleDevice:green_heart: -4200--:green_heart: -4360:green_heart: -4320:green_heart: -4320:green_heart: -4280
TFLiteMicro/examples/hello_world000000000000
Ticker/examples/Blinker000000000000
Ticker/examples/TickerBasic000000000000
Ticker/examples/TickerParameter000000000000
USB/examples/CompositeDevice:green_heart: -4040:green_heart: -4000--------
USB/examples/ConsumerControl0000--------
USB/examples/CustomHIDDevice:green_heart: -4040:green_heart: -4000--------
USB/examples/FirmwareMSC:green_heart: -4040:green_heart: -4000--------
USB/examples/Gamepad:green_heart: -4040:green_heart: -4000--------
USB/examples/HIDVendor:green_heart: -4040:green_heart: -4000--------
USB/examples/Keyboard/KeyboardLogout0000--------
USB/examples/Keyboard/KeyboardMessage0000--------
USB/examples/Keyboard/KeyboardReprogram0000--------
USB/examples/Keyboard/KeyboardSerial:green_heart: -4040:green_heart: -4000--------
USB/examples/KeyboardAndMouseControl:green_heart: -4040:green_heart: -4000--------
USB/examples/MIDI/MidiController:green_heart: -4040:green_heart: -4000--------
USB/examples/MIDI/MidiInterface:green_heart: -4040:green_heart: -4000--------
USB/examples/MIDI/MidiMusicBox:green_heart: -4040:green_heart: -4000--------
USB/examples/MIDI/ReceiveMidi:green_heart: -4040:green_heart: -4000--------
USB/examples/Mouse/ButtonMouseControl0000--------
USB/examples/SystemControl0000--------
USB/examples/USBMSC:green_heart: -4040:green_heart: -4000--------
USB/examples/USBSerial:green_heart: -4040:green_heart: -4000--------
USB/examples/USBVendor:green_heart: -4040:green_heart: -4000--------
Update/examples/AWS_S3_OTA_Update:green_heart: -2440:green_heart: -2360:green_heart: -2680:green_heart: -2680--:green_heart: -2360
Update/examples/HTTPS_OTA_Update:green_heart: -4240:green_heart: -4240:green_heart: -4280:green_heart: -4280--:green_heart: -4240
Update/examples/HTTP_Client_AES_OTA_Update:green_heart: -2440:green_heart: -2360:green_heart: -2680:green_heart: -2680--:green_heart: -2400
Update/examples/HTTP_Server_AES_OTA_Update:green_heart: -2320:green_heart: -2120:green_heart: -2680:green_heart: -2680--:green_heart: -2560
Update/examples/OTAWebUpdater:green_heart: -2400:green_heart: -1880:green_heart: -2680:green_heart: -2680--:green_heart: -2520
Update/examples/SD_Update:green_heart: -2320:green_heart: -2280:green_heart: -2680:green_heart: -2680:green_heart: -2680:green_heart: -4760
WebServer/examples/AdvancedWebServer:green_heart: -2440:green_heart: -2360:green_heart: -2680:green_heart: -2680--:green_heart: -2560
WebServer/examples/FSBrowser:green_heart: -2440:green_heart: -2600:green_heart: -2680:green_heart: -2680--:green_heart: -2520
WebServer/examples/Filters:green_heart: -2400:green_heart: -2440:green_heart: -2680:green_heart: -2680--:green_heart: -2560
WebServer/examples/HelloServer:green_heart: -2440:green_heart: -2480:green_heart: -2680:green_heart: -2680--:green_heart: -2400
WebServer/examples/HttpAdvancedAuth:green_heart: -2440:green_heart: -2520:green_heart: -2680:green_heart: -2680--:green_heart: -2520
WebServer/examples/HttpAuthCallback:green_heart: -2400:green_heart: -2400:green_heart: -2680:green_heart: -2680--:green_heart: -2560
WebServer/examples/HttpAuthCallbackInline:green_heart: -2440:green_heart: -2440:green_heart: -2680:green_heart: -2680--:green_heart: -2520
WebServer/examples/HttpBasicAuth:green_heart: -2320:green_heart: -2400:green_heart: -2680:green_heart: -2680--:green_heart: -2520
WebServer/examples/HttpBasicAuthSHA1:green_heart: -2360:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2520
WebServer/examples/HttpBasicAuthSHA1orBearerToken:green_heart: -2320:green_heart: -2400:green_heart: -2680:green_heart: -2680--:green_heart: -2440
WebServer/examples/MultiHomedServers:green_heart: -2400:green_heart: -2440:green_heart: -2680:green_heart: -2680--:green_heart: -2480
WebServer/examples/PathArgServer:green_heart: -2440:green_heart: -2280:green_heart: -2680:green_heart: -2680--:green_heart: -2520
WebServer/examples/SDWebServer:green_heart: -2520:green_heart: -2360:green_heart: -2680:green_heart: -2680--:green_heart: -2480
WebServer/examples/SimpleAuthentification:green_heart: -2440:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2640
WebServer/examples/UploadHugeFile:green_heart: -2400:green_heart: -2680:green_heart: -2680:green_heart: -2680--:green_heart: -2480
WebServer/examples/WebServer:green_heart: -2400:green_heart: -2480:green_heart: -2680:green_heart: -2680--:green_heart: -2560
WebServer/examples/WebUpdate:green_heart: -2400:green_heart: -2440:green_heart: -2680:green_heart: -2680--:green_heart: -2440
WiFi/examples/FTM/FTM_Initiator:green_heart: -3880:green_heart: -3880:green_heart: -4340:green_heart: -4260--:green_heart: -4280
WiFi/examples/FTM/FTM_Responder:green_heart: -4120:green_heart: -4040:green_heart: -4380:green_heart: -4300--:green_heart: -4240
WiFi/examples/SimpleWiFiServer:green_heart: -4240:green_heart: -4320:green_heart: -4340:green_heart: -4260--:green_heart: -4320
WiFi/examples/WPS:green_heart: -4240:green_heart: -3880:green_heart: -4340:green_heart: -4260--:green_heart: -4240
WiFi/examples/WiFiAccessPoint:green_heart: -4280:green_heart: -4120:green_heart: -4340:green_heart: -4260--:green_heart: -4360
WiFi/examples/WiFiBlueToothSwitch:green_heart: -4240--:green_heart: -4360:green_heart: -4380--:green_heart: -4200
WiFi/examples/WiFiClient:green_heart: -4240:green_heart: -4080:green_heart: -4360:green_heart: -4360--:green_heart: -4120
WiFi/examples/WiFiClientBasic:green_heart: -2400:green_heart: -2280:green_heart: -2700:green_heart: -2700--:green_heart: -2120
WiFi/examples/WiFiClientConnect:green_heart: -4200:green_heart: -4080:green_heart: -4360:green_heart: -4260--:green_heart: -4280
WiFi/examples/WiFiClientEnterprise:green_heart: -4160:green_heart: -4000:green_heart: -4360:green_heart: -4280--:green_heart: -4280
WiFi/examples/WiFiClientEvents:green_heart: -4240:green_heart: -4040:green_heart: -4340:green_heart: -4260--:green_heart: -4240
WiFi/examples/WiFiClientStaticIP:green_heart: -4280:green_heart: -4080:green_heart: -4360:green_heart: -4360--:green_heart: -4120
WiFi/examples/WiFiExtender:green_heart: -4080:green_heart: -4000:green_heart: -4340:green_heart: -4260--:green_heart: -4080
WiFi/examples/WiFiIPv6:green_heart: -4080:green_heart: -4080:green_heart: -4360:green_heart: -4280--:green_heart: -4360
WiFi/examples/WiFiMulti:green_heart: -2480:green_heart: -2280:green_heart: -2680:green_heart: -2680--:green_heart: -2560
WiFi/examples/WiFiMultiAdvanced:green_heart: -2440:green_heart: -2360:green_heart: -2680:green_heart: -2680--:green_heart: -2520
WiFi/examples/WiFiScan:green_heart: -4080:green_heart: -4200:green_heart: -4360:green_heart: -4340--:green_heart: -4280
WiFi/examples/WiFiScanAsync:green_heart: -4080:green_heart: -4240:green_heart: -4340:green_heart: -4360--:green_heart: -4240
WiFi/examples/WiFiScanDualAntenna:green_heart: -3880:green_heart: -4080:green_heart: -4340:green_heart: -4280--:green_heart: -4360
WiFi/examples/WiFiScanTime:green_heart: -4120:green_heart: -4200:green_heart: -4360:green_heart: -4360--:green_heart: -4240
WiFi/examples/WiFiSmartConfig:green_heart: -4200:green_heart: -4080:green_heart: -4380:green_heart: -4300--:green_heart: -4440
WiFi/examples/WiFiTelnetToSerial:green_heart: -2520:green_heart: -2320:green_heart: -2680:green_heart: -2680--:green_heart: -2480
WiFi/examples/WiFiUDPClient:green_heart: -4160:green_heart: -3920:green_heart: -4380:green_heart: -4300--:green_heart: -3960
WiFiProv/examples/WiFiProv:green_heart: -4200:green_heart: -4120:green_heart: -4340:green_heart: -4380--:green_heart: -4360
Wire/examples/WireMaster:green_heart: -4040:green_heart: -4000:green_heart: -4340:green_heart: -4200:green_heart: -4280:green_heart: -4120
Wire/examples/WireScan:green_heart: -4040:green_heart: -4000:green_heart: -4340:green_heart: -4200:green_heart: -4280:green_heart: -4120
Wire/examples/WireSlave:green_heart: -4040:green_heart: -4000:green_heart: -4360:green_heart: -4220:green_heart: -4300:green_heart: -4120
OpenThread/examples/COAP/coap_lamp------:green_heart: -4380:green_heart: -4320--
OpenThread/examples/COAP/coap_switch------:green_heart: -4320:green_heart: -4320--
OpenThread/examples/SimpleCLI------:green_heart: -4280:green_heart: -4220--
OpenThread/examples/SimpleNode------:green_heart: -4320:green_heart: -4340--
OpenThread/examples/SimpleThreadNetwork/ExtendedRouterNode------:green_heart: -4320:green_heart: -4360--
OpenThread/examples/SimpleThreadNetwork/LeaderNode------:green_heart: -4300:green_heart: -4220--
OpenThread/examples/SimpleThreadNetwork/RouterNode------:green_heart: -4300:green_heart: -4220--
OpenThread/examples/ThreadScan------:green_heart: -4320:green_heart: -4240--
OpenThread/examples/onReceive------:green_heart: -4220:green_heart: -4220--
Zigbee/examples/Zigbee_Color_Dimmable_Light------0000--
Zigbee/examples/Zigbee_Color_Dimmer_Switch------:green_heart: -4340:green_heart: -4340--
Zigbee/examples/Zigbee_On_Off_Light------0000--
Zigbee/examples/Zigbee_On_Off_Switch------:green_heart: -4260:green_heart: -4320--
Zigbee/examples/Zigbee_Scan_Networks------:green_heart: -7660:green_heart: -7740--
Zigbee/examples/Zigbee_Temperature_Sensor------:green_heart: -4340:green_heart: -4340--
Zigbee/examples/Zigbee_Thermostat------:green_heart: -4320:green_heart: -4320--
BluetoothSerial/examples/DiscoverConnect----------:green_heart: -2480
BluetoothSerial/examples/GetLocalMAC----------:green_heart: -2440
BluetoothSerial/examples/SerialToSerialBT----------:green_heart: -2520
BluetoothSerial/examples/SerialToSerialBTM----------:green_heart: -2600
BluetoothSerial/examples/SerialToSerialBT_Legacy----------00
BluetoothSerial/examples/SerialToSerialBT_SSP----------:green_heart: -2640
BluetoothSerial/examples/bt_classic_device_discovery----------:green_heart: -2600
BluetoothSerial/examples/bt_remove_paired_devices----------:green_heart: -2200
ESP32/examples/DeepSleep/SmoothBlink_ULP_Code----------:green_heart: -6480
ESP32/examples/Touch/TouchButton----------:green_heart: -6480
Ethernet/examples/ETH_LAN8720----------:green_heart: -4160
Ethernet/examples/ETH_TLK110----------:green_heart: -4160