From 9d566dc29b3511ca391e0a568392d9084e00456b Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 23 Aug 2022 23:48:04 +0200 Subject: [PATCH 01/49] Prepare for IDF version 5 --- components/CalEPD/CMakeLists.txt | 2 +- components/CalEPD/epd4spi.cpp | 1 - components/CalEPD/include/color/gdeh0154z90.h | 1 + .../CalEPD/include/color/wave4i7Color.h | 1 + .../CalEPD/include/color/wave5i7Color.h | 1 + components/CalEPD/include/epd4spi.h | 3 + components/CalEPD/include/epdspi2cs.h | 2 +- components/CalEPD/include/gdeh0154d67.h | 1 + components/CalEPD/include/gdeh0213b73.h | 1 + components/CalEPD/include/gdeh042Z21.h | 1 + components/CalEPD/include/gdeh042Z96.h | 1 + components/CalEPD/include/gdep015OC1.h | 1 + components/CalEPD/include/gdew0213i5f.h | 1 + components/CalEPD/include/gdew027w3.h | 1 + components/CalEPD/include/gdew042t2.h | 2 +- components/CalEPD/include/gdew042t2Grays.h | 4 +- components/CalEPD/include/gdew0583t7.h | 3 +- components/CalEPD/include/gdew0583z21.h | 3 +- components/CalEPD/include/gdew075HD.h | 3 +- components/CalEPD/include/gdew075T7.h | 3 +- components/CalEPD/include/gdew075T7Grays.h | 3 +- components/CalEPD/include/gdew075T8.h | 3 +- components/CalEPD/include/gdew075c64.h | 3 +- components/CalEPD/include/gdew075z09.h | 3 +- components/CalEPD/include/heltec0151.h | 1 + components/CalEPD/include/wave12i48.h | 3 +- components/CalEPD/include/wave12i48BR.h | 3 +- components/CalEPD/models/color/gdew075c64.cpp | 1 + components/CalEPD/models/gdew042t2Grays.cpp | 10 +- components/CalEPD/models/gdew0583t7.cpp | 2 +- components/CalEPD/models/gdew075T7.cpp | 2 +- components/CalEPD/models/gdew075T7Grays.cpp | 5 +- components/CalEPD/models/gdew075T8.cpp | 6 +- components/FT6X36-IDF/CMakeLists.txt | 3 +- components/FT6X36-IDF/include/FT6X36.h | 1 + components/FT6X36-IDF/include/L58Touch.h | 1 + components/epdiy | 2 +- main/CMakeLists.txt | 4 +- main/cale-grayscale.cpp | 8 +- main/demos/demo-grays.cpp | 101 +++++++++--------- 40 files changed, 113 insertions(+), 88 deletions(-) diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index d29360ab..2d6161a6 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -61,7 +61,7 @@ idf_component_register(SRCS ${srcs} REQUIRES "Adafruit-GFX" REQUIRES "FT6X36-IDF" # Uncomment for parallel epapers: - REQUIRES "epdiy" + REQUIRES epdiy esp_timer INCLUDE_DIRS "include" ) # Note about epdiy component: Even if it's not REQUIRED sometimes CMake includes it diff --git a/components/CalEPD/epd4spi.cpp b/components/CalEPD/epd4spi.cpp index 9a806fd7..4fb28c24 100644 --- a/components/CalEPD/epd4spi.cpp +++ b/components/CalEPD/epd4spi.cpp @@ -3,7 +3,6 @@ #include #include "freertos/task.h" #include "esp_log.h" -#include "soc/rtc_wdt.h" #ifdef CONFIG_IDF_TARGET_ESP32 #define EPD_HOST HSPI_HOST diff --git a/components/CalEPD/include/color/gdeh0154z90.h b/components/CalEPD/include/color/gdeh0154z90.h index eec42535..40804a97 100644 --- a/components/CalEPD/include/color/gdeh0154z90.h +++ b/components/CalEPD/include/color/gdeh0154z90.h @@ -13,6 +13,7 @@ #include #include #include +#include // Controller: SSD1681 Note: Used by Waveshare in https://www.waveshare.com/wiki/1.54inch_e-Paper_Module_(B) #define GDEH0154Z90_WIDTH 200 diff --git a/components/CalEPD/include/color/wave4i7Color.h b/components/CalEPD/include/color/wave4i7Color.h index c3fe507e..278edc79 100644 --- a/components/CalEPD/include/color/wave4i7Color.h +++ b/components/CalEPD/include/color/wave4i7Color.h @@ -13,6 +13,7 @@ #include #include #include +#include // Controller: SPD1656 https://www.waveshare.com/w/upload/b/bf/SPD1656_1.1.pdf #define WAVE4I7COLOR_WIDTH 640 diff --git a/components/CalEPD/include/color/wave5i7Color.h b/components/CalEPD/include/color/wave5i7Color.h index 970bdfec..0c6079f3 100644 --- a/components/CalEPD/include/color/wave5i7Color.h +++ b/components/CalEPD/include/color/wave5i7Color.h @@ -13,6 +13,7 @@ #include #include #include +#include // Controller: Unknown #define WAVE5I7COLOR_WIDTH 600 diff --git a/components/CalEPD/include/epd4spi.h b/components/CalEPD/include/epd4spi.h index 2c376db0..62ef6afd 100644 --- a/components/CalEPD/include/epd4spi.h +++ b/components/CalEPD/include/epd4spi.h @@ -2,6 +2,9 @@ #include "driver/spi_master.h" #include "driver/gpio.h" #include "iointerface.h" +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) + #include "soc/rtc_wdt.h" +#endif #ifndef epd4spi_h #define epd4spi_h diff --git a/components/CalEPD/include/epdspi2cs.h b/components/CalEPD/include/epdspi2cs.h index ff497f41..0bc1e1e1 100644 --- a/components/CalEPD/include/epdspi2cs.h +++ b/components/CalEPD/include/epdspi2cs.h @@ -2,7 +2,7 @@ #include "driver/spi_master.h" #include "driver/gpio.h" #include "iointerface.h" - +#include #ifndef epdspi2cs_h #define epdspi2cs_h // Instruction R/W bit set HIGH for data READ diff --git a/components/CalEPD/include/gdeh0154d67.h b/components/CalEPD/include/gdeh0154d67.h index 781c692b..69d1835d 100644 --- a/components/CalEPD/include/gdeh0154d67.h +++ b/components/CalEPD/include/gdeh0154d67.h @@ -13,6 +13,7 @@ #include #include #include +#include // Controller: IL3829 Note: Used by Waveshare in https://www.waveshare.com/wiki/1.54inch_e-Paper_Module #define GDEH0154D67_WIDTH 200 diff --git a/components/CalEPD/include/gdeh0213b73.h b/components/CalEPD/include/gdeh0213b73.h index ebecec12..4749485c 100644 --- a/components/CalEPD/include/gdeh0213b73.h +++ b/components/CalEPD/include/gdeh0213b73.h @@ -12,6 +12,7 @@ #include #include #include +#include // Controller: SSD1675B // All comments below are from J-M Zingg (Ref. EPD) diff --git a/components/CalEPD/include/gdeh042Z21.h b/components/CalEPD/include/gdeh042Z21.h index 6cf9e47e..8fc418cf 100644 --- a/components/CalEPD/include/gdeh042Z21.h +++ b/components/CalEPD/include/gdeh042Z21.h @@ -13,6 +13,7 @@ #include #include #include +#include // Controller: UC8276 diff --git a/components/CalEPD/include/gdeh042Z96.h b/components/CalEPD/include/gdeh042Z96.h index 9b285f87..9f7c41c6 100644 --- a/components/CalEPD/include/gdeh042Z96.h +++ b/components/CalEPD/include/gdeh042Z96.h @@ -13,6 +13,7 @@ #include #include #include +#include // Controller: SSD1619A https://v4.cecdn.yun300.cn/100001_1909185148/SSD1619A.pdf diff --git a/components/CalEPD/include/gdep015OC1.h b/components/CalEPD/include/gdep015OC1.h index 1a006137..65ed79c9 100644 --- a/components/CalEPD/include/gdep015OC1.h +++ b/components/CalEPD/include/gdep015OC1.h @@ -12,6 +12,7 @@ #include #include #include +#include // Controller: IL3829 Note: Used by Waveshare in https://www.waveshare.com/wiki/1.54inch_e-Paper_Module #define GDEP015OC1_WIDTH 200 diff --git a/components/CalEPD/include/gdew0213i5f.h b/components/CalEPD/include/gdew0213i5f.h index 59ae8e76..f9d66819 100644 --- a/components/CalEPD/include/gdew0213i5f.h +++ b/components/CalEPD/include/gdew0213i5f.h @@ -12,6 +12,7 @@ #include #include #include +#include // Controller: IL0373 #define GDEW0213I5F_WIDTH 104 diff --git a/components/CalEPD/include/gdew027w3.h b/components/CalEPD/include/gdew027w3.h index d59e332e..fdc1ead2 100644 --- a/components/CalEPD/include/gdew027w3.h +++ b/components/CalEPD/include/gdew027w3.h @@ -12,6 +12,7 @@ #include #include #include +#include // Controller: IL91874 Note: This is the display that the T5S from TTGO use #define GDEW027W3_WIDTH 176 diff --git a/components/CalEPD/include/gdew042t2.h b/components/CalEPD/include/gdew042t2.h index 6099dbfd..cb5f5219 100644 --- a/components/CalEPD/include/gdew042t2.h +++ b/components/CalEPD/include/gdew042t2.h @@ -13,7 +13,7 @@ #include #include #include - +#include // Controller: IL0398 : http://www.good-display.com/download_detail/downloadsId=537.html #define GDEW042T2_WIDTH 400 diff --git a/components/CalEPD/include/gdew042t2Grays.h b/components/CalEPD/include/gdew042t2Grays.h index 708d5200..2eb2a068 100644 --- a/components/CalEPD/include/gdew042t2Grays.h +++ b/components/CalEPD/include/gdew042t2Grays.h @@ -12,11 +12,11 @@ #include #include #include -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include - +#include // Controller: IL0398 : http://www.good-display.com/download_detail/downloadsId=537.html #define GDEW042T2_WIDTH 400 #define GDEW042T2_HEIGHT 300 diff --git a/components/CalEPD/include/gdew0583t7.h b/components/CalEPD/include/gdew0583t7.h index adb9ff80..bd09c641 100644 --- a/components/CalEPD/include/gdew0583t7.h +++ b/components/CalEPD/include/gdew0583t7.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW0583T7_WIDTH 600 #define GDEW0583T7_HEIGHT 448 diff --git a/components/CalEPD/include/gdew0583z21.h b/components/CalEPD/include/gdew0583z21.h index d9011ff9..60570e27 100644 --- a/components/CalEPD/include/gdew0583z21.h +++ b/components/CalEPD/include/gdew0583z21.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW0583Z21_WIDTH 600 #define GDEW0583Z21_HEIGHT 448 diff --git a/components/CalEPD/include/gdew075HD.h b/components/CalEPD/include/gdew075HD.h index be7fc020..06fe72b9 100644 --- a/components/CalEPD/include/gdew075HD.h +++ b/components/CalEPD/include/gdew075HD.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW075HD_WIDTH 880 #define GDEW075HD_HEIGHT 528 diff --git a/components/CalEPD/include/gdew075T7.h b/components/CalEPD/include/gdew075T7.h index 952a435b..91cd24c2 100644 --- a/components/CalEPD/include/gdew075T7.h +++ b/components/CalEPD/include/gdew075T7.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW075T7_WIDTH 800 #define GDEW075T7_HEIGHT 480 diff --git a/components/CalEPD/include/gdew075T7Grays.h b/components/CalEPD/include/gdew075T7Grays.h index 6057add5..b235d27a 100644 --- a/components/CalEPD/include/gdew075T7Grays.h +++ b/components/CalEPD/include/gdew075T7Grays.h @@ -16,10 +16,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW075T7_WIDTH 800 #define GDEW075T7_HEIGHT 480 diff --git a/components/CalEPD/include/gdew075T8.h b/components/CalEPD/include/gdew075T8.h index 2ffaa714..71db6cc6 100644 --- a/components/CalEPD/include/gdew075T8.h +++ b/components/CalEPD/include/gdew075T8.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW075T8_WIDTH 640 #define GDEW075T8_HEIGHT 384 diff --git a/components/CalEPD/include/gdew075c64.h b/components/CalEPD/include/gdew075c64.h index 3baeb2c2..1d99ff75 100644 --- a/components/CalEPD/include/gdew075c64.h +++ b/components/CalEPD/include/gdew075c64.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW075C64_WIDTH 800 #define GDEW075C64_HEIGHT 480 diff --git a/components/CalEPD/include/gdew075z09.h b/components/CalEPD/include/gdew075z09.h index 5738a734..776e7920 100644 --- a/components/CalEPD/include/gdew075z09.h +++ b/components/CalEPD/include/gdew075z09.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" #endif #include +#include #define GDEW075Z09_WIDTH 640 #define GDEW075Z09_HEIGHT 384 diff --git a/components/CalEPD/include/heltec0151.h b/components/CalEPD/include/heltec0151.h index 9a290655..b29691e9 100644 --- a/components/CalEPD/include/heltec0151.h +++ b/components/CalEPD/include/heltec0151.h @@ -12,6 +12,7 @@ #include #include #include +#include // Controller: IL3829 #define HEL0151_WIDTH 200 diff --git a/components/CalEPD/include/wave12i48.h b/components/CalEPD/include/wave12i48.h index c584ec29..a91653a5 100644 --- a/components/CalEPD/include/wave12i48.h +++ b/components/CalEPD/include/wave12i48.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" // Watchdog control #endif #include +#include #define WAVE12I48_WIDTH 1304 #define WAVE12I48_HEIGHT 984 diff --git a/components/CalEPD/include/wave12i48BR.h b/components/CalEPD/include/wave12i48BR.h index a9189e69..e584a185 100644 --- a/components/CalEPD/include/wave12i48BR.h +++ b/components/CalEPD/include/wave12i48BR.h @@ -13,10 +13,11 @@ #include #include // Note in S3 rtc_wdt has errors: https://github.com/espressif/esp-idf/issues/8038 -#if defined CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "soc/rtc_wdt.h" // Watchdog control #endif #include +#include #define WAVE12I48_WIDTH 1304 #define WAVE12I48_HEIGHT 984 diff --git a/components/CalEPD/models/color/gdew075c64.cpp b/components/CalEPD/models/color/gdew075c64.cpp index 3c54ad80..ef387006 100644 --- a/components/CalEPD/models/color/gdew075c64.cpp +++ b/components/CalEPD/models/color/gdew075c64.cpp @@ -36,6 +36,7 @@ Gdew075C64::Gdew075C64(EpdSpi &dio) : Adafruit_GFX(GDEW075C64_WIDTH, GDEW075C64_ { printf("Gdew075C64() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", GDEW075C64_WIDTH, GDEW075C64_HEIGHT, GDEW075C64_BUFFER_SIZE); + printf("\nAvailable heap after Epd bootstrap:%d\n", xPortGetFreeHeapSize()); } diff --git a/components/CalEPD/models/gdew042t2Grays.cpp b/components/CalEPD/models/gdew042t2Grays.cpp index 16cf2ef2..62492d5a 100644 --- a/components/CalEPD/models/gdew042t2Grays.cpp +++ b/components/CalEPD/models/gdew042t2Grays.cpp @@ -308,7 +308,7 @@ void Gdew042t2Grays::fillScreen(uint16_t color) drawPixel(x, y, color); if (x % 8 == 0) { - #if defined CONFIG_IDF_TARGET_ESP32 + #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) rtc_wdt_feed(); #endif vTaskDelay(pdMS_TO_TICKS(2)); @@ -359,11 +359,9 @@ void Gdew042t2Grays::_wakeUp(){ IO.data(0x12); // -0.1 + 18 * -0.05 = -1.0V from OTP, slightly better IO.cmd(0x50); // VCOM AND DATA INTERVAL SETTING - if (_mono_mode) { - IO.data(0xd7); // border floating to avoid flashing - } else { - IO.data(0x97); - } + //IO.data(0x97); // GxEPD: WBmode:VBDF 17|D7 VBDW 97 VBDB 57 WBRmode:VBDF F7 VBDW 77 VBDB 37 VBDR B7 + IO.data(0xd7); // border floating to avoid flashing + IO.cmd(0x04); _waitBusy("epd_wakeup_power"); diff --git a/components/CalEPD/models/gdew0583t7.cpp b/components/CalEPD/models/gdew0583t7.cpp index f1e355ef..14b3a74c 100644 --- a/components/CalEPD/models/gdew0583t7.cpp +++ b/components/CalEPD/models/gdew0583t7.cpp @@ -143,7 +143,7 @@ void Gdew0583T7::update() _send8pixel(i < sizeof(_buffer) ? _buffer[i] : 0x00); if (i%2000==0) { - #if defined CONFIG_IDF_TARGET_ESP32 + #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) rtc_wdt_feed(); #endif vTaskDelay(pdMS_TO_TICKS(10)); diff --git a/components/CalEPD/models/gdew075T7.cpp b/components/CalEPD/models/gdew075T7.cpp index 11bde190..6b0e197e 100644 --- a/components/CalEPD/models/gdew075T7.cpp +++ b/components/CalEPD/models/gdew075T7.cpp @@ -272,7 +272,7 @@ void Gdew075T7::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, boo if (idx % 8 == 0) { - #if defined CONFIG_IDF_TARGET_ESP32 + #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) rtc_wdt_feed(); #endif vTaskDelay(pdMS_TO_TICKS(1)); diff --git a/components/CalEPD/models/gdew075T7Grays.cpp b/components/CalEPD/models/gdew075T7Grays.cpp index 60acb1bd..3d97ff1c 100644 --- a/components/CalEPD/models/gdew075T7Grays.cpp +++ b/components/CalEPD/models/gdew075T7Grays.cpp @@ -3,7 +3,8 @@ #include #include "esp_log.h" #include "freertos/task.h" - +// Important: I suspect this way of rendering grays is not valid +// Please check the 04t2Grays and submit a PR to fix this if you can // Partial Update Delay, may have an influence on degradation #define GDEW075T7_PU_DELAY 100 #define T1 0x0A @@ -115,7 +116,7 @@ void Gdew075T7Grays::fillScreen(uint16_t color) _buffer[x] = color; if (x % 8 == 0) { - #if defined CONFIG_IDF_TARGET_ESP32 + #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) rtc_wdt_feed(); #endif vTaskDelay(pdMS_TO_TICKS(2)); diff --git a/components/CalEPD/models/gdew075T8.cpp b/components/CalEPD/models/gdew075T8.cpp index d9833d4f..9ced502f 100644 --- a/components/CalEPD/models/gdew075T8.cpp +++ b/components/CalEPD/models/gdew075T8.cpp @@ -26,8 +26,10 @@ void Gdew075T8::init(bool debug) // Initialize SPI at 4MHz frequency. true for debug IO.init(4, true); fillScreen(EPD_WHITE); - // Update the TWDT’s timeout period and panic configurations - esp_task_wdt_init(99, true); + #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) + // Update the TWDT’s timeout period and panic configurations + esp_task_wdt_init(99, true); + #endif } void Gdew075T8::fillScreen(uint16_t color) diff --git a/components/FT6X36-IDF/CMakeLists.txt b/components/FT6X36-IDF/CMakeLists.txt index 59057397..41d87c2a 100644 --- a/components/FT6X36-IDF/CMakeLists.txt +++ b/components/FT6X36-IDF/CMakeLists.txt @@ -5,6 +5,7 @@ set(srcs ) idf_component_register(SRCS ${srcs} - INCLUDE_DIRS "include" + REQUIRES driver esp_timer + INCLUDE_DIRS "include" ) diff --git a/components/FT6X36-IDF/include/FT6X36.h b/components/FT6X36-IDF/include/FT6X36.h index 283285b1..2b669ee3 100644 --- a/components/FT6X36-IDF/include/FT6X36.h +++ b/components/FT6X36-IDF/include/FT6X36.h @@ -8,6 +8,7 @@ #include "esp_log.h" #include "driver/i2c.h" #include "sdkconfig.h" +#include #ifndef ft6x36_h #define ft6x36_h diff --git a/components/FT6X36-IDF/include/L58Touch.h b/components/FT6X36-IDF/include/L58Touch.h index 4343b163..37c9a528 100644 --- a/components/FT6X36-IDF/include/L58Touch.h +++ b/components/FT6X36-IDF/include/L58Touch.h @@ -15,6 +15,7 @@ #include "driver/i2c.h" #include "sdkconfig.h" #include "esp_idf_version.h" +#include #ifndef touch_ttgo_h #define touch_ttgo_h // I2C Constants diff --git a/components/epdiy b/components/epdiy index b5612a3b..4ad56158 160000 --- a/components/epdiy +++ b/components/epdiy @@ -1 +1 @@ -Subproject commit b5612a3b633a3f09f3de230875c8c96c3a3fec7a +Subproject commit 4ad561586916093a4b8bd0a7ee94485a3ac23cd9 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 94e637fe..2beefc85 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,7 +1,7 @@ idf_component_register( # CALE official ESP-IDF Firmware - SRCS "cale.cpp" + #SRCS "cale.cpp" #SRCS "cale-7-color.cpp" # SRCS "demos/cale-sensor.cpp" @@ -11,7 +11,7 @@ idf_component_register( # Generic demos for touch displays (With an added layer or Gdew027w3T that comes with touch mounted) #SRCS "demos/demo-epaper.cpp" - #SRCS "demos/demo-4-grays-7inch" + SRCS "demos/demo-grays.cpp" # TOUCH examples. 1- Touch indepently from Epd class uses Gdew027w3 2- Touch implemented in Gdew027w3T class #SRCS "demos/demo-touch.cpp" diff --git a/main/cale-grayscale.cpp b/main/cale-grayscale.cpp index 9a462444..924f9736 100644 --- a/main/cale-grayscale.cpp +++ b/main/cale-grayscale.cpp @@ -22,14 +22,14 @@ //#include //#include //#include -#include +#include //#include //#include EpdSpi io; //Gdew0583z21 display(io); //Gdew0583T7 display(io); //Gdew027w3 display(io); -Gdew075T7Grays display(io); +Gdew042t2Grays display(io); //Gdew042t2 display(io); //#include //EpdSpi2Cs io; @@ -394,11 +394,11 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) } else if (color_lgray) { - color = EPD_LGRAY; + color = EPD_LIGHTGREY; } else if (color_dgray) { - color = EPD_DGRAY; + color = EPD_DARKGREY; } #ifdef HAS_16_LEVELS_GRAY else if (color_slgray) diff --git a/main/demos/demo-grays.cpp b/main/demos/demo-grays.cpp index 754dae93..8f514b8f 100644 --- a/main/demos/demo-grays.cpp +++ b/main/demos/demo-grays.cpp @@ -30,6 +30,7 @@ Gdew042t2Grays display(io); //Converting fonts with ümlauts: ./fontconvert *.ttf 18 32 252 #include #include +#include extern "C" { @@ -39,67 +40,36 @@ void delay(uint32_t millis) { vTaskDelay(millis / portTICK_PERIOD_MS); } void demo() { display.setTextColor(EPD_BLACK); - display.setFont(&Ubuntu_M36pt7b); - display.setCursor(50,50); - display.print("HELLO 1"); - //display.updateWindow(50, 0, display.width()-50, 100, true);delay(1000); + display.setFont(&FreeMono12pt7b); - display.setTextColor(EPD_DARKGREY); - display.setCursor(50,150); - display.print("HELLO 2"); - //display.updateWindow(50, 100, display.width()-50, 100, true); + display.setCursor(50,60); + display.print("1 HELLO"); + display.setCursor(50,140); + display.print("2 Twitter"); - display.setFont(&Ubuntu_M16pt8b); - display.setCursor(50,display.height()-40); + display.drawRect(10, 2, display.width()-30, 80, EPD_BLACK); + display.updateWindow(10, 2, display.width()-30, 79, true); + delay(3000); - display.setTextColor(EPD_BLACK); - display.print("gdew042t2Grays CalEPD by FASANI CORP."); + + display.drawRect(10, 80, display.width()-30, 100, EPD_BLACK); + display.updateWindow(10, 80, display.width()-30, 100, true); + delay(2000); - display.fillCircle(60 , 200, 40, EPD_LIGHTGREY); - display.fillCircle(160, 200, 40, EPD_DARKGREY); - display.fillCircle(260, 200, 40, EPD_BLACK); - display.update(); + return; } - void app_main(void) { printf("CalEPD version: %s\n", CALEPD_VERSION); // Test Epd class. true to enable debug display.init(0); - display.setMonoMode(true); - display.update(); - - demo(); - - delay(3000); display.setMonoMode(false); - demo(); - /* display.setCursor(100,100); - display.setTextColor(EPD_LIGHTGREY); - display.setFont(&Ubuntu_M36pt7b); - display.println("BERLIN"); - - display.fillCircle(60 , 200, 50, EPD_LIGHTGREY); - display.fillCircle(160, 200, 45, EPD_DARKGREY); - display.fillCircle(260, 200, 40, EPD_BLACK); - display.update(); */ - - return; - - display.fillScreen(EPD_BLACK); - // _ line - display.drawLine(20,100, GDEW042T2_WIDTH, 100, EPD_DARKGREY); - // | line in the X middle - display.drawLine(GDEW042T2_WIDTH/2,10, GDEW042T2_WIDTH/2, 100, EPD_WHITE); - display.update(); - delay(6000); - // Sizes are calculated dividing the screen in 4 equal parts it may not be perfect for all models + // Sizes are calculated dividing the screen in 4 equal parts it may not be perfect for all models uint8_t rectW = display.width()/4; // For 11 is 37. uint16_t foregroundColor = EPD_LIGHTGREY; - //return; uint16_t firstBlock = display.width()/4; display.fillRect( 1,1,rectW, firstBlock,foregroundColor); @@ -111,16 +81,30 @@ void app_main(void) display.fillRect(rectW,firstBlock,rectW,firstBlock,foregroundColor); display.fillRect(rectW*2,firstBlock,rectW,firstBlock,EPD_BLACK); display.fillRect(rectW*3,firstBlock,rectW-2,firstBlock,EPD_DARKGREY); + display.update(); + delay(5000); - display.setCursor(display.width()/2-130,display.height()-120); + display.fillScreen(EPD_WHITE); + display.setCursor(display.width()/2-120,display.height()-120); + display.setCursor(20,40); display.setTextColor(EPD_BLACK); - display.setFont(&Ubuntu_M16pt8b); - display.println("BERLIN"); + display.setFont(&FreeMono12pt7b); + display.println("BLACK qwertzuiopasdABCD"); display.setTextColor(EPD_LIGHTGREY); - display.println("demo-epaper.cpp Hello Farhan!"); + display.println("LG qwertzuiopasdABCD"); + display.setTextColor(EPD_DARKGREY); + display.println("DG qwertzuiopasdABCD"); + + display.fillRect(0,150, display.width(), 150, EPD_WHITE); + display.fillCircle(60 , 200, 40, EPD_LIGHTGREY); + display.fillCircle(160, 200, 40, EPD_DARKGREY); + display.fillCircle(260, 200, 40, EPD_BLACK); + display.drawCircle(360, 200, 40, EPD_BLACK); display.update(); + + return; // Finish short demo here // Leave the epaper White ready for storage - delay(4000); + delay(5000); display.fillScreen(EPD_DARKGREY); display.update(); @@ -131,8 +115,21 @@ void app_main(void) delay(1000); // Is getting inverted (But not on the font it seems, strange) - display.fillScreen(EPD_BLACK); // Gives out WHITE + display.fillScreen(EPD_WHITE); display.update(); - printf("display: We are done here. Should end WHITE\n"); + display.setCursor(10,display.height()-120); + display.setTextColor(EPD_LIGHTGREY); + display.println("Thanks for watching"); + display.update(); + delay(3000); + display.fillRect(0,display.height()-140, display.width(), 100, EPD_WHITE); + display.setCursor(10,display.height()-120); + display.setTextColor(EPD_DARKGREY); + display.println("FASANI CORPORATION"); + display.update(); + return; + + + } From dc55948ea426d9ec069d5595f263f533d471e15b Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 23 Aug 2022 23:52:16 +0200 Subject: [PATCH 02/49] IDF v5 did not like that we use IoInterface --- components/CalEPD/include/epdspi.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/components/CalEPD/include/epdspi.h b/components/CalEPD/include/epdspi.h index 1fa5c45b..7fcdc382 100644 --- a/components/CalEPD/include/epdspi.h +++ b/components/CalEPD/include/epdspi.h @@ -5,18 +5,19 @@ #ifndef epdspi_h #define epdspi_h -class EpdSpi : IoInterface +// : IoInterface +class EpdSpi { public: spi_device_handle_t spi; - void cmd(const uint8_t cmd) override; - void data(uint8_t data) override; + void cmd(const uint8_t cmd) ; // Should override if IoInterface is there + void data(uint8_t data) ; void dataBuffer(uint8_t data); - void data(const uint8_t *data, int len) override; + void data(const uint8_t *data, int len) ; - void reset(uint8_t millis) override; - void init(uint8_t frequency, bool debug) override; + void reset(uint8_t millis) ; + void init(uint8_t frequency, bool debug) ; private: bool debug_enabled = true; }; From 6f07690252f1896d162ef8a972b5d1e5f5b28716 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 2 Sep 2022 22:06:47 +0200 Subject: [PATCH 03/49] BLE first try with 4 grays --- main/www-jpg-render/CMakeLists.txt | 3 +- main/www-jpg-render/main/CMakeLists.txt | 7 +- main/www-jpg-render/main/ble-render.cpp | 805 ++++++++++++++++++++++++ 3 files changed, 813 insertions(+), 2 deletions(-) create mode 100644 main/www-jpg-render/main/ble-render.cpp diff --git a/main/www-jpg-render/CMakeLists.txt b/main/www-jpg-render/CMakeLists.txt index 91e537be..80e51f6a 100644 --- a/main/www-jpg-render/CMakeLists.txt +++ b/main/www-jpg-render/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.5) set(EXTRA_COMPONENT_DIRS "../../components/") -include($ENV{IDF_PATH}/tools/cmake/project.cmake) +#include($ENV{IDF_PATH}/tools/cmake/project.cmake) +include($ENV{IDF4_PATH}/tools/cmake/project.cmake) project(www-image_example) diff --git a/main/www-jpg-render/main/CMakeLists.txt b/main/www-jpg-render/main/CMakeLists.txt index 80f3f7e1..80859a9c 100644 --- a/main/www-jpg-render/main/CMakeLists.txt +++ b/main/www-jpg-render/main/CMakeLists.txt @@ -2,7 +2,10 @@ #set(app_sources "jpg-render.cpp") # Faster, uses less RAM, but looses dithering functionality: -set(app_sources "jpg-render-v2.cpp") +#set(app_sources "jpg-render-v2.cpp") + +# BLE render. Use CALE.es as a client to send the image +set(app_sources "ble-render.cpp") # Using @bitbank2/JPEGDEC #set(app_sources "jpgdec-render.cpp") @@ -10,6 +13,8 @@ set(app_sources "jpg-render-v2.cpp") idf_component_register(SRCS ${app_sources} REQUIRES CalEPD jpegdec nvs_flash esp-tls esp_http_client + # IF using the BLE example ble-render + bt # Embed the server root certificate into the final binary EMBED_TXTFILES ${project_dir}/ssl_cert/server_cert.pem ) \ No newline at end of file diff --git a/main/www-jpg-render/main/ble-render.cpp b/main/www-jpg-render/main/ble-render.cpp new file mode 100644 index 00000000..fea920da --- /dev/null +++ b/main/www-jpg-render/main/ble-render.cpp @@ -0,0 +1,805 @@ +/**************************************************************************************************************** +* +* This demo showcases BLE GATT server. It can send adv data, be connected by client CALE.es (Only Chrome example) +* ATTENTION: Needs menuconfig -> Components -> Bluetooth (Active) +*****************************************************************************************************************/ + +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/event_groups.h" +#include "esp_system.h" +#include "esp_log.h" +#include "nvs_flash.h" +#include "esp_bt.h" +#include // round + pow +#include "esp_gap_ble_api.h" +#include "esp_gatts_api.h" +#include "esp_bt_defs.h" +#include "esp_bt_main.h" +#include "esp_gatt_common_api.h" +// Update this with your EPD class +#include +EpdSpi io; +Gdew042t2Grays display(io); + + +// Fonts +#include + +uint64_t USEC = 1000000; +int cursor_x = 0; +int cursor_y = 0; +uint8_t powered_by = 0; + +// JPG decoder from @bitbank2 +#include "JPEGDEC.h" +JPEGDEC jpeg; + +// Dither space allocation +uint8_t * dither_space; +uint8_t *source_buf; // JPG receive buffer +uint32_t img_buf_pos = 0; +uint8_t gamme_curve[256]; // Internal array for gamma grayscale +// Nice test values: 0.9 1.2 1.4 higher and is too bright +double gamma_value = 1; +// Timers +#include "esp_timer.h" +uint32_t time_decomp = 0; +uint32_t time_render = 0; +uint32_t time_receive = 0; +uint64_t start_time = 0; +uint32_t received_length = 0; + +// Draws a progress bar when downloading (Just a demo: is faster without it) +// And also writes in the same framebuffer as the image +#define DOWNLOAD_PROGRESS_BAR 0 +uint8_t progressBarHeight = 10; + + +#define GATTS_TAG "BLE" + +///Declare the static function +static void gatts_profile_a_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param); + +/* LSB <----------------------> MSB */ +// 0000180d-0000-1000-8000-00805f9b34fb +static uint16_t BLE_SERVICE_UUID = 0x180d; // Short Service UUID + +// BOTH SAME just for a demo +static uint16_t GATTS_CHAR_UUID_TEST_A = 0x180d; +#define GATTS_NUM_HANDLE_TEST_A 4 + +#define TEST_DEVICE_NAME "BLE_JPEG_042" +#define TEST_MANUFACTURER_DATA_LEN 17 + +#define GATTS_DEMO_CHAR_VAL_LEN_MAX 16 + +#define PREPARE_BUF_MAX_SIZE 1024 + +static uint8_t char1_str[] = {0x18,0x0d}; +static esp_gatt_char_prop_t a_property = 0; + +static esp_attr_value_t gatts_char1_uuid = +{ + .attr_max_len = GATTS_DEMO_CHAR_VAL_LEN_MAX, + .attr_len = sizeof(char1_str), + .attr_value = char1_str, +}; + +uint16_t received_events = 0; + +static uint8_t adv_config_done = 0; +#define adv_config_flag (1 << 0) +#define scan_rsp_config_flag (1 << 1) + +#ifdef CONFIG_SET_RAW_ADV_DATA +static uint8_t raw_adv_data[] = { + 0x02, 0x01, 0x06, + 0x02, 0x0a, 0xeb, 0x03, 0x03, 0xab, 0xcd +}; +static uint8_t raw_scan_rsp_data[] = { + 0x0f, 0x09, 0x45, 0x53, 0x50, 0x5f, 0x47, 0x41, 0x54, 0x54, 0x53, 0x5f, 0x44, + 0x45, 0x4d, 0x4f +}; +#else +// TODO: Research how to use this and RAW adv option +static uint8_t adv_service_uuid128[16] = { + /* LSB <--------------------------------------------------------------------------------> MSB */ + 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00, +}; + +// The length of adv data must be less than 31 bytes +//static uint8_t test_manufacturer[TEST_MANUFACTURER_DATA_LEN] = {0x12, 0x23, 0x45, 0x56}; +//adv data +static esp_ble_adv_data_t adv_data = { + .set_scan_rsp = false, + .include_name = true, + .include_txpower = false, + .min_interval = 0x0006, //slave connection min interval, Time = min_interval * 1.25 msec + .max_interval = 0x0010, //slave connection max interval, Time = max_interval * 1.25 msec + .appearance = 0x00, + .manufacturer_len = 0, //TEST_MANUFACTURER_DATA_LEN, + .p_manufacturer_data = NULL, //&test_manufacturer[0], + .service_data_len = 0, + .p_service_data = NULL, + .service_uuid_len = sizeof(adv_service_uuid128), + .p_service_uuid = adv_service_uuid128, + .flag = (ESP_BLE_ADV_FLAG_GEN_DISC | ESP_BLE_ADV_FLAG_BREDR_NOT_SPT), +}; +// scan response data +static esp_ble_adv_data_t scan_rsp_data = { + .set_scan_rsp = true, + .include_name = true, + .include_txpower = true, + //.min_interval = 0x0006, + //.max_interval = 0x0010, + .appearance = 0x00, + .manufacturer_len = 0, //TEST_MANUFACTURER_DATA_LEN, + .p_manufacturer_data = NULL, //&test_manufacturer[0], + .service_data_len = 0, + .p_service_data = NULL, + .service_uuid_len = sizeof(adv_service_uuid128), + .p_service_uuid = adv_service_uuid128, + .flag = (ESP_BLE_ADV_FLAG_GEN_DISC | ESP_BLE_ADV_FLAG_BREDR_NOT_SPT), +}; + +#endif /* CONFIG_SET_RAW_ADV_DATA */ + +static esp_ble_adv_params_t adv_params = { + .adv_int_min = 0x20, + .adv_int_max = 0x40, + .adv_type = ADV_TYPE_IND, + .own_addr_type = BLE_ADDR_TYPE_PUBLIC, + //.peer_addr = + //.peer_addr_type = + .channel_map = ADV_CHNL_ALL, + .adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY, +}; + +#define PROFILE_NUM 2 +#define PROFILE_A_APP_ID 0 +#define PROFILE_B_APP_ID 1 + +struct gatts_profile_inst { + esp_gatts_cb_t gatts_cb; + uint16_t gatts_if; + uint16_t app_id; + uint16_t conn_id; + uint16_t service_handle; + esp_gatt_srvc_id_t service_id; + uint16_t char_handle; + esp_bt_uuid_t char_uuid; + esp_gatt_perm_t perm; + esp_gatt_char_prop_t property; + uint16_t descr_handle; + esp_bt_uuid_t descr_uuid; +}; + +/* One gatt-based profile one app_id and one gatts_if, this array will store the gatts_if returned by ESP_GATTS_REG_EVT + .gatts_if state: Not get the gatt_if, so initial is ESP_GATT_IF_NONE +*/ +static struct gatts_profile_inst gl_profile_tab[PROFILE_NUM] = { + [PROFILE_A_APP_ID] = { + .gatts_cb = gatts_profile_a_event_handler, + .gatts_if = ESP_GATT_IF_NONE, + } +}; + +typedef struct { + uint8_t *prepare_buf; + int prepare_len; +} prepare_type_env_t; + +static prepare_type_env_t a_prepare_write_env; + +extern "C" +{ + void app_main(); +} + +void delay_ms(uint32_t period_ms) { + vTaskDelay(period_ms/portTICK_PERIOD_MS); +} + +void progressBar(long processed, long total) +{ + int percentage = round(processed * display.width() / total); + display.fillRect(0, 0, percentage, progressBarHeight, EPD_BLACK); +} + +//==================================================================================== +// This program contains support functions to render the Jpeg images +// +// JPEGDEC fucntions by Bitbank +// Refactored by @martinberlin for EPDiy as a Jpeg receive and render example +//==================================================================================== +uint16_t colorTo4Gray(uint8_t color) { + if (color > 240) { + return EPD_WHITE; + } + if (color >180 && color <240) { + //printf("LG "); + return EPD_LIGHTGREY; + } + if (color >90 && color <180) { + //printf("DG "); + return EPD_DARKGREY; + } + if (color <5) { + return EPD_BLACK; + } + return EPD_WHITE; +} + +int JPEGDraw4Bits(JPEGDRAW *pDraw) +{ + uint32_t render_start = esp_timer_get_time(); + for (int16_t xx = 0; xx < pDraw->iWidth; xx+=4) { + for (int16_t yy = 0; yy < pDraw->iHeight; yy++) { + uint16_t col = pDraw->pPixels[ (xx + (yy * pDraw->iWidth)) >>2 ]; + + uint8_t col1 = col & 0xf; + uint8_t col2 = (col >> 4) & 0xf; + uint8_t col3 = (col >> 8) & 0xf; + uint8_t col4 = (col >> 12) & 0xf; + display.drawPixel(pDraw->x + xx, pDraw->y + yy, colorTo4Gray(gamme_curve[col1*16])); + display.drawPixel(pDraw->x + xx + 1, pDraw->y + yy, colorTo4Gray(gamme_curve[col2*16])); + display.drawPixel(pDraw->x + xx + 2, pDraw->y + yy, colorTo4Gray(gamme_curve[col3*16])); + display.drawPixel(pDraw->x + xx + 3, pDraw->y + yy, colorTo4Gray(gamme_curve[col4*16])); + + /* if (yy==0 && mcu_count==0) { + printf("1.%d %d %d %d ",col1,col2,col3,col4); + } */ + } + } + + time_render += (esp_timer_get_time() - render_start) / 1000; + return 1; +} + +//==================================================================================== +// This function opens source_buf Jpeg image file and primes the decoder +//==================================================================================== +int decodeJpeg(uint8_t *source_buf, int xpos, int ypos) { + uint32_t decode_start = esp_timer_get_time(); + + if (jpeg.openRAM(source_buf, img_buf_pos, JPEGDraw4Bits)) { + + jpeg.setPixelType(FOUR_BIT_DITHERED); + + if (jpeg.decodeDither(dither_space, 0)) + { + time_decomp = (esp_timer_get_time() - decode_start)/1000 - time_render; + ESP_LOGI("decode", "%d ms - %dx%d", time_decomp, jpeg.getWidth(), jpeg.getHeight()); + } else { + ESP_LOGE("jpeg.decode", "Failed with error: %d", jpeg.getLastError()); + } + + } else { + ESP_LOGE("jpeg.openRAM", "Failed with error: %d", jpeg.getLastError()); + } + jpeg.close(); + + return 1; +} + +void example_write_event_env(esp_gatt_if_t gatts_if, prepare_type_env_t *prepare_write_env, esp_ble_gatts_cb_param_t *param); +void example_exec_write_event_env(prepare_type_env_t *prepare_write_env, esp_ble_gatts_cb_param_t *param); + +void reset_variables() { + img_buf_pos = 0; + time_decomp = 0; + time_render = 0; + time_receive = 0; + start_time = 0; + received_events = 0; +} + +static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) +{ + switch (event) { +#ifdef CONFIG_SET_RAW_ADV_DATA + case ESP_GAP_BLE_ADV_DATA_RAW_SET_COMPLETE_EVT: + adv_config_done &= (~adv_config_flag); + if (adv_config_done==0){ + esp_ble_gap_start_advertising(&adv_params); + } + break; + case ESP_GAP_BLE_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT: + adv_config_done &= (~scan_rsp_config_flag); + if (adv_config_done==0){ + esp_ble_gap_start_advertising(&adv_params); + } + break; +#else + case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT: + adv_config_done &= (~adv_config_flag); + if (adv_config_done == 0){ + esp_ble_gap_start_advertising(&adv_params); + } + break; + case ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT: + adv_config_done &= (~scan_rsp_config_flag); + if (adv_config_done == 0){ + esp_ble_gap_start_advertising(&adv_params); + } + break; +#endif + case ESP_GAP_BLE_ADV_START_COMPLETE_EVT: + //advertising start complete event to indicate advertising start successfully or failed + if (param->adv_start_cmpl.status != ESP_BT_STATUS_SUCCESS) { + ESP_LOGE(GATTS_TAG, "Advertising start failed\n"); + } + break; + case ESP_GAP_BLE_ADV_STOP_COMPLETE_EVT: + if (param->adv_stop_cmpl.status != ESP_BT_STATUS_SUCCESS) { + ESP_LOGE(GATTS_TAG, "Advertising stop failed\n"); + } else { + ESP_LOGI(GATTS_TAG, "Stop adv successfully\n"); + } + break; + case ESP_GAP_BLE_UPDATE_CONN_PARAMS_EVT: + ESP_LOGI(GATTS_TAG, "update connection params status = %d, min_int = %d, max_int = %d,conn_int = %d,latency = %d, timeout = %d", + param->update_conn_params.status, + param->update_conn_params.min_int, + param->update_conn_params.max_int, + param->update_conn_params.conn_int, + param->update_conn_params.latency, + param->update_conn_params.timeout); + break; + default: + break; + } +} + +void example_write_event_env(esp_gatt_if_t gatts_if, prepare_type_env_t *prepare_write_env, esp_ble_gatts_cb_param_t *param){ + esp_gatt_status_t status = ESP_GATT_OK; + if (param->write.need_rsp){ + if (param->write.is_prep){ + if (prepare_write_env->prepare_buf == NULL) { + prepare_write_env->prepare_buf = (uint8_t *)malloc(PREPARE_BUF_MAX_SIZE*sizeof(uint8_t)); + prepare_write_env->prepare_len = 0; + if (prepare_write_env->prepare_buf == NULL) { + ESP_LOGE(GATTS_TAG, "Gatt_server prep no mem\n"); + status = ESP_GATT_NO_RESOURCES; + } + } else { + if(param->write.offset > PREPARE_BUF_MAX_SIZE) { + status = ESP_GATT_INVALID_OFFSET; + } else if ((param->write.offset + param->write.len) > PREPARE_BUF_MAX_SIZE) { + status = ESP_GATT_INVALID_ATTR_LEN; + } + } + + esp_gatt_rsp_t *gatt_rsp = (esp_gatt_rsp_t *)malloc(sizeof(esp_gatt_rsp_t)); + gatt_rsp->attr_value.len = param->write.len; + gatt_rsp->attr_value.handle = param->write.handle; + gatt_rsp->attr_value.offset = param->write.offset; + gatt_rsp->attr_value.auth_req = ESP_GATT_AUTH_REQ_NONE; + memcpy(gatt_rsp->attr_value.value, param->write.value, param->write.len); + esp_err_t response_err = esp_ble_gatts_send_response(gatts_if, param->write.conn_id, param->write.trans_id, status, gatt_rsp); + if (response_err != ESP_OK){ + ESP_LOGE(GATTS_TAG, "Send response error\n"); + } + free(gatt_rsp); + if (status != ESP_GATT_OK){ + return; + } + memcpy(prepare_write_env->prepare_buf + param->write.offset, + param->write.value, + param->write.len); + prepare_write_env->prepare_len += param->write.len; + + }else{ + esp_ble_gatts_send_response(gatts_if, param->write.conn_id, param->write.trans_id, status, NULL); + } + } +} + +void example_exec_write_event_env(prepare_type_env_t *prepare_write_env, esp_ble_gatts_cb_param_t *param){ + if (param->exec_write.exec_write_flag == ESP_GATT_PREP_WRITE_EXEC){ + esp_log_buffer_hex(GATTS_TAG, prepare_write_env->prepare_buf, prepare_write_env->prepare_len); + + }else{ + ESP_LOGI(GATTS_TAG,"ESP_GATT_PREP_WRITE_CANCEL"); + } + if (prepare_write_env->prepare_buf) { + free(prepare_write_env->prepare_buf); + prepare_write_env->prepare_buf = NULL; + } + prepare_write_env->prepare_len = 0; +} + +static void gatts_profile_a_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param) { + switch (event) { + case ESP_GATTS_REG_EVT: + { + ESP_LOGI(GATTS_TAG, "REGISTER_APP_EVT, status %d, app_id %d\n", param->reg.status, param->reg.app_id); + gl_profile_tab[PROFILE_A_APP_ID].service_id.is_primary = true; + gl_profile_tab[PROFILE_A_APP_ID].service_id.id.inst_id = 0x00; + gl_profile_tab[PROFILE_A_APP_ID].service_id.id.uuid.len = ESP_UUID_LEN_16; + // (uint8_t *) &VAR or short BLE_SERVICE_UUID + gl_profile_tab[PROFILE_A_APP_ID].service_id.id.uuid.uuid.uuid16 = BLE_SERVICE_UUID; + + esp_err_t set_dev_name_ret = esp_ble_gap_set_device_name(TEST_DEVICE_NAME); + if (set_dev_name_ret){ + ESP_LOGE(GATTS_TAG, "set device name failed, error code = %x", set_dev_name_ret); + } +#ifdef CONFIG_SET_RAW_ADV_DATA + esp_err_t raw_adv_ret = esp_ble_gap_config_adv_data_raw(raw_adv_data, sizeof(raw_adv_data)); + if (raw_adv_ret){ + ESP_LOGE(GATTS_TAG, "config raw adv data failed, error code = %x ", raw_adv_ret); + } + adv_config_done |= adv_config_flag; + esp_err_t raw_scan_ret = esp_ble_gap_config_scan_rsp_data_raw(raw_scan_rsp_data, sizeof(raw_scan_rsp_data)); + if (raw_scan_ret){ + ESP_LOGE(GATTS_TAG, "config raw scan rsp data failed, error code = %x", raw_scan_ret); + } + adv_config_done |= scan_rsp_config_flag; +#else + //config adv data + esp_err_t ret = esp_ble_gap_config_adv_data(&adv_data); + if (ret){ + ESP_LOGE(GATTS_TAG, "config adv data failed, error code = %x", ret); + } + adv_config_done |= adv_config_flag; + //config scan response data + ret = esp_ble_gap_config_adv_data(&scan_rsp_data); + if (ret){ + ESP_LOGE(GATTS_TAG, "config scan response data failed, error code = %x", ret); + } + adv_config_done |= scan_rsp_config_flag; + +#endif + esp_ble_gatts_create_service(gatts_if, &gl_profile_tab[PROFILE_A_APP_ID].service_id, GATTS_NUM_HANDLE_TEST_A); + break; + } + case ESP_GATTS_READ_EVT: + { + ESP_LOGI(GATTS_TAG, "GATT_READ_EVT, conn_id %d, trans_id %d, handle %d\n", param->read.conn_id, param->read.trans_id, param->read.handle); + esp_gatt_rsp_t rsp; + memset(&rsp, 0, sizeof(esp_gatt_rsp_t)); + rsp.attr_value.handle = param->read.handle; + rsp.attr_value.len = 4; + rsp.attr_value.value[0] = 0xde; + rsp.attr_value.value[1] = 0xed; + rsp.attr_value.value[2] = 0xbe; + rsp.attr_value.value[3] = 0xef; + esp_ble_gatts_send_response(gatts_if, param->read.conn_id, param->read.trans_id, + ESP_GATT_OK, &rsp); + break; + } + case ESP_GATTS_WRITE_EVT: { + received_events++; + bool is_short_cmd = false; + if (received_events == 2) start_time = esp_timer_get_time(); + + //ESP_LOGI(GATTS_TAG, "GATT_WRITE_EVT, conn_id %d, trans_id %d, handle %d", param->write.conn_id, param->write.trans_id, param->write.handle); + + if (!param->write.is_prep) { + // content-length: 4 bytes uint32 + if (received_events == 1 && param->write.len == 5 && param->write.value[0] == 0x01) { + is_short_cmd = true; + received_length = + param->write.value[1] + + (param->write.value[2] << 8) + + (param->write.value[3] << 16) + + (param->write.value[4] << 24); + ESP_LOGI(GATTS_TAG, "0x01 content-lenght received:%d", received_length); + + esp_log_buffer_hex(GATTS_TAG, param->write.value, param->write.len); + } + // 0x09 EOF + if (param->write.len == 1 && param->write.value[0] == 0x09) { + is_short_cmd = true; + // Decode & render + ESP_LOGI(GATTS_TAG, "0x09 EOF received"); + // Decode & render + time_receive = (esp_timer_get_time()-start_time)/1000; + decodeJpeg(source_buf, 0, 0); + ESP_LOGI("ble-rec", "%d ms - download", time_receive); + ESP_LOGI("render", "%d ms - copying pix", time_render); + + printf("Free heap:%d after JPG decode\n",xPortGetFreeHeapSize()); + // RESET Pointers + reset_variables(); + + display.update(); + break; + } + if (!is_short_cmd) { + // Receive data: Append bytes into source_buf + memcpy(&source_buf[img_buf_pos], param->write.value, param->write.len); + img_buf_pos += param->write.len; + + ESP_LOGI(GATTS_TAG, "WRITE_EVT. Len:%d total:%d", param->write.len, img_buf_pos); + } + + // TO Debug received bytes + /* if (received_events<3) { + esp_log_buffer_hex(GATTS_TAG, param->write.value, param->write.len); + } */ + #if DOWNLOAD_PROGRESS_BAR + if (received_events%10 == 0) { + progressBar(img_buf_pos, received_length); + } + #endif + + } + example_write_event_env(gatts_if, &a_prepare_write_env, param); + break; + } + case ESP_GATTS_EXEC_WRITE_EVT: + ESP_LOGE(GATTS_TAG, "ESP_GATTS_EXEC_WRITE_EVT not implemented. Do not send chunks > 896 bytes"); + + break; + case ESP_GATTS_MTU_EVT: + ESP_LOGI(GATTS_TAG, "ESP_GATTS_MTU_EVT, MTU %d", param->mtu.mtu); + break; + case ESP_GATTS_UNREG_EVT: + ESP_LOGI(GATTS_TAG, "ESP_GATTS_UNREG_EVT"); + break; + case ESP_GATTS_CREATE_EVT: + { + ESP_LOGI(GATTS_TAG, "CREATE_SERVICE_EVT, status %d, service_handle %d\n", param->create.status, param->create.service_handle); + gl_profile_tab[PROFILE_A_APP_ID].service_handle = param->create.service_handle; + gl_profile_tab[PROFILE_A_APP_ID].char_uuid.len = ESP_UUID_LEN_16; + // Service uuid or Charasteristic? + gl_profile_tab[PROFILE_A_APP_ID].char_uuid.uuid.uuid16 = GATTS_CHAR_UUID_TEST_A; // GATTS_CHAR_UUID_TEST_A + + esp_ble_gatts_start_service(gl_profile_tab[PROFILE_A_APP_ID].service_handle); + a_property = ESP_GATT_CHAR_PROP_BIT_READ | ESP_GATT_CHAR_PROP_BIT_WRITE | ESP_GATT_CHAR_PROP_BIT_NOTIFY; + esp_err_t add_char_ret = esp_ble_gatts_add_char(gl_profile_tab[PROFILE_A_APP_ID].service_handle, + &gl_profile_tab[PROFILE_A_APP_ID].char_uuid, + ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, + a_property, + &gatts_char1_uuid, NULL); + if (add_char_ret){ + ESP_LOGE(GATTS_TAG, "add char failed, error code =%x",add_char_ret); + } + break; + } + case ESP_GATTS_ADD_INCL_SRVC_EVT: + { + break; + } + case ESP_GATTS_ADD_CHAR_EVT: + { + uint16_t length = 0; + const uint8_t *prf_char; + + ESP_LOGI(GATTS_TAG, "ADD_CHAR_EVT, status %d, attr_handle %d, service_handle %d\n", + param->add_char.status, param->add_char.attr_handle, param->add_char.service_handle); + gl_profile_tab[PROFILE_A_APP_ID].char_handle = param->add_char.attr_handle; + gl_profile_tab[PROFILE_A_APP_ID].descr_uuid.len = ESP_UUID_LEN_16; + gl_profile_tab[PROFILE_A_APP_ID].descr_uuid.uuid.uuid16 = ESP_GATT_UUID_CHAR_CLIENT_CONFIG; + esp_err_t get_attr_ret = esp_ble_gatts_get_attr_value(param->add_char.attr_handle, &length, &prf_char); + if (get_attr_ret == ESP_FAIL){ + ESP_LOGE(GATTS_TAG, "ILLEGAL HANDLE"); + } + + ESP_LOGI(GATTS_TAG, "the gatts demo char length = %x\n", length); + for(int i = 0; i < length; i++){ + ESP_LOGI(GATTS_TAG, "prf_char[%x] =%x\n",i,prf_char[i]); + } + esp_err_t add_descr_ret = esp_ble_gatts_add_char_descr(gl_profile_tab[PROFILE_A_APP_ID].service_handle, &gl_profile_tab[PROFILE_A_APP_ID].descr_uuid, + ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, NULL, NULL); + if (add_descr_ret){ + ESP_LOGE(GATTS_TAG, "add char descr failed, error code =%x", add_descr_ret); + } + break; + } + case ESP_GATTS_ADD_CHAR_DESCR_EVT: + { + gl_profile_tab[PROFILE_A_APP_ID].descr_handle = param->add_char_descr.attr_handle; + ESP_LOGI(GATTS_TAG, "ADD_DESCR_EVT, status %d, attr_handle %d, service_handle %d\n", + param->add_char_descr.status, param->add_char_descr.attr_handle, param->add_char_descr.service_handle); + break; + } + case ESP_GATTS_DELETE_EVT: + break; + case ESP_GATTS_START_EVT: + ESP_LOGI(GATTS_TAG, "SERVICE_START_EVT, status %d, service_handle %d\n", + param->start.status, param->start.service_handle); + break; + case ESP_GATTS_STOP_EVT: + break; + case ESP_GATTS_CONNECT_EVT: { + /* display.fillScreen(EPD_WHITE); + display.update(); */ + + esp_ble_conn_update_params_t conn_params = {0}; + memcpy(conn_params.bda, param->connect.remote_bda, sizeof(esp_bd_addr_t)); + /* For the IOS system, please reference the apple official documents about the ble connection parameters restrictions. */ + conn_params.latency = 0; + conn_params.max_int = 0x20; // max_int = 0x20*1.25ms = 40ms + conn_params.min_int = 0x10; // min_int = 0x10*1.25ms = 20ms + conn_params.timeout = 1000; // timeout = 400*10ms = 4000ms + ESP_LOGI(GATTS_TAG, "ESP_GATTS_CONNECT_EVT, conn_id %d, remote %02x:%02x:%02x:%02x:%02x:%02x:", + param->connect.conn_id, + param->connect.remote_bda[0], param->connect.remote_bda[1], param->connect.remote_bda[2], + param->connect.remote_bda[3], param->connect.remote_bda[4], param->connect.remote_bda[5]); + gl_profile_tab[PROFILE_A_APP_ID].conn_id = param->connect.conn_id; + //start sent the update connection parameters to the peer device. + esp_ble_gap_update_conn_params(&conn_params); + break; + } + case ESP_GATTS_DISCONNECT_EVT: + ESP_LOGI(GATTS_TAG, "ESP_GATTS_DISCONNECT_EVT, disconnect reason 0x%x", param->disconnect.reason); + reset_variables(); + + esp_ble_gap_start_advertising(&adv_params); + break; + case ESP_GATTS_CONF_EVT: + ESP_LOGI(GATTS_TAG, "ESP_GATTS_CONF_EVT, status %d attr_handle %d", param->conf.status, param->conf.handle); + if (param->conf.status != ESP_GATT_OK){ + esp_log_buffer_hex(GATTS_TAG, param->conf.value, param->conf.len); + } + break; + case ESP_GATTS_OPEN_EVT: + case ESP_GATTS_CANCEL_OPEN_EVT: + case ESP_GATTS_CLOSE_EVT: + case ESP_GATTS_LISTEN_EVT: + case ESP_GATTS_CONGEST_EVT: + default: + break; + } +} + + +static void gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param) +{ + /* If event is register event, store the gatts_if for each profile */ + if (event == ESP_GATTS_REG_EVT) { + if (param->reg.status == ESP_GATT_OK) { + gl_profile_tab[param->reg.app_id].gatts_if = gatts_if; + } else { + ESP_LOGI(GATTS_TAG, "Reg app failed, app_id %04x, status %d\n", + param->reg.app_id, + param->reg.status); + return; + } + } + + /* If the gatts_if equal to profile A, call profile A cb handler, + * so here call each profile's callback */ + do { + int idx; + for (idx = 0; idx < PROFILE_NUM; idx++) { + if (gatts_if == ESP_GATT_IF_NONE || /* ESP_GATT_IF_NONE, not specify a certain gatt_if, need to call every profile cb function */ + gatts_if == gl_profile_tab[idx].gatts_if) { + if (gl_profile_tab[idx].gatts_cb) { + gl_profile_tab[idx].gatts_cb(event, gatts_if, param); + } + } + } + } while (0); +} + +void write_text(int x, int y, char* text) { + display.setCursor(x, y); + display.print(text); +} + +// Flag to know that we've synced the hour with timeQuery request +int16_t nvs_boots = 0; + +void app_main(void) +{ + esp_err_t ret; + display.init(0); + display.setMonoMode(false); // Use 4 Grays + display.setFont(&Ubuntu_M24pt8b); + + printf("Free heap:%d\n",xPortGetFreeHeapSize()); + + // Initialize NVS. + ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK(nvs_flash_erase()); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK( ret ); + nvs_handle_t my_handle; + ret = nvs_open("storage", NVS_READWRITE, &my_handle); + if (ret != ESP_OK) { + ESP_LOGE(GATTS_TAG, "Error (%s) opening NVS handle!\n", esp_err_to_name(ret)); + } + // Read stored + nvs_get_i16(my_handle, "boots", &nvs_boots); + ESP_LOGI(GATTS_TAG, "-> NVS Boot count: %d", nvs_boots); + nvs_boots++; + // Set new value + nvs_set_i16(my_handle, "boots", nvs_boots); + + if (nvs_boots%2 == 0) { + // One boot yes, one no A - B test do something different + } + //write_text(cursor_x, cursor_y, (char*)"Use Chrome only. Recommended: cale.es"); + + int cursor_x = 10; + int cursor_y = display.height() - 60; + display.setTextColor(EPD_BLACK); + write_text(cursor_x, cursor_y, (char*)"BLE initialized"); + cursor_y-= 44; + display.fillRect(10,260,10,10,EPD_BLACK); + display.fillRect(20,260,10,10,EPD_DARKGREY); + display.fillRect(30,260,10,10,EPD_LIGHTGREY); + display.update(); + + ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT)); + + esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); + cursor_y += 30; + ret = esp_bt_controller_init(&bt_cfg); + if (ret) { + ESP_LOGE(GATTS_TAG, "%s initialize controller failed: %s\n", __func__, esp_err_to_name(ret)); + write_text(cursor_x, cursor_y, (char*)"Initializing BLE controller failed"); + return; + } + + ret = esp_bt_controller_enable(ESP_BT_MODE_BLE); + if (ret) { + ESP_LOGE(GATTS_TAG, "%s enable controller failed: %s\n", __func__, esp_err_to_name(ret)); + return; + } + ret = esp_bluedroid_init(); + if (ret) { + ESP_LOGE(GATTS_TAG, "%s init bluetooth failed: %s\n", __func__, esp_err_to_name(ret)); + return; + } + ret = esp_bluedroid_enable(); + if (ret) { + ESP_LOGE(GATTS_TAG, "%s enable bluetooth failed: %s\n", __func__, esp_err_to_name(ret)); + return; + } + + ret = esp_ble_gatts_register_callback(gatts_event_handler); + if (ret){ + ESP_LOGE(GATTS_TAG, "gatts register error, error code = %x", ret); + return; + } + ret = esp_ble_gap_register_callback(gap_event_handler); + if (ret){ + ESP_LOGE(GATTS_TAG, "gap register error, error code = %x", ret); + return; + } + ret = esp_ble_gatts_app_register(PROFILE_A_APP_ID); + if (ret){ + ESP_LOGE(GATTS_TAG, "gatts app register error, error code = %x", ret); + return; + } + ret = esp_ble_gatts_app_register(PROFILE_B_APP_ID); + if (ret){ + ESP_LOGE(GATTS_TAG, "gatts app register error, error code = %x", ret); + return; + } + esp_err_t local_mtu_ret = esp_ble_gatt_set_local_mtu(500); + if (local_mtu_ret){ + ESP_LOGE(GATTS_TAG, "set local MTU failed, error code = %x", local_mtu_ret); + } + + printf("Free heap:%d after BLE init\n",xPortGetFreeHeapSize()); + cursor_y = 10; + + double gammaCorrection = 1.0 / gamma_value; + for (int gray_value =0; gray_value<256;gray_value++) { + gamme_curve[gray_value]= round (255*pow(gray_value/255.0, gammaCorrection)); + } + + dither_space = (uint8_t *)heap_caps_malloc(display.width() *16, MALLOC_CAP_SPIRAM); + if (dither_space == NULL) { + ESP_LOGE("main", "Initial alloc ditherSpace failed!"); + } + + // Should be big enough to allocate the JPEG file size, width * height should suffice + source_buf = (uint8_t *)heap_caps_malloc(display.width() * display.height()/2, MALLOC_CAP_SPIRAM); + if (source_buf == NULL) { + ESP_LOGE("main", "Initial alloc source_buf failed!"); + } + + printf("Free heap:%d after JPG buffer\n",xPortGetFreeHeapSize()); +} From 2c5aaeb93ab84acd428b8236b2153d393e26e593 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sat, 3 Sep 2022 00:32:17 +0200 Subject: [PATCH 04/49] BLE correct nibbles --- main/www-jpg-render/main/ble-render.cpp | 49 ++++++++++++++----------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/main/www-jpg-render/main/ble-render.cpp b/main/www-jpg-render/main/ble-render.cpp index fea920da..9889e293 100644 --- a/main/www-jpg-render/main/ble-render.cpp +++ b/main/www-jpg-render/main/ble-render.cpp @@ -27,7 +27,7 @@ Gdew042t2Grays display(io); // Fonts -#include +#include uint64_t USEC = 1000000; int cursor_x = 0; @@ -44,7 +44,7 @@ uint8_t *source_buf; // JPG receive buffer uint32_t img_buf_pos = 0; uint8_t gamme_curve[256]; // Internal array for gamma grayscale // Nice test values: 0.9 1.2 1.4 higher and is too bright -double gamma_value = 1; +double gamma_value = 1.4; // Timers #include "esp_timer.h" uint32_t time_decomp = 0; @@ -216,22 +216,28 @@ void progressBar(long processed, long total) // JPEGDEC fucntions by Bitbank // Refactored by @martinberlin for EPDiy as a Jpeg receive and render example //==================================================================================== + +// color Borders: This is a crap selection that could be made much better +uint8_t white2lg = 150; +uint8_t lg2dg = 100; +uint8_t dg2black = 50; + +/** + * @brief Convert 255 (WHITE) gradient till 0 (BLACK) into 4 grays + */ uint16_t colorTo4Gray(uint8_t color) { - if (color > 240) { + if (color > white2lg) { return EPD_WHITE; } - if (color >180 && color <240) { + if (color > lg2dg && color < white2lg) { //printf("LG "); return EPD_LIGHTGREY; } - if (color >90 && color <180) { - //printf("DG "); + if (color > dg2black && color < lg2dg) { return EPD_DARKGREY; } - if (color <5) { - return EPD_BLACK; - } - return EPD_WHITE; + + return EPD_BLACK; } int JPEGDraw4Bits(JPEGDRAW *pDraw) @@ -245,10 +251,11 @@ int JPEGDraw4Bits(JPEGDRAW *pDraw) uint8_t col2 = (col >> 4) & 0xf; uint8_t col3 = (col >> 8) & 0xf; uint8_t col4 = (col >> 12) & 0xf; - display.drawPixel(pDraw->x + xx, pDraw->y + yy, colorTo4Gray(gamme_curve[col1*16])); - display.drawPixel(pDraw->x + xx + 1, pDraw->y + yy, colorTo4Gray(gamme_curve[col2*16])); - display.drawPixel(pDraw->x + xx + 2, pDraw->y + yy, colorTo4Gray(gamme_curve[col3*16])); - display.drawPixel(pDraw->x + xx + 3, pDraw->y + yy, colorTo4Gray(gamme_curve[col4*16])); + // Larry: It could be upper/lower nibble are reversed. Yes he was right: + display.drawPixel(pDraw->x + xx +1, pDraw->y + yy, colorTo4Gray(gamme_curve[col1*16])); // 0 + display.drawPixel(pDraw->x + xx , pDraw->y + yy, colorTo4Gray(gamme_curve[col2*16])); // 1 + display.drawPixel(pDraw->x + xx + 3, pDraw->y + yy, colorTo4Gray(gamme_curve[col3*16]));// 2 + display.drawPixel(pDraw->x + xx + 2, pDraw->y + yy, colorTo4Gray(gamme_curve[col4*16]));// 3 /* if (yy==0 && mcu_count==0) { printf("1.%d %d %d %d ",col1,col2,col3,col4); @@ -271,6 +278,7 @@ int decodeJpeg(uint8_t *source_buf, int xpos, int ypos) { jpeg.setPixelType(FOUR_BIT_DITHERED); if (jpeg.decodeDither(dither_space, 0)) + //if (jpeg.decode(0,0,0)) { time_decomp = (esp_timer_get_time() - decode_start)/1000 - time_render; ESP_LOGI("decode", "%d ms - %dx%d", time_decomp, jpeg.getWidth(), jpeg.getHeight()); @@ -692,7 +700,7 @@ void app_main(void) esp_err_t ret; display.init(0); display.setMonoMode(false); // Use 4 Grays - display.setFont(&Ubuntu_M24pt8b); + display.setFont(&Ubuntu_M16pt8b); printf("Free heap:%d\n",xPortGetFreeHeapSize()); @@ -720,14 +728,13 @@ void app_main(void) } //write_text(cursor_x, cursor_y, (char*)"Use Chrome only. Recommended: cale.es"); - int cursor_x = 10; - int cursor_y = display.height() - 60; - display.setTextColor(EPD_BLACK); + int cursor_x = 60; + int cursor_y = display.height() - 30; write_text(cursor_x, cursor_y, (char*)"BLE initialized"); cursor_y-= 44; - display.fillRect(10,260,10,10,EPD_BLACK); - display.fillRect(20,260,10,10,EPD_DARKGREY); - display.fillRect(30,260,10,10,EPD_LIGHTGREY); + display.fillRect(10,display.height()-40,10,10,EPD_BLACK); + display.fillRect(20,display.height()-40,10,10,EPD_DARKGREY); + display.fillRect(30,display.height()-40,10,10,EPD_LIGHTGREY); display.update(); ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT)); From f761ed030687f50614f0b1ee1e087f6a610e7ae0 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 21 Oct 2022 12:08:56 +0200 Subject: [PATCH 05/49] Remove epdiy as REQUIRES component --- components/CalEPD/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index 2d6161a6..46cb77bf 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -60,8 +60,8 @@ set(srcs idf_component_register(SRCS ${srcs} REQUIRES "Adafruit-GFX" REQUIRES "FT6X36-IDF" - # Uncomment for parallel epapers: - REQUIRES epdiy esp_timer + # Uncomment for parallel epapers: epdiy + REQUIRES esp_timer INCLUDE_DIRS "include" ) # Note about epdiy component: Even if it's not REQUIRED sometimes CMake includes it From 360534c6700f22f160762f53f93aa90601689edb Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 21 Oct 2022 13:35:04 +0200 Subject: [PATCH 06/49] IDF v5 painful corrections. Also do not extend IoInterface otherwise: demo-sleep-clock-temp.cpp.obj: undefined reference to _ZTV11IoInterface --- components/CalEPD/include/epdspi2cs.h | 12 +- .../CalEPD/models/color/gdeh0154z90.cpp | 5 +- components/CalEPD/models/color/gdeh042Z21.cpp | 4 +- components/CalEPD/models/color/gdeh042Z96.cpp | 4 +- .../CalEPD/models/color/gdew0583z21.cpp | 6 +- components/CalEPD/models/color/gdew075c64.cpp | 7 +- components/CalEPD/models/color/gdew075z09.cpp | 2 +- .../CalEPD/models/color/wave12i48BR.cpp | 13 +- .../CalEPD/models/color/wave4i7Color.cpp | 2 +- .../CalEPD/models/color/wave5i7Color.cpp | 6 +- components/CalEPD/models/gdeh0154d67.cpp | 6 +- components/CalEPD/models/gdeh0213b73.cpp | 4 +- components/CalEPD/models/gdep015OC1.cpp | 6 +- components/CalEPD/models/gdew0213i5f.cpp | 4 +- components/CalEPD/models/gdew027w3.cpp | 6 +- components/CalEPD/models/gdew027w3T.cpp | 6 +- components/CalEPD/models/gdew042t2.cpp | 4 +- components/CalEPD/models/gdew042t2Grays.cpp | 4 +- components/CalEPD/models/gdew0583t7.cpp | 6 +- components/CalEPD/models/gdew075HD.cpp | 7 +- components/CalEPD/models/gdew075T7.cpp | 8 +- components/CalEPD/models/gdew075T7Grays.cpp | 8 +- components/CalEPD/models/gdew075T8.cpp | 11 +- components/CalEPD/models/heltec0151.cpp | 6 +- .../CalEPD/models/parallel/ED047TC1touch.cpp | 2 - .../CalEPD/models/plasticlogic/epdspi2cs.cpp | 2 +- .../models/plasticlogic/plasticlogic011.cpp | 2 +- .../models/plasticlogic/plasticlogic014.cpp | 2 +- .../models/plasticlogic/plasticlogic021.cpp | 4 +- components/CalEPD/models/testing/wave7i5.cpp | 1 - components/CalEPD/models/wave12i48.cpp | 18 +- config-examples/PlasticLogic-tinypico-HAT | 1092 +++++++++++------ main/CMakeLists.txt | 4 +- .../plasticlogic/demo-epaper-plasticlogic.cpp | 4 +- .../plasticlogic/demo-sleep-clock-temp.cpp | 11 +- 35 files changed, 842 insertions(+), 447 deletions(-) diff --git a/components/CalEPD/include/epdspi2cs.h b/components/CalEPD/include/epdspi2cs.h index 0bc1e1e1..382f633a 100644 --- a/components/CalEPD/include/epdspi2cs.h +++ b/components/CalEPD/include/epdspi2cs.h @@ -8,17 +8,17 @@ // Instruction R/W bit set HIGH for data READ #define EPD_REGREAD 0x80 -class EpdSpi2Cs : IoInterface +class EpdSpi2Cs { public: spi_device_handle_t spi; - void cmd(const uint8_t cmd) override; - void data(uint8_t data) override; + void cmd(const uint8_t cmd); + void data(uint8_t data); // No data is used here (No DC pin) - void data(const uint8_t *data, int len) override; - void reset(uint8_t millis) override; - void init(uint8_t frequency, bool debug) override; + void data(const uint8_t *data, int len); + void reset(uint8_t millis); + void init(uint8_t frequency, bool debug); void release(); uint8_t readTemp(); diff --git a/components/CalEPD/models/color/gdeh0154z90.cpp b/components/CalEPD/models/color/gdeh0154z90.cpp index ce7a6fc7..16cda7e7 100644 --- a/components/CalEPD/models/color/gdeh0154z90.cpp +++ b/components/CalEPD/models/color/gdeh0154z90.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // Partial Update Delay #define GDEH0154Z90_PU_DELAY 300 @@ -24,7 +26,6 @@ void Gdeh0154z90::init(bool debug) } IO.init(4, debug); // 4MHz frequency - ESP_LOGI(TAG, "Free heap:%d", xPortGetFreeHeapSize()); fillScreen(EPD_WHITE); } diff --git a/components/CalEPD/models/color/gdeh042Z21.cpp b/components/CalEPD/models/color/gdeh042Z21.cpp index 94650112..5335dd98 100644 --- a/components/CalEPD/models/color/gdeh042Z21.cpp +++ b/components/CalEPD/models/color/gdeh042Z21.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // Constructor Gdeh042Z21::Gdeh042Z21(EpdSpi& dio): diff --git a/components/CalEPD/models/color/gdeh042Z96.cpp b/components/CalEPD/models/color/gdeh042Z96.cpp index 8adc1d80..09dfb3e1 100644 --- a/components/CalEPD/models/color/gdeh042Z96.cpp +++ b/components/CalEPD/models/color/gdeh042Z96.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // Constructor Gdeh042Z96::Gdeh042Z96(EpdSpi& dio): Adafruit_GFX(GDEH042Z96_WIDTH, GDEH042Z96_HEIGHT), diff --git a/components/CalEPD/models/color/gdew0583z21.cpp b/components/CalEPD/models/color/gdew0583z21.cpp index c8768a05..e2a9f037 100644 --- a/components/CalEPD/models/color/gdew0583z21.cpp +++ b/components/CalEPD/models/color/gdew0583z21.cpp @@ -4,7 +4,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // CMD, DATA, Databytes * Optional we are going to use sizeof(data) DRAM_ATTR const epd_init_2 Gdew0583z21::epd_wakeup_power={ 0x01,{ @@ -130,7 +132,7 @@ void Gdew0583z21::update() if (i%2000 == 0 && debug_enabled) { // Funny without outputting this to serial is not refreshing. Seems no need of rtc_wdt_feed(); - printf("%d ",i); + printf("%d ", (int)i); vTaskDelay(pdMS_TO_TICKS(10)); } diff --git a/components/CalEPD/models/color/gdew075c64.cpp b/components/CalEPD/models/color/gdew075c64.cpp index ef387006..3d8eb3c7 100644 --- a/components/CalEPD/models/color/gdew075c64.cpp +++ b/components/CalEPD/models/color/gdew075c64.cpp @@ -3,6 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" +#include +#include +#include // Controller: GD7965 (EK79655) // Specification: https://www.scribd.com/document/448888338/GDEW075C64-V1-0-Specification @@ -35,9 +38,7 @@ Gdew075C64::Gdew075C64(EpdSpi &dio) : Adafruit_GFX(GDEW075C64_WIDTH, GDEW075C64_ Epd(GDEW075C64_WIDTH, GDEW075C64_HEIGHT), IO(dio) { printf("Gdew075C64() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", - GDEW075C64_WIDTH, GDEW075C64_HEIGHT, GDEW075C64_BUFFER_SIZE); - - printf("\nAvailable heap after Epd bootstrap:%d\n", xPortGetFreeHeapSize()); + GDEW075C64_WIDTH, GDEW075C64_HEIGHT, (int)GDEW075C64_BUFFER_SIZE); } //Initialize the display diff --git a/components/CalEPD/models/color/gdew075z09.cpp b/components/CalEPD/models/color/gdew075z09.cpp index 9808d6d2..7de66ffa 100644 --- a/components/CalEPD/models/color/gdew075z09.cpp +++ b/components/CalEPD/models/color/gdew075z09.cpp @@ -130,7 +130,7 @@ void Gdew075z09::update() if (i%2000 == 0 && debug_enabled) { // Funny without outputting this to serial is not refreshing. Seems no need of rtc_wdt_feed(); - printf("%d ",i); + printf("%d ", (int)i); vTaskDelay(pdMS_TO_TICKS(10)); } diff --git a/components/CalEPD/models/color/wave12i48BR.cpp b/components/CalEPD/models/color/wave12i48BR.cpp index 7e819abf..710a7be4 100644 --- a/components/CalEPD/models/color/wave12i48BR.cpp +++ b/components/CalEPD/models/color/wave12i48BR.cpp @@ -84,8 +84,7 @@ Wave12I48RB::Wave12I48RB(Epd4Spi& dio): Epd(WAVE12I48_WIDTH, WAVE12I48_HEIGHT), IO(dio) { printf("Wave12I48RB() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", - WAVE12I48_WIDTH, WAVE12I48_HEIGHT, WAVE12I48_BUFFER_SIZE); - printf("\nAvailable heap after Epd bootstrap:%d\n",xPortGetFreeHeapSize()); + (int)WAVE12I48_WIDTH, (int)WAVE12I48_HEIGHT, (int)WAVE12I48_BUFFER_SIZE); } void Wave12I48RB::initFullUpdate(){ @@ -105,7 +104,7 @@ void Wave12I48RB::init(bool debug) IO.init(4, debug_enabled); fillScreen(EPD_WHITE); - printf("\nAvailable heap after Epd init:%d\n",xPortGetFreeHeapSize()); + printf("\nAvailable heap after Epd init:%d\n", (int)xPortGetFreeHeapSize()); //clear(); // No need to do this, but will leave it in the class } @@ -117,7 +116,7 @@ void Wave12I48RB::fillScreen(uint16_t color) uint8_t data_red = (color == EPD_RED) ? WAVE12I48_8PIX_RED_INK : WAVE12I48_8PIX_RED_CLEAR; //if (debug_enabled) - printf("fillScreen(%x) BLACK(%x) RED(%x) Buffer size:%d\n", color, data_black, data_red, WAVE12I48_BUFFER_SIZE); + printf("fillScreen(%x) BLACK(%x) RED(%x) Buffer size:%d\n", (int)color, (int)data_black, (int)data_red, (int) WAVE12I48_BUFFER_SIZE); for (uint32_t x = 0; x < WAVE12I48_BUFFER_SIZE; x++) { @@ -264,7 +263,7 @@ void Wave12I48RB::update() uint64_t startTime = esp_timer_get_time(); _wakeUp(); - printf("\nSending BLACK buffer[%d] via SPI\n", WAVE12I48_BUFFER_SIZE); + printf("\nSending BLACK buffer[%d] via SPI\n", (int)WAVE12I48_BUFFER_SIZE); uint32_t i = 0; /* DISPLAYS: @@ -320,7 +319,7 @@ void Wave12I48RB::update() } i = 0; - printf("\nSending RED buffer[%d] via SPI\n", WAVE12I48_BUFFER_SIZE); + printf("\nSending RED buffer[%d] via SPI\n", (int)WAVE12I48_BUFFER_SIZE); IO.cmdM1S1M2S2(0x13); // Red buffer for(uint16_t y = 1; y <= WAVE12I48_HEIGHT; y++) { @@ -363,7 +362,7 @@ void Wave12I48RB::update() _powerOn(); uint64_t powerOnTime = esp_timer_get_time(); printf("\nAvailable heap after Epd update: %d bytes\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", - xPortGetFreeHeapSize(), (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + (int) xPortGetFreeHeapSize(), (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); } uint16_t Wave12I48RB::_setPartialRamArea(uint16_t, uint16_t, uint16_t, uint16_t){ diff --git a/components/CalEPD/models/color/wave4i7Color.cpp b/components/CalEPD/models/color/wave4i7Color.cpp index 725c4087..e964d371 100644 --- a/components/CalEPD/models/color/wave4i7Color.cpp +++ b/components/CalEPD/models/color/wave4i7Color.cpp @@ -120,7 +120,7 @@ void Wave4i7Color::update() } if (debug_enabled) { printf("\nSPI optimization is on. Sending full xLineBytes: %d per SPI (4 bits per pixel)\n\nBuffer size: %d expected size: %d\n", - xLineBytes, i, WAVE4I7COLOR_BUFFER_SIZE); + (int) xLineBytes, (int) i, (int) WAVE4I7COLOR_BUFFER_SIZE); } } else { diff --git a/components/CalEPD/models/color/wave5i7Color.cpp b/components/CalEPD/models/color/wave5i7Color.cpp index 9906ff9c..ffe8d0f5 100644 --- a/components/CalEPD/models/color/wave5i7Color.cpp +++ b/components/CalEPD/models/color/wave5i7Color.cpp @@ -5,7 +5,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // Constructor Wave5i7Color::Wave5i7Color(EpdSpi& dio): Adafruit_GFX(WAVE5I7COLOR_WIDTH, WAVE5I7COLOR_HEIGHT), @@ -125,7 +127,7 @@ void Wave5i7Color::update() } if (debug_enabled) { printf("\nSPI optimization is on. Sending full xLineBytes: %d per SPI (4 bits per pixel)\n\nBuffer size: %d expected size: %d\n", - xLineBytes, i, WAVE5I7COLOR_BUFFER_SIZE); + (int)xLineBytes, (int)i, (int)WAVE5I7COLOR_BUFFER_SIZE); } } else { diff --git a/components/CalEPD/models/gdeh0154d67.cpp b/components/CalEPD/models/gdeh0154d67.cpp index cb1aa2e2..89baf17a 100644 --- a/components/CalEPD/models/gdeh0154d67.cpp +++ b/components/CalEPD/models/gdeh0154d67.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // Partial Update Delay #define GDEH0154D67_PU_DELAY 300 @@ -38,7 +40,7 @@ void Gdeh0154d67::init(bool debug) if (debug_enabled) printf("Gdeh0154d67::init(%d)\n", debug); IO.init(4, debug); // 4MHz frequency - printf("Free heap:%d\n",xPortGetFreeHeapSize()); + printf("Free heap:%d\n", (int)xPortGetFreeHeapSize()); fillScreen(EPD_WHITE); } diff --git a/components/CalEPD/models/gdeh0213b73.cpp b/components/CalEPD/models/gdeh0213b73.cpp index c79bfdb2..5cf343eb 100644 --- a/components/CalEPD/models/gdeh0213b73.cpp +++ b/components/CalEPD/models/gdeh0213b73.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include /* The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ diff --git a/components/CalEPD/models/gdep015OC1.cpp b/components/CalEPD/models/gdep015OC1.cpp index c06e4443..e4b3a369 100644 --- a/components/CalEPD/models/gdep015OC1.cpp +++ b/components/CalEPD/models/gdep015OC1.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include //Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. //full screen update LUT @@ -82,7 +84,7 @@ void Gdep015OC1::init(bool debug) if (debug_enabled) printf("Gdep015OC1::init(%d)\n", debug); IO.init(4, debug); // 4MHz frequency - printf("Free heap:%d\n",xPortGetFreeHeapSize()); + printf("Free heap:%d\n", (int)xPortGetFreeHeapSize()); fillScreen(EPD_WHITE); } diff --git a/components/CalEPD/models/gdew0213i5f.cpp b/components/CalEPD/models/gdew0213i5f.cpp index 27109bc5..2c9a54de 100644 --- a/components/CalEPD/models/gdew0213i5f.cpp +++ b/components/CalEPD/models/gdew0213i5f.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include /* The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ diff --git a/components/CalEPD/models/gdew027w3.cpp b/components/CalEPD/models/gdew027w3.cpp index 38e0b4a2..55af0511 100644 --- a/components/CalEPD/models/gdew027w3.cpp +++ b/components/CalEPD/models/gdew027w3.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include /* History & fail record: https://twitter.com/martinfasani/status/1265762052880175107 @@ -105,7 +107,7 @@ void Gdew027w3::init(bool debug) if (debug_enabled) printf("Gdew027w3::init(%d)\n", debug); IO.init(4, debug); // 4 MHz frequency - printf("Free heap:%d\n",xPortGetFreeHeapSize()); + printf("Free heap:%d\n", (int)xPortGetFreeHeapSize()); fillScreen(EPD_WHITE); } diff --git a/components/CalEPD/models/gdew027w3T.cpp b/components/CalEPD/models/gdew027w3T.cpp index 080e5d6a..4b99fabe 100644 --- a/components/CalEPD/models/gdew027w3T.cpp +++ b/components/CalEPD/models/gdew027w3T.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // This class is refactored to cope with Good display Arduino example DRAM_ATTR const epd_init_3 Gdew027w3T::epd_soft_start={ 0x06,{0x07,0x07,0x17},3 @@ -98,7 +100,7 @@ void Gdew027w3T::init(bool debug) // Initialize touch. Default: 22 FT6X36_DEFAULT_THRESHOLD Touch.begin(22, width(), height()); - printf("IO & touch initialized. Free heap:%d\n",xPortGetFreeHeapSize()); + printf("IO & touch initialized. Free heap:%d\n", (int)xPortGetFreeHeapSize()); fillScreen(EPD_WHITE); } diff --git a/components/CalEPD/models/gdew042t2.cpp b/components/CalEPD/models/gdew042t2.cpp index 19fa1cfc..8043195d 100644 --- a/components/CalEPD/models/gdew042t2.cpp +++ b/components/CalEPD/models/gdew042t2.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include /* The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ diff --git a/components/CalEPD/models/gdew042t2Grays.cpp b/components/CalEPD/models/gdew042t2Grays.cpp index 62492d5a..b66f8849 100644 --- a/components/CalEPD/models/gdew042t2Grays.cpp +++ b/components/CalEPD/models/gdew042t2Grays.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include /* The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ diff --git a/components/CalEPD/models/gdew0583t7.cpp b/components/CalEPD/models/gdew0583t7.cpp index 14b3a74c..3edbd92b 100644 --- a/components/CalEPD/models/gdew0583t7.cpp +++ b/components/CalEPD/models/gdew0583t7.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // CMD, DATA, Databytes * Optional we are going to use sizeof(data) DRAM_ATTR const epd_init_2 Gdew0583T7::epd_wakeup_power={ 0x01,{0x37,0x00},2 @@ -147,7 +149,7 @@ void Gdew0583T7::update() rtc_wdt_feed(); #endif vTaskDelay(pdMS_TO_TICKS(10)); - if (debug_enabled) printf("%d ",i); + if (debug_enabled) printf("%d ", (int) i); } } diff --git a/components/CalEPD/models/gdew075HD.cpp b/components/CalEPD/models/gdew075HD.cpp index 5c174709..2ae45f93 100644 --- a/components/CalEPD/models/gdew075HD.cpp +++ b/components/CalEPD/models/gdew075HD.cpp @@ -3,14 +3,15 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include // Constructor Gdew075HD::Gdew075HD(EpdSpi &dio) : Adafruit_GFX(GDEW075HD_WIDTH, GDEW075HD_HEIGHT), Epd(GDEW075HD_WIDTH, GDEW075HD_HEIGHT), IO(dio) { printf("Gdew075HD() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", - GDEW075HD_WIDTH, GDEW075HD_HEIGHT, GDEW075HD_BUFFER_SIZE); - printf("\nAvailable heap after Epd bootstrap:%d\n", xPortGetFreeHeapSize()); + GDEW075HD_WIDTH, GDEW075HD_HEIGHT, (int)GDEW075HD_BUFFER_SIZE); } //Initialize the display diff --git a/components/CalEPD/models/gdew075T7.cpp b/components/CalEPD/models/gdew075T7.cpp index 6b0e197e..3129b7a6 100644 --- a/components/CalEPD/models/gdew075T7.cpp +++ b/components/CalEPD/models/gdew075T7.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include /* The EPD needs a bunch of command/data values to be initialized. They are send using the IO class Manufacturer sample: https://github.com/waveshare/e-Paper/blob/master/Arduino/epd7in5_V2/epd7in5_V2.cpp @@ -71,8 +73,8 @@ Gdew075T7::Gdew075T7(EpdSpi &dio) : Adafruit_GFX(GDEW075T7_WIDTH, GDEW075T7_HEIG Epd(GDEW075T7_WIDTH, GDEW075T7_HEIGHT), IO(dio) { printf("Gdew075T7() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", - GDEW075T7_WIDTH, GDEW075T7_HEIGHT, GDEW075T7_BUFFER_SIZE); - printf("\nAvailable heap after Epd bootstrap:%d\n", xPortGetFreeHeapSize()); + GDEW075T7_WIDTH, GDEW075T7_HEIGHT, (int)GDEW075T7_BUFFER_SIZE); + printf("\nAvailable heap after Epd bootstrap:%d\n", (int) xPortGetFreeHeapSize()); } void Gdew075T7::initFullUpdate() diff --git a/components/CalEPD/models/gdew075T7Grays.cpp b/components/CalEPD/models/gdew075T7Grays.cpp index 3d97ff1c..49341b33 100644 --- a/components/CalEPD/models/gdew075T7Grays.cpp +++ b/components/CalEPD/models/gdew075T7Grays.cpp @@ -3,6 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" +#include +#include +#include // Important: I suspect this way of rendering grays is not valid // Please check the 04t2Grays and submit a PR to fix this if you can // Partial Update Delay, may have an influence on degradation @@ -83,8 +86,7 @@ Gdew075T7Grays::Gdew075T7Grays(EpdSpi &dio) : Adafruit_GFX(GDEW075T7_WIDTH, GDEW Epd(GDEW075T7_WIDTH, GDEW075T7_HEIGHT), IO(dio) { printf("Gdew075T7Grays() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", - GDEW075T7_WIDTH, GDEW075T7_HEIGHT, GDEW075T7_BUFFER_SIZE); - printf("\nAvailable heap after Epd bootstrap:%d\n", xPortGetFreeHeapSize()); + GDEW075T7_WIDTH, GDEW075T7_HEIGHT, (int) GDEW075T7_BUFFER_SIZE); multi_heap_info_t info; heap_caps_get_info(&info, MALLOC_CAP_SPIRAM); printf("Total PSRAM allocated: %d Free: %d\n", info.total_allocated_bytes, info.total_free_bytes); @@ -173,7 +175,7 @@ void Gdew075T7Grays::update() _wakeUp(); - printf("Sending a %d bytes buffer via SPI\n", GDEW075T7_BUFFER_SIZE); + printf("Sending a %d bytes buffer via SPI\n", (int) GDEW075T7_BUFFER_SIZE); uint32_t i,j, bufindex; uint8_t temp1,temp2,temp3; diff --git a/components/CalEPD/models/gdew075T8.cpp b/components/CalEPD/models/gdew075T8.cpp index 9ced502f..65c29c17 100644 --- a/components/CalEPD/models/gdew075T8.cpp +++ b/components/CalEPD/models/gdew075T8.cpp @@ -4,7 +4,12 @@ #include "esp_log.h" #include "freertos/task.h" #include "esp_task_wdt.h" - +#include +#include +#include +#include +#include +#include // Partial Update Delay, may have an influence on degradation #define GDEW075T8_PU_DELAY 100 @@ -13,8 +18,8 @@ Gdew075T8::Gdew075T8(EpdSpi &dio) : Adafruit_GFX(GDEW075T8_WIDTH, GDEW075T8_HEIG Epd(GDEW075T8_WIDTH, GDEW075T8_HEIGHT), IO(dio) { printf("Gdew075T8() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", - GDEW075T8_WIDTH, GDEW075T8_HEIGHT, GDEW075T8_BUFFER_SIZE); - printf("\nAvailable heap after Epd bootstrap:%d\n", xPortGetFreeHeapSize()); + GDEW075T8_WIDTH, GDEW075T8_HEIGHT, (int) GDEW075T8_BUFFER_SIZE); + printf("\nAvailable heap after Epd bootstrap:%d\n", (int)xPortGetFreeHeapSize()); } //Initialize the display diff --git a/components/CalEPD/models/heltec0151.cpp b/components/CalEPD/models/heltec0151.cpp index 6f5ff510..aed2c1c4 100644 --- a/components/CalEPD/models/heltec0151.cpp +++ b/components/CalEPD/models/heltec0151.cpp @@ -3,7 +3,9 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include //Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. //full screen update LUT const epd_init_30 Hel0151::LUTDefault_full={ @@ -65,7 +67,7 @@ void Hel0151::init(bool debug) if (debug_enabled) printf("Hel0151::init(%d)\n", debug); IO.init(4, debug); // 4MHz frequency - printf("Free heap:%d\n",xPortGetFreeHeapSize()); + printf("Free heap:%d\n", (int)xPortGetFreeHeapSize()); fillScreen(EPD_WHITE); } diff --git a/components/CalEPD/models/parallel/ED047TC1touch.cpp b/components/CalEPD/models/parallel/ED047TC1touch.cpp index 22d6b85c..25a019a7 100644 --- a/components/CalEPD/models/parallel/ED047TC1touch.cpp +++ b/components/CalEPD/models/parallel/ED047TC1touch.cpp @@ -27,8 +27,6 @@ void Ed047TC1t::init(bool debug) epd_poweron(); // Initialize touch. Default: 22 FT6X36_DEFAULT_THRESHOLD Touch.begin(width(), height()); - printf("Touch initialized. Free heap:%d\n",xPortGetFreeHeapSize()); - } void Ed047TC1t::fillScreen(uint16_t color) { diff --git a/components/CalEPD/models/plasticlogic/epdspi2cs.cpp b/components/CalEPD/models/plasticlogic/epdspi2cs.cpp index 462bd9b3..d24c31b6 100644 --- a/components/CalEPD/models/plasticlogic/epdspi2cs.cpp +++ b/components/CalEPD/models/plasticlogic/epdspi2cs.cpp @@ -84,7 +84,7 @@ void EpdSpi2Cs::release() { esp_err_t ret; ret = spi_bus_remove_device(spi); ESP_ERROR_CHECK(ret); - printf("Free heap: %d after releasing SPI\n", xPortGetFreeHeapSize()); + printf("Free heap: %d after releasing SPI\n", (int)xPortGetFreeHeapSize()); } /* Send a command to the Epaper. Uses spi_device_polling_transmit, which waits diff --git a/components/CalEPD/models/plasticlogic/plasticlogic011.cpp b/components/CalEPD/models/plasticlogic/plasticlogic011.cpp index 2863b98f..551491c3 100644 --- a/components/CalEPD/models/plasticlogic/plasticlogic011.cpp +++ b/components/CalEPD/models/plasticlogic/plasticlogic011.cpp @@ -25,7 +25,7 @@ void PlasticLogic011::init(bool debug) debug_enabled = debug; if (debug_enabled) { printf("PlasticLogic011::init(%d) bufferSize: %d width: %d height: %d\n", - debug, PLOGIC011_BUFFER_SIZE, PLOGIC011_WIDTH, PLOGIC011_HEIGHT); + debug, (int)PLOGIC011_BUFFER_SIZE, (int)PLOGIC011_WIDTH, (int)PLOGIC011_HEIGHT); } initIO(debug); diff --git a/components/CalEPD/models/plasticlogic/plasticlogic014.cpp b/components/CalEPD/models/plasticlogic/plasticlogic014.cpp index 46eb933a..a3d82b10 100644 --- a/components/CalEPD/models/plasticlogic/plasticlogic014.cpp +++ b/components/CalEPD/models/plasticlogic/plasticlogic014.cpp @@ -24,7 +24,7 @@ void PlasticLogic014::init(bool debug) debug_enabled = debug; if (debug_enabled) { printf("PlasticLogic014::init(%d) bufferSize: %d width: %d height: %d\n", - debug, PLOGIC014_BUFFER_SIZE, PLOGIC014_WIDTH, PLOGIC014_HEIGHT); + debug, (int)PLOGIC014_BUFFER_SIZE, (int)PLOGIC014_WIDTH, (int)PLOGIC014_HEIGHT); } initIO(debug); diff --git a/components/CalEPD/models/plasticlogic/plasticlogic021.cpp b/components/CalEPD/models/plasticlogic/plasticlogic021.cpp index 6a019cb1..39587ce5 100644 --- a/components/CalEPD/models/plasticlogic/plasticlogic021.cpp +++ b/components/CalEPD/models/plasticlogic/plasticlogic021.cpp @@ -10,7 +10,7 @@ PlasticLogic021::PlasticLogic021(EpdSpi2Cs& dio): PlasticLogic(PLOGIC021_WIDTH, PLOGIC021_HEIGHT, dio), IO(dio) { printf("PlasticLogic021() %d*%d _buffer:%d\n", - PLOGIC021_WIDTH, PLOGIC021_HEIGHT, PLOGIC021_BUFFER_SIZE); + PLOGIC021_WIDTH, PLOGIC021_HEIGHT, (int)PLOGIC021_BUFFER_SIZE); } // Destructor @@ -24,7 +24,7 @@ void PlasticLogic021::init(bool debug) debug_enabled = debug; if (debug_enabled) { printf("PlasticLogic021::init(%d) bufferSize: %d width: %d height: %d\n", - debug, PLOGIC021_BUFFER_SIZE, PLOGIC021_WIDTH, PLOGIC021_HEIGHT); + debug, (int)PLOGIC021_BUFFER_SIZE, (int)PLOGIC021_WIDTH, (int)PLOGIC021_HEIGHT); } initIO(debug); diff --git a/components/CalEPD/models/testing/wave7i5.cpp b/components/CalEPD/models/testing/wave7i5.cpp index 4d09632f..8fabe515 100644 --- a/components/CalEPD/models/testing/wave7i5.cpp +++ b/components/CalEPD/models/testing/wave7i5.cpp @@ -12,7 +12,6 @@ Wave7i5::Wave7i5(EpdSpi &dio) : Adafruit_GFX(GDEW075T7_WIDTH, GDEW075T7_HEIGHT), { printf("Wave7i5() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", GDEW075T7_WIDTH, GDEW075T7_HEIGHT, GDEW075T7_BUFFER_SIZE); - printf("\nAvailable heap after Epd bootstrap:%d\n", xPortGetFreeHeapSize()); } //Initialize the display diff --git a/components/CalEPD/models/wave12i48.cpp b/components/CalEPD/models/wave12i48.cpp index 7009ebea..df933c6d 100644 --- a/components/CalEPD/models/wave12i48.cpp +++ b/components/CalEPD/models/wave12i48.cpp @@ -4,7 +4,12 @@ #include #include "esp_log.h" #include "freertos/task.h" - +#include +#include +#include +#include +#include +#include DRAM_ATTR const epd_init_1 Wave12I48::epd_panel_setting_full={ 0x00,{0x1f},1 }; @@ -21,8 +26,7 @@ Wave12I48::Wave12I48(Epd4Spi& dio): Epd(WAVE12I48_WIDTH, WAVE12I48_HEIGHT), IO(dio) { printf("Wave12I48() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\nNOTE: Requires external RAM\n", - WAVE12I48_WIDTH, WAVE12I48_HEIGHT, WAVE12I48_BUFFER_SIZE); - printf("\nAvailable heap after Epd bootstrap:%d\n",xPortGetFreeHeapSize()); + WAVE12I48_WIDTH, WAVE12I48_HEIGHT, (int) WAVE12I48_BUFFER_SIZE); } void Wave12I48::initFullUpdate(){ @@ -42,13 +46,13 @@ void Wave12I48::init(bool debug) IO.init(4, false); fillScreen(EPD_WHITE); - printf("\nAvailable heap after Epd init:%d\n",xPortGetFreeHeapSize()); + printf("\nAvailable heap after Epd init:%d\n", (int) xPortGetFreeHeapSize()); //clear(); // No need to do this, but will leave it in the class } void Wave12I48::fillScreen(uint16_t color) { - if (debug_enabled) printf("fillScreen(%x) Buffer size:%d\n", color, WAVE12I48_BUFFER_SIZE); + if (debug_enabled) printf("fillScreen(%x) Buffer size:%d\n", color, (int)WAVE12I48_BUFFER_SIZE); uint8_t data = (color == EPD_BLACK) ? WAVE12I48_8PIX_BLACK : WAVE12I48_8PIX_WHITE; for (uint32_t x = 0; x < WAVE12I48_BUFFER_SIZE; x++) { @@ -134,7 +138,7 @@ void Wave12I48::update() uint64_t startTime = esp_timer_get_time(); _wakeUp(); - printf("Sending a buffer[%d] via SPI\n", WAVE12I48_BUFFER_SIZE); + printf("Sending a buffer[%d] via SPI\n", (int)WAVE12I48_BUFFER_SIZE); uint32_t i = 0; IO.cmdM1S1M2S2(0x13); @@ -185,7 +189,7 @@ void Wave12I48::update() _powerOn(); uint64_t powerOnTime = esp_timer_get_time(); printf("\nAvailable heap after Epd update: %d bytes\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", - xPortGetFreeHeapSize(), (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + (int)xPortGetFreeHeapSize(), (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); } uint16_t Wave12I48::_setPartialRamArea(uint16_t, uint16_t, uint16_t, uint16_t){ diff --git a/config-examples/PlasticLogic-tinypico-HAT b/config-examples/PlasticLogic-tinypico-HAT index 27ed24c7..0411b684 100644 --- a/config-examples/PlasticLogic-tinypico-HAT +++ b/config-examples/PlasticLogic-tinypico-HAT @@ -2,19 +2,190 @@ # Automatically generated file. DO NOT EDIT. # Espressif IoT Development Framework (ESP-IDF) Project Configuration # +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_DPORT_WORKAROUND="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=3 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=5 +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_DAC_PERIPH_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_APLL_MULTIPLIER_OUT_MIN_HZ=350000000 +CONFIG_SOC_APLL_MULTIPLIER_OUT_MAX_HZ=500000000 +CONFIG_SOC_APLL_MIN_HZ=5303031 +CONFIG_SOC_APLL_MAX_HZ=125000000 +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TOUCH_VERSION_1=y +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y CONFIG_IDF_CMAKE=y CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" CONFIG_IDF_TARGET="esp32" CONFIG_IDF_TARGET_ESP32=y CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 -# -# SDK tool configuration -# -CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-" -# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set -# end of SDK tool configuration - # # Build type # @@ -23,18 +194,12 @@ CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y CONFIG_APP_BUILD_GENERATE_BINARIES=y CONFIG_APP_BUILD_BOOTLOADER=y CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set # end of Build type -# -# Application manager -# -CONFIG_APP_COMPILE_TIME_DATE=y -# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set -# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set -# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set -CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 -# end of Application manager - # # Bootloader config # @@ -54,6 +219,7 @@ CONFIG_BOOTLOADER_LOG_LEVEL=3 CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y # CONFIG_BOOTLOADER_FACTORY_RESET is not set # CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y CONFIG_BOOTLOADER_WDT_ENABLE=y # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set CONFIG_BOOTLOADER_WDT_TIME_MS=9000 @@ -63,25 +229,43 @@ CONFIG_BOOTLOADER_WDT_TIME_MS=9000 # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y # end of Bootloader config # # Security features # +CONFIG_SECURE_BOOT_V1_SUPPORTED=y # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set # CONFIG_SECURE_BOOT is not set # CONFIG_SECURE_FLASH_ENC_ENABLED is not set # end of Security features +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y + # # Serial flasher config # -CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 # CONFIG_ESPTOOLPY_NO_STUB is not set # CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set # CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set CONFIG_ESPTOOLPY_FLASHMODE_DIO=y # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y CONFIG_ESPTOOLPY_FLASHMODE="dio" # CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set CONFIG_ESPTOOLPY_FLASHFREQ_40M=y @@ -93,23 +277,17 @@ CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set CONFIG_ESPTOOLPY_FLASHSIZE="2MB" -CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set CONFIG_ESPTOOLPY_BEFORE_RESET=y # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set CONFIG_ESPTOOLPY_BEFORE="default_reset" CONFIG_ESPTOOLPY_AFTER_RESET=y # CONFIG_ESPTOOLPY_AFTER_NORESET is not set CONFIG_ESPTOOLPY_AFTER="hard_reset" -# CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set -CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y -# CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set -CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200 CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 # end of Serial flasher config @@ -117,6 +295,7 @@ CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 # Partition Table # CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set # CONFIG_PARTITION_TABLE_TWO_OTA is not set # CONFIG_PARTITION_TABLE_CUSTOM is not set CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" @@ -125,6 +304,19 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000 CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table +# +# CALE Configuration +# +CONFIG_ESP_WIFI_SSID="sagemcom6AE0" +CONFIG_ESP_WIFI_PASSWORD="GTZZGJN52NXQZY" +CONFIG_CALE_SCREEN_URL="http://img.cale.es/bmp/fasani/5f48855d14eb5" +CONFIG_CALE_BEARER_TOKEN="" +CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=6 +CONFIG_ESP_TRIGGER_SENSOR1=27 +CONFIG_DISPLAY_ROTATION=0 +CONFIG_ESP_MAXIMUM_RETRY=5 +# end of CALE Configuration + # # Display Configuration # @@ -198,19 +390,6 @@ CONFIG_FT6X36_DEBUG=0 CONFIG_FT6X36_DEBUG_EVENTS=0 # end of Touch FT6X36 Configuration -# -# CALE Configuration -# -CONFIG_ESP_WIFI_SSID="WLAN-724300" -CONFIG_ESP_WIFI_PASSWORD="50238634630558382093" -CONFIG_CALE_SCREEN_URL="http://img.cale.es/bmp/fasani/5f48855d14eb5" -CONFIG_CALE_BEARER_TOKEN="" -CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=6 -CONFIG_ESP_TRIGGER_SENSOR1=27 -CONFIG_DISPLAY_ROTATION=0 -CONFIG_ESP_MAXIMUM_RETRY=5 -# end of CALE Configuration - # # Compiler options # @@ -221,6 +400,10 @@ CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y # CONFIG_COMPILER_CXX_EXCEPTIONS is not set # CONFIG_COMPILER_CXX_RTTI is not set CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y @@ -228,7 +411,6 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y # CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set -# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set # CONFIG_COMPILER_DUMP_RTL_FILES is not set # end of Compiler options @@ -239,108 +421,124 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y # # Application Level Tracing # -# CONFIG_APPTRACE_DEST_TRAX is not set +# CONFIG_APPTRACE_DEST_JTAG is not set CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 CONFIG_APPTRACE_LOCK_ENABLE=y # end of Application Level Tracing -# -# ESP-ASIO -# -# CONFIG_ASIO_SSL_SUPPORT is not set -# end of ESP-ASIO - # # Bluetooth # # CONFIG_BT_ENABLED is not set -CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 -CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0 -CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0 -CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0 -CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 -CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 -CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 -CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 -CONFIG_BT_CTRL_MODE_EFF=1 -CONFIG_BT_CTRL_BLE_MAX_ACT=10 -CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10 -CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0 -CONFIG_BT_CTRL_PINNED_TO_CORE=0 -CONFIG_BT_CTRL_HCI_TL=1 -CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30 -CONFIG_BT_CTRL_HW_CCA_EFF=0 -CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0 -CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y -CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 -CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 -CONFIG_BT_CTRL_BLE_SCAN_DUPL=y -CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0 -CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100 -CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 -CONFIG_BT_CTRL_SLEEP_MODE_EFF=0 -CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0 -CONFIG_BT_CTRL_HCI_TL_EFF=1 -CONFIG_BT_RESERVE_DRAM=0 # end of Bluetooth # -# CoAP Configuration +# Driver Configurations # -CONFIG_COAP_MBEDTLS_PSK=y -# CONFIG_COAP_MBEDTLS_PKI is not set -# CONFIG_COAP_MBEDTLS_DEBUG is not set -CONFIG_COAP_LOG_DEFAULT_LEVEL=0 -# end of CoAP Configuration # -# Driver configurations +# Legacy ADC Configuration # +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set # -# ADC configuration +# Legacy ADC Calibration Configuration # -# CONFIG_ADC_FORCE_XPD_FSM is not set -CONFIG_ADC_DISABLE_DAC=y -# end of ADC configuration +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration # -# SPI configuration +# SPI Configuration # # CONFIG_SPI_MASTER_IN_IRAM is not set CONFIG_SPI_MASTER_ISR_IN_IRAM=y # CONFIG_SPI_SLAVE_IN_IRAM is not set CONFIG_SPI_SLAVE_ISR_IN_IRAM=y -# end of SPI configuration +# end of SPI Configuration # -# TWAI configuration +# TWAI Configuration # # CONFIG_TWAI_ISR_IN_IRAM is not set # CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC is not set # CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set # CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set # CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set -# end of TWAI configuration +# end of TWAI Configuration # -# UART configuration +# UART Configuration # # CONFIG_UART_ISR_IN_IRAM is not set -# end of UART configuration - -# -# RTCIO configuration -# -# CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set -# end of RTCIO configuration +# end of UART Configuration # # GPIO Configuration # # CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set # end of GPIO Configuration -# end of Driver configurations + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration +# end of Driver Configurations # # eFuse Bit Manager @@ -358,103 +556,33 @@ CONFIG_EFUSE_MAX_BLK_LEN=192 # CONFIG_ESP_TLS_USING_MBEDTLS=y # CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set # CONFIG_ESP_TLS_SERVER is not set # CONFIG_ESP_TLS_PSK_VERIFICATION is not set # CONFIG_ESP_TLS_INSECURE is not set # end of ESP-TLS # -# ESP32-specific +# ADC and ADC Calibration # -CONFIG_ESP32_REV_MIN_0=y -# CONFIG_ESP32_REV_MIN_1 is not set -# CONFIG_ESP32_REV_MIN_2 is not set -# CONFIG_ESP32_REV_MIN_3 is not set -CONFIG_ESP32_REV_MIN=0 -CONFIG_ESP32_DPORT_WORKAROUND=y -# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set -CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y -# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set -CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 -# CONFIG_ESP32_SPIRAM_SUPPORT is not set -# CONFIG_ESP32_TRAX is not set -CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 -# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set -CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y -CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 -# CONFIG_ESP32_ULP_COPROC_ENABLED is not set -CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0 -CONFIG_ESP32_DEBUG_OCDAWARE=y -CONFIG_ESP32_BROWNOUT_DET=y -CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set -CONFIG_ESP32_BROWNOUT_DET_LVL=0 -CONFIG_ESP32_REDUCE_PHY_TX_POWER=y -CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y -# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set -# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set -# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set -CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y -# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set -# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set -# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set -CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 -CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 -CONFIG_ESP32_XTAL_FREQ_40=y -# CONFIG_ESP32_XTAL_FREQ_26 is not set -# CONFIG_ESP32_XTAL_FREQ_AUTO is not set -CONFIG_ESP32_XTAL_FREQ=40 -# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set -# CONFIG_ESP32_NO_BLOBS is not set -# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set -# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set -CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5 -# end of ESP32-specific +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set # -# ADC-Calibration +# ADC Calibration Configurations # -CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y -CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y -CONFIG_ADC_CAL_LUT_ENABLE=y -# end of ADC-Calibration +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# end of ADC and ADC Calibration # # Common ESP-related # CONFIG_ESP_ERR_TO_NAME_LOOKUP=y -CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 -CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 -CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 -CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y -CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 -CONFIG_ESP_CONSOLE_UART_DEFAULT=y -# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set -# CONFIG_ESP_CONSOLE_NONE is not set -CONFIG_ESP_CONSOLE_UART=y -CONFIG_ESP_CONSOLE_MULTIPLE_UART=y -CONFIG_ESP_CONSOLE_UART_NUM=0 -CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 -CONFIG_ESP_INT_WDT=y -CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 -CONFIG_ESP_INT_WDT_CHECK_CPU1=y -CONFIG_ESP_TASK_WDT=y -# CONFIG_ESP_TASK_WDT_PANIC is not set -CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 -CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y -CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y -# CONFIG_ESP_PANIC_HANDLER_IRAM is not set -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y # end of Common ESP-related # @@ -463,7 +591,6 @@ CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y CONFIG_ETH_ENABLED=y CONFIG_ETH_USE_ESP32_EMAC=y CONFIG_ETH_PHY_INTERFACE_RMII=y -# CONFIG_ETH_PHY_INTERFACE_MII is not set CONFIG_ETH_RMII_CLK_INPUT=y # CONFIG_ETH_RMII_CLK_OUTPUT is not set CONFIG_ETH_RMII_CLK_IN_GPIO=0 @@ -473,7 +600,9 @@ CONFIG_ETH_DMA_TX_BUFFER_NUM=10 CONFIG_ETH_USE_SPI_ETHERNET=y # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set # CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set # CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set # end of Ethernet # @@ -494,6 +623,7 @@ CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y # CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y # CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set # end of ESP HTTP client # @@ -505,12 +635,14 @@ CONFIG_HTTPD_ERR_RESP_NO_DELAY=y CONFIG_HTTPD_PURGE_BUF_LEN=32 # CONFIG_HTTPD_LOG_PURGE_DATA is not set # CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set # end of HTTP Server # # ESP HTTPS OTA # -# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set # end of ESP HTTPS OTA # @@ -519,36 +651,216 @@ CONFIG_HTTPD_PURGE_BUF_LEN=32 # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set # end of ESP HTTPS server +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +CONFIG_ESP32_REV_MIN=0 + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + # # ESP NETIF Adapter # CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 CONFIG_ESP_NETIF_TCPIP_LWIP=y # CONFIG_ESP_NETIF_LOOPBACK is not set -CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set # end of ESP NETIF Adapter +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_REDUCE_TX_POWER=y +# end of PHY + # # Power Management # # CONFIG_PM_ENABLE is not set # end of Power Management +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + # # ESP System Settings # +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set -CONFIG_ESP_SYSTEM_PD_FLASH=y +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set # # Memory protection # # end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# end of Brownout Detector + +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y # end of ESP System Settings +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + # # High resolution timer (esp_timer) # @@ -556,13 +868,15 @@ CONFIG_ESP_SYSTEM_PD_FLASH=y CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 -# CONFIG_ESP_TIMER_IMPL_FRC2 is not set +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set CONFIG_ESP_TIMER_IMPL_TG0_LAC=y # end of High resolution timer (esp_timer) # # Wi-Fi # +CONFIG_ESP32_WIFI_ENABLED=y CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 # CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set @@ -579,23 +893,17 @@ CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 -# CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE is not set CONFIG_ESP32_WIFI_IRAM_OPT=y CONFIG_ESP32_WIFI_RX_IRAM_OPT=y CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set # CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set # end of Wi-Fi -# -# PHY -# -CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y -# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set -CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 -CONFIG_ESP32_PHY_MAX_TX_POWER=20 -# end of PHY - # # Core dump # @@ -607,6 +915,19 @@ CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y # # FAT Filesystem support # +CONFIG_FATFS_VOLUME_COUNT=2 +# CONFIG_FATFS_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set CONFIG_FATFS_CODEPAGE_437=y # CONFIG_FATFS_CODEPAGE_720 is not set @@ -629,6 +950,9 @@ CONFIG_FATFS_CODEPAGE_437=y # CONFIG_FATFS_CODEPAGE_936 is not set # CONFIG_FATFS_CODEPAGE_949 is not set # CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set CONFIG_FATFS_CODEPAGE=437 CONFIG_FATFS_LFN_NONE=y # CONFIG_FATFS_LFN_HEAP is not set @@ -640,71 +964,68 @@ CONFIG_FATFS_PER_FILE_CACHE=y # end of FAT Filesystem support # -# Modbus configuration -# -CONFIG_FMB_COMM_MODE_TCP_EN=y -CONFIG_FMB_TCP_PORT_DEFAULT=502 -CONFIG_FMB_TCP_PORT_MAX_CONN=5 -CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20 -CONFIG_FMB_COMM_MODE_RTU_EN=y -CONFIG_FMB_COMM_MODE_ASCII_EN=y -CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150 -CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 -CONFIG_FMB_QUEUE_LENGTH=20 -CONFIG_FMB_PORT_TASK_STACK_SIZE=4096 -CONFIG_FMB_SERIAL_BUF_SIZE=256 -CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 -CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 -CONFIG_FMB_PORT_TASK_PRIO=10 -# CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT is not set -CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 -CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 -CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 -CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 -CONFIG_FMB_TIMER_PORT_ENABLED=y -CONFIG_FMB_TIMER_GROUP=0 -CONFIG_FMB_TIMER_INDEX=0 -# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set -# end of Modbus configuration +# FreeRTOS +# # -# FreeRTOS +# Kernel # +# CONFIG_FREERTOS_SMP is not set # CONFIG_FREERTOS_UNICORE is not set -CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF -CONFIG_FREERTOS_CORETIMER_0=y -# CONFIG_FREERTOS_CORETIMER_1 is not set CONFIG_FREERTOS_HZ=100 -CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y -# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set -CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 -CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y -# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set -# CONFIG_FREERTOS_ASSERT_DISABLE is not set CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 -CONFIG_FREERTOS_ISR_STACKSIZE=1536 -# CONFIG_FREERTOS_LEGACY_HOOKS is not set +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 -CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y -# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y CONFIG_FREERTOS_DEBUG_OCDAWARE=y -# CONFIG_FREERTOS_FPU_IN_ISR is not set # end of FreeRTOS +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + # # Heap memory debugging # @@ -717,18 +1038,6 @@ CONFIG_HEAP_TRACING_OFF=y # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set # end of Heap memory debugging -# -# jsmn -# -# CONFIG_JSMN_PARENT_LINKS is not set -# CONFIG_JSMN_STRICT is not set -# end of jsmn - -# -# libsodium -# -# end of libsodium - # # Log output # @@ -739,6 +1048,10 @@ CONFIG_LOG_DEFAULT_LEVEL_INFO=y # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 CONFIG_LOG_COLORS=y CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set @@ -748,6 +1061,8 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # LWIP # CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y # CONFIG_LWIP_L2_TO_L3_COPY is not set # CONFIG_LWIP_IRAM_OPTIMIZATION is not set @@ -765,16 +1080,20 @@ CONFIG_LWIP_IP6_FRAG=y # CONFIG_LWIP_IP6_REASSEMBLY is not set # CONFIG_LWIP_IP_FORWARD is not set # CONFIG_LWIP_STATS is not set -# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set CONFIG_LWIP_ESP_GRATUITOUS_ARP=y CONFIG_LWIP_GARP_TMR_INTERVAL=60 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y # CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 # # DHCP server # +CONFIG_LWIP_DHCPS=y CONFIG_LWIP_DHCPS_LEASE_UNIT=60 CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 # end of DHCP server @@ -782,6 +1101,9 @@ CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 # CONFIG_LWIP_AUTOIP is not set CONFIG_LWIP_IPV6=y # CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set CONFIG_LWIP_NETIF_LOOPBACK=y CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 @@ -801,7 +1123,6 @@ CONFIG_LWIP_TCP_WND_DEFAULT=5744 CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 CONFIG_LWIP_TCP_QUEUE_OOSEQ=y # CONFIG_LWIP_TCP_SACK_OUT is not set -# CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set CONFIG_LWIP_TCP_OVERSIZE_MSS=y # CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set # CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set @@ -836,6 +1157,7 @@ CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 # # ICMP # +CONFIG_LWIP_ICMP=y # CONFIG_LWIP_MULTICAST_PING is not set # CONFIG_LWIP_BROADCAST_PING is not set # end of ICMP @@ -849,10 +1171,12 @@ CONFIG_LWIP_MAX_RAW_PCBS=16 # # SNTP # -CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 # end of SNTP +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 CONFIG_LWIP_ESP_LWIP_ASSERT=y # @@ -864,9 +1188,15 @@ CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y # CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set # CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set # end of Hooks # CONFIG_LWIP_DEBUG is not set @@ -884,6 +1214,16 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 # CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set # CONFIG_MBEDTLS_DEBUG is not set +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v3.x related + # # Certificate Bundle # @@ -892,6 +1232,7 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 # end of Certificate Bundle # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set @@ -903,6 +1244,7 @@ CONFIG_MBEDTLS_ROM_MD5=y # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y CONFIG_MBEDTLS_SHA512_C=y @@ -919,7 +1261,6 @@ CONFIG_MBEDTLS_TLS_ENABLED=y # # CONFIG_MBEDTLS_PSK_MODES is not set CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y @@ -928,10 +1269,8 @@ CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y # end of TLS Key Exchange Methods CONFIG_MBEDTLS_SSL_RENEGOTIATION=y -# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set -CONFIG_MBEDTLS_SSL_PROTO_TLS1=y -CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set # CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set CONFIG_MBEDTLS_SSL_ALPN=y CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y @@ -943,13 +1282,11 @@ CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y CONFIG_MBEDTLS_AES_C=y # CONFIG_MBEDTLS_CAMELLIA_C is not set # CONFIG_MBEDTLS_DES_C is not set -CONFIG_MBEDTLS_RC4_DISABLED=y -# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set -# CONFIG_MBEDTLS_RC4_ENABLED is not set # CONFIG_MBEDTLS_BLOWFISH_C is not set # CONFIG_MBEDTLS_XTEA_C is not set CONFIG_MBEDTLS_CCM_C=y CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set # end of Symmetric Ciphers # CONFIG_MBEDTLS_RIPEMD160_C is not set @@ -964,6 +1301,7 @@ CONFIG_MBEDTLS_X509_CSR_PARSE_C=y # end of Certificates CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set CONFIG_MBEDTLS_ECDH_C=y CONFIG_MBEDTLS_ECDSA_C=y # CONFIG_MBEDTLS_ECJPAKE_C is not set @@ -988,25 +1326,11 @@ CONFIG_MBEDTLS_ECP_NIST_OPTIM=y # CONFIG_MBEDTLS_SECURITY_RISKS is not set # end of mbedTLS -# -# mDNS -# -CONFIG_MDNS_MAX_SERVICES=10 -CONFIG_MDNS_TASK_PRIORITY=1 -CONFIG_MDNS_TASK_STACK_SIZE=4096 -# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set -CONFIG_MDNS_TASK_AFFINITY_CPU0=y -# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set -CONFIG_MDNS_TASK_AFFINITY=0x0 -CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 -# CONFIG_MDNS_STRICT_MODE is not set -CONFIG_MDNS_TIMER_PERIOD_MS=100 -# end of mDNS - # # ESP-MQTT Configurations # CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set CONFIG_MQTT_TRANSPORT_SSL=y CONFIG_MQTT_TRANSPORT_WEBSOCKET=y CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y @@ -1028,21 +1352,31 @@ CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y # CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y # CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set # end of Newlib # # NVS # +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set # end of NVS # -# OpenSSL +# OpenThread # -# CONFIG_OPENSSL_DEBUG is not set -CONFIG_OPENSSL_ERROR_STACK=y -# CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set -CONFIG_OPENSSL_ASSERT_EXIT=y -# end of OpenSSL +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm # # PThreads @@ -1066,7 +1400,6 @@ CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set -# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set # CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y @@ -1075,6 +1408,14 @@ CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 # CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set # CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout # # Auto-detect flash chips @@ -1083,6 +1424,8 @@ CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set # end of Auto-detect flash chips CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y @@ -1127,19 +1470,28 @@ CONFIG_SPIFFS_USE_MTIME=y # # TCP Transport # + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket # end of TCP Transport # -# TinyUSB +# Ultra Low Power (ULP) Co-processor # -# end of TinyUSB +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor # # Unity unit testing library # CONFIG_UNITY_ENABLE_FLOAT=y CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set # CONFIG_UNITY_ENABLE_COLOR is not set CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y # CONFIG_UNITY_ENABLE_FIXTURE is not set @@ -1159,7 +1511,6 @@ CONFIG_VFS_SUPPORT_TERMIOS=y # Host File System I/O (Semihosting) # CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 # end of Host File System I/O (Semihosting) # end of Virtual file system @@ -1176,48 +1527,32 @@ CONFIG_WL_SECTOR_SIZE=4096 # CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y # end of Wi-Fi Provisioning Manager # # Supplicant # CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y # CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set # CONFIG_WPA_DEBUG_PRINT is not set # CONFIG_WPA_TESTING_OPTIONS is not set -# CONFIG_WPA_WPS_WARS is not set +# CONFIG_WPA_WPS_STRICT is not set # CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set # end of Supplicant - -# -# ESP RainMaker Common -# -CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y -# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set -CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 -CONFIG_ESP_RMAKER_MQTT_PORT_443=y -# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set -CONFIG_ESP_RMAKER_MQTT_PORT=1 -# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set -CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y -CONFIG_ESP_RMAKER_MQTT_USERNAME="?Platform=APN/1 ESPIF,RAINMAKER,v1.0" -CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 -CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 -CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" -CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" -CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" -CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" -# end of ESP RainMaker Common # end of Component config -# -# Compatibility options -# -# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set -# end of Compatibility options - # Deprecated options for backward compatibility -CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set @@ -1231,66 +1566,71 @@ CONFIG_LOG_BOOTLOADER_LEVEL=3 # CONFIG_FLASHMODE_QOUT is not set CONFIG_FLASHMODE_DIO=y # CONFIG_FLASHMODE_DOUT is not set -# CONFIG_MONITOR_BAUD_9600B is not set -# CONFIG_MONITOR_BAUD_57600B is not set -CONFIG_MONITOR_BAUD_115200B=y -# CONFIG_MONITOR_BAUD_230400B is not set -# CONFIG_MONITOR_BAUD_921600B is not set -# CONFIG_MONITOR_BAUD_2MB is not set -# CONFIG_MONITOR_BAUD_OTHER is not set -CONFIG_MONITOR_BAUD_OTHER_VAL=115200 CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set # CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 # CONFIG_CXX_EXCEPTIONS is not set CONFIG_STACK_CHECK_NONE=y # CONFIG_STACK_CHECK_NORM is not set # CONFIG_STACK_CHECK_STRONG is not set # CONFIG_STACK_CHECK_ALL is not set # CONFIG_WARN_WRITE_STRINGS is not set -# CONFIG_DISABLE_GCC8_WARNINGS is not set # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set CONFIG_ESP32_APPTRACE_DEST_NONE=y CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y -CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 -CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 -CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 -CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 CONFIG_ADC2_DISABLE_DAC=y -# CONFIG_SPIRAM_SUPPORT is not set -CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 -# CONFIG_ULP_COPROC_ENABLED is not set -CONFIG_ULP_COPROC_RESERVE_MEM=0 -CONFIG_BROWNOUT_DET=y -CONFIG_BROWNOUT_DET_LVL_SEL_0=y -# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set -CONFIG_BROWNOUT_DET_LVL=0 -CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP_SYSTEM_PD_FLASH=y +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set # CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set -# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set -# CONFIG_NO_BLOBS is not set -# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 CONFIG_MAIN_TASK_STACK_SIZE=3584 -CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_CONSOLE_UART_DEFAULT=y # CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set # CONFIG_ESP_CONSOLE_UART_NONE is not set CONFIG_CONSOLE_UART=y CONFIG_CONSOLE_UART_NUM=0 @@ -1303,37 +1643,40 @@ CONFIG_TASK_WDT=y CONFIG_TASK_WDT_TIMEOUT_S=5 CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y -# CONFIG_EVENT_LOOP_PROFILING is not set -CONFIG_POST_EVENTS_FROM_ISR=y -CONFIG_POST_EVENTS_FROM_IRAM_ISR=y -# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set -CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y -# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set -# CONFIG_ESP32S2_PANIC_GDBSTUB is not set +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_TIMER_TASK_STACK_SIZE=3584 # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y -CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150 -CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 -CONFIG_MB_QUEUE_LENGTH=20 -CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096 -CONFIG_MB_SERIAL_BUF_SIZE=256 -CONFIG_MB_SERIAL_TASK_PRIO=10 -# CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT is not set -CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 -CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 -CONFIG_MB_CONTROLLER_STACK_SIZE=4096 -CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 -CONFIG_MB_TIMER_PORT_ENABLED=y -CONFIG_MB_TIMER_GROUP=0 -CONFIG_MB_TIMER_INDEX=0 -# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set CONFIG_TIMER_TASK_PRIORITY=1 CONFIG_TIMER_TASK_STACK_DEPTH=2048 CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set # CONFIG_L2_TO_L3_COPY is not set -# CONFIG_USE_ONLY_LWIP_SELECT is not set CONFIG_ESP_GRATUITOUS_ARP=y CONFIG_GARP_TMR_INTERVAL=60 CONFIG_TCPIP_RECVMBOX_SIZE=32 @@ -1345,7 +1688,6 @@ CONFIG_TCP_SND_BUF_DEFAULT=5744 CONFIG_TCP_WND_DEFAULT=5744 CONFIG_TCP_RECVMBOX_SIZE=6 CONFIG_TCP_QUEUE_OOSEQ=y -# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set CONFIG_TCP_OVERSIZE_MSS=y # CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set # CONFIG_TCP_OVERSIZE_DISABLE is not set @@ -1356,6 +1698,12 @@ CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y # CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF # CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 CONFIG_ESP32_PTHREAD_STACK_MIN=768 @@ -1367,8 +1715,8 @@ CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y CONFIG_SUPPORT_TERMIOS=y CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 # End of deprecated options diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 2beefc85..eb2a9def 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -11,7 +11,7 @@ idf_component_register( # Generic demos for touch displays (With an added layer or Gdew027w3T that comes with touch mounted) #SRCS "demos/demo-epaper.cpp" - SRCS "demos/demo-grays.cpp" + #SRCS "demos/demo-grays.cpp" # TOUCH examples. 1- Touch indepently from Epd class uses Gdew027w3 2- Touch implemented in Gdew027w3T class #SRCS "demos/demo-touch.cpp" @@ -28,7 +28,7 @@ idf_component_register( # Demo only for plasticlogic.com epapers: #SRCS "demos/plasticlogic/demo-epaper-plasticlogic.cpp" - #SRCS "demos/plasticlogic/demo-sleep-clock-temp.cpp" + SRCS "demos/plasticlogic/demo-sleep-clock-temp.cpp" #SRCS "demos/plasticlogic/news-ticker.cpp" # Plasticlogic video demo: Please build it in www-image/video diff --git a/main/demos/plasticlogic/demo-epaper-plasticlogic.cpp b/main/demos/plasticlogic/demo-epaper-plasticlogic.cpp index 119ee8a4..d48f7dd1 100644 --- a/main/demos/plasticlogic/demo-epaper-plasticlogic.cpp +++ b/main/demos/plasticlogic/demo-epaper-plasticlogic.cpp @@ -6,7 +6,9 @@ #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" - +#include +#include +#include // Should match with your epaper module and size // One or many classes can be included at the same time #include diff --git a/main/demos/plasticlogic/demo-sleep-clock-temp.cpp b/main/demos/plasticlogic/demo-sleep-clock-temp.cpp index a48ffc71..8200fb7f 100644 --- a/main/demos/plasticlogic/demo-sleep-clock-temp.cpp +++ b/main/demos/plasticlogic/demo-sleep-clock-temp.cpp @@ -12,6 +12,9 @@ #include "freertos/task.h" #include "esp_sleep.h" #include +#include +#include +#include // Non-Volatile Storage (NVS) - borrrowed from esp-idf/examples/storage/nvs_rw_value #include "esp_system.h" #include "nvs_flash.h" @@ -306,6 +309,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_DISCONNECTED: ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED\n"); break; + default: + break; } return ESP_OK; } @@ -335,8 +340,8 @@ static void http_get(const char * requestUrl) { ESP_LOGI(TAG, "\nREQUEST URL: %s\n\nHTTP GET Status = %d, content_length = %d\n", requestUrl, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); + (int)esp_http_client_get_status_code(client), + (int)esp_http_client_get_content_length(client)); } else { @@ -458,7 +463,7 @@ void app_main(void) uint64_t startTime = esp_timer_get_time(); printf("ESP32 deepsleep clock\n"); - printf("Free heap memory: %d\n", xPortGetFreeHeapSize()); // Keep this above 100Kb to have a stable Firmware (Fonts take Heap!) + printf("Free heap memory: %d\n", (int) xPortGetFreeHeapSize()); // Keep this above 100Kb to have a stable Firmware (Fonts take Heap!) // Turn off neopixel to keep consumption to the minimum gpio_set_direction((gpio_num_t)DOTSTAR_PWR, GPIO_MODE_OUTPUT); From 83cb4188728b63f55081e478e67f46a15031b4c1 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sun, 23 Oct 2022 23:17:47 +0200 Subject: [PATCH 07/49] Add demo IOs for https://www.tindie.com/stores/fasani/ CINWRITE --- config-examples/Cinwrite-S3-demo | 1832 ++++++++++++++++++++++++++++++ 1 file changed, 1832 insertions(+) create mode 100644 config-examples/Cinwrite-S3-demo diff --git a/config-examples/Cinwrite-S3-demo b/config-examples/Cinwrite-S3-demo new file mode 100644 index 00000000..b5095628 --- /dev/null +++ b/config-examples/Cinwrite-S3-demo @@ -0,0 +1,1832 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=14 +CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_GDMA_SUPPORTED=y +CONFIG_SOC_LCDCAM_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y +CONFIG_SOC_CACHE_SUPPORT_WRAP=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_RISCV_COPROC_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_USB_OTG_SUPPORTED=y +CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y +CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y +CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_PSRAM_DMA_CAPABLE=y +CONFIG_SOC_XT_WDT_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_SYSTIMER_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_HMAC_SUPPORTED=y +CONFIG_SOC_DIG_SIGN_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_MEMPROT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_ARBITER_SUPPORTED=y +CONFIG_SOC_ADC_FILTER_SUPPORTED=y +CONFIG_SOC_ADC_MONITOR_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=24 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y +CONFIG_SOC_APB_BACKUP_DMA=y +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096 +CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 +CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 +CONFIG_SOC_GDMA_GROUPS=y +CONFIG_SOC_GDMA_PAIRS_PER_GROUP=5 +CONFIG_SOC_GDMA_SUPPORT_PSRAM=y +CONFIG_SOC_GDMA_PSRAM_MIN_ALIGN=16 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=49 +CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y +CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 +CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 +CONFIG_SOC_DEDIC_GPIO_OUT_AUTO_ENABLE=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y +CONFIG_SOC_I2C_SUPPORT_XTAL=y +CONFIG_SOC_I2C_SUPPORT_RTC=y +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_2=y +CONFIG_SOC_I2S_SUPPORTS_PCM=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_CODEC=y +CONFIG_SOC_I2S_SUPPORTS_TDM=y +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y +CONFIG_SOC_PCNT_GROUPS=y +CONFIG_SOC_PCNT_UNITS_PER_GROUP=4 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=4 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=4 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 +CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y +CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y +CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y +CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y +CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y +CONFIG_SOC_RMT_SUPPORT_XTAL=y +CONFIG_SOC_RMT_SUPPORT_RC_FAST=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_SUPPORT_DMA=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_RGB_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=1 +CONFIG_SOC_LCD_RGB_PANELS=1 +CONFIG_SOC_LCD_I80_BUS_WIDTH=16 +CONFIG_SOC_LCD_RGB_DATA_WIDTH=16 +CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128 +CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=549 +CONFIG_SOC_RTC_CNTL_TAGMEM_PD_DMA_BUS_WIDTH=128 +CONFIG_SOC_RTCIO_PIN_COUNT=22 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=y +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_SUPPORT_DDRCLK=y +CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y +CONFIG_SOC_SPI_SUPPORT_CD_SIG=y +CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y +CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y +CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y +CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 +CONFIG_SOC_SPI_SUPPORT_OCT=y +CONFIG_SOC_MEMSPI_SRC_FREQ_120M=y +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 +CONFIG_SOC_SYSTIMER_ALARM_NUM=3 +CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 +CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 +CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y +CONFIG_SOC_SYSTIMER_INT_LEVEL=y +CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 +CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TOUCH_VERSION_2=y +CONFIG_SOC_TOUCH_SENSOR_NUM=15 +CONFIG_SOC_TOUCH_PROXIMITY_CHANNEL_NUM=3 +CONFIG_SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED=y +CONFIG_SOC_TOUCH_PAD_THRESHOLD_MAX=0x1FFFFF +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y +CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_RTC_CLK=y +CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y +CONFIG_SOC_UART_REQUIRE_CORE_RESET=y +CONFIG_SOC_USB_PERIPH_NUM=y +CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 +CONFIG_SOC_SHA_SUPPORT_DMA=y +CONFIG_SOC_SHA_SUPPORT_RESUME=y +CONFIG_SOC_SHA_GDMA=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA224=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_SHA_SUPPORT_SHA512_224=y +CONFIG_SOC_SHA_SUPPORT_SHA512_256=y +CONFIG_SOC_SHA_SUPPORT_SHA512_T=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_DMA=y +CONFIG_SOC_AES_GDMA=y +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_CPU_PD=y +CONFIG_SOC_PM_SUPPORT_TAGMEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y +CONFIG_SOC_SECURE_BOOT_V2_RSA=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 +CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64 +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_OPTIONS=y +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_256=y +CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16 +CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=256 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192 +CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y +CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_OPI_MODE=y +CONFIG_SOC_SPI_MEM_SUPPORT_TIME_TUNING=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_COEX_HW_PTI=y +CONFIG_SOC_SDMMC_USE_GPIO_MATRIX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_SDMMC_SUPPORT_XTAL_CLOCK=y +CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y +CONFIG_SOC_WIFI_HW_TSF=y +CONFIG_SOC_WIFI_FTM_SUPPORT=y +CONFIG_SOC_WIFI_GCMP_SUPPORT=y +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_BRP_MAX=16384 +CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32s3" +CONFIG_IDF_TARGET_ESP32S3=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# end of Build type + +# +# Bootloader config +# +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y +CONFIG_SECURE_BOOT_V2_PREFERRED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +CONFIG_SECURE_ROM_DL_MODE_ENABLED=y +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=y +CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y +CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=4 +CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y +CONFIG_ESP_ROM_GET_CLK_FREQ=y +CONFIG_ESP_ROM_HAS_HAL_WDT=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y + +# +# Boot ROM Behavior +# +CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y +# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set +# end of Boot ROM Behavior + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_OCT_FLASH is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="80m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# CALE Configuration +# +CONFIG_ESP_WIFI_SSID="WLAN-724300" +CONFIG_ESP_WIFI_PASSWORD="50238634630558382093" +CONFIG_CALE_SCREEN_URL="http://cale.es" +CONFIG_CALE_BEARER_TOKEN="" +CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=60 +CONFIG_ESP_TRIGGER_SENSOR1=27 +CONFIG_DISPLAY_ROTATION=0 +CONFIG_ESP_MAXIMUM_RETRY=5 +# end of CALE Configuration + +# +# Display Configuration +# + +# +# Fill only EPD entries for single SPI displays (Good display/Waveshare) +# + +# +# Mosi and Clock should be set for any epaper +# +CONFIG_EINK_SPI_MOSI=12 +CONFIG_EINK_SPI_CLK=13 +CONFIG_EINK_SPI_CS=9 +CONFIG_EINK_DC=11 +CONFIG_EINK_RST=21 +CONFIG_EINK_BUSY=14 + +# +# Important: Leave the rest of unconfigured GPIOs to -1 unless multi-SPI channels (wave12I48) or Plasticlogic EPDs +# + +# +# CS2 and MISO pins apply only to Plasticlogic.com epaper displays +# +CONFIG_EINK_SPI_CS2=6 +CONFIG_EINK_SPI_MISO=0 + +# +# Config below applies to 4 epaper module wave12I48 w/4 SPI CS & BUSY pins (14 pins) +# + +# +# | S2 | M2 | +# + +# +# ----------- +# + +# +# | M1 | S1 | +# +CONFIG_EINK_SPI_M1_CS=23 +CONFIG_EINK_SPI_S1_CS=22 +CONFIG_EINK_SPI_M2_CS=16 +CONFIG_EINK_SPI_S2_CS=19 +CONFIG_EINK_SPI_M1_BUSY=32 +CONFIG_EINK_SPI_S1_BUSY=26 +CONFIG_EINK_SPI_M2_BUSY=18 +CONFIG_EINK_SPI_S2_BUSY=4 +CONFIG_EINK_M1S1_DC=25 +CONFIG_EINK_M2S2_DC=17 +CONFIG_EINK_M1S1_RST=33 +CONFIG_EINK_M2S2_RST=5 +# end of Display Configuration + +# +# Touch FT6X36 Configuration +# + +# +# The touch chip needs an I2C port and one input GPIO +# +CONFIG_TOUCH_SDA=21 +CONFIG_TOUCH_SDL=22 +CONFIG_TOUCH_INT=17 +CONFIG_I2C_MASTER_FREQUENCY=50000 +CONFIG_L58_MULTITOUCH=0 +CONFIG_FT6X36_DEBUG=0 +CONFIG_FT6X36_DEBUG_EVENTS=0 +# end of Touch FT6X36 Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +# CONFIG_APPTRACE_DEST_USB_CDC is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +# end of Bluetooth + +# +# Driver Configurations +# + +# +# Legacy ADC Configuration +# +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set + +# +# Legacy ADC Calibration Configuration +# +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration + +# +# SPI Configuration +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of SPI Configuration + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# end of TWAI Configuration + +# +# Temperature sensor Configuration +# +# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set +# end of Temperature sensor Configuration + +# +# UART Configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART Configuration + +# +# GPIO Configuration +# +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +CONFIG_EFUSE_MAX_BLK_LEN=256 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set +# end of ADC and ADC Calibration + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y +# CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND is not set +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +CONFIG_RTC_CLOCK_BBPLL_POWER_ON_WITH_USB=y +# end of RTC Clock Config + +# +# Peripheral Control +# +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +# +# GDMA Configuration +# +# CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GDMA_ISR_IRAM_SAFE is not set +# end of GDMA Configuration + +# +# Main XTAL Config +# +CONFIG_XTAL_FREQ_40=y +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set +# CONFIG_LCD_RGB_RESTART_IN_VSYNC is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# end of ESP NETIF Adapter + +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_REDUCE_TX_POWER=y +CONFIG_ESP_PHY_ENABLE_USB=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y +CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Cache config +# +CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y +# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y +CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32 +# CONFIG_ESP32S3_DATA_CACHE_16KB is not set +CONFIG_ESP32S3_DATA_CACHE_32KB=y +# CONFIG_ESP32S3_DATA_CACHE_64KB is not set +CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000 +# CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set +CONFIG_ESP32S3_DATA_CACHE_8WAYS=y +CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set +CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y +# CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set +CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32 +# end of Cache config + +# +# Memory +# +# CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set +# CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32S3_TRAX is not set +CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set +CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y +# CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP is not set + +# +# Memory protection +# +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_USB_CDC is not set +# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set +CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=7 +# end of Brownout Detector + +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# High resolution timer (esp_timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_SYSTIMER=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_FTM_ENABLE is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +# CONFIG_FATFS_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y +CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y +# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set +CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +CONFIG_HAL_WDT_USE_ROM_IMPL=y +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# end of Heap memory debugging + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +# end of SNTP + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +# CONFIG_MBEDTLS_CMAC_C is not set +# CONFIG_MBEDTLS_HARDWARE_AES is not set +# CONFIG_MBEDTLS_HARDWARE_MPI is not set +# CONFIG_MBEDTLS_HARDWARE_SHA is not set +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_SECURITY_RISKS is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_HAS_ROM_IMPL=y +# CONFIG_SPI_FLASH_ROM_IMPL is not set +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# TinyUSB Stack +# +# CONFIG_TINYUSB is not set +# end of TinyUSB Stack + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# USB-OTG +# +CONFIG_USB_OTG_SUPPORTED=y +CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256 +CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y +# CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set +# CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set +# end of USB-OTG + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_VFS_SUPPORT_TERMIOS=y + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y +# end of Wi-Fi Provisioning Manager + +# +# Supplicant +# +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# end of Supplicant +# end of Component config + +# Deprecated options for backward compatibility +# CONFIG_NO_BLOBS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set +CONFIG_ESP_SYSTEM_PD_FLASH=y +CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y +# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32S3_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y +# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32S3_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32S3_BROWNOUT_DET=y +CONFIG_ESP32S3_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_7=y +CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_1 is not set +CONFIG_BROWNOUT_DET_LVL=7 +CONFIG_ESP32S3_BROWNOUT_DET_LVL=7 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_SYSTIMER=y +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_SYSTIMER is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_USB_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options From 818179647a25519f68857fe63c2844f25c3d62cd Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 25 Oct 2022 11:35:22 +0200 Subject: [PATCH 08/49] CalEPD add new printerf --- components/CalEPD/epd.cpp | 20 ++++++++++++++++ components/CalEPD/epdspi.cpp | 38 +++++++++++++++++++++++------- components/CalEPD/include/epd.h | 4 +++- components/CalEPD/include/epdspi.h | 19 ++++++++------- 4 files changed, 64 insertions(+), 17 deletions(-) diff --git a/components/CalEPD/epd.cpp b/components/CalEPD/epd.cpp index 920b9275..f677a2af 100644 --- a/components/CalEPD/epd.cpp +++ b/components/CalEPD/epd.cpp @@ -91,6 +91,26 @@ void Epd::println(const std::string& text){ write(10); // newline } +/** + * @brief Similar to printf + * Note that buffer needs to end with null character + * @param format + * @param ... va_list + */ +void Epd::printerf(const char *format, ...) { + va_list args; + va_start(args, format); + char max_buffer[1024]; + int size = vsnprintf(max_buffer, sizeof max_buffer, format, args); + va_end(args); + + if (size < sizeof(max_buffer)) { + print(std::string(max_buffer)); + } else { + ESP_LOGE("Epd::printerf", "max_buffer out of range. Increase max_buffer!"); + } +} + void Epd::newline() { write(10); } diff --git a/components/CalEPD/epdspi.cpp b/components/CalEPD/epdspi.cpp index 9e2e1d1e..e5100eab 100644 --- a/components/CalEPD/epdspi.cpp +++ b/components/CalEPD/epdspi.cpp @@ -70,11 +70,11 @@ void EpdSpi::init(uint8_t frequency=4,bool debug=false){ ESP_ERROR_CHECK(ret); if (debug_enabled) { - printf("EpdSpi::init() Debug enabled. SPI master at frequency:%d MOSI:%d CLK:%d CS:%d DC:%d RST:%d BUSY:%d DMA_CH: %d\n", + ESP_LOGI("EpdSPI", "init() Debug enabled. SPI master at frequency:%d MOSI:%d CLK:%d CS:%d DC:%d RST:%d BUSY:%d DMA_CH: %d\n", frequency*multiplier*1000, CONFIG_EINK_SPI_MOSI, CONFIG_EINK_SPI_CLK, CONFIG_EINK_SPI_CS, CONFIG_EINK_DC,CONFIG_EINK_RST,CONFIG_EINK_BUSY, DMA_CHAN); } else { - printf("EpdSPI started at frequency: %d000\n", frequency*multiplier); + ESP_LOGI(TAG, "started at frequency: %d000", frequency*multiplier); } } @@ -88,7 +88,7 @@ void EpdSpi::init(uint8_t frequency=4,bool debug=false){ void EpdSpi::cmd(const uint8_t cmd) { if (debug_enabled) { - printf("C %x\n",cmd); + ESP_LOGI(TAG, "C %x",cmd); } esp_err_t ret; @@ -109,7 +109,7 @@ void EpdSpi::cmd(const uint8_t cmd) void EpdSpi::data(uint8_t data) { if (debug_enabled) { - printf("D %x\n",data); + ESP_LOGI(TAG,"D %x",data); } esp_err_t ret; spi_transaction_t t; @@ -121,7 +121,6 @@ void EpdSpi::data(uint8_t data) assert(ret==ESP_OK); } - void EpdSpi::dataBuffer(uint8_t data) { spi_transaction_t t; @@ -142,11 +141,10 @@ void EpdSpi::data(const uint8_t *data, int len) { if (len==0) return; if (debug_enabled && false) { - printf("D\n"); + ESP_LOGI(TAG,"D"); for (int i = 0; i < len; i++) { - printf("%x ",data[i]); + ESP_LOGI(TAG, "%x ",data[i]); } - printf("\n"); } esp_err_t ret; spi_transaction_t t; @@ -164,3 +162,27 @@ void EpdSpi::reset(uint8_t millis=20) { gpio_set_level((gpio_num_t)CONFIG_EINK_RST, 1); vTaskDelay(millis / portTICK_RATE_MS); } + +/** + * Send multiple data in one transaction using vectors + */ +void EpdSpi::dataVector(vector _buffer) +{ + if (_buffer.size()==0) return; + + if (debug_enabled) { + ESP_LOGI(TAG,"D"); + for (int i = 0; i < _buffer.size(); i++) { + ESP_LOGI(TAG, "%x ", _buffer.operator[](i)); + } + } + esp_err_t ret; + spi_transaction_t t; + + memset(&t, 0, sizeof(t)); + t.length = _buffer.size()*8; + t.tx_buffer = _buffer.data(); + ret=spi_device_polling_transmit(spi, &t); + + assert(ret==ESP_OK); +} \ No newline at end of file diff --git a/components/CalEPD/include/epd.h b/components/CalEPD/include/epd.h index 7982c94b..8e87e508 100644 --- a/components/CalEPD/include/epd.h +++ b/components/CalEPD/include/epd.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include "freertos/FreeRTOS.h" @@ -115,6 +116,7 @@ class Epd : public virtual Adafruit_GFX void print(const std::string& text); void print(const char c); void println(const std::string& text); + void printerf(const char *format, ...); void newline(); // Methods that should be accesible by inheriting this abstract class protected: @@ -137,7 +139,7 @@ class Epd : public virtual Adafruit_GFX virtual void _wakeUp() = 0; virtual void _sleep() = 0; virtual void _waitBusy(const char* message) = 0; - + uint8_t _unicodePerChar(uint8_t c); uint8_t _unicodeEasy(uint8_t c); // Command & data structs should be implemented by every MODELX display diff --git a/components/CalEPD/include/epdspi.h b/components/CalEPD/include/epdspi.h index 1fa5c45b..57366923 100644 --- a/components/CalEPD/include/epdspi.h +++ b/components/CalEPD/include/epdspi.h @@ -2,21 +2,24 @@ #include "driver/spi_master.h" #include "driver/gpio.h" #include "iointerface.h" +#include +using namespace std; #ifndef epdspi_h #define epdspi_h -class EpdSpi : IoInterface +// : IoInterface +class EpdSpi { public: spi_device_handle_t spi; - - void cmd(const uint8_t cmd) override; - void data(uint8_t data) override; + const char * TAG = "EpdSpi"; + void cmd(const uint8_t cmd) ; // Should override if IoInterface is there + void data(uint8_t data) ; void dataBuffer(uint8_t data); - void data(const uint8_t *data, int len) override; - - void reset(uint8_t millis) override; - void init(uint8_t frequency, bool debug) override; + void data(const uint8_t *data, int len) ; + void dataVector(vector _buffer); + void reset(uint8_t millis) ; + void init(uint8_t frequency, bool debug) ; private: bool debug_enabled = true; }; From 84694c1283a49fb5625737d541abb15986a802d4 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 27 Oct 2022 09:14:26 +0200 Subject: [PATCH 09/49] #66 gdey073d46 Class working --- components/CalEPD/CMakeLists.txt | 9 +- components/CalEPD/include/color/gdey073d46.h | 46 +++ components/CalEPD/models/color/gdey073d46.cpp | 269 ++++++++++++++++++ main/CMakeLists.txt | 4 +- main/demos/demo-7-colors.cpp | 15 +- 5 files changed, 332 insertions(+), 11 deletions(-) create mode 100644 components/CalEPD/include/color/gdey073d46.h create mode 100644 components/CalEPD/models/color/gdey073d46.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index 46cb77bf..1cc44864 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -9,7 +9,7 @@ set(srcs "models/gdew042t2.cpp" "models/gdew042t2Grays.cpp" "models/gdew027w3.cpp" - "models/wave12i48.cpp" + #"models/wave12i48.cpp" # Touch model, please also enable FT6X36-IDF in the REQUIRE section #"models/gdew027w3T.cpp" "models/gdew0213i5f.cpp" @@ -24,9 +24,10 @@ set(srcs "models/color/gdew075c64.cpp" "models/color/gdeh042Z96.cpp" "models/color/gdeh042Z21.cpp" - "models/color/wave12i48BR.cpp" + #"models/color/wave12i48BR.cpp" - # 7 colors Waveshare + # 7 colors ACEP + "models/color/gdey073d46.cpp" "models/color/wave4i7Color.cpp" "models/color/wave5i7Color.cpp" @@ -53,7 +54,7 @@ set(srcs "epd.cpp" "epd7color.cpp" "epdspi.cpp" - "epd4spi.cpp" + #"epd4spi.cpp" ) # If the project does not use a touch display component FT6X36-IDF can be removed or #commented diff --git a/components/CalEPD/include/color/gdey073d46.h b/components/CalEPD/include/color/gdey073d46.h new file mode 100644 index 00000000..839cd439 --- /dev/null +++ b/components/CalEPD/include/color/gdey073d46.h @@ -0,0 +1,46 @@ +// Epaper: ACeP 7-Color GOODISPLAY https://www.good-display.com/product/442.html +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include + +// Controller: Unknown +#define GDEY073D46_WIDTH 800 +#define GDEY073D46_HEIGHT 480 +#define GDEY073D46_BUFFER_SIZE (uint32_t(GDEY073D46_WIDTH) * uint32_t(GDEY073D46_HEIGHT) / 2) + +class gdey073d46 : public Epd7Color +{ + public: + gdey073d46(EpdSpi& IO); + const uint8_t colors_supported = 7; + bool spi_optimized = false; + const bool has_partial_update = false; + + void init(bool debug = false); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void update(); + + private: + EpdSpi& IO; + + uint8_t _buffer[GDEY073D46_BUFFER_SIZE]; + + bool _initial = true; + void _wakeUp(); + void _sleep(); + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); +}; diff --git a/components/CalEPD/models/color/gdey073d46.cpp b/components/CalEPD/models/color/gdey073d46.cpp new file mode 100644 index 00000000..0eb2d434 --- /dev/null +++ b/components/CalEPD/models/color/gdey073d46.cpp @@ -0,0 +1,269 @@ +// This epaper like most color models does not support partialUpdate +#include "color/gdey073d46.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include +// Constructor +gdey073d46::gdey073d46(EpdSpi& dio): + Adafruit_GFX(GDEY073D46_WIDTH, GDEY073D46_HEIGHT), + Epd7Color(GDEY073D46_WIDTH, GDEY073D46_HEIGHT), IO(dio) +{ + printf("gdey073d46() constructor injects IO and extends Adafruit_GFX(%d,%d)\n", + GDEY073D46_WIDTH, GDEY073D46_HEIGHT); +} + +//Initialize the display +void gdey073d46::init(bool debug) +{ + debug_enabled = debug; + if (debug_enabled) printf("gdey073d46::init(%d) and reset EPD\n", debug); + //Initialize the Epaper and reset it + IO.init(4, debug); // 4MHz + + //Reset the display + IO.reset(10); + fillScreen(EPD_WHITE); +} + +void gdey073d46::fillScreen(uint16_t color) +{ + uint8_t pv = _color7(color); + uint8_t pv2 = pv | pv << 4; + for (uint32_t x = 0; x < sizeof(_buffer); x++) + { + _buffer[x] = pv2; + } + + if (debug_enabled) printf("fillScreen(%x) _buffer len:%d\n", color, sizeof(_buffer)); +} + +void gdey073d46::_wakeUp(){ + IO.reset(10); + vTaskDelay(200 / portTICK_PERIOD_MS); + // Wait for the electronic paper IC to release the idle signal + //_waitBusy("epd_wakeup reset"); + + // in GOODISPLAY example + IO.cmd(0xAA); // CMDH + IO.data(0x49); + IO.data(0x55); + IO.data(0x20); + IO.data(0x08); + IO.data(0x09); + IO.data(0x18); + + IO.cmd(0x01); // PWRR + IO.data(0x3F); + IO.data(0x00); + IO.data(0x32); + IO.data(0x2A); + IO.data(0x0E); + IO.data(0x2A); + + IO.cmd(0x00); // PSR + IO.data(0x5F); + IO.data(0x69); + + IO.cmd(0x03); // POFS + IO.data(0x00); + IO.data(0x54); + IO.data(0x00); + IO.data(0x44); + + IO.cmd(0x05); // BTST1 + IO.data(0x40); + IO.data(0x1F); + IO.data(0x1F); + IO.data(0x2C); + + IO.cmd(0x06); // BTST2 + IO.data(0x6F); + IO.data(0x1F); + IO.data(0x16); + IO.data(0x25); + + IO.cmd(0x08); // BTST3 + IO.data(0x6F); + IO.data(0x1F); + IO.data(0x1F); + IO.data(0x22); + + IO.cmd(0x13); // IPC + IO.data(0x00); + IO.data(0x04); + + IO.cmd(0x30); // PLL + IO.data(0x02); + + IO.cmd(0x41); // TSE + IO.data(0x00); + + IO.cmd(0x50); // CDI + IO.data(0x3F); + + IO.cmd(0x60); // TCON + IO.data(0x02); + IO.data(0x00); + + IO.cmd(0x61); // TRES + IO.data(0x03); + IO.data(0x20); + IO.data(0x01); + IO.data(0xE0); + + IO.cmd(0x82); // VDCS + IO.data(0x1E); + + IO.cmd(0x84); // T_VDCS + IO.data(0x00); + + IO.cmd(0x86); // AGID + IO.data(0x00); + + IO.cmd(0xE3); // PWS + IO.data(0x2F); + + IO.cmd(0xE0); // CCSET + IO.data(0x00); + + IO.cmd(0xE6); // TSSET + IO.data(0x00); + + IO.cmd(0x04); //PWR on + _waitBusy("power on"); +} + +void gdey073d46::update() +{ + printf("display.update() called\n"); + + uint64_t startTime = esp_timer_get_time(); + _wakeUp(); + + IO.cmd(0x10); + + // v2 SPI optimizing. Check: https://github.com/martinberlin/cale-idf/wiki/About-SPI-optimization + if (spi_optimized) { + uint32_t i = 0; + uint16_t xLineBytes = GDEY073D46_WIDTH/2; + uint8_t x1buf[xLineBytes]; + for (uint16_t y = 1; y <= GDEY073D46_HEIGHT; y++) + { + for (uint16_t x = 1; x <= xLineBytes; x++) + { + uint8_t data = i < sizeof(_buffer) ? _buffer[i] : 0x33; + x1buf[x - 1] = data; + if (x == xLineBytes) + { // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + ++i; + } + } + if (debug_enabled) { + printf("\nSPI optimization is on. Sending full xLineBytes: %d per SPI (4 bits per pixel)\n\nBuffer size: %d expected size: %d\n", + (int)xLineBytes, (int)i, (int)GDEY073D46_BUFFER_SIZE); + } + + } else { + for (uint32_t i = 0; i < sizeof(_buffer); i++) { + IO.data(_buffer[i]); + } + } + + uint64_t endTime = esp_timer_get_time(); + + IO.cmd(0x12); + IO.data(0x00); + vTaskDelay(2); + _waitBusy("0x12 display refresh"); + + uint64_t powerOnTime = esp_timer_get_time(); + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + + // DEBUG Disable sleep until Buffer is completely written and tested + //vTaskDelay(1000 / portTICK_PERIOD_MS); + _sleep(); +} + +void gdey073d46::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) { + ESP_LOGI(TAG, "Busy release for %s in %llu ms", message, (esp_timer_get_time()-time_since_boot)/1000 ); + break; + } + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>2000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout: %s", message); + break; + } + } +} + +void gdey073d46::_sleep() { + IO.cmd(0x02); + // deep sleep + IO.data(0x00); + _waitBusy("poweroff"); +} + +void gdey073d46::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEY073D46_WIDTH - x - w - 1; + break; + case 2: + x = GDEY073D46_WIDTH - x - w - 1; + y = GDEY073D46_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEY073D46_HEIGHT - y - h - 1; + break; + } +} + +/** + * From GxEPD2 (Jean-Marc) + */ +void gdey073d46::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + + // Check rotation, move pixel around if necessary + switch (getRotation()) + { + case 1: + swap(x, y); + x = GDEY073D46_WIDTH - x - 1; + break; + case 2: + x = GDEY073D46_WIDTH - x - 1; + y = GDEY073D46_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + y = GDEY073D46_HEIGHT - y - 1; + break; + } + uint32_t i = x / 2 + uint32_t(y) * (GDEY073D46_WIDTH / 2); + uint8_t pv = _color7(color); + + if (x & 1) _buffer[i] = (_buffer[i] & 0xF0) | pv; + else _buffer[i] = (_buffer[i] & 0x0F) | (pv << 4); +} diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index eb2a9def..2b9e2d43 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -24,11 +24,11 @@ idf_component_register( #SRCS "demos/demo-fonts.cpp" # Demo to print 7 colors in Waveshare Acep epapers - #SRCS "demos/demo-7-colors.cpp" + SRCS "demos/demo-7-colors.cpp" # Demo only for plasticlogic.com epapers: #SRCS "demos/plasticlogic/demo-epaper-plasticlogic.cpp" - SRCS "demos/plasticlogic/demo-sleep-clock-temp.cpp" + #SRCS "demos/plasticlogic/demo-sleep-clock-temp.cpp" #SRCS "demos/plasticlogic/news-ticker.cpp" # Plasticlogic video demo: Please build it in www-image/video diff --git a/main/demos/demo-7-colors.cpp b/main/demos/demo-7-colors.cpp index 677d2bcb..27385bd1 100644 --- a/main/demos/demo-7-colors.cpp +++ b/main/demos/demo-7-colors.cpp @@ -1,12 +1,16 @@ +// DEMO for 7 color ACEP epapers +// Works with displays offered by GOODISPLAY and Waveshare #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" -#include "color/wave5i7Color.h" #include /* srand, rand */ +// EPD class: Select yours +#include "color/gdey073d46.h" +//#include "color/wave5i7Color.h" // Waveshare test -// Single SPI EPD +// Inject SPI on class EpdSpi io; -Wave5i7Color display(io); +gdey073d46 display(io); // FONT used for title / message body - Only after display library //Converting fonts with ümlauts: ./fontconvert *.ttf 18 32 252 #include @@ -94,9 +98,10 @@ void app_main(void) display.setFont(&Ubuntu_M18pt8b); display.println("BERLIN"); display.setTextColor(EPD_BLACK); - display.println("wave5i7Color class for Waveshare\n600x448 7 color epaper\nNext slide in 2 seconds >"); + display.println("Acep / color test\nNext slide in 2 seconds"); display.update(); - nextSlide(); + return; + //nextSlide(); // Draw some Random color small 2x2 squares in center of the screen for (uint16_t repeat = 1; repeat <= 10000; repeat++) From 2aa966824636a63e3e274d5e01f7a183c1370027 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 27 Oct 2022 15:33:52 +0200 Subject: [PATCH 10/49] #66 Correct 7 color wifi download --- components/CalEPD/include/calepd_version.h | 2 +- main/CMakeLists.txt | 4 +- main/cale-7-color.cpp | 50 ++++++++++++---------- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/components/CalEPD/include/calepd_version.h b/components/CalEPD/include/calepd_version.h index a57c7a96..f23a8165 100644 --- a/components/CalEPD/include/calepd_version.h +++ b/components/CalEPD/include/calepd_version.h @@ -1 +1 @@ -#define CALEPD_VERSION "1.0.8" \ No newline at end of file +#define CALEPD_VERSION "1.0.9" diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 2b9e2d43..6c6bd5db 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,7 +1,7 @@ idf_component_register( # CALE official ESP-IDF Firmware - #SRCS "cale.cpp" + SRCS "cale.cpp" #SRCS "cale-7-color.cpp" # SRCS "demos/cale-sensor.cpp" @@ -24,7 +24,7 @@ idf_component_register( #SRCS "demos/demo-fonts.cpp" # Demo to print 7 colors in Waveshare Acep epapers - SRCS "demos/demo-7-colors.cpp" + #SRCS "demos/demo-7-colors.cpp" # Demo only for plasticlogic.com epapers: #SRCS "demos/plasticlogic/demo-epaper-plasticlogic.cpp" diff --git a/main/cale-7-color.cpp b/main/cale-7-color.cpp index 52def75c..a5495619 100644 --- a/main/cale-7-color.cpp +++ b/main/cale-7-color.cpp @@ -1,4 +1,7 @@ #include "string.h" +#include +#include +#include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/event_groups.h" @@ -28,13 +31,17 @@ //#include //#include //#include -// 7 Color display (Only 2 colors implemented in this demo) -#include "color/wave4i7Color.h" -#include "color/wave5i7Color.h" +// EPD class: Select yours +#include "color/gdey073d46.h" +//#include "color/wave4i7Color.h" +//#include "color/wave5i7Color.h" EpdSpi io; // Choose the right class for your display: +gdey073d46 display(io); + +//Wave4i7Color display(io); //Wave5i7Color display(io); -Wave4i7Color display(io); + // Plastic Logic test: Check cale-grayscale.cpp @@ -143,6 +150,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) switch (evt->event_id) { + default: + break; case HTTP_EVENT_ERROR: ESP_LOGE(TAG, "HTTP_EVENT_ERROR"); break; @@ -158,7 +167,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_ON_DATA: ++countDataEventCalls; if (countDataEventCalls%10==0) { - ESP_LOGI(TAG, "%d len:%d\n", countDataEventCalls, evt->data_len); } + ESP_LOGI(TAG, "%d len:%d\n", (int) countDataEventCalls, (int) evt->data_len); } dataLenTotal += evt->data_len; // Unless bmp.imageOffset initial skip we start reading stream always on byte pointer 0: bPointer = 0; @@ -180,7 +189,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) drawY = bmp.height; ESP_LOGI(TAG, "BMP HEADERS\nfilesize:%d\noffset:%d\nW:%d\nH:%d\nplanes:%d\ndepth:%d\nformat:%d\n", - bmp.fileSize, bmp.imageOffset, bmp.width, bmp.height, bmp.planes, bmp.depth, bmp.format); + (int)bmp.fileSize, (int)bmp.imageOffset, (int)bmp.width, (int)bmp.height, (int)bmp.planes, (int)bmp.depth, (int)bmp.format); if (bmp.depth == 1) { @@ -195,7 +204,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (bmp.depth > 24 || bmp.depth == 16) { isSupportedBitmap = false; - ESP_LOGE(TAG, "BMP DEPTH %d: Only 1, 4, 8 and 24 bits depth are supported.\n", bmp.depth); + ESP_LOGE(TAG, "BMP DEPTH %d: Only 1, 4, 8 and 24 bits depth are supported.\n", (int)bmp.depth); } rowSize = (bmp.width * bmp.depth / 8 + 3) & ~3; @@ -203,7 +212,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) rowSize = ((bmp.width * bmp.depth + 8 - bmp.depth) / 8 + 3) & ~3; if (bmpDebug) - printf("ROW Size %d\n", rowSize); + printf("ROW Size %d\n", (int)rowSize); w = bmp.width; h = bmp.height; @@ -247,8 +256,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (bmpDebug) { printf("\n--> bPointer %d\n_inX: %d _inY: %d DATALEN TOTAL:%d bytesRead so far:%d\n", - bPointer, drawX, drawY, dataLenTotal, imageBytesRead); - printf("Is reading image: %d\n", isReadingImage); + (int)bPointer, (int)drawX, (int)drawY, (int)dataLenTotal, (int)imageBytesRead); } // Didn't arrived to imageOffset YET, it will in next calls of HTTP_EVENT_ON_DATA: @@ -281,11 +289,12 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) for (uint32_t byteIndex = bPointer; byteIndex < evt->data_len; ++byteIndex) { in_byte = output_buffer[byteIndex]; - // Dump only the first calls - if (countDataEventCalls < 2 && bmpDebug) + // Dump only the first calls: Debug only + /* if (countDataEventCalls < 2 && bmpDebug) { printf("L%d: BrsF:%d %x\n", byteIndex, imageBytesRead, in_byte); - } + } + */ in_bits = 8; switch (bmp.depth) @@ -378,10 +387,10 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_ON_FINISH: countDataEventCalls=0; - ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH\nDownload took: %llu ms\nRefresh and go to sleep %d minutes\n", (esp_timer_get_time()-startTime)/1000, CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); + ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH\nDownload took: %llu ms\nRefresh and go to sleep %d minutes\n", (esp_timer_get_time()-startTime)/1000, (int) CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); display.update(); if (bmpDebug) - printf("Free heap after display render: %d\n", xPortGetFreeHeapSize()); + printf("Free heap after display render: %d\n", (int) xPortGetFreeHeapSize()); // Go to deepsleep after rendering vTaskDelay(14000 / portTICK_PERIOD_MS); deepsleep(); @@ -437,8 +446,8 @@ static void http_post(void) { ESP_LOGI(TAG, "\nIMAGE URL: %s\n\nHTTP GET Status = %d, content_length = %d\n", CONFIG_CALE_SCREEN_URL, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); + (int) esp_http_client_get_status_code(client), + (int) esp_http_client_get_content_length(client)); } else { @@ -475,7 +484,7 @@ static void event_handler(void *arg, esp_event_base_t event_base, else { xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); - ESP_LOGI(TAG, "Connect to the AP failed %d times. Going to deepsleep %d minutes", CONFIG_ESP_MAXIMUM_RETRY, CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); + ESP_LOGI(TAG, "Connect to the AP failed %d times. Going to deepsleep %d minutes", (int) CONFIG_ESP_MAXIMUM_RETRY, (int) CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); deepsleep(); } } @@ -578,11 +587,6 @@ void app_main(void) ESP_LOGI(TAG, "ESP_WIFI_MODE_STA"); wifi_init_sta(); - - - // Show available Dynamic Random Access Memory available after display.init() - Both report same number - printf("Free heap: %d (After epaper instantiation)\nDRAM : %d\n", - xPortGetFreeHeapSize(),heap_caps_get_free_size(MALLOC_CAP_8BIT)); http_post(); From 4bef0e44261ecbf7860c10b777b91c55e8c37d34 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 27 Oct 2022 15:54:15 +0200 Subject: [PATCH 11/49] #62 IDF ver. 5 corrections --- components/CalEPD/CMakeLists.txt | 6 ++--- components/CalEPD/epd4spi.cpp | 4 +-- dependencies.lock | 3 +++ main/CMakeLists.txt | 4 +-- main/cale-grayscale.cpp | 44 ++++++++------------------------ main/cale.cpp | 27 +++++++++----------- main/component.mk | 5 ---- 7 files changed, 32 insertions(+), 61 deletions(-) create mode 100644 dependencies.lock delete mode 100644 main/component.mk diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index 1cc44864..b66f8110 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -9,7 +9,7 @@ set(srcs "models/gdew042t2.cpp" "models/gdew042t2Grays.cpp" "models/gdew027w3.cpp" - #"models/wave12i48.cpp" + "models/wave12i48.cpp" # Touch model, please also enable FT6X36-IDF in the REQUIRE section #"models/gdew027w3T.cpp" "models/gdew0213i5f.cpp" @@ -24,7 +24,7 @@ set(srcs "models/color/gdew075c64.cpp" "models/color/gdeh042Z96.cpp" "models/color/gdeh042Z21.cpp" - #"models/color/wave12i48BR.cpp" + "models/color/wave12i48BR.cpp" # 7 colors ACEP "models/color/gdey073d46.cpp" @@ -54,7 +54,7 @@ set(srcs "epd.cpp" "epd7color.cpp" "epdspi.cpp" - #"epd4spi.cpp" + "epd4spi.cpp" ) # If the project does not use a touch display component FT6X36-IDF can be removed or #commented diff --git a/components/CalEPD/epd4spi.cpp b/components/CalEPD/epd4spi.cpp index 4fb28c24..535c9e57 100644 --- a/components/CalEPD/epd4spi.cpp +++ b/components/CalEPD/epd4spi.cpp @@ -10,11 +10,11 @@ #elif defined CONFIG_IDF_TARGET_ESP32S2 #define EPD_HOST SPI2_HOST #define DMA_CHAN EPD_HOST -#elif defined CONFIG_IDF_TARGET_ESP32C3 - // chip only support spi dma channel auto-alloc +#elif defined CONFIG_IDF_TARGET_ESP32S3 #define EPD_HOST SPI2_HOST #define DMA_CHAN SPI_DMA_CH_AUTO #endif + /** DISPLAYS REF: __________ | S2 | M2 | diff --git a/dependencies.lock b/dependencies.lock new file mode 100644 index 00000000..665f7e02 --- /dev/null +++ b/dependencies.lock @@ -0,0 +1,3 @@ +manifest_hash: af80dd68bc674d0bd725fc63d1287180424f4ef686530b02e4f0be0ec2633f0f +target: esp32s3 +version: 1.0.0 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 6c6bd5db..dc1eb6b8 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,13 +1,13 @@ idf_component_register( # CALE official ESP-IDF Firmware - SRCS "cale.cpp" + #SRCS "cale.cpp" #SRCS "cale-7-color.cpp" # SRCS "demos/cale-sensor.cpp" # CALE with grayscale support (For now only plasticLogic) # Grayscale is also good to test parallel epaper with 16 gray levels - #SRCS "cale-grayscale.cpp" + SRCS "cale-grayscale.cpp" # Generic demos for touch displays (With an added layer or Gdew027w3T that comes with touch mounted) #SRCS "demos/demo-epaper.cpp" diff --git a/main/cale-grayscale.cpp b/main/cale-grayscale.cpp index 924f9736..f02e4426 100644 --- a/main/cale-grayscale.cpp +++ b/main/cale-grayscale.cpp @@ -187,6 +187,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) switch (evt->event_id) { + default: + break; case HTTP_EVENT_ERROR: ESP_LOGE(TAG, "HTTP_EVENT_ERROR"); break; @@ -202,7 +204,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_ON_DATA: ++countDataEventCalls; if (countDataEventCalls%10==0) { - ESP_LOGI(TAG, "%d len:%d\n", countDataEventCalls, evt->data_len); } + ESP_LOGI(TAG, "%d len:%d\n", (int)countDataEventCalls, (int)evt->data_len); } dataLenTotal += evt->data_len; // Unless bmp.imageOffset initial skip we start reading stream always on byte pointer 0: bPointer = 0; @@ -224,12 +226,11 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) drawY = bmp.height; ESP_LOGI(TAG, "BMP HEADERS\nfilesize:%d\noffset:%d\nW:%d\nH:%d\nplanes:%d\ndepth:%d\nformat:%d\n", - bmp.fileSize, bmp.imageOffset, bmp.width, bmp.height, bmp.planes, bmp.depth, bmp.format); + (int)bmp.fileSize, (int)bmp.imageOffset, (int)bmp.width, (int)bmp.height, (int)bmp.planes, (int)bmp.depth, (int)bmp.format); if (bmp.depth == 1) { isPaddingAware = true; - ESP_LOGI(TAG, "BMP isPaddingAware: 1 bit depth are 4 bit padded. Wikipedia gave me a lesson."); } if (((bmp.planes == 1) && ((bmp.format == 0) || (bmp.format == 3))) == false) { // uncompressed is handled @@ -239,15 +240,12 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (bmp.depth > 24 || bmp.depth == 16) { isSupportedBitmap = false; - ESP_LOGE(TAG, "BMP DEPTH %d: Only 1, 4, 8 and 24 bits depth are supported.\n", bmp.depth); + ESP_LOGE(TAG, "BMP DEPTH %d: Only 1, 4, 8 and 24 bits depth are supported.\n", (int)bmp.depth); } rowSize = (bmp.width * bmp.depth / 8 + 3) & ~3; if (bmp.depth < 8) rowSize = ((bmp.width * bmp.depth + 8 - bmp.depth) / 8 + 3) & ~3; - - if (bmpDebug) - printf("ROW Size %d\n", rowSize); w = bmp.width; h = bmp.height; if ((w - 1) >= display.width()) @@ -323,19 +321,12 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (!isSupportedBitmap) return ESP_FAIL; - if (bmpDebug) - { - printf("\n--> bPointer %d\n_inX: %d _inY: %d DATALEN TOTAL:%d bytesRead so far:%d\n", - bPointer, drawX, drawY, dataLenTotal, imageBytesRead); - printf("Is reading image: %d\n", isReadingImage); - } - // Didn't arrived to imageOffset YET, it will in next calls of HTTP_EVENT_ON_DATA: if (dataLenTotal < bmp.imageOffset) { imageBytesRead = dataLenTotal; if (bmpDebug) - printf("IF readdata_len; ++byteIndex) { in_byte = output_buffer[byteIndex]; - - // Dump only the first calls - if (countDataEventCalls < 2 && bmpDebug) - { - printf("L%d: BrsF:%d %x\n", byteIndex, imageBytesRead, in_byte); - } in_bits = 8; switch (bmp.depth) @@ -497,23 +482,18 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (bmpDebug) printf("Total drawPixel calls: %d\noutX: %d outY: %d\n", totalDrawPixels, drawX, drawY); - - // Hexa dump: - //ESP_LOG_BUFFER_HEX(TAG, output_buffer, evt->data_len); break; case HTTP_EVENT_ON_FINISH: ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH\nDownload took: %llu ms\nRefresh and go to sleep %d minutes\n", (esp_timer_get_time()-startTime)/1000, CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); display.update(); - if (bmpDebug) - printf("Free heap after display render: %d\n", xPortGetFreeHeapSize()); // Go to deepsleep after rendering vTaskDelay(2000 / portTICK_PERIOD_MS); deepsleep(); break; case HTTP_EVENT_DISCONNECTED: - ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED\n"); + ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED"); break; } return ESP_OK; @@ -559,14 +539,13 @@ static void http_post(void) { ESP_LOGI(TAG, "\nIMAGE URL: %s\n\nHTTP GET Status = %d, content_length = %d\n", CONFIG_CALE_SCREEN_URL, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); + (int) esp_http_client_get_status_code(client), + (int) esp_http_client_get_content_length(client)); } else { ESP_LOGE(TAG, "\nHTTP GET request failed: %s", esp_err_to_name(err)); } - //ESP_LOG_BUFFER_HEX(TAG, local_response_buffer, strlen(local_response_buffer)); } /* FreeRTOS event group to signal when we are connected*/ @@ -597,7 +576,7 @@ static void event_handler(void *arg, esp_event_base_t event_base, else { xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); - ESP_LOGI(TAG, "Connect to the AP failed %d times. Going to deepsleep %d minutes", CONFIG_ESP_MAXIMUM_RETRY, CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); + ESP_LOGI(TAG, "Connect to the AP failed %d times. Going to deepsleep %d minutes", (int)CONFIG_ESP_MAXIMUM_RETRY, (int)CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); deepsleep(); } } @@ -697,9 +676,6 @@ void app_main(void) display.init(); //display.clearScreen(); display.setRotation(CONFIG_DISPLAY_ROTATION); - // Show available Dynamic Random Access Memory available after display.init() - Both report same number - printf("Free heap: %d (After epaper instantiation)\nDRAM : %d\n", - xPortGetFreeHeapSize(),heap_caps_get_free_size(MALLOC_CAP_8BIT)); http_post(); diff --git a/main/cale.cpp b/main/cale.cpp index 5a56b49c..61b83db0 100644 --- a/main/cale.cpp +++ b/main/cale.cpp @@ -132,6 +132,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) switch (evt->event_id) { + default: + break; case HTTP_EVENT_ERROR: ESP_LOGE(TAG, "HTTP_EVENT_ERROR"); break; @@ -147,7 +149,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_ON_DATA: ++countDataEventCalls; if (countDataEventCalls%10==0) { - ESP_LOGI(TAG, "%d len:%d\n", countDataEventCalls, evt->data_len); } + ESP_LOGI(TAG, "%d len:%d\n", (int)countDataEventCalls, (int)evt->data_len); } dataLenTotal += evt->data_len; // Unless bmp.imageOffset initial skip we start reading stream always on byte pointer 0: bPointer = 0; @@ -169,7 +171,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) drawY = bmp.height; ESP_LOGI(TAG, "BMP HEADERS\nfilesize:%d\noffset:%d\nW:%d\nH:%d\nplanes:%d\ndepth:%d\nformat:%d\n", - bmp.fileSize, bmp.imageOffset, bmp.width, bmp.height, bmp.planes, bmp.depth, bmp.format); + (int)bmp.fileSize, (int)bmp.imageOffset, (int)bmp.width, (int)bmp.height, (int)bmp.planes, (int)bmp.depth, (int)bmp.format); if (bmp.depth == 1) { @@ -184,14 +186,11 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (bmp.depth > 8) { isSupportedBitmap = false; - ESP_LOGE(TAG, "BMP DEPTH %d: Only 1, 4, and 8 bits depth are supported.\n", bmp.depth); + ESP_LOGE(TAG, "BMP DEPTH %d: Only 1, 4, and 8 bits depth are supported.\n", (int)bmp.depth); } rowSize = ((bmp.width * bmp.depth + 8 - bmp.depth) / 8 + 3) & ~3; - if (bmpDebug) - printf("ROW Size %d\n", rowSize); - w = bmp.width; h = bmp.height; if ((w - 1) >= display.width()) @@ -243,8 +242,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (bmpDebug) { printf("\n--> bPointer %d\n_inX: %d _inY: %d DATALEN TOTAL:%d bytesRead so far:%d\n", - bPointer, drawX, drawY, dataLenTotal, imageBytesRead); - printf("Is reading image: %d\n", isReadingImage); + (int)bPointer, (int)drawX, (int)drawY, (int)dataLenTotal, (int)imageBytesRead); } // Didn't arrived to imageOffset YET, it will in next calls of HTTP_EVENT_ON_DATA: @@ -280,7 +278,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) // Dump only the first calls if (countDataEventCalls < 2 && bmpDebug) { - printf("L%d: BrsF:%d %x\n", byteIndex, imageBytesRead, in_byte); + printf("L%d: BrsF:%d %x\n", (int)byteIndex, (int)imageBytesRead, (int)in_byte); } in_bits = 8; @@ -360,7 +358,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH\nDownload took: %llu ms\nRefresh and go to sleep %d minutes\n", (esp_timer_get_time()-startTime)/1000, CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); display.update(); if (bmpDebug) - printf("Free heap after display render: %d\n", xPortGetFreeHeapSize()); + printf("Free heap after display render: %d\n", (int)xPortGetFreeHeapSize()); // Go to deepsleep after rendering vTaskDelay(14000 / portTICK_PERIOD_MS); deepsleep(); @@ -416,8 +414,8 @@ static void http_post(void) { ESP_LOGI(TAG, "\nIMAGE URL: %s\n\nHTTP GET Status = %d, content_length = %d\n", CONFIG_CALE_SCREEN_URL, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); + (int) esp_http_client_get_status_code(client), + (int) esp_http_client_get_content_length(client)); } else { @@ -454,7 +452,7 @@ static void event_handler(void *arg, esp_event_base_t event_base, else { xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); - ESP_LOGI(TAG, "Connect to the AP failed %d times. Going to deepsleep %d minutes", CONFIG_ESP_MAXIMUM_RETRY, CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); + ESP_LOGI(TAG, "Connect to the AP failed %d times. Going to deepsleep %d minutes", (int)CONFIG_ESP_MAXIMUM_RETRY, (int)CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); deepsleep(); } } @@ -556,8 +554,7 @@ void app_main(void) display.init(); display.setRotation(CONFIG_DISPLAY_ROTATION); // Show available Dynamic Random Access Memory available after display.init() - Both report same number - printf("Free heap: %d (After epaper instantiation)\nDRAM : %d\n", - xPortGetFreeHeapSize(),heap_caps_get_free_size(MALLOC_CAP_8BIT)); + printf("Free heap: %d (After epaper instantiation)\n", (int) xPortGetFreeHeapSize()); http_post(); diff --git a/main/component.mk b/main/component.mk deleted file mode 100644 index 0b9d7585..00000000 --- a/main/component.mk +++ /dev/null @@ -1,5 +0,0 @@ -# -# "main" pseudo-component makefile. -# -# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) - From 3b0a6be93682b7821f9cf5e9c244552a6b2edae5 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 28 Oct 2022 12:21:08 +0200 Subject: [PATCH 12/49] #68 Start adding gdey0213b74 --- components/CalEPD/CMakeLists.txt | 1 + .../CalEPD/include/goodisplay/gdey0213b74.h | 74 ++++ .../CalEPD/models/goodisplay/gdey0213b74.cpp | 341 ++++++++++++++++++ main/CMakeLists.txt | 4 +- main/demos/demo-epaper.cpp | 36 +- 5 files changed, 439 insertions(+), 17 deletions(-) create mode 100644 components/CalEPD/include/goodisplay/gdey0213b74.h create mode 100644 components/CalEPD/models/goodisplay/gdey0213b74.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index b66f8110..fbc4b1fc 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -12,6 +12,7 @@ set(srcs "models/wave12i48.cpp" # Touch model, please also enable FT6X36-IDF in the REQUIRE section #"models/gdew027w3T.cpp" + "models/goodisplay/gdey0213b74.cpp" "models/gdew0213i5f.cpp" "models/gdep015OC1.cpp" "models/gdeh0154d67.cpp" diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h new file mode 100644 index 00000000..dc51e6e9 --- /dev/null +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -0,0 +1,74 @@ +// GOODISPLAY product https://www.good-display.com/product/391.html +// Controller: SSD1680Z +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include + +// All comments below are from J-M Zingg (Ref. EPD) +// The physical number of pixels (for controller parameter) +#define GDEH0213B73_X_PIXELS 128 +#define GDEH0213B73_Y_PIXELS 250 + +// The logical width and height of the display +#define GDEH0213B73_WIDTH GDEH0213B73_X_PIXELS +#define GDEH0213B73_HEIGHT GDEH0213B73_Y_PIXELS + +// Note: the visible number of display pixels is 122*250, see GDEH0213B72 V1.1 Specification.pdf +#define GDEH0213B73_VISIBLE_WIDTH 122 + +#define GDEH0213B73_BUFFER_SIZE (uint32_t(GDEH0213B73_WIDTH) * uint32_t(GDEH0213B73_HEIGHT) / 8) + +class gdey0213b74 : public Epd +{ + public: + gdey0213b74(EpdSpi& IO); + // Sorry manufacturers but I will count on black/white only real ink colors supported not white (Others will respect your color number definition) + uint8_t colors_supported = 1; + + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method + + // EPD tests + void init(bool debug = false); + + void initPartialUpdate(); + + void fillScreen(uint16_t color); + void update(); + void eraseDisplay(bool using_partial_update = false); + + // Partial update test status please check repository Wiki + void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); + // Partial update of rectangle at (xs,ys) from buffer to screen at (xd,yd), does not power off + void updateToWindow(uint16_t xs, uint16_t ys, uint16_t xd, uint16_t yd, uint16_t w, uint16_t h, bool using_rotation = true); + + private: + EpdSpi& IO; + + uint8_t _buffer[GDEH0213B73_BUFFER_SIZE]; + + bool debug_enabled = false; + + void _wakeUp(); + void _sleep(); + void cmd(uint8_t command); + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); + // Ram data entry mode methods + void _setRamDataEntryMode(uint8_t em); + void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); + void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); + // Command & data structs + static const epd_lut_100 lut_data_part; +}; diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp new file mode 100644 index 00000000..abfded39 --- /dev/null +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -0,0 +1,341 @@ +#include "goodisplay/gdey0213b74.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include +/* + The EPD needs a bunch of command/data values to be initialized. They are send using the IO class +*/ +#define GDEH0213B73_PU_DELAY 300 +//Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. + +DRAM_ATTR const epd_lut_100 gdey0213b74::lut_data_part={ +0x32, { + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, +},100}; + +// Constructor GDEY0213B74 +gdey0213b74::gdey0213b74(EpdSpi& dio): + Adafruit_GFX(GDEH0213B73_WIDTH, GDEH0213B73_HEIGHT), + Epd(GDEH0213B73_WIDTH, GDEH0213B73_HEIGHT), IO(dio) +{ + printf("gdey0213b74() constructor injects IO and extends Adafruit_GFX(%d,%d)\n", + GDEH0213B73_WIDTH, GDEH0213B73_HEIGHT); +} + +void gdey0213b74::initPartialUpdate(){ + _wakeUp(); + + cmd(0x2C); // VCOM Voltage + IO.data(0x26); // ??? + + // Send partial update LUT table 0x32 -> LUT data + cmd(lut_data_part.cmd); + for (uint16_t i = 0; i < sizeof(lut_data_part.data); i++) { + IO.data(lut_data_part.data[i]); + } + + if (debug_enabled) printf("initPartialUpdate() LUT\n"); +} + +//Initialize the display +void gdey0213b74::init(bool debug) +{ + debug_enabled = debug; + if (debug_enabled) printf("gdey0213b74::init(%d) and reset EPD\n", debug); + //Initialize the Epaper and reset it + IO.init(4, debug); // 4MHz frequency, debug + + //Reset the display + IO.reset(20); + fillScreen(EPD_WHITE); +} + +void gdey0213b74::fillScreen(uint16_t color) +{ + uint8_t data = (color == EPD_WHITE) ? 0x00 : 0xFF; + for (uint16_t x = 0; x < sizeof(_buffer); x++) + { + _buffer[x] = data; + } + + if (debug_enabled) printf("fillScreen(%d) _buffer len:%d\n",data,sizeof(_buffer)); +} + + +void gdey0213b74::update() +{ + _using_partial_mode = false; + _wakeUp(); + IO.cmd(0x22); // Display Update Control + IO.data(0xF7); + + IO.cmd(0x24); // write RAM for black(0)/white (1) + + // For v1.0 only monochrome supported + for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { + for (uint16_t x = 0; x < GDEH0213B73_WIDTH / 8; x++) + { + uint16_t idx = y * (GDEH0213B73_WIDTH / 8) + x; + uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; + IO.data(~data); + } + } + + IO.cmd(0x20); // Update sequence + _waitBusy("update full"); + + _sleep(); // power off +} + +void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) +{ + if (using_rotation) _rotate(x, y, w, h); + if (x >= GDEH0213B73_WIDTH) return; + if (y >= GDEH0213B73_HEIGHT) return; + uint16_t xe = gx_uint16_min(GDEH0213B73_WIDTH, x + w) - 1; + uint16_t ye = gx_uint16_min(GDEH0213B73_HEIGHT, y + h) - 1; + uint16_t xs_d8 = x / 8; + uint16_t xe_d8 = xe / 8; + initPartialUpdate(); + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area + _SetRamPointer(xs_d8, y % 256, y / 256); // set ram + _waitBusy("updateWindow I"); + cmd(0x24); + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEH0213B73_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; + IO.data(data); + } + } + //_Update_Part(); + cmd(0x22); + IO.data(0x04); // use Mode 1 for GxEPD + cmd(0x20); + _waitBusy("updateWindow II"); + vTaskDelay(GDEH0213B73_PU_DELAY / portTICK_PERIOD_MS); + + // update erase buffer + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area + _SetRamPointer(xs_d8, y % 256, y / 256); // set ram + _waitBusy("updateWindow III erase buffer"); + cmd(0x26); + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEH0213B73_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; + IO.data(data); + } + } + vTaskDelay(GDEH0213B73_PU_DELAY / portTICK_PERIOD_MS); + +} + +void gdey0213b74::updateToWindow(uint16_t xs, uint16_t ys, uint16_t xd, uint16_t yd, uint16_t w, uint16_t h, bool using_rotation) +{ + printf("Method not implemented\n"); +} + +void gdey0213b74::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>1000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } +} + +void gdey0213b74::cmd(uint8_t command){ + char buffer[3]; + sprintf(buffer,"%x",command); + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) { + _waitBusy(buffer); + } + IO.cmd(command); +} + +void gdey0213b74::_sleep(){ + cmd(0x10); // deep sleep + IO.data(0x01); +} + +void gdey0213b74::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEH0213B73_WIDTH - x - w - 1; + break; + case 2: + x = GDEH0213B73_WIDTH - x - w - 1; + y = GDEH0213B73_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEH0213B73_HEIGHT - y - h - 1; + break; + } +} + + +void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + + // check rotation, move pixel around if necessary + switch (getRotation()) + { + case 1: + swap(x, y); + // Do not swap x for this display: + //x = GDEH0213B73_VISIBLE_WIDTH - x - 1; + break; + case 2: + //x = GDEH0213B73_VISIBLE_WIDTH - x - 1; + y = GDEH0213B73_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + //y = GDEH0213B73_HEIGHT - y - 1; + break; + } + uint16_t i = x / 8 + y * GDEH0213B73_WIDTH / 8; + if (!color) { + _buffer[i] = (_buffer[i] | (1 << (7 - x % 8))); + } else { + _buffer[i] = (_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + } +} + +// _InitDisplay generalizing names here +void gdey0213b74::_wakeUp(){ + IO.reset(10); + _waitBusy("RST reset"); + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + + IO.cmd(0x01); //Driver output control + IO.data(0xF9); + IO.data(0x00); + IO.data(0x00); + + IO.cmd(0x11); //data entry mode + IO.data(0x01); + + IO.cmd(0x44); //set Ram-X address start/end position + IO.data(0x00); + IO.data(0x0F); //0x0F-->(15+1)*8=128 + + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0xF9); //0xF9-->(249+1)=250 + IO.data(0x00); + IO.data(0x00); + IO.data(0x00); + + IO.cmd(0x3C); //BorderWavefrom + IO.data(0x05); + + IO.cmd(0x21); // Display update control + IO.data(0x00); + IO.data(0x80); + + IO.cmd(0x18); //Read built-in temperature sensor + IO.data(0x80); + + IO.cmd(0x4E); // set RAM x address count to 0; + IO.data(0x00); + IO.cmd(0x4F); // set RAM y address count to 0X199; + IO.data(0xF9); + IO.data(0x00); + _waitBusy("wakeup CMDs"); +} + + +void gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) +{ + if (debug_enabled) printf("_SetRamArea(xS:%d,xE:%d,Ys:%d,Y1s:%d,Ye:%d,Ye1:%d)\n",Xstart,Xend,Ystart,Ystart1,Yend,Yend1); + cmd(0x44); + IO.data(Xstart); + IO.data(Xend); + cmd(0x45); + IO.data(Ystart); + IO.data(Ystart1); + IO.data(Yend); + IO.data(Yend1); +} + +void gdey0213b74::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) +{ + if (debug_enabled) printf("_SetRamPointer(addrX:%d,addrY:%d,addrY1:%d)\n",addrX,addrY,addrY1); + cmd(0x4e); + IO.data(addrX); + cmd(0x4f); + IO.data(addrY); + IO.data(addrY1); +} + +//We use only 0x03 +//ram_entry_mode = 0x03; // y-increment, x-increment : normal mode +//ram_entry_mode = 0x00; // y-decrement, x-decrement +//ram_entry_mode = 0x01; // y-decrement, x-increment +//ram_entry_mode = 0x02; // y-increment, x-decrement +void gdey0213b74::_setRamDataEntryMode(uint8_t em) +{ + const uint16_t xPixelsPar = GDEH0213B73_X_PIXELS - 1; + const uint16_t yPixelsPar = GDEH0213B73_Y_PIXELS - 1; + em = gx_uint16_min(em, 0x03); + cmd(0x11); + IO.data(em); + switch (em) + { + case 0x00: // x decrease, y decrease + _SetRamArea(xPixelsPar / 8, 0x00, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x01: // x increase, y decrease : as in demo code + _SetRamArea(0x00, xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(0x00, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x02: // x decrease, y increase + _SetRamArea(xPixelsPar / 8, 0x00, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, 0x00, 0x00); // set ram + break; + case 0x03: // x increase, y increase : normal mode + _SetRamArea(0x00, xPixelsPar / 8, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(0x00, 0x00, 0x00); // set ram + break; + } +} diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index dc1eb6b8..43539c46 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -7,10 +7,10 @@ idf_component_register( # SRCS "demos/cale-sensor.cpp" # CALE with grayscale support (For now only plasticLogic) # Grayscale is also good to test parallel epaper with 16 gray levels - SRCS "cale-grayscale.cpp" + #SRCS "cale-grayscale.cpp" # Generic demos for touch displays (With an added layer or Gdew027w3T that comes with touch mounted) - #SRCS "demos/demo-epaper.cpp" + SRCS "demos/demo-epaper.cpp" #SRCS "demos/demo-grays.cpp" # TOUCH examples. 1- Touch indepently from Epd class uses Gdew027w3 2- Touch implemented in Gdew027w3T class diff --git a/main/demos/demo-epaper.cpp b/main/demos/demo-epaper.cpp index 4f995bdf..45d5f401 100644 --- a/main/demos/demo-epaper.cpp +++ b/main/demos/demo-epaper.cpp @@ -7,10 +7,10 @@ //#include "wave12i48.h" //#include // Tested correctly 06.06.20 //#include -#include +//#include //#include //#include - +#include "goodisplay/gdey0213b74.h" // Color //#include //#include @@ -25,7 +25,7 @@ Wave12I48 display(io); */ EpdSpi io; //Gdew075T7 display(io); //Gdep015OC1 display(io); -Gdew0213i5f display(io); +gdey0213b74 display(io); // FONT used for title / message body - Only after display library //Converting fonts with ümlauts: ./fontconvert *.ttf 18 32 252 @@ -59,16 +59,16 @@ void app_main(void) { printf("CalEPD version: %s\n", CALEPD_VERSION); // Test Epd class - display.init(true); - display.update(); - //display.setRotation(2); + display.init(false); + //display.update(); + display.setRotation(1); //display.update();return; //delay(1000); // Sizes are calculated dividing the screen in 4 equal parts it may not be perfect for all models uint8_t rectW = display.width()/4; // For 11 is 37. - uint16_t foregroundColor = EPD_WHITE; + uint16_t foregroundColor = EPD_BLACK; // Make some rectangles showing the different colors or grays if (display.colors_supported>1) { printf("display.colors_supported:%d\n", display.colors_supported); @@ -77,28 +77,34 @@ void app_main(void) //return; display.fillScreen(EPD_WHITE); - uint16_t firstBlock = display.width()/4; + uint16_t firstBlock = display.width()/8; display.fillRect( 1,1,rectW, firstBlock,foregroundColor); display.fillRect(rectW,1,rectW, firstBlock,EPD_WHITE); display.fillRect(rectW*2,1,rectW,firstBlock,foregroundColor); - display.fillRect(rectW*3,1,rectW-2,firstBlock,EPD_WHITE); - - display.fillRect( 1,firstBlock,rectW,firstBlock,EPD_BLACK); + display.fillRect(rectW*3,1,rectW-2,firstBlock,EPD_WHITE); + // Second row, comment if your epaper is too small + display.fillRect( 1,firstBlock,rectW,firstBlock,EPD_WHITE); display.fillRect(rectW,firstBlock,rectW,firstBlock,foregroundColor); - display.fillRect(rectW*2,firstBlock,rectW,firstBlock,EPD_BLACK); + if (display.colors_supported>1) { + display.fillRect(rectW*2,firstBlock,rectW,firstBlock,EPD_BLACK); + } else { + display.fillRect(rectW*2,firstBlock,rectW,firstBlock,EPD_WHITE); + } display.fillRect(rectW*3,firstBlock,rectW-2,firstBlock,foregroundColor); - display.setCursor(display.width()/2-130,display.height()-90); + display.setCursor(4, 10); display.setTextColor(EPD_WHITE); display.setFont(&Ubuntu_M12pt8b); display.println("BERLIN"); + + display.setCursor(1, 90); display.setTextColor(EPD_BLACK); display.println("demo-epaper.cpp full update is done!"); display.update(); // Leave the epaper White ready for storage - delay(2000); + /* delay(2000); display.fillScreen(EPD_WHITE); - display.update(); + display.update(); */ printf("display: We are done here"); } From cdcee227d870a55873cd736bd7c88cc3ada6958b Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 28 Oct 2022 13:15:53 +0200 Subject: [PATCH 13/49] #68 Optimize SPI sending whole row --- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index abfded39..8bd846c3 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -84,6 +84,7 @@ void gdey0213b74::fillScreen(uint16_t color) void gdey0213b74::update() { _using_partial_mode = false; + uint64_t startTime = esp_timer_get_time(); _wakeUp(); IO.cmd(0x22); // Display Update Control IO.data(0xF7); @@ -91,17 +92,40 @@ void gdey0213b74::update() IO.cmd(0x24); // write RAM for black(0)/white (1) // For v1.0 only monochrome supported + uint8_t xLineBytes = GDEH0213B73_WIDTH/8; + + uint8_t x1buf[xLineBytes]; + uint32_t i = 0; for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + uint8_t data = i < sizeof(_buffer) ? _buffer[idx] : 0x00; + x1buf[x] = ~data; // ~ is invert + + if (x==xLineBytes-1) { // Flush the X line buffer to SPI + IO.data(x1buf,sizeof(x1buf)); + } + ++i; + } + } + // Non SPI-Optimized + /* for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { for (uint16_t x = 0; x < GDEH0213B73_WIDTH / 8; x++) { uint16_t idx = y * (GDEH0213B73_WIDTH / 8) + x; uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; IO.data(~data); } - } + } */ + uint64_t endTime = esp_timer_get_time(); IO.cmd(0x20); // Update sequence _waitBusy("update full"); + uint64_t powerOnTime = esp_timer_get_time(); + + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); _sleep(); // power off } @@ -218,6 +242,9 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { // check rotation, move pixel around if necessary switch (getRotation()) { + case 0: + x = GDEH0213B73_VISIBLE_WIDTH - x; + break; case 1: swap(x, y); // Do not swap x for this display: From 6b075eba9c298d123757b3a1f04033aa1a78fde7 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 28 Oct 2022 16:29:39 +0200 Subject: [PATCH 14/49] #68 Partial out but 50 pix y shifted --- .../CalEPD/include/goodisplay/gdey0213b74.h | 14 +- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 143 ++++++++---------- main/demos/demo-epaper.cpp | 25 ++- 3 files changed, 91 insertions(+), 91 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index dc51e6e9..cf3762f5 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -34,25 +34,22 @@ class gdey0213b74 : public Epd { public: gdey0213b74(EpdSpi& IO); - // Sorry manufacturers but I will count on black/white only real ink colors supported not white (Others will respect your color number definition) + // Counts only Ink color so BWR will have 2 uint8_t colors_supported = 1; - + uint8_t partial_supported = 1; + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method // EPD tests void init(bool debug = false); - void initPartialUpdate(); - void fillScreen(uint16_t color); void update(); void eraseDisplay(bool using_partial_update = false); // Partial update test status please check repository Wiki void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); - // Partial update of rectangle at (xs,ys) from buffer to screen at (xd,yd), does not power off - void updateToWindow(uint16_t xs, uint16_t ys, uint16_t xd, uint16_t yd, uint16_t w, uint16_t h, bool using_rotation = true); - + private: EpdSpi& IO; @@ -61,8 +58,9 @@ class gdey0213b74 : public Epd bool debug_enabled = false; void _wakeUp(); + void _wakeUpFast(); // Not implemented, only checked in GD example void _sleep(); - void cmd(uint8_t command); + void _waitBusy(const char* message); void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); // Ram data entry mode methods diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 8bd846c3..a6309912 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -10,27 +10,6 @@ The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ #define GDEH0213B73_PU_DELAY 300 -//Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. - -DRAM_ATTR const epd_lut_100 gdey0213b74::lut_data_part={ -0x32, { - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - - 0x0A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, -},100}; // Constructor GDEY0213B74 gdey0213b74::gdey0213b74(EpdSpi& dio): @@ -41,21 +20,6 @@ gdey0213b74::gdey0213b74(EpdSpi& dio): GDEH0213B73_WIDTH, GDEH0213B73_HEIGHT); } -void gdey0213b74::initPartialUpdate(){ - _wakeUp(); - - cmd(0x2C); // VCOM Voltage - IO.data(0x26); // ??? - - // Send partial update LUT table 0x32 -> LUT data - cmd(lut_data_part.cmd); - for (uint16_t i = 0; i < sizeof(lut_data_part.data); i++) { - IO.data(lut_data_part.data[i]); - } - - if (debug_enabled) printf("initPartialUpdate() LUT\n"); -} - //Initialize the display void gdey0213b74::init(bool debug) { @@ -132,6 +96,10 @@ void gdey0213b74::update() void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { + ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); + + IO.cmd(0x3C); // BorderWavefrom + IO.data(0x80); if (using_rotation) _rotate(x, y, w, h); if (x >= GDEH0213B73_WIDTH) return; if (y >= GDEH0213B73_HEIGHT) return; @@ -139,32 +107,34 @@ void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b uint16_t ye = gx_uint16_min(GDEH0213B73_HEIGHT, y + h) - 1; uint16_t xs_d8 = x / 8; uint16_t xe_d8 = xe / 8; - initPartialUpdate(); + _wakeUp(); + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram _waitBusy("updateWindow I"); - cmd(0x24); + + // Partial but get's out GRAY + /* Display Update Sequence Option: Enable the stage for Master Activation + A[7:0]= FFh (POR) + */ + IO.cmd(0x22); + IO.data(0xFF); + + IO.cmd(0x24); // BW RAM + printf("Loop from ys:%d to ye:%d\n", y, ye); + for (int16_t y1 = y; y1 <= ye; y1++) { for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) { uint16_t idx = y1 * (GDEH0213B73_WIDTH / 8) + x1; uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; - IO.data(data); + IO.data(~data); } } - //_Update_Part(); - cmd(0x22); - IO.data(0x04); // use Mode 1 for GxEPD - cmd(0x20); - _waitBusy("updateWindow II"); - vTaskDelay(GDEH0213B73_PU_DELAY / portTICK_PERIOD_MS); - - // update erase buffer - _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area - _SetRamPointer(xs_d8, y % 256, y / 256); // set ram - _waitBusy("updateWindow III erase buffer"); - cmd(0x26); + + // If I don't do this then the partial comes out gray: + IO.cmd(0x26); // Gray RAM for (int16_t y1 = y; y1 <= ye; y1++) { for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) @@ -174,13 +144,9 @@ void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b IO.data(data); } } - vTaskDelay(GDEH0213B73_PU_DELAY / portTICK_PERIOD_MS); -} - -void gdey0213b74::updateToWindow(uint16_t xs, uint16_t ys, uint16_t xd, uint16_t yd, uint16_t w, uint16_t h, bool using_rotation) -{ - printf("Method not implemented\n"); + IO.cmd(0x20); + _waitBusy("update partial"); } void gdey0213b74::_waitBusy(const char* message){ @@ -200,17 +166,8 @@ void gdey0213b74::_waitBusy(const char* message){ } } -void gdey0213b74::cmd(uint8_t command){ - char buffer[3]; - sprintf(buffer,"%x",command); - if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) { - _waitBusy(buffer); - } - IO.cmd(command); -} - void gdey0213b74::_sleep(){ - cmd(0x10); // deep sleep + IO.cmd(0x10); // deep sleep IO.data(0x01); } @@ -290,17 +247,17 @@ void gdey0213b74::_wakeUp(){ IO.data(0xF9); //0xF9-->(249+1)=250 IO.data(0x00); IO.data(0x00); - IO.data(0x00); + IO.data(0x00); IO.cmd(0x3C); //BorderWavefrom - IO.data(0x05); - + IO.data(0x05); + IO.cmd(0x21); // Display update control - IO.data(0x00); - IO.data(0x80); + IO.data(0x00); + IO.data(0x80); IO.cmd(0x18); //Read built-in temperature sensor - IO.data(0x80); + IO.data(0x80); IO.cmd(0x4E); // set RAM x address count to 0; IO.data(0x00); @@ -310,14 +267,38 @@ void gdey0213b74::_wakeUp(){ _waitBusy("wakeup CMDs"); } +void gdey0213b74::_wakeUpFast(){ + IO.reset(10); + _waitBusy("RST reset"); + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + + IO.cmd(0x18); //Read built-in temperature sensor + IO.data(0x80); + + IO.cmd(0x22); // Load temperature value + IO.data(0xB1); + IO.cmd(0x20); + _waitBusy("Temp. value"); + + IO.cmd(0x1A); // Write to temperature register + IO.data(0x64); + IO.data(0x00); + + IO.cmd(0x22); // Load temperature value + IO.data(0x91); + IO.cmd(0x20); +} void gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) { - if (debug_enabled) printf("_SetRamArea(xS:%d,xE:%d,Ys:%d,Y1s:%d,Ye:%d,Ye1:%d)\n",Xstart,Xend,Ystart,Ystart1,Yend,Yend1); - cmd(0x44); + // if (debug_enabled) + printf("_SetRamArea(xS:%d,xE:%d,Ys:%d,Y1s:%d,Ye:%d,Ye1:%d)\n",Xstart,Xend,Ystart,Ystart1,Yend,Yend1); + // } + IO.cmd(0x44); IO.data(Xstart); IO.data(Xend); - cmd(0x45); + IO.cmd(0x45); IO.data(Ystart); IO.data(Ystart1); IO.data(Yend); @@ -326,10 +307,12 @@ void gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint void gdey0213b74::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) { - if (debug_enabled) printf("_SetRamPointer(addrX:%d,addrY:%d,addrY1:%d)\n",addrX,addrY,addrY1); - cmd(0x4e); + // if (debug_enabled) { + printf("_SetRamPointer(addrX:%d,addrY:%d,addrY1:%d)\n",addrX,addrY,addrY1); + // } + IO.cmd(0x4e); IO.data(addrX); - cmd(0x4f); + IO.cmd(0x4f); IO.data(addrY); IO.data(addrY1); } @@ -344,7 +327,7 @@ void gdey0213b74::_setRamDataEntryMode(uint8_t em) const uint16_t xPixelsPar = GDEH0213B73_X_PIXELS - 1; const uint16_t yPixelsPar = GDEH0213B73_Y_PIXELS - 1; em = gx_uint16_min(em, 0x03); - cmd(0x11); + IO.cmd(0x11); IO.data(em); switch (em) { diff --git a/main/demos/demo-epaper.cpp b/main/demos/demo-epaper.cpp index 45d5f401..0d6df950 100644 --- a/main/demos/demo-epaper.cpp +++ b/main/demos/demo-epaper.cpp @@ -27,6 +27,9 @@ EpdSpi io; //Gdep015OC1 display(io); gdey0213b74 display(io); +// Enable on HIGH 5V boost converter +#define GPIO_ENABLE_5V GPIO_NUM_38 + // FONT used for title / message body - Only after display library //Converting fonts with ümlauts: ./fontconvert *.ttf 18 32 252 #include @@ -58,10 +61,13 @@ void demo(uint16_t bkcolor, uint16_t fgcolor) void app_main(void) { printf("CalEPD version: %s\n", CALEPD_VERSION); + + gpio_set_level(GPIO_ENABLE_5V, 1); + // Test Epd class display.init(false); //display.update(); - display.setRotation(1); + display.setRotation(0); //display.update();return; //delay(1000); @@ -95,16 +101,29 @@ void app_main(void) display.setCursor(4, 10); display.setTextColor(EPD_WHITE); display.setFont(&Ubuntu_M12pt8b); - display.println("BERLIN"); + display.println("OK"); display.setCursor(1, 90); display.setTextColor(EPD_BLACK); - display.println("demo-epaper.cpp full update is done!"); + display.println("GOOD\nDISPLAY"); + // DRAW Marker line + display.fillRect(1, 97, 20, 2, EPD_BLACK); + display.fillRect(1, 159, 20, 2, EPD_BLACK); display.update(); + + delay(2000); + // test partial update + display.setCursor(1, 140); + //display.println("XXX"); + display.fillCircle(30,120,20, EPD_BLACK); + // Doing a 1, 100 prints again DISPLAY + display.updateWindow(1,100, 120, 60); // Leave the epaper White ready for storage /* delay(2000); display.fillScreen(EPD_WHITE); display.update(); */ + delay(4000); + gpio_set_level(GPIO_ENABLE_5V, 0); printf("display: We are done here"); } From 9f51ed65bc922af5f7b710aca975c129fee97b57 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 28 Oct 2022 18:13:56 +0200 Subject: [PATCH 15/49] #68 Start with 4 grays mode --- .../CalEPD/include/goodisplay/gdey0213b74.h | 10 +- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 182 ++++++++++++++---- main/demos/demo-epaper.cpp | 53 +++-- 3 files changed, 183 insertions(+), 62 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index cf3762f5..843da820 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -42,7 +42,7 @@ class gdey0213b74 : public Epd // EPD tests void init(bool debug = false); - + void setMonoMode(bool mode); void fillScreen(uint16_t color); void update(); void eraseDisplay(bool using_partial_update = false); @@ -52,9 +52,11 @@ class gdey0213b74 : public Epd private: EpdSpi& IO; - - uint8_t _buffer[GDEH0213B73_BUFFER_SIZE]; - + bool _mono_mode = false; + uint8_t _mono_buffer[GDEH0213B73_BUFFER_SIZE]; + uint8_t _buffer1[GDEH0213B73_BUFFER_SIZE]; + uint8_t _buffer2[GDEH0213B73_BUFFER_SIZE]; + bool debug_enabled = false; void _wakeUp(); diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index a6309912..1c64ad26 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -31,17 +31,47 @@ void gdey0213b74::init(bool debug) //Reset the display IO.reset(20); fillScreen(EPD_WHITE); + _mono_mode = 1; + fillScreen(EPD_WHITE); } void gdey0213b74::fillScreen(uint16_t color) { - uint8_t data = (color == EPD_WHITE) ? 0x00 : 0xFF; - for (uint16_t x = 0; x < sizeof(_buffer); x++) - { - _buffer[x] = data; + if (_mono_mode) { + uint8_t data = (color == EPD_WHITE) ? 0xFF : 0x00; + for (uint16_t x = 0; x < sizeof(_mono_buffer); x++) + { + _mono_buffer[x] = data; + } + if (debug_enabled) printf("fillScreen(%d) _mono_buffer len:%d\n",data,sizeof(_mono_buffer)); + } else { + + // This is to make faster black & white + if (color == 255 || color == 0) { + for(uint32_t i=0;i= width()) || (y < 0) || (y >= height())) return; @@ -204,8 +265,7 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { break; case 1: swap(x, y); - // Do not swap x for this display: - //x = GDEH0213B73_VISIBLE_WIDTH - x - 1; + // Do not swap x for this display break; case 2: //x = GDEH0213B73_VISIBLE_WIDTH - x - 1; @@ -217,11 +277,44 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { break; } uint16_t i = x / 8 + y * GDEH0213B73_WIDTH / 8; - if (!color) { - _buffer[i] = (_buffer[i] | (1 << (7 - x % 8))); - } else { - _buffer[i] = (_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + uint8_t mask = 1 << (7 - x % 8); + + if (_mono_mode) { + if (color) { + _mono_buffer[i] = _mono_buffer[i] | mask; + } else { + _mono_buffer[i] = _mono_buffer[i] & (0xFF ^ mask); + } + } else { + // 4 gray mode + mask = 0x80 >> (x & 7); + color >>= 6; // Color is from 0 (black) to 255 (white) + + switch (color) + { + case 1: + // Dark gray: Correct + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] | mask; + break; + case 2: + // Light gray: Correct + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + case 3: + // WHITE + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] | mask; + break; + default: + // Black + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; } + //printf("%x %x|", _buffer1[i], _buffer2[i]); + } } // _InitDisplay generalizing names here @@ -317,7 +410,7 @@ void gdey0213b74::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) IO.data(addrY1); } -//We use only 0x03 +//We use only 0x03: At the moment this method is not used //ram_entry_mode = 0x03; // y-increment, x-increment : normal mode //ram_entry_mode = 0x00; // y-decrement, x-decrement //ram_entry_mode = 0x01; // y-decrement, x-increment @@ -349,3 +442,10 @@ void gdey0213b74::_setRamDataEntryMode(uint8_t em) break; } } + +/** + * @brief Sets private _mode. When true is monochrome mode + */ +void gdey0213b74::setMonoMode(bool mode) { + _mono_mode = mode; +} diff --git a/main/demos/demo-epaper.cpp b/main/demos/demo-epaper.cpp index 0d6df950..5de9054a 100644 --- a/main/demos/demo-epaper.cpp +++ b/main/demos/demo-epaper.cpp @@ -33,6 +33,7 @@ gdey0213b74 display(io); // FONT used for title / message body - Only after display library //Converting fonts with ümlauts: ./fontconvert *.ttf 18 32 252 #include +#include extern "C" { @@ -58,20 +59,8 @@ void demo(uint16_t bkcolor, uint16_t fgcolor) } } -void app_main(void) -{ - printf("CalEPD version: %s\n", CALEPD_VERSION); - - gpio_set_level(GPIO_ENABLE_5V, 1); - - // Test Epd class - display.init(false); - //display.update(); - display.setRotation(0); - //display.update();return; - //delay(1000); - - // Sizes are calculated dividing the screen in 4 equal parts it may not be perfect for all models +void draw_content(uint8_t rotation){ + // Sizes are calculated dividing the screen in 4 equal parts it may not be perfect for all models uint8_t rectW = display.width()/4; // For 11 is 37. uint16_t foregroundColor = EPD_BLACK; @@ -81,7 +70,15 @@ void app_main(void) foregroundColor = EPD_RED; } - //return; + display.setCursor(4, 30); + display.setTextColor(EPD_BLACK); + display.setFont(&Ubuntu_M24pt8b); + display.println("HELLO"); + display.println("TWITTER"); + display.update(); + delay(2000); + + display.setFont(&Ubuntu_M12pt8b); display.fillScreen(EPD_WHITE); uint16_t firstBlock = display.width()/8; display.fillRect( 1,1,rectW, firstBlock,foregroundColor); @@ -100,7 +97,6 @@ void app_main(void) display.setCursor(4, 10); display.setTextColor(EPD_WHITE); - display.setFont(&Ubuntu_M12pt8b); display.println("OK"); display.setCursor(1, 90); @@ -118,12 +114,35 @@ void app_main(void) display.fillCircle(30,120,20, EPD_BLACK); // Doing a 1, 100 prints again DISPLAY display.updateWindow(1,100, 120, 60); + delay(2000); +} + +void app_main(void) +{ + printf("CalEPD version: %s\n", CALEPD_VERSION); + // 5V is not enought for Front light if there are Leds in serie + //gpio_set_level(GPIO_ENABLE_5V, 1); + + // Test Epd class + display.init(false); + display.setMonoMode(true); // false = 4 gray mode without partial update + //display.update(); + display.setRotation(0); + display.fillCircle(80, 50, 40, EPD_DARKGREY); + display.fillCircle(100, 50, 20, EPD_LIGHTGREY); + //display.update();return; + + delay(1000); + + draw_content(display.getRotation()); + display.fillScreen(EPD_WHITE); + display.setRotation(1); + draw_content(display.getRotation()); // Leave the epaper White ready for storage /* delay(2000); display.fillScreen(EPD_WHITE); display.update(); */ - delay(4000); gpio_set_level(GPIO_ENABLE_5V, 0); printf("display: We are done here"); } From a8ae801eadf1d99f95cf64c60be47a408e6025c1 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sat, 29 Oct 2022 14:57:54 +0200 Subject: [PATCH 16/49] #68 GDEY0213 still searching for gray --- .../CalEPD/include/goodisplay/gdey0213b74.h | 4 +- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 123 +++++++++++------- 2 files changed, 75 insertions(+), 52 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index 843da820..248f2ae7 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include // All comments below are from J-M Zingg (Ref. EPD) @@ -56,7 +56,7 @@ class gdey0213b74 : public Epd uint8_t _mono_buffer[GDEH0213B73_BUFFER_SIZE]; uint8_t _buffer1[GDEH0213B73_BUFFER_SIZE]; uint8_t _buffer2[GDEH0213B73_BUFFER_SIZE]; - + bool debug_enabled = false; void _wakeUp(); diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 1c64ad26..a6581dd0 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -79,17 +79,16 @@ void gdey0213b74::update() { _using_partial_mode = false; uint64_t startTime = esp_timer_get_time(); + // _wakeUpFast seems to deliver another init params which make EPD show contents mirrored (?) _wakeUp(); - IO.cmd(0x22); // Display Update Control - IO.data(0xF7); - + // For v1.0 only monochrome supported uint8_t xLineBytes = GDEH0213B73_WIDTH/8; uint8_t x1buf[xLineBytes]; uint32_t i = 0; - + if (_mono_mode) { - IO.cmd(0x24); // write RAM for black(0)/white (1) + IO.cmd(0x24); // write RAM1 for black(0)/white (1) for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { for (uint16_t x = 0; x < xLineBytes; x++) { @@ -105,38 +104,41 @@ void gdey0213b74::update() } } else { // 4 grays mode - IO.cmd(0x24); // BW RAM - - for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { - for (uint16_t x = 0; x < xLineBytes; x++) - { - uint16_t idx = y * xLineBytes + x; - uint8_t data = i < sizeof(_buffer1) ? _buffer1[idx] : 0x00; - x1buf[x] = data; // ~ is invert - - if (x==xLineBytes-1) { // Flush the X line buffer to SPI - IO.data(x1buf,sizeof(x1buf)); - } - ++i; + printf("\n4 gray MODE\n"); + uint32_t bufindex = 0; + uint16_t bufferLenght = GDEH0213B73_BUFFER_SIZE+1; // 4000 + uint16_t bufferMaxSpi = 2000; + uint8_t xbuf[bufferMaxSpi]; + + IO.cmd(0x24); // write RAM1 for black(0)/white (1) + for(i=0;i0 && i % bufferMaxSpi == 0) { + //printf("10 sent part buff %d from *%d\n", bufindex,i); + IO.data(xbuf, bufferMaxSpi); + bufindex = 0; + } + bufindex++; } - } - i = 0; - IO.cmd(0x26); // 2nd RAM - for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { - for (uint16_t x = 0; x < xLineBytes; x++) - { - uint16_t idx = y * xLineBytes + x; - uint8_t data = i < sizeof(_buffer2) ? _buffer2[idx] : 0x00; - x1buf[x] = data; // ~ is invert - if (x==xLineBytes-1) { // Flush the X line buffer to SPI - IO.data(x1buf,sizeof(x1buf)); - } - ++i; + bufindex = 0; + IO.cmd(0x26); //RAM2 buffer: SPI2 + for(i=0;i0 && i % bufferMaxSpi == 0) { + IO.data(xbuf, bufferMaxSpi); + bufindex = 0; + } + bufindex++; } - } } uint64_t endTime = esp_timer_get_time(); + + IO.cmd(0x22); // Display Update Control + IO.data(0xF7); // 0xC7 : fast > Does not work IO.cmd(0x20); // Update sequence _waitBusy("update full"); uint64_t powerOnTime = esp_timer_get_time(); @@ -265,10 +267,9 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { break; case 1: swap(x, y); - // Do not swap x for this display break; case 2: - //x = GDEH0213B73_VISIBLE_WIDTH - x - 1; + //x = GDEH0213B73_VISIBLE_WIDTH - x - 1; // Do not mirror X here y = GDEH0213B73_HEIGHT - y - 1; break; case 3: @@ -293,11 +294,13 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { switch (color) { case 1: + //printf("dg "); // Dark gray: Correct _buffer1[i] = _buffer1[i] & (0xFF ^ mask); _buffer2[i] = _buffer2[i] | mask; break; case 2: + //printf("g "); // Light gray: Correct _buffer1[i] = _buffer1[i] | mask; _buffer2[i] = _buffer2[i] & (0xFF ^ mask); @@ -308,12 +311,13 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { _buffer2[i] = _buffer2[i] | mask; break; default: - // Black + // Black _buffer1[i] = _buffer1[i] & (0xFF ^ mask); _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + //printf("%d %x %x|", i, _buffer1[i], _buffer2[i]); break; } - //printf("%x %x|", _buffer1[i], _buffer2[i]); + } } @@ -366,21 +370,40 @@ void gdey0213b74::_wakeUpFast(){ IO.cmd(0x12); //SWRESET _waitBusy("SWRESET"); + IO.cmd(0x01); //Driver output control + IO.data(0x27); + IO.data(0x01); + IO.data(0x01); //Show mirror + + IO.cmd(0x11); //data entry mode + IO.data(0x01); + + IO.cmd(0x44); //set Ram-X address start/end position + IO.data(0x00); + IO.data(0x0F);//0x0F-->(15+1)*8=128 + + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0x27);//0x0127-->(295+1)=296 + IO.data(0x01); + IO.data(0x00); + IO.data(0x00); + + IO.cmd(0x3C); //BorderWavefrom + IO.data(0x05); + IO.cmd(0x18); //Read built-in temperature sensor - IO.data(0x80); - - IO.cmd(0x22); // Load temperature value - IO.data(0xB1); - IO.cmd(0x20); - _waitBusy("Temp. value"); - - IO.cmd(0x1A); // Write to temperature register - IO.data(0x64); - IO.data(0x00); - - IO.cmd(0x22); // Load temperature value - IO.data(0x91); - IO.cmd(0x20); + IO.data(0x80); + + IO.cmd(0x21); // Display update control + IO.data(0x00); + IO.data(0x80); + + IO.cmd(0x4E); // set RAM x address count to 0; + IO.data(0x00); + IO.cmd(0x4F); // set RAM y address count to 0X199; + IO.data(0x27); + IO.data(0x01); + _waitBusy("wakeup GUI"); } void gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) From bcd989762772d94f551804896cd23342f06bbe84 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sat, 29 Oct 2022 23:08:43 +0200 Subject: [PATCH 17/49] #68 gdey0213b74 0x22 Modes for gray --- .../CalEPD/include/goodisplay/gdey0213b74.h | 2 +- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 92 +++++++++---------- 2 files changed, 43 insertions(+), 51 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index 248f2ae7..b33e2350 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -60,7 +60,7 @@ class gdey0213b74 : public Epd bool debug_enabled = false; void _wakeUp(); - void _wakeUpFast(); // Not implemented, only checked in GD example + void _wakeUpGrayMode(); void _sleep(); void _waitBusy(const char* message); diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index a6581dd0..4f8a4eae 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -79,8 +79,6 @@ void gdey0213b74::update() { _using_partial_mode = false; uint64_t startTime = esp_timer_get_time(); - // _wakeUpFast seems to deliver another init params which make EPD show contents mirrored (?) - _wakeUp(); // For v1.0 only monochrome supported uint8_t xLineBytes = GDEH0213B73_WIDTH/8; @@ -88,6 +86,7 @@ void gdey0213b74::update() uint32_t i = 0; if (_mono_mode) { + _wakeUp(); IO.cmd(0x24); // write RAM1 for black(0)/white (1) for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { for (uint16_t x = 0; x < xLineBytes; x++) @@ -103,6 +102,7 @@ void gdey0213b74::update() } } } else { + _wakeUpGrayMode(); // 4 grays mode printf("\n4 gray MODE\n"); uint32_t bufindex = 0; @@ -137,25 +137,18 @@ void gdey0213b74::update() } uint64_t endTime = esp_timer_get_time(); - IO.cmd(0x22); // Display Update Control - IO.data(0xF7); // 0xC7 : fast > Does not work - IO.cmd(0x20); // Update sequence + IO.cmd(0x22); // Display Update Control + uint8_t twenty_two = (_mono_mode) ? 0xF7 : 0xC7; + IO.data(twenty_two); // When 4 gray 0xC7 : Same as gdeh042Z96 + IO.cmd(0x20); // Update sequence + _waitBusy("update full"); uint64_t powerOnTime = esp_timer_get_time(); printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); - _sleep(); // power off - // Non SPI-Optimized - /* for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { - for (uint16_t x = 0; x < GDEH0213B73_WIDTH / 8; x++) - { - uint16_t idx = y * (GDEH0213B73_WIDTH / 8) + x; - uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; - IO.data(~data); - } - } */ + _sleep(); } void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) @@ -364,46 +357,45 @@ void gdey0213b74::_wakeUp(){ _waitBusy("wakeup CMDs"); } -void gdey0213b74::_wakeUpFast(){ +void gdey0213b74::_wakeUpGrayMode(){ IO.reset(10); _waitBusy("RST reset"); IO.cmd(0x12); //SWRESET _waitBusy("SWRESET"); - IO.cmd(0x01); //Driver output control - IO.data(0x27); - IO.data(0x01); - IO.data(0x01); //Show mirror - - IO.cmd(0x11); //data entry mode - IO.data(0x01); - - IO.cmd(0x44); //set Ram-X address start/end position - IO.data(0x00); - IO.data(0x0F);//0x0F-->(15+1)*8=128 - - IO.cmd(0x45); //set Ram-Y address start/end position - IO.data(0x27);//0x0127-->(295+1)=296 - IO.data(0x01); - IO.data(0x00); - IO.data(0x00); - - IO.cmd(0x3C); //BorderWavefrom - IO.data(0x05); - - IO.cmd(0x18); //Read built-in temperature sensor - IO.data(0x80); - - IO.cmd(0x21); // Display update control - IO.data(0x00); - IO.data(0x80); - - IO.cmd(0x4E); // set RAM x address count to 0; - IO.data(0x00); - IO.cmd(0x4F); // set RAM y address count to 0X199; - IO.data(0x27); - IO.data(0x01); - _waitBusy("wakeup GUI"); + IO.cmd(0x0C); // Soft start setting + IO.data(0x8B); + IO.data(0x9C); + IO.data(0x96); + IO.data(0x0F); + + IO.cmd(0x11); // Data entry mode + IO.data(0x01); + IO.cmd(0x44); + + // RAM Addresses + IO.cmd(0x44); //set Ram-X address start/end position + IO.data(0x00); + IO.data(0x0F); + + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0xF9); + IO.data(0x00); + IO.data(0x00); + IO.data(0x00); + + IO.data(0x01); + IO.data(0x00); // RAM y address end at 00h + IO.data(0x00); + IO.cmd(0x3C); // board + IO.data(0x01); // HIZ + + IO.cmd(0x18); + IO.data(0X80); + IO.cmd(0x22); + IO.data(0XB1); //Load Temperature and waveform setting. + IO.cmd(0x20); + _waitBusy("epd_wakeup swreset"); } void gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) From 64039119860dcf09e6a64feed0c72503490fbcfd Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sun, 30 Oct 2022 08:59:19 +0100 Subject: [PATCH 18/49] #68 Add provisionary LUT for 4 gray mode in gdey0213b74 --- .../CalEPD/include/goodisplay/gdey0213b74.h | 3 +- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 35 ++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index b33e2350..57409ff3 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -70,5 +70,6 @@ class gdey0213b74 : public Epd void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); // Command & data structs - static const epd_lut_100 lut_data_part; + // LUT tables for this display are filled with zeroes at the end with writeLuts() + static const epd_init_42 lut; }; diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 4f8a4eae..4b7ceb39 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -10,6 +10,18 @@ The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ #define GDEH0213B73_PU_DELAY 300 +#define T1 0x0A + +// Grays Waveform +DRAM_ATTR const epd_init_42 gdey0213b74::lut = { + 0x32, { + 0x00 ,T1 ,0x00 ,0x00 ,0x00 ,0x01, +0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, +0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, +0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00}, 42}; // Constructor GDEY0213B74 gdey0213b74::gdey0213b74(EpdSpi& dio): @@ -103,8 +115,13 @@ void gdey0213b74::update() } } else { _wakeUpGrayMode(); + IO.cmd(0x32); + for (int i = 0; i < sizeof(lut.data); ++i) { + IO.data(lut.data[i]); + } + // 4 grays mode - printf("\n4 gray MODE\n"); + printf("\n4 gray MODE. LUT table needs additional settings!\n"); uint32_t bufindex = 0; uint16_t bufferLenght = GDEH0213B73_BUFFER_SIZE+1; // 4000 uint16_t bufferMaxSpi = 2000; @@ -137,10 +154,10 @@ void gdey0213b74::update() } uint64_t endTime = esp_timer_get_time(); - IO.cmd(0x22); // Display Update Control + IO.cmd(0x22); // Display Update Control uint8_t twenty_two = (_mono_mode) ? 0xF7 : 0xC7; IO.data(twenty_two); // When 4 gray 0xC7 : Same as gdeh042Z96 - IO.cmd(0x20); // Update sequence + IO.cmd(0x20); // Update sequence _waitBusy("update full"); uint64_t powerOnTime = esp_timer_get_time(); @@ -288,14 +305,13 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { { case 1: //printf("dg "); - // Dark gray: Correct + // Dark gray: Could not make this work _buffer1[i] = _buffer1[i] & (0xFF ^ mask); _buffer2[i] = _buffer2[i] | mask; break; case 2: - //printf("g "); - // Light gray: Correct - _buffer1[i] = _buffer1[i] | mask; + //printf("lg "); + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); _buffer2[i] = _buffer2[i] & (0xFF ^ mask); break; case 3: @@ -304,9 +320,10 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { _buffer2[i] = _buffer2[i] | mask; break; default: - // Black - _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + // Light gray + _buffer1[i] = _buffer1[i] | mask; _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + //printf("%d %x %x|", i, _buffer1[i], _buffer2[i]); break; } From 51b899fe50808aa5e7ea251493fe69b6c10f878e Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sun, 30 Oct 2022 11:42:15 +0100 Subject: [PATCH 19/49] New gdey0154d67 display implemented --- components/CalEPD/CMakeLists.txt | 4 ++ .../CalEPD/include/goodisplay/gdey0154d67.h | 69 +++++++++++++++++++ .../CalEPD/include/goodisplay/gdey0213b74.h | 3 +- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 components/CalEPD/include/goodisplay/gdey0154d67.h diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index fbc4b1fc..8205f8b8 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -12,7 +12,11 @@ set(srcs "models/wave12i48.cpp" # Touch model, please also enable FT6X36-IDF in the REQUIRE section #"models/gdew027w3T.cpp" + # New GOODISPLAY models will be in goodisplay directory "models/goodisplay/gdey0213b74.cpp" + "models/goodisplay/gdey0154d67.cpp" + + "models/gdew0213i5f.cpp" "models/gdep015OC1.cpp" "models/gdeh0154d67.cpp" diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h new file mode 100644 index 00000000..04158360 --- /dev/null +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -0,0 +1,69 @@ +// GOODISPLAY product https://www.good-display.com/product/388.html +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include + +// Controller: SSD1681 (Acts similar than IL3829) +#define GDEY0154D67_WIDTH 200 +#define GDEY0154D67_HEIGHT 200 +#define GDEY0154D67_BUFFER_SIZE (uint32_t(GDEY0154D67_WIDTH) * uint32_t(GDEY0154D67_HEIGHT) / 8) +// 1 byte of this color in the buffer +#define GDEY0154D67_8PIX_BLACK 0xFF +#define GDEY0154D67_8PIX_WHITE 0x00 + +class gdey0154d67 : public Epd +{ + public: + gdey0154d67(EpdSpi& IO); + uint8_t colors_supported = 1; + + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method + + // EPD tests + void init(bool debug = false); + void initFullUpdate(); + void initPartialUpdate(); + + void fillScreen(uint16_t color); + void update(); + // Partial update of rectangle from buffer to screen, does not power off + void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); + + private: + EpdSpi& IO; + uint8_t _buffer[GDEY0154D67_BUFFER_SIZE]; + bool color = false; + bool _initial = true; + bool _debug_buffer = false; + void _PowerOn(); + + void _setRamDataEntryMode(uint8_t em); + void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); + void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); + + uint16_t _setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye); + void _wakeUp(); + + void _wakeUp(uint8_t em); + void _sleep(); + void _waitBusy(const char* message, uint16_t busy_time); + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); + + // Command & data structs + static const epd_init_30 LUTDefault_full; + static const epd_init_30 LUTDefault_part; + static const epd_init_3 GDOControl; +}; diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index 57409ff3..3ab2731c 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -71,5 +71,6 @@ class gdey0213b74 : public Epd void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); // Command & data structs // LUT tables for this display are filled with zeroes at the end with writeLuts() - static const epd_init_42 lut; + static const epd_init_42 lut1; + static const epd_init_60 lut; }; From be0e9ad2715b329cfb90e69e4b002779e66a9659 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sun, 30 Oct 2022 11:48:48 +0100 Subject: [PATCH 20/49] Add gdey0154d67 class --- components/CalEPD/CMakeLists.txt | 10 +- .../CalEPD/include/goodisplay/gdey0154d67.h | 1 + .../CalEPD/models/goodisplay/gdey0154d67.cpp | 356 ++++++++++++++++++ 3 files changed, 362 insertions(+), 5 deletions(-) create mode 100644 components/CalEPD/models/goodisplay/gdey0154d67.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index 8205f8b8..ca240ba3 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -1,5 +1,10 @@ # Add only the display srcs you are going to use if you want to keep compiled srcs to a minimum: set(srcs + # New GOODISPLAY models will be in goodisplay directory + "models/goodisplay/gdey0213b74.cpp" + "models/goodisplay/gdey0154d67.cpp" + + # Other mixed brands mostly GOODISPLAY based or using their epapers "models/wave12i48.cpp" "models/gdew075HD.cpp" "models/gdew075T7.cpp" @@ -12,11 +17,6 @@ set(srcs "models/wave12i48.cpp" # Touch model, please also enable FT6X36-IDF in the REQUIRE section #"models/gdew027w3T.cpp" - # New GOODISPLAY models will be in goodisplay directory - "models/goodisplay/gdey0213b74.cpp" - "models/goodisplay/gdey0154d67.cpp" - - "models/gdew0213i5f.cpp" "models/gdep015OC1.cpp" "models/gdeh0154d67.cpp" diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h index 04158360..7b0b6bbd 100644 --- a/components/CalEPD/include/goodisplay/gdey0154d67.h +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -1,4 +1,5 @@ // GOODISPLAY product https://www.good-display.com/product/388.html +// can be used alond DESPI-C03 adapter with Front light #include #include #include diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp new file mode 100644 index 00000000..7325b32d --- /dev/null +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -0,0 +1,356 @@ +// GOODISPLAY product https://www.good-display.com/product/388.html +#include "goodisplay/gdey0154d67.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include +//Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. +//full screen update LUT +const epd_init_30 gdey0154d67::LUTDefault_full={ +0x32, { + 0x50, 0xAA, 0x55, 0xAA, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +},30}; + +const epd_init_30 gdey0154d67::LUTDefault_part={ +0x32, { + 0x10, 0x18, 0x18, 0x08, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x44, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +},30}; + +DRAM_ATTR const epd_init_3 gdey0154d67::GDOControl={ +0x01,{(GDEY0154D67_HEIGHT - 1) % 256, (GDEY0154D67_HEIGHT - 1) / 256, 0x00},3 +}; + +// Partial Update Delay +#define GDEY0154D67_PU_DELAY 100 + + +// Constructor +gdey0154d67::gdey0154d67(EpdSpi& dio): + Adafruit_GFX(GDEY0154D67_WIDTH, GDEY0154D67_HEIGHT), + Epd(GDEY0154D67_WIDTH, GDEY0154D67_HEIGHT), IO(dio) +{ + printf("gdey0154d67() %d*%d\n", + GDEY0154D67_WIDTH, GDEY0154D67_HEIGHT); +} + +void gdey0154d67::initFullUpdate(){ + _wakeUp(0x01); + + IO.cmd(LUTDefault_full.cmd); // boost + for (int i=0;i(18+1)*8=200 + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0xC7); //0xC7-->(199+1)=200 + IO.data(0x00); + IO.data(0x00); + IO.data(0x00); + IO.cmd(0x3c); //BorderWavefrom + IO.data(0x01); + IO.cmd(0x18); + IO.data(0x80); + IO.cmd(0x22); // //Load Temperature and waveform setting. + IO.data(0XB1); + IO.cmd(0x20); + IO.cmd(0x4e); // set RAM x address count to 0; + IO.data(0x00); + IO.cmd(0x4f); // set RAM y address count to 0X199; + IO.data(0xC7); + IO.data(0x00); +} + +void gdey0154d67::update() +{ + initFullUpdate(); + printf("BUFF Size:%d\n",sizeof(_buffer)); + + IO.cmd(0x24); // update current data + for (uint16_t y = GDEY0154D67_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < GDEY0154D67_WIDTH / 8; x++) + { + uint16_t idx = y * (GDEY0154D67_WIDTH / 8) + x; + uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; + IO.data(~data); + } + } + IO.cmd(0x22); + IO.data(0xc4); + IO.cmd(0x20); + _waitBusy("_Update_Full", 1200); + IO.cmd(0xff); + + _sleep(); +} + +void gdey0154d67::_setRamDataEntryMode(uint8_t em) +{ + const uint16_t xPixelsPar = GDEY0154D67_WIDTH - 1; + const uint16_t yPixelsPar = GDEY0154D67_HEIGHT - 1; + em = gx_uint16_min(em, 0x03); + IO.cmd(0x11); + IO.data(em); + switch (em) + { + case 0x00: // x decrease, y decrease + _SetRamArea(xPixelsPar / 8, 0x00, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x01: // x increase, y decrease : as in demo code + _SetRamArea(0x00, xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(0x00, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x02: // x decrease, y increase + _SetRamArea(xPixelsPar / 8, 0x00, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, 0x00, 0x00); // set ram + break; + case 0x03: // x increase, y increase : normal mode + _SetRamArea(0x00, xPixelsPar / 8, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(0x00, 0x00, 0x00); // set ram + break; + } +} + +void gdey0154d67::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) +{ + IO.cmd(0x44); + IO.data(Xstart); + IO.data(Xend); + IO.cmd(0x45); + IO.data(Ystart); + IO.data(Ystart1); + IO.data(Yend); + IO.data(Yend1); +} + +void gdey0154d67::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) +{ + IO.cmd(0x4e); + IO.data(addrX); + IO.cmd(0x4f); + IO.data(addrY); + IO.data(addrY1); +} + +void gdey0154d67::_PowerOn(void) +{ + IO.cmd(0x22); + IO.data(0xc0); + IO.cmd(0x20); + _waitBusy("_PowerOn"); +} + +void gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) +{ + ESP_LOGE("gdey0154d67", "Partial update still not implemented on this display"); + if (using_rotation) _rotate(x, y, w, h); + if (x >= GDEY0154D67_WIDTH) return; + if (y >= GDEY0154D67_HEIGHT) return; + uint16_t xe = gx_uint16_min(GDEY0154D67_WIDTH, x + w) - 1; + uint16_t ye = gx_uint16_min(GDEY0154D67_HEIGHT, y + h) - 1; + uint16_t xs_d8 = x / 8; + uint16_t xe_d8 = xe / 8; + initPartialUpdate(); + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area + _SetRamPointer(xs_d8, y % 256, y / 256); // set ram + _waitBusy("partialUpdate1", 100); // needed ? + IO.cmd(0x24); + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEY0154D67_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; + IO.data(~data); + } + } + + IO.cmd(0x22); + IO.data(0x04); + IO.cmd(0x20); + _waitBusy("partialUpdate2", 300); + IO.cmd(0xff); + + vTaskDelay(GDEY0154D67_PU_DELAY/portTICK_RATE_MS); + + // update erase buffer + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area + _SetRamPointer(xs_d8, y % 256, y / 256); // set ram + _waitBusy("partialUpdate3", 100); // needed ? + IO.cmd(0x24); + + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEY0154D67_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; + IO.data(~data); + } + } + vTaskDelay(GDEY0154D67_PU_DELAY/portTICK_RATE_MS); +} + +void gdey0154d67::_waitBusy(const char* message, uint16_t busy_time){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + // On high is busy + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) { + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>7000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } + } else { + vTaskDelay(busy_time/portTICK_RATE_MS); + } +} + +void gdey0154d67::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + // On low is not busy anymore + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>7000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } +} + +void gdey0154d67::_sleep(){ + IO.cmd(0x22); // power off display + IO.data(0xc3); + IO.cmd(0x20); + _waitBusy("power_off"); +} + +void gdey0154d67::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEY0154D67_WIDTH - x - w - 1; + break; + case 2: + x = GDEY0154D67_WIDTH - x - w - 1; + y = GDEY0154D67_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEY0154D67_HEIGHT - y - h - 1; + break; + } +} + + +void gdey0154d67::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + + // check rotation, move pixel around if necessary + switch (getRotation()) + { + case 1: + swap(x, y); + x = GDEY0154D67_WIDTH - x - 1; + break; + case 2: + x = GDEY0154D67_WIDTH - x - 1; + y = GDEY0154D67_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + y = GDEY0154D67_HEIGHT - y - 1; + break; + } + uint16_t i = x / 8 + y * GDEY0154D67_WIDTH / 8; + + // This is the trick to draw colors right. Genious Jean-Marc + if (color) { + _buffer[i] = (_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + } else { + _buffer[i] = (_buffer[i] | (1 << (7 - x % 8))); + } +} From 87a03b09d824288dc485075697f16ab49ef5e59c Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sun, 30 Oct 2022 11:56:21 +0100 Subject: [PATCH 21/49] gdey0154d67 remove full update LUT --- components/CalEPD/include/goodisplay/gdey0154d67.h | 1 - components/CalEPD/models/goodisplay/gdey0154d67.cpp | 12 +----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h index 7b0b6bbd..6e96c51f 100644 --- a/components/CalEPD/include/goodisplay/gdey0154d67.h +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -64,7 +64,6 @@ class gdey0154d67 : public Epd void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); // Command & data structs - static const epd_init_30 LUTDefault_full; static const epd_init_30 LUTDefault_part; static const epd_init_3 GDOControl; }; diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index 7325b32d..8c11c9c5 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -8,12 +8,6 @@ #include #include //Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. -//full screen update LUT -const epd_init_30 gdey0154d67::LUTDefault_full={ -0x32, { - 0x50, 0xAA, 0x55, 0xAA, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -},30}; const epd_init_30 gdey0154d67::LUTDefault_part={ 0x32, { @@ -40,11 +34,7 @@ gdey0154d67::gdey0154d67(EpdSpi& dio): void gdey0154d67::initFullUpdate(){ _wakeUp(0x01); - - IO.cmd(LUTDefault_full.cmd); // boost - for (int i=0;i Date: Mon, 31 Oct 2022 09:05:39 +0100 Subject: [PATCH 22/49] gdey0154d67 demo with SPI optimization (is 100ms faster) --- .../CalEPD/include/goodisplay/gdey0154d67.h | 1 + .../CalEPD/include/goodisplay/gdey0213b74.h | 3 +- .../CalEPD/models/goodisplay/gdey0154d67.cpp | 55 +++++++++++++---- main/demos/demo-epaper.cpp | 60 +++++++++++-------- 4 files changed, 78 insertions(+), 41 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h index 6e96c51f..0fefd874 100644 --- a/components/CalEPD/include/goodisplay/gdey0154d67.h +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -29,6 +29,7 @@ class gdey0154d67 : public Epd public: gdey0154d67(EpdSpi& IO); uint8_t colors_supported = 1; + bool spi_optimized = true; void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index 3ab2731c..57409ff3 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -71,6 +71,5 @@ class gdey0213b74 : public Epd void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); // Command & data structs // LUT tables for this display are filled with zeroes at the end with writeLuts() - static const epd_init_42 lut1; - static const epd_init_60 lut; + static const epd_init_42 lut; }; diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index 8c11c9c5..8ca5f4fb 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -82,15 +82,16 @@ void gdey0154d67::_wakeUp(){ printf("_wakeUp not used in gdey0154d67"); } -void gdey0154d67::_wakeUp(uint8_t em){ - printf("wakeup() start commands\n"); +void gdey0154d67::_wakeUp(uint8_t em) { + IO.reset(10); + IO.cmd(0x12); // SWRESET + // Theoretically this display could be driven without RST pin connected + _waitBusy("RST reset"); IO.cmd(GDOControl.cmd); for (int i=0;i 0; y--) - { - for (uint16_t x = 0; x < GDEY0154D67_WIDTH / 8; x++) + IO.cmd(0x24); // send framebuffer + + if (spi_optimized) { + // v2 SPI optimizing. Check: https://github.com/martinberlin/cale-idf/wiki/About-SPI-optimization + printf("SPI optimized buffer_len:%d", sizeof(_buffer)); + + uint8_t xLineBytes = GDEY0154D67_WIDTH / 8; + uint8_t x1buf[xLineBytes]; + + for (uint16_t y = GDEY0154D67_HEIGHT; y > 0; y--) { - uint16_t idx = y * (GDEY0154D67_WIDTH / 8) + x; - uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; - IO.data(~data); + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_buffer)) ? ~ _buffer[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + + } else { + // NOT optimized: is minimal the time difference for small buffers like this one + for (uint16_t y = GDEY0154D67_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < GDEY0154D67_WIDTH / 8; x++) + { + uint16_t idx = y * (GDEY0154D67_WIDTH / 8) + x; + uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0xFF; + IO.data(~data); + } } } + uint64_t endTime = esp_timer_get_time(); IO.cmd(0x22); IO.data(0xc4); + // NOTE: Using F7 as in the GD example the display turns black into gray at the end. With C4 is fine IO.cmd(0x20); _waitBusy("_Update_Full", 1200); - IO.cmd(0xff); + uint64_t powerOnTime = esp_timer_get_time(); + + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); _sleep(); } diff --git a/main/demos/demo-epaper.cpp b/main/demos/demo-epaper.cpp index 5de9054a..b92dbf1b 100644 --- a/main/demos/demo-epaper.cpp +++ b/main/demos/demo-epaper.cpp @@ -10,7 +10,8 @@ //#include //#include //#include -#include "goodisplay/gdey0213b74.h" +//#include "goodisplay/gdey0213b74.h" +#include "goodisplay/gdey0154d67.h" // Color //#include //#include @@ -25,7 +26,7 @@ Wave12I48 display(io); */ EpdSpi io; //Gdew075T7 display(io); //Gdep015OC1 display(io); -gdey0213b74 display(io); +gdey0154d67 display(io); // Enable on HIGH 5V boost converter #define GPIO_ENABLE_5V GPIO_NUM_38 @@ -69,17 +70,27 @@ void draw_content(uint8_t rotation){ printf("display.colors_supported:%d\n", display.colors_supported); foregroundColor = EPD_RED; } - - display.setCursor(4, 30); display.setTextColor(EPD_BLACK); + display.setFont(&Ubuntu_M12pt8b); + display.fillRect(1,1,11,11,EPD_BLACK); + display.fillRect(1,display.width()-10,11,11,EPD_BLACK); + display.fillRect(display.height()-10,0,10,10,EPD_BLACK); + display.fillRect(display.height()-10,display.width()-10,10,10,EPD_BLACK); + display.setCursor(10, display.height()/2-12); + display.print("corners"); + display.update(); + delay(2000); + + display.fillScreen(EPD_WHITE); + display.setCursor(4, 34); display.setFont(&Ubuntu_M24pt8b); display.println("HELLO"); display.println("TWITTER"); display.update(); delay(2000); - display.setFont(&Ubuntu_M12pt8b); display.fillScreen(EPD_WHITE); + display.setFont(&Ubuntu_M12pt8b); uint16_t firstBlock = display.width()/8; display.fillRect( 1,1,rectW, firstBlock,foregroundColor); display.fillRect(rectW,1,rectW, firstBlock,EPD_WHITE); @@ -95,7 +106,7 @@ void draw_content(uint8_t rotation){ } display.fillRect(rectW*3,firstBlock,rectW-2,firstBlock,foregroundColor); - display.setCursor(4, 10); + display.setCursor(4, 20); display.setTextColor(EPD_WHITE); display.println("OK"); @@ -103,18 +114,19 @@ void draw_content(uint8_t rotation){ display.setTextColor(EPD_BLACK); display.println("GOOD\nDISPLAY"); // DRAW Marker line - display.fillRect(1, 97, 20, 2, EPD_BLACK); - display.fillRect(1, 159, 20, 2, EPD_BLACK); + //display.fillRect(1, 97, 20, 2, EPD_BLACK); + //display.fillRect(1, 159, 20, 2, EPD_BLACK); display.update(); - delay(2000); + delay(1000); + display.fillScreen(EPD_WHITE); // test partial update - display.setCursor(1, 140); + /* display.setCursor(1, 140); //display.println("XXX"); display.fillCircle(30,120,20, EPD_BLACK); // Doing a 1, 100 prints again DISPLAY display.updateWindow(1,100, 120, 60); - delay(2000); + delay(2000); */ } void app_main(void) @@ -125,24 +137,20 @@ void app_main(void) // Test Epd class display.init(false); - display.setMonoMode(true); // false = 4 gray mode without partial update - //display.update(); - display.setRotation(0); - display.fillCircle(80, 50, 40, EPD_DARKGREY); - display.fillCircle(100, 50, 20, EPD_LIGHTGREY); - //display.update();return; - delay(1000); - + //display.setMonoMode(true); // false = 4 gray mode without partial update + + display.setRotation(0); draw_content(display.getRotation()); - display.fillScreen(EPD_WHITE); + display.spi_optimized = false; display.setRotation(1); + draw_content(display.getRotation()); + + /* + display.setRotation(2); draw_content(display.getRotation()); - // Leave the epaper White ready for storage - /* delay(2000); - display.fillScreen(EPD_WHITE); - display.update(); */ + display.setRotation(3); + draw_content(display.getRotation()); */ - gpio_set_level(GPIO_ENABLE_5V, 0); - printf("display: We are done here"); + printf("display: We are done with the demo"); } From c91c07fa406c796f7d8dcce21b45768ca7923f5d Mon Sep 17 00:00:00 2001 From: martinberlin Date: Mon, 31 Oct 2022 13:50:50 +0100 Subject: [PATCH 23/49] gdey0154d67 4 gray mode implemented --- components/CalEPD/include/epd.h | 6 + .../CalEPD/include/goodisplay/gdey0154d67.h | 21 +- .../CalEPD/models/goodisplay/gdey0154d67.cpp | 279 +++++++++++++----- 3 files changed, 229 insertions(+), 77 deletions(-) diff --git a/components/CalEPD/include/epd.h b/components/CalEPD/include/epd.h index 7982c94b..c3b51ab2 100644 --- a/components/CalEPD/include/epd.h +++ b/components/CalEPD/include/epd.h @@ -16,6 +16,12 @@ #include // Shared struct(s) for different models +typedef struct { + uint8_t cmd; + uint8_t data[159]; + uint8_t databytes; +} epd_lut_159; + typedef struct { uint8_t cmd; uint8_t data[100]; diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h index 0fefd874..442ba598 100644 --- a/components/CalEPD/include/goodisplay/gdey0154d67.h +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include // Controller: SSD1681 (Acts similar than IL3829) @@ -28,7 +28,8 @@ class gdey0154d67 : public Epd { public: gdey0154d67(EpdSpi& IO); - uint8_t colors_supported = 1; + const uint8_t colors_supported = 1; + const uint8_t partial_supported = 0; bool spi_optimized = true; void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method @@ -37,7 +38,7 @@ class gdey0154d67 : public Epd void init(bool debug = false); void initFullUpdate(); void initPartialUpdate(); - + void setMonoMode(bool mode); void fillScreen(uint16_t color); void update(); // Partial update of rectangle from buffer to screen, does not power off @@ -45,17 +46,21 @@ class gdey0154d67 : public Epd private: EpdSpi& IO; - uint8_t _buffer[GDEY0154D67_BUFFER_SIZE]; - bool color = false; + + uint8_t _mono_buffer[GDEY0154D67_BUFFER_SIZE]; + uint8_t _buffer1[GDEY0154D67_BUFFER_SIZE]; + uint8_t _buffer2[GDEY0154D67_BUFFER_SIZE]; + bool _initial = true; - bool _debug_buffer = false; + bool _mono_mode = true; + void _PowerOn(); - void _setRamDataEntryMode(uint8_t em); void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); uint16_t _setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye); + // Default wakeUp used for 4 gray mode void _wakeUp(); void _wakeUp(uint8_t em); @@ -65,6 +70,6 @@ class gdey0154d67 : public Epd void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); // Command & data structs - static const epd_init_30 LUTDefault_part; + static const epd_lut_159 lut_4_grays; static const epd_init_3 GDOControl; }; diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index 8ca5f4fb..fc6dbd02 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -9,11 +9,28 @@ #include //Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. -const epd_init_30 gdey0154d67::LUTDefault_part={ +const epd_lut_159 gdey0154d67::lut_4_grays={ 0x32, { - 0x10, 0x18, 0x18, 0x08, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x44, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -},30}; + 0x40, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x8, 0x48, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x2, 0x48, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x20, 0x48, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0xA, 0x19, 0x0, 0x3, 0x8, 0x0, 0x0, +0x14, 0x1, 0x0, 0x14, 0x1, 0x0, 0x3, +0xA, 0x3, 0x0, 0x8, 0x19, 0x0, 0x0, +0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, +0x22, 0x17, 0x41, 0x0, 0x32, 0x1C +},159}; DRAM_ATTR const epd_init_3 gdey0154d67::GDOControl={ 0x01,{(GDEY0154D67_HEIGHT - 1) % 256, (GDEY0154D67_HEIGHT - 1) / 256, 0x00},3 @@ -34,7 +51,6 @@ gdey0154d67::gdey0154d67(EpdSpi& dio): void gdey0154d67::initFullUpdate(){ _wakeUp(0x01); - _PowerOn(); if (debug_enabled) printf("initFullUpdate() LUT\n"); } @@ -42,10 +58,6 @@ void gdey0154d67::initFullUpdate(){ void gdey0154d67::initPartialUpdate(){ _wakeUp(0x03); - IO.cmd(LUTDefault_part.cmd); // boost - for (int i=0;i(18+1)*8=200 + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0xC7); //0xC7-->(199+1)=200 + IO.data(0x00); + IO.data(0x00); + IO.data(0x00); + + IO.cmd(0x3C); //BorderWavefrom + IO.data(0x00); + + IO.cmd(0x2C); //VCOM Voltage + IO.data(lut_4_grays.data[158]); //0x1C + + IO.cmd(0x3F); //EOPQ + IO.data(lut_4_grays.data[153]); + + IO.cmd(0x03); //VGH + IO.data(lut_4_grays.data[154]); + + IO.cmd(0x04); // + IO.data(lut_4_grays.data[155]); //VSH1 + IO.data(lut_4_grays.data[156]); //VSH2 + IO.data(lut_4_grays.data[157]); //VSL + + // LUT init table for 4 gray. Check if it's needed! + IO.cmd(lut_4_grays.cmd); // boost + for (int i=0; i 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_mono_buffer)) ? ~ _mono_buffer[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + } else { + // NOT optimized: is minimal the time difference for small buffers like this one for (uint16_t y = GDEY0154D67_HEIGHT; y > 0; y--) - { - for (uint16_t x = 0; x < xLineBytes; x++) { - uint16_t idx = y * xLineBytes + x; - x1buf[x] = (idx < sizeof(_buffer)) ? ~ _buffer[idx] : 0xFF; + for (uint16_t x = 0; x < GDEY0154D67_WIDTH / 8; x++) + { + uint16_t idx = y * (GDEY0154D67_WIDTH / 8) + x; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0xFF; + IO.data(~data); + } } - // Flush the X line buffer to SPI - IO.data(x1buf, sizeof(x1buf)); } - } else { - // NOT optimized: is minimal the time difference for small buffers like this one + } else { + // 4 gray mode! + _wakeUp(); + printf("buffer size: %d", sizeof(_buffer1)); + + IO.cmd(0x24); // RAM1 for (uint16_t y = GDEY0154D67_HEIGHT; y > 0; y--) - { - for (uint16_t x = 0; x < GDEY0154D67_WIDTH / 8; x++) { - uint16_t idx = y * (GDEY0154D67_WIDTH / 8) + x; - uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0xFF; - IO.data(~data); + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_buffer1)) ? ~ _buffer1[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + IO.cmd(0x26); // RAM2 + for (uint16_t y = GDEY0154D67_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_buffer2)) ? ~ _buffer2[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); } - } } uint64_t endTime = esp_timer_get_time(); IO.cmd(0x22); @@ -228,7 +349,7 @@ void gdey0154d67::_PowerOn(void) void gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { - ESP_LOGE("gdey0154d67", "Partial update still not implemented on this display"); + if (using_rotation) _rotate(x, y, w, h); if (x >= GDEY0154D67_WIDTH) return; if (y >= GDEY0154D67_HEIGHT) return; @@ -240,41 +361,26 @@ void gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram _waitBusy("partialUpdate1", 100); // needed ? + + ESP_LOGE("gdey0154d67", "Partial update still not tested on this display"); + IO.cmd(0x24); for (int16_t y1 = y; y1 <= ye; y1++) { for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) { uint16_t idx = y1 * (GDEY0154D67_WIDTH / 8) + x1; - uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; IO.data(~data); } } IO.cmd(0x22); - IO.data(0x04); + IO.data(0xFF); //0x04 IO.cmd(0x20); _waitBusy("partialUpdate2", 300); - IO.cmd(0xff); - - vTaskDelay(GDEY0154D67_PU_DELAY/portTICK_RATE_MS); - - // update erase buffer - _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area - _SetRamPointer(xs_d8, y % 256, y / 256); // set ram - _waitBusy("partialUpdate3", 100); // needed ? - IO.cmd(0x24); - - for (int16_t y1 = y; y1 <= ye; y1++) - { - for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) - { - uint16_t idx = y1 * (GDEY0154D67_WIDTH / 8) + x1; - uint8_t data = (idx < sizeof(_buffer)) ? _buffer[idx] : 0x00; - IO.data(~data); - } - } - vTaskDelay(GDEY0154D67_PU_DELAY/portTICK_RATE_MS); + + vTaskDelay(GDEY0154D67_PU_DELAY/portTICK_RATE_MS); } void gdey0154d67::_waitBusy(const char* message, uint16_t busy_time){ @@ -366,10 +472,45 @@ void gdey0154d67::drawPixel(int16_t x, int16_t y, uint16_t color) { } uint16_t i = x / 8 + y * GDEY0154D67_WIDTH / 8; - // This is the trick to draw colors right. Genious Jean-Marc - if (color) { - _buffer[i] = (_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); - } else { - _buffer[i] = (_buffer[i] | (1 << (7 - x % 8))); - } + if (_mono_mode) { + // This is the trick to draw colors right. Genious Jean-Marc + if (color) { + _mono_buffer[i] = (_mono_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + } else { + _mono_buffer[i] = (_mono_buffer[i] | (1 << (7 - x % 8))); + } + } else { + // 4 gray mode + uint8_t mask = 0x80 >> (x & 7); + + color >>= 6; // Color is from 0 (black) to 255 (white) + + switch (color) + { + case 1: + // Dark gray: Correct + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + case 2: + // Light gray: Correct + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] | mask; + break; + case 3: + // WHITE + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] | mask; + break; + default: + // Black + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + } + } } + +void gdey0154d67::setMonoMode(bool mode) { + _mono_mode = mode; +} \ No newline at end of file From b46eacd486df9729d840f5556c09b5d823574f3f Mon Sep 17 00:00:00 2001 From: martinberlin Date: Mon, 31 Oct 2022 14:36:12 +0100 Subject: [PATCH 24/49] #68 Add working 4 gray mode --- .../CalEPD/include/goodisplay/gdey0213b74.h | 7 +- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 151 ++++++++++-------- main/demos/demo-epaper.cpp | 53 ++++-- 3 files changed, 130 insertions(+), 81 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index 57409ff3..283283f0 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -35,8 +35,9 @@ class gdey0213b74 : public Epd public: gdey0213b74(EpdSpi& IO); // Counts only Ink color so BWR will have 2 - uint8_t colors_supported = 1; - uint8_t partial_supported = 1; + const uint8_t colors_supported = 1; + const uint8_t partial_supported = 1; + uint8_t spi_optimized = true; void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method @@ -71,5 +72,5 @@ class gdey0213b74 : public Epd void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); // Command & data structs // LUT tables for this display are filled with zeroes at the end with writeLuts() - static const epd_init_42 lut; + static const epd_lut_159 lut_4_grays; }; diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 4b7ceb39..29d4afe6 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -13,15 +13,28 @@ #define T1 0x0A // Grays Waveform -DRAM_ATTR const epd_init_42 gdey0213b74::lut = { - 0x32, { - 0x00 ,T1 ,0x00 ,0x00 ,0x00 ,0x01, -0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, -0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, -0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00}, 42}; +const epd_lut_159 gdey0213b74::lut_4_grays={ +0x32, { + 0x40, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x8, 0x48, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x2, 0x48, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x20, 0x48, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0xA, 0x19, 0x0, 0x3, 0x8, 0x0, 0x0, +0x14, 0x1, 0x0, 0x14, 0x1, 0x0, 0x3, +0xA, 0x3, 0x0, 0x8, 0x19, 0x0, 0x0, +0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, +0x22, 0x17, 0x41, 0x0, 0x32, 0x1C +},159}; // Constructor GDEY0213B74 gdey0213b74::gdey0213b74(EpdSpi& dio): @@ -62,8 +75,8 @@ void gdey0213b74::fillScreen(uint16_t color) if (color == 255 || color == 0) { for(uint32_t i=0;i(15+1)*8=128 IO.cmd(0x45); //set Ram-Y address start/end position - IO.data(0xF9); + IO.data(0xF9); //0xF9-->(249+1)=250 IO.data(0x00); IO.data(0x00); IO.data(0x00); - IO.data(0x01); - IO.data(0x00); // RAM y address end at 00h - IO.data(0x00); - IO.cmd(0x3C); // board - IO.data(0x01); // HIZ - - IO.cmd(0x18); - IO.data(0X80); - IO.cmd(0x22); - IO.data(0XB1); //Load Temperature and waveform setting. - IO.cmd(0x20); - _waitBusy("epd_wakeup swreset"); + IO.cmd(0x3C); //BorderWavefrom + IO.data(0x00); + + IO.cmd(0x2C); //VCOM Voltage + IO.data(lut_4_grays.data[158]); //0x1C + + IO.cmd(0x3F); //EOPQ + IO.data(lut_4_grays.data[153]); + + IO.cmd(0x03); //VGH + IO.data(lut_4_grays.data[154]); + + IO.cmd(0x04); // + IO.data(lut_4_grays.data[155]); //VSH1 + IO.data(lut_4_grays.data[156]); //VSH2 + IO.data(lut_4_grays.data[157]); //VSL + + // LUT init table for 4 gray. Check if it's needed! + IO.cmd(lut_4_grays.cmd); // boost + for (int i=0; i //#include //#include -//#include "goodisplay/gdey0213b74.h" -#include "goodisplay/gdey0154d67.h" +// New GOODISPLAY models +#include "goodisplay/gdey0213b74.h" +//#include "goodisplay/gdey0154d67.h" // Color //#include //#include @@ -26,7 +27,8 @@ Wave12I48 display(io); */ EpdSpi io; //Gdew075T7 display(io); //Gdep015OC1 display(io); -gdey0154d67 display(io); +gdey0213b74 display(io); +//gdey0154d67 display(io); // Enable on HIGH 5V boost converter #define GPIO_ENABLE_5V GPIO_NUM_38 @@ -62,21 +64,28 @@ void demo(uint16_t bkcolor, uint16_t fgcolor) void draw_content(uint8_t rotation){ // Sizes are calculated dividing the screen in 4 equal parts it may not be perfect for all models - uint8_t rectW = display.width()/4; // For 11 is 37. + uint16_t foregroundColor = EPD_BLACK; // Make some rectangles showing the different colors or grays if (display.colors_supported>1) { printf("display.colors_supported:%d\n", display.colors_supported); - foregroundColor = EPD_RED; + foregroundColor = 0xF700; // RED } display.setTextColor(EPD_BLACK); display.setFont(&Ubuntu_M12pt8b); + + uint8_t rectW = display.width(); + uint8_t rectH = display.height(); + if (display.getRotation() %2 == 0) { + rectW = display.height(); + rectH = display.width(); + } display.fillRect(1,1,11,11,EPD_BLACK); - display.fillRect(1,display.width()-10,11,11,EPD_BLACK); - display.fillRect(display.height()-10,0,10,10,EPD_BLACK); - display.fillRect(display.height()-10,display.width()-10,10,10,EPD_BLACK); - display.setCursor(10, display.height()/2-12); + display.fillRect(1,rectW-10,11,11,EPD_BLACK); + display.fillRect(rectH-10,0,10,10,EPD_BLACK); + display.fillRect(rectH-10,rectW-10,10,10,EPD_BLACK); + display.setCursor(10, rectH/2-12); display.print("corners"); display.update(); delay(2000); @@ -89,6 +98,7 @@ void draw_content(uint8_t rotation){ display.update(); delay(2000); + rectW = display.width()/4; // For 11 is 37. display.fillScreen(EPD_WHITE); display.setFont(&Ubuntu_M12pt8b); uint16_t firstBlock = display.width()/8; @@ -137,8 +147,28 @@ void app_main(void) // Test Epd class display.init(false); - + display.setFont(&Ubuntu_M12pt8b); + display.setMonoMode(true); + display.update(); + + display.setMonoMode(false); // 4 grays slower update + uint8_t xCircle = display.width()/2; + + display.fillScreen(EPD_WHITE); + display.fillCircle(xCircle,31, 30, EPD_DARKGREY); + display.fillCircle(xCircle,81, 30, EPD_LIGHTGREY); + display.fillCircle(xCircle,121, 30, EPD_BLACK); + display.fillCircle(xCircle,171, 30, EPD_WHITE); + display.setCursor(4, 140); + display.setTextColor(EPD_LIGHTGREY); + display.println("4 GRAY"); + display.setTextColor(EPD_BLACK); + display.println("4 gray"); + display.update(); + + display.setMonoMode(true); // Monochrome fast mode //display.setMonoMode(true); // false = 4 gray mode without partial update + // Partial update test display.setRotation(0); draw_content(display.getRotation()); @@ -146,8 +176,7 @@ void app_main(void) display.setRotation(1); draw_content(display.getRotation()); - /* - display.setRotation(2); + /* display.setRotation(2); draw_content(display.getRotation()); display.setRotation(3); draw_content(display.getRotation()); */ From d77c9c8b01d0a9c2645c8258e35a6e762e9143c4 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Mon, 31 Oct 2022 21:44:46 +0100 Subject: [PATCH 25/49] #68 Closer to get updateWindow working, my lord? --- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 29d4afe6..309234f1 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -10,7 +10,6 @@ The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ #define GDEH0213B73_PU_DELAY 300 -#define T1 0x0A // Grays Waveform const epd_lut_159 gdey0213b74::lut_4_grays={ @@ -182,9 +181,7 @@ void gdey0213b74::update() void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); - - IO.cmd(0x3C); // BorderWavefrom - IO.data(0x80); + if (using_rotation) _rotate(x, y, w, h); if (x >= GDEH0213B73_WIDTH) return; if (y >= GDEH0213B73_HEIGHT) return; @@ -192,7 +189,18 @@ void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b uint16_t ye = gx_uint16_min(GDEH0213B73_HEIGHT, y + h) - 1; uint16_t xs_d8 = x / 8; uint16_t xe_d8 = xe / 8; - _wakeUp(); + + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + + IO.cmd(0x01); //Driver output control + IO.data(0xF9); + IO.data(0x00); + IO.data(0x00); + IO.cmd(0x11); //data entry mode + IO.data(0x01); + IO.cmd(0x3C); // BorderWavefrom + IO.data(0x80); _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram From 1c2f599923083962ed5e3e9fe6162e554cd41c38 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 1 Nov 2022 00:14:35 +0100 Subject: [PATCH 26/49] #68 No way to fix updateWindow in 2nd get wrong Y --- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 309234f1..323e5426 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -192,24 +192,11 @@ void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b IO.cmd(0x12); //SWRESET _waitBusy("SWRESET"); - - IO.cmd(0x01); //Driver output control - IO.data(0xF9); - IO.data(0x00); - IO.data(0x00); - IO.cmd(0x11); //data entry mode - IO.data(0x01); - IO.cmd(0x3C); // BorderWavefrom - IO.data(0x80); _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram _waitBusy("updateWindow I"); - // Partial but get's out GRAY - /* Display Update Sequence Option: Enable the stage for Master Activation - A[7:0]= FFh (POR) - */ IO.cmd(0x22); IO.data(0xFF); @@ -226,8 +213,8 @@ void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b } } - // If I don't do this then the partial comes out gray: - IO.cmd(0x26); // Gray RAM + // If I don't do this then the 2nd partial comes out gray: + IO.cmd(0x26); // RAM2 for (int16_t y1 = y; y1 <= ye; y1++) { for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) From 674c18c4863608fdb64982e1cf29b3ba3d243d1a Mon Sep 17 00:00:00 2001 From: martinberlin Date: Wed, 2 Nov 2022 07:49:50 +0100 Subject: [PATCH 27/49] Add new method available to all display.printerf("%x", args) --- components/CalEPD/epd.cpp | 23 +++++++++++++++++++---- components/CalEPD/include/epd.h | 2 ++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/components/CalEPD/epd.cpp b/components/CalEPD/epd.cpp index 920b9275..4bbbd317 100644 --- a/components/CalEPD/epd.cpp +++ b/components/CalEPD/epd.cpp @@ -95,7 +95,22 @@ void Epd::newline() { write(10); } -/* - // Optionally if we would need to access GFX - // Adafruit_GFX::setTextColor(color); -*/ \ No newline at end of file +/** + * @brief Similar to printf + * Note that buffer needs to end with null character + * @param format + * @param ... va_list + */ +void Epd::printerf(const char *format, ...) { + va_list args; + va_start(args, format); + char max_buffer[1024]; + int size = vsnprintf(max_buffer, sizeof max_buffer, format, args); + va_end(args); + + if (size < sizeof(max_buffer)) { + print(std::string(max_buffer)); + } else { + ESP_LOGE("Epd::printerf", "max_buffer out of range. Increase max_buffer!"); + } +} \ No newline at end of file diff --git a/components/CalEPD/include/epd.h b/components/CalEPD/include/epd.h index c3b51ab2..926ea5f6 100644 --- a/components/CalEPD/include/epd.h +++ b/components/CalEPD/include/epd.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include "freertos/FreeRTOS.h" @@ -121,6 +122,7 @@ class Epd : public virtual Adafruit_GFX void print(const std::string& text); void print(const char c); void println(const std::string& text); + void printerf(const char *format, ...); void newline(); // Methods that should be accesible by inheriting this abstract class protected: From ff1446bdad2de6e112db48b402c34cbcf1ddb426 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 3 Nov 2022 17:29:06 +0100 Subject: [PATCH 28/49] #69 Add new class gdeq042Z21 based on gdew04Z21 --- components/CalEPD/CMakeLists.txt | 1 + components/CalEPD/include/color/gdeq042Z21.h | 57 +++++ .../CalEPD/include/goodisplay/gdey0154d67.h | 4 +- .../CalEPD/include/goodisplay/gdey0213b74.h | 4 +- components/CalEPD/models/color/gdeq042Z21.cpp | 231 ++++++++++++++++++ .../CalEPD/models/goodisplay/gdey0154d67.cpp | 52 ++-- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 36 +-- 7 files changed, 337 insertions(+), 48 deletions(-) create mode 100644 components/CalEPD/include/color/gdeq042Z21.h create mode 100644 components/CalEPD/models/color/gdeq042Z21.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index ca240ba3..cb882e92 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -29,6 +29,7 @@ set(srcs "models/color/gdew075c64.cpp" "models/color/gdeh042Z96.cpp" "models/color/gdeh042Z21.cpp" + "models/color/gdeq042Z21.cpp" "models/color/wave12i48BR.cpp" # 7 colors ACEP diff --git a/components/CalEPD/include/color/gdeq042Z21.h b/components/CalEPD/include/color/gdeq042Z21.h new file mode 100644 index 00000000..cc1b411a --- /dev/null +++ b/components/CalEPD/include/color/gdeq042Z21.h @@ -0,0 +1,57 @@ +// Product page: https://www.good-display.com/product/395.html +// 4.2 b/w/red Controller: UC8276 +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include + +#define GDEH042Z21_WIDTH 400 +#define GDEH042Z21_HEIGHT 300 +#define GDEH042Z21_BUFFER_SIZE (uint32_t(GDEH042Z21_WIDTH) * uint32_t(GDEH042Z21_HEIGHT) / 8) + +#define GDEH042Z21_8PIX_BLACK 0x00 +#define GDEH042Z21_8PIX_WHITE 0xFF +#define GDEH042Z21_8PIX_RED 0x00 +#define GDEH042Z21_8PIX_RED_WHITE 0xFF + +class Gdeq042Z21 : public Epd +{ + public: + // & Copy contructor: Copying the injected IO into our class so we can access IO methods + Gdeq042Z21(EpdSpi& IO); + uint8_t colors_supported = 3; + + // EPD tests + void init(bool debug = false); + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method + + void fillScreen(uint16_t color); + void update(); + void setModel(std::string set_model); + // This are already inherited from Epd: write(uint8_t); print(const std::string& text);println(same); + std::string model = "GDEH042Z15"; + + private: + EpdSpi& IO; + + uint8_t _black_buffer[GDEH042Z21_BUFFER_SIZE]; + uint8_t _red_buffer[GDEH042Z21_BUFFER_SIZE]; + + bool _initial = true; + + void _wakeUp(); + void _sleep(); + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); +}; \ No newline at end of file diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h index 442ba598..d94c370e 100644 --- a/components/CalEPD/include/goodisplay/gdey0154d67.h +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -24,10 +24,10 @@ #define GDEY0154D67_8PIX_BLACK 0xFF #define GDEY0154D67_8PIX_WHITE 0x00 -class gdey0154d67 : public Epd +class Gdey0154d67 : public Epd { public: - gdey0154d67(EpdSpi& IO); + Gdey0154d67(EpdSpi& IO); const uint8_t colors_supported = 1; const uint8_t partial_supported = 0; bool spi_optimized = true; diff --git a/components/CalEPD/include/goodisplay/gdey0213b74.h b/components/CalEPD/include/goodisplay/gdey0213b74.h index 283283f0..91eb2173 100644 --- a/components/CalEPD/include/goodisplay/gdey0213b74.h +++ b/components/CalEPD/include/goodisplay/gdey0213b74.h @@ -30,10 +30,10 @@ #define GDEH0213B73_BUFFER_SIZE (uint32_t(GDEH0213B73_WIDTH) * uint32_t(GDEH0213B73_HEIGHT) / 8) -class gdey0213b74 : public Epd +class Gdey0213b74 : public Epd { public: - gdey0213b74(EpdSpi& IO); + Gdey0213b74(EpdSpi& IO); // Counts only Ink color so BWR will have 2 const uint8_t colors_supported = 1; const uint8_t partial_supported = 1; diff --git a/components/CalEPD/models/color/gdeq042Z21.cpp b/components/CalEPD/models/color/gdeq042Z21.cpp new file mode 100644 index 00000000..2fb3ed3a --- /dev/null +++ b/components/CalEPD/models/color/gdeq042Z21.cpp @@ -0,0 +1,231 @@ +#include "color/gdeq042Z21.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include + +// Constructor +Gdeq042Z21::Gdeq042Z21(EpdSpi& dio): + Adafruit_GFX(GDEH042Z21_WIDTH, GDEH042Z21_HEIGHT), + Epd(GDEH042Z21_WIDTH, GDEH042Z21_HEIGHT), IO(dio) +{ + printf("Gdeq042Z21() constructor injects IO and extends Adafruit_GFX(%d,%d)\n", + GDEH042Z21_WIDTH, GDEH042Z21_HEIGHT); +} + +//Initialize the display +void Gdeq042Z21::init(bool debug) +{ + debug_enabled = debug; + if (debug_enabled) printf("Gdeq042Z21::init(%d) and reset EPD\n", debug); + //Initialize the Epaper and reset it + IO.init(4, debug); // 4MHz frequency, debug + + //Reset the display + IO.reset(20); + //setModel("GDEW042C37"); // Can be commented and set from your app_main() + fillScreen(EPD_WHITE); +} + +// Model setter. GDEH042Z15 is default but this class supports also GDEH042Z21 and GDEW042C37 +void Gdeq042Z21::setModel(std::string set_model) { + model = set_model; + printf("EPAPER model set to %s\n", set_model.c_str()); +} + +void Gdeq042Z21::_wakeUp(){ + IO.reset(10); + IO.cmd(0x04); + _waitBusy("epd_wakeup");; //waiting for the electronic paper IC to release the idle signal + + IO.cmd(0x00); //panel setting + IO.data(0x0f); // LUT from OTP 400x300 + + IO.cmd(0x50); //panel setting + IO.data(0x77); // Extra setting sent by Freddie + + // Without this Black appeared washed out near RED. If colors appear washed out try to "use boost soft start" + if (model=="Gdeq042Z21") { + printf("Sending additional boost soft start settings for %s\n", model.c_str()); + IO.cmd(0x06); // panel setting + IO.data(0x17); // Boost soft start + IO.data(0x18); + IO.data(0x18); + } +} + +void Gdeq042Z21::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>2000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } +} + +void Gdeq042Z21::_sleep(){ + IO.cmd(0X50); //VCOM AND DATA INTERVAL SETTING + IO.data(0xf7); + + IO.cmd(0X02); //power off + _waitBusy("power off"); + IO.cmd(0X07); //deep sleep + IO.data(0xA5); +} + +void Gdeq042Z21::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEH042Z21_WIDTH - x - w - 1; + break; + case 2: + x = GDEH042Z21_WIDTH - x - w - 1; + y = GDEH042Z21_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEH042Z21_HEIGHT - y - h - 1; + break; + } +} + +void Gdeq042Z21::update() +{ + uint64_t startTime = esp_timer_get_time(); + _using_partial_mode = false; + _wakeUp(); + + + // BLACK: Write RAM for black(0)/white (1) + // v2 SPI optimizing. Check: https://github.com/martinberlin/cale-idf/wiki/About-SPI-optimization + uint16_t i = 0; + uint8_t xLineBytes = GDEH042Z21_WIDTH/8; + uint8_t x1buf[xLineBytes]; + +// Note that in IC specs is 0x10 BLACK and 0x13 RED +// BLACK: Write RAM + IO.cmd(0x10); + for(uint16_t y = 1; y <= GDEH042Z21_HEIGHT; y++) { + for(uint16_t x = 1; x <= xLineBytes; x++) { + uint8_t data = i < sizeof(_black_buffer) ? _black_buffer[i] : GDEH042Z21_8PIX_WHITE; + x1buf[x-1] = data; + if (x==xLineBytes) { // Flush the X line buffer to SPI + IO.data(x1buf,sizeof(x1buf)); + } + ++i; + } + } + + i = 0; + + // RED: Write RAM + IO.cmd(0x13); + for(uint16_t y = 1; y <= GDEH042Z21_HEIGHT; y++) { + for(uint16_t x = 1; x <= xLineBytes; x++) { + uint8_t data = i < sizeof(_red_buffer) ? _red_buffer[i] : GDEH042Z21_8PIX_RED_WHITE; + //printf("%x ",data); + x1buf[x-1] = data; + if (x==xLineBytes) { + IO.data(x1buf,sizeof(x1buf)); + } + ++i; + } + } + + + uint64_t endTime = esp_timer_get_time(); + IO.cmd(0x12); //DISPLAY REFRESH + + _waitBusy("epaper refresh"); + uint64_t powerOnTime = esp_timer_get_time(); + + // GxEPD comment: Avoid double full refresh after deep sleep wakeup + // if (_initial) { // --> Original deprecated + + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + + _sleep(); +} + +void Gdeq042Z21::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + switch (getRotation()) + { + case 1: + swap(x, y); + x = GDEH042Z21_WIDTH - x - 1; + break; + case 2: + x = GDEH042Z21_WIDTH - x - 1; + y = GDEH042Z21_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + y = GDEH042Z21_HEIGHT - y - 1; + break; + } + uint16_t i = x / 8 + y * GDEH042Z21_WIDTH / 8; + + // This formulas are from gxEPD that apparently got the color right: + _black_buffer[i] = (_black_buffer[i] | (1 << (7 - x % 8))); // white pixel + _red_buffer[i] = (_red_buffer[i] | (1 << (7 - x % 8))); // white pixel + + if (color == EPD_WHITE) { + //printf("w:%x ",_black_buffer[i]); + return; + } + else if (color == EPD_BLACK) { + _black_buffer[i] = (_black_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + //printf("B "); + } + else if (color == EPD_RED) { + _red_buffer[i] = (_red_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + //printf("R %x ",_red_buffer[i]); + } +} + + +void Gdeq042Z21::fillScreen(uint16_t color) +{ + // Fill screen will be inverted with the way is done NOW + uint8_t black = GDEH042Z21_8PIX_WHITE; + uint8_t red = GDEH042Z21_8PIX_RED_WHITE; + if (color == EPD_WHITE) { + if (debug_enabled) printf("fillScreen WHITE\n"); + } else if (color == EPD_BLACK) { + black = GDEH042Z21_8PIX_BLACK; + if (debug_enabled) printf("fillScreen BLACK SELECTED\n"); + } else if (color == EPD_RED) { + red = GDEH042Z21_8PIX_RED; + if (debug_enabled) printf("fillScreen RED SELECTED\n"); + } else if ((color & 0xF100) > (0xF100 / 2)) { + red = 0xFF; + } else if ((((color & 0xF100) >> 11) + ((color & 0x07E0) >> 5) + (color & 0x001F)) < 3 * 255 / 2) { + black = 0xFF; + } + + for (uint16_t x = 0; x < sizeof(_black_buffer); x++) + { + _black_buffer[x] = black; + _red_buffer[x] = red; + } + + if (debug_enabled) printf("fillScreen(%x) black/red _buffer len:%d\n",color,sizeof(_black_buffer)); +} diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index fc6dbd02..9b2a8db5 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -9,7 +9,7 @@ #include //Place data into DRAM. Constant data gets placed into DROM by default, which is not accessible by DMA. -const epd_lut_159 gdey0154d67::lut_4_grays={ +const epd_lut_159 Gdey0154d67::lut_4_grays={ 0x32, { 0x40, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x48, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @@ -32,7 +32,7 @@ const epd_lut_159 gdey0154d67::lut_4_grays={ 0x22, 0x17, 0x41, 0x0, 0x32, 0x1C },159}; -DRAM_ATTR const epd_init_3 gdey0154d67::GDOControl={ +DRAM_ATTR const epd_init_3 Gdey0154d67::GDOControl={ 0x01,{(GDEY0154D67_HEIGHT - 1) % 256, (GDEY0154D67_HEIGHT - 1) / 256, 0x00},3 }; @@ -41,21 +41,21 @@ DRAM_ATTR const epd_init_3 gdey0154d67::GDOControl={ // Constructor -gdey0154d67::gdey0154d67(EpdSpi& dio): +Gdey0154d67::Gdey0154d67(EpdSpi& dio): Adafruit_GFX(GDEY0154D67_WIDTH, GDEY0154D67_HEIGHT), Epd(GDEY0154D67_WIDTH, GDEY0154D67_HEIGHT), IO(dio) { - printf("gdey0154d67() %d*%d\n", + printf("Gdey0154d67() %d*%d\n", GDEY0154D67_WIDTH, GDEY0154D67_HEIGHT); } -void gdey0154d67::initFullUpdate(){ +void Gdey0154d67::initFullUpdate(){ _wakeUp(0x01); _PowerOn(); if (debug_enabled) printf("initFullUpdate() LUT\n"); } -void gdey0154d67::initPartialUpdate(){ +void Gdey0154d67::initPartialUpdate(){ _wakeUp(0x03); _PowerOn(); @@ -64,10 +64,10 @@ void gdey0154d67::initPartialUpdate(){ } //Initialize the display -void gdey0154d67::init(bool debug) +void Gdey0154d67::init(bool debug) { debug_enabled = debug; - if (debug_enabled) printf("gdey0154d67::init(%d)\n", debug); + if (debug_enabled) printf("Gdey0154d67::init(%d)\n", debug); IO.init(4, debug); // 4MHz frequency printf("Free heap:%d\n", (int)xPortGetFreeHeapSize()); @@ -76,7 +76,7 @@ void gdey0154d67::init(bool debug) fillScreen(EPD_WHITE); } -void gdey0154d67::fillScreen(uint16_t color) +void Gdey0154d67::fillScreen(uint16_t color) { if (_mono_mode) { // 0xFF = 8 pixels black, 0x00 = 8 pix. white @@ -116,13 +116,13 @@ void gdey0154d67::fillScreen(uint16_t color) if (debug_enabled) printf("fillScreen(%d) _mono_buffer len:%d\n",color,sizeof(_mono_buffer)); } -uint16_t gdey0154d67::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye) { - printf("_setPartialRamArea not used in gdey0154d67"); +uint16_t Gdey0154d67::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye) { + printf("_setPartialRamArea not used in Gdey0154d67"); return 0; } // Now redefined as 4 gray mode -void gdey0154d67::_wakeUp(){ +void Gdey0154d67::_wakeUp(){ printf("_wakeUp 4 Gray\n"); IO.reset(10); IO.cmd(0x12); //SWRESET @@ -174,7 +174,7 @@ void gdey0154d67::_wakeUp(){ } } -void gdey0154d67::_wakeUp(uint8_t em) { +void Gdey0154d67::_wakeUp(uint8_t em) { IO.reset(10); IO.cmd(0x12); // SWRESET // Theoretically this display could be driven without RST pin connected @@ -210,7 +210,7 @@ void gdey0154d67::_wakeUp(uint8_t em) { } -void gdey0154d67::update() +void Gdey0154d67::update() { uint64_t startTime = esp_timer_get_time(); uint8_t xLineBytes = GDEY0154D67_WIDTH / 8; @@ -290,7 +290,7 @@ void gdey0154d67::update() _sleep(); } -void gdey0154d67::_setRamDataEntryMode(uint8_t em) +void Gdey0154d67::_setRamDataEntryMode(uint8_t em) { const uint16_t xPixelsPar = GDEY0154D67_WIDTH - 1; const uint16_t yPixelsPar = GDEY0154D67_HEIGHT - 1; @@ -318,7 +318,7 @@ void gdey0154d67::_setRamDataEntryMode(uint8_t em) } } -void gdey0154d67::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) +void Gdey0154d67::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) { IO.cmd(0x44); IO.data(Xstart); @@ -330,7 +330,7 @@ void gdey0154d67::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint IO.data(Yend1); } -void gdey0154d67::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) +void Gdey0154d67::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) { IO.cmd(0x4e); IO.data(addrX); @@ -339,7 +339,7 @@ void gdey0154d67::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) IO.data(addrY1); } -void gdey0154d67::_PowerOn(void) +void Gdey0154d67::_PowerOn(void) { IO.cmd(0x22); IO.data(0xc0); @@ -347,7 +347,7 @@ void gdey0154d67::_PowerOn(void) _waitBusy("_PowerOn"); } -void gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) +void Gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { if (using_rotation) _rotate(x, y, w, h); @@ -362,7 +362,7 @@ void gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b _SetRamPointer(xs_d8, y % 256, y / 256); // set ram _waitBusy("partialUpdate1", 100); // needed ? - ESP_LOGE("gdey0154d67", "Partial update still not tested on this display"); + ESP_LOGE("Gdey0154d67", "Partial update still not tested on this display"); IO.cmd(0x24); for (int16_t y1 = y; y1 <= ye; y1++) @@ -383,7 +383,7 @@ void gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b vTaskDelay(GDEY0154D67_PU_DELAY/portTICK_RATE_MS); } -void gdey0154d67::_waitBusy(const char* message, uint16_t busy_time){ +void Gdey0154d67::_waitBusy(const char* message, uint16_t busy_time){ if (debug_enabled) { ESP_LOGI(TAG, "_waitBusy for %s", message); } @@ -404,7 +404,7 @@ void gdey0154d67::_waitBusy(const char* message, uint16_t busy_time){ } } -void gdey0154d67::_waitBusy(const char* message){ +void Gdey0154d67::_waitBusy(const char* message){ if (debug_enabled) { ESP_LOGI(TAG, "_waitBusy for %s", message); } @@ -422,14 +422,14 @@ void gdey0154d67::_waitBusy(const char* message){ } } -void gdey0154d67::_sleep(){ +void Gdey0154d67::_sleep(){ IO.cmd(0x22); // power off display IO.data(0xc3); IO.cmd(0x20); _waitBusy("power_off"); } -void gdey0154d67::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +void Gdey0154d67::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) { switch (getRotation()) { @@ -451,7 +451,7 @@ void gdey0154d67::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) } -void gdey0154d67::drawPixel(int16_t x, int16_t y, uint16_t color) { +void Gdey0154d67::drawPixel(int16_t x, int16_t y, uint16_t color) { if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; // check rotation, move pixel around if necessary @@ -511,6 +511,6 @@ void gdey0154d67::drawPixel(int16_t x, int16_t y, uint16_t color) { } } -void gdey0154d67::setMonoMode(bool mode) { +void Gdey0154d67::setMonoMode(bool mode) { _mono_mode = mode; } \ No newline at end of file diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 323e5426..836ed7c7 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -12,7 +12,7 @@ #define GDEH0213B73_PU_DELAY 300 // Grays Waveform -const epd_lut_159 gdey0213b74::lut_4_grays={ +const epd_lut_159 Gdey0213b74::lut_4_grays={ 0x32, { 0x40, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x48, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @@ -36,19 +36,19 @@ const epd_lut_159 gdey0213b74::lut_4_grays={ },159}; // Constructor GDEY0213B74 -gdey0213b74::gdey0213b74(EpdSpi& dio): +Gdey0213b74::Gdey0213b74(EpdSpi& dio): Adafruit_GFX(GDEH0213B73_WIDTH, GDEH0213B73_HEIGHT), Epd(GDEH0213B73_WIDTH, GDEH0213B73_HEIGHT), IO(dio) { - printf("gdey0213b74() constructor injects IO and extends Adafruit_GFX(%d,%d)\n", + printf("Gdey0213b74() constructor injects IO and extends Adafruit_GFX(%d,%d)\n", GDEH0213B73_WIDTH, GDEH0213B73_HEIGHT); } //Initialize the display -void gdey0213b74::init(bool debug) +void Gdey0213b74::init(bool debug) { debug_enabled = debug; - if (debug_enabled) printf("gdey0213b74::init(%d) and reset EPD\n", debug); + if (debug_enabled) printf("Gdey0213b74::init(%d) and reset EPD\n", debug); //Initialize the Epaper and reset it IO.init(4, debug); // 4MHz frequency, debug @@ -59,7 +59,7 @@ void gdey0213b74::init(bool debug) fillScreen(EPD_WHITE); } -void gdey0213b74::fillScreen(uint16_t color) +void Gdey0213b74::fillScreen(uint16_t color) { if (_mono_mode) { uint8_t data = (color == EPD_WHITE) ? 0xFF : 0x00; @@ -99,7 +99,7 @@ void gdey0213b74::fillScreen(uint16_t color) } -void gdey0213b74::update() +void Gdey0213b74::update() { _using_partial_mode = false; uint64_t startTime = esp_timer_get_time(); @@ -178,7 +178,7 @@ void gdey0213b74::update() _sleep(); } -void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) +void Gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); @@ -229,7 +229,7 @@ void gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b _waitBusy("update partial"); } -void gdey0213b74::_waitBusy(const char* message){ +void Gdey0213b74::_waitBusy(const char* message){ if (debug_enabled) { ESP_LOGI(TAG, "_waitBusy for %s", message); } @@ -246,12 +246,12 @@ void gdey0213b74::_waitBusy(const char* message){ } } -void gdey0213b74::_sleep(){ +void Gdey0213b74::_sleep(){ IO.cmd(0x10); // deep sleep IO.data(0x01); } -void gdey0213b74::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +void Gdey0213b74::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) { switch (getRotation()) { @@ -272,7 +272,7 @@ void gdey0213b74::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) } } -void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { +void Gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; // check rotation, move pixel around if necessary @@ -334,7 +334,7 @@ void gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { } // _InitDisplay generalizing names here -void gdey0213b74::_wakeUp(){ +void Gdey0213b74::_wakeUp(){ IO.reset(10); _waitBusy("RST reset"); IO.cmd(0x12); //SWRESET @@ -376,7 +376,7 @@ void gdey0213b74::_wakeUp(){ _waitBusy("wakeup CMDs"); } -void gdey0213b74::_wakeUpGrayMode(){ +void Gdey0213b74::_wakeUpGrayMode(){ IO.reset(10); _waitBusy("RST reset"); IO.cmd(0x12); //SWRESET @@ -429,7 +429,7 @@ void gdey0213b74::_wakeUpGrayMode(){ } } -void gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) +void Gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) { // if (debug_enabled) printf("_SetRamArea(xS:%d,xE:%d,Ys:%d,Y1s:%d,Ye:%d,Ye1:%d)\n",Xstart,Xend,Ystart,Ystart1,Yend,Yend1); @@ -444,7 +444,7 @@ void gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint IO.data(Yend1); } -void gdey0213b74::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) +void Gdey0213b74::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) { // if (debug_enabled) { printf("_SetRamPointer(addrX:%d,addrY:%d,addrY1:%d)\n",addrX,addrY,addrY1); @@ -461,7 +461,7 @@ void gdey0213b74::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) //ram_entry_mode = 0x00; // y-decrement, x-decrement //ram_entry_mode = 0x01; // y-decrement, x-increment //ram_entry_mode = 0x02; // y-increment, x-decrement -void gdey0213b74::_setRamDataEntryMode(uint8_t em) +void Gdey0213b74::_setRamDataEntryMode(uint8_t em) { const uint16_t xPixelsPar = GDEH0213B73_X_PIXELS - 1; const uint16_t yPixelsPar = GDEH0213B73_Y_PIXELS - 1; @@ -492,6 +492,6 @@ void gdey0213b74::_setRamDataEntryMode(uint8_t em) /** * @brief Sets private _mode. When true is monochrome mode */ -void gdey0213b74::setMonoMode(bool mode) { +void Gdey0213b74::setMonoMode(bool mode) { _mono_mode = mode; } From fd75b0e65a469e4aac2120929d69e6055907ada7 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sun, 6 Nov 2022 20:08:04 +0100 Subject: [PATCH 29/49] #70 gdey029T94 mono & 4 gray added --- components/CalEPD/CMakeLists.txt | 1 + .../CalEPD/include/goodisplay/gdey029T94.h | 76 +++ .../CalEPD/models/goodisplay/gdey029T94.cpp | 470 ++++++++++++++++++ 3 files changed, 547 insertions(+) create mode 100644 components/CalEPD/include/goodisplay/gdey029T94.h create mode 100644 components/CalEPD/models/goodisplay/gdey029T94.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index cb882e92..81eebe83 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -3,6 +3,7 @@ set(srcs # New GOODISPLAY models will be in goodisplay directory "models/goodisplay/gdey0213b74.cpp" "models/goodisplay/gdey0154d67.cpp" + "models/goodisplay/gdey029T94.cpp" # Other mixed brands mostly GOODISPLAY based or using their epapers "models/wave12i48.cpp" diff --git a/components/CalEPD/include/goodisplay/gdey029T94.h b/components/CalEPD/include/goodisplay/gdey029T94.h new file mode 100644 index 00000000..61278a7c --- /dev/null +++ b/components/CalEPD/include/goodisplay/gdey029T94.h @@ -0,0 +1,76 @@ +// GOODISPLAY product https://www.good-display.com/product/389.html +// Controller: SSD1680 +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include + +// All comments below are from J-M Zingg (Ref. EPD) +// The physical number of pixels (for controller parameter) +#define GDEY029T94_X_PIXELS 128 +#define GDEY029T94_Y_PIXELS 296 + +// The logical width and height of the display +#define GDEY029T94_WIDTH 128 +#define GDEY029T94_HEIGHT 296 + +// Note: the visible number of display pixels is 122*250, see GDEH0213B72 V1.1 Specification.pdf +#define GDEY029T94_VISIBLE_WIDTH 128 + +#define GDEY029T94_BUFFER_SIZE (uint32_t(GDEY029T94_WIDTH) * uint32_t(GDEY029T94_HEIGHT) / 8) + +class Gdey029T94 : public Epd +{ + public: + Gdey029T94(EpdSpi& IO); + // Counts only Ink color so BWR will have 2 + const uint8_t colors_supported = 1; + const uint8_t partial_supported = 1; + uint8_t spi_optimized = true; + + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method + + // EPD tests + void init(bool debug = false); + void setMonoMode(bool mode); + void fillScreen(uint16_t color); + void update(); + void eraseDisplay(bool using_partial_update = false); + + // Partial update test status please check repository Wiki + void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); + + private: + EpdSpi& IO; + bool _mono_mode = false; + uint8_t _mono_buffer[GDEY029T94_BUFFER_SIZE]; + uint8_t _buffer1[GDEY029T94_BUFFER_SIZE]; + uint8_t _buffer2[GDEY029T94_BUFFER_SIZE]; + + bool debug_enabled = false; + + void _wakeUp(); + void _wakeUpGrayMode(); + void _sleep(); + + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); + // Ram data entry mode methods + void _setRamDataEntryMode(uint8_t em); + void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); + void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); + // Command & data structs + // LUT tables for this display are filled with zeroes at the end with writeLuts() + static const epd_lut_159 lut_4_grays; +}; diff --git a/components/CalEPD/models/goodisplay/gdey029T94.cpp b/components/CalEPD/models/goodisplay/gdey029T94.cpp new file mode 100644 index 00000000..541d337e --- /dev/null +++ b/components/CalEPD/models/goodisplay/gdey029T94.cpp @@ -0,0 +1,470 @@ +#include "goodisplay/gdey029T94.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include +/* + The EPD needs a bunch of command/data values to be initialized. They are send using the IO class +*/ +#define GDEY029T94_PU_DELAY 300 + +// Grays Waveform +const epd_lut_159 Gdey029T94::lut_4_grays={ +0x32, { + 0x40, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x8, 0x48, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x2, 0x48, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x20, 0x48, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0xA, 0x19, 0x0, 0x3, 0x8, 0x0, 0x0, +0x14, 0x1, 0x0, 0x14, 0x1, 0x0, 0x3, +0xA, 0x3, 0x0, 0x8, 0x19, 0x0, 0x0, +0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, +0x22, 0x17, 0x41, 0x0, 0x32, 0x1C +},159}; + +// Constructor GDEY0213B74 +Gdey029T94::Gdey029T94(EpdSpi& dio): + Adafruit_GFX(GDEY029T94_WIDTH, GDEY029T94_HEIGHT), + Epd(GDEY029T94_WIDTH, GDEY029T94_HEIGHT), IO(dio) +{ + printf("Gdey029T94() constructor injects IO and extends Adafruit_GFX(%d,%d)\n", + GDEY029T94_WIDTH, GDEY029T94_HEIGHT); +} + +//Initialize the display +void Gdey029T94::init(bool debug) +{ + debug_enabled = debug; + if (debug_enabled) printf("Gdey029T94::init(%d) and reset EPD\n", debug); + //Initialize the Epaper and reset it + IO.init(4, debug); // 4MHz frequency, debug + + //Reset the display + IO.reset(20); + fillScreen(EPD_WHITE); + _mono_mode = 1; + fillScreen(EPD_WHITE); +} + +void Gdey029T94::fillScreen(uint16_t color) +{ + if (_mono_mode) { + uint8_t data = (color == EPD_WHITE) ? 0xFF : 0x00; + for (uint16_t x = 0; x < sizeof(_mono_buffer); x++) + { + _mono_buffer[x] = data; + } + if (debug_enabled) printf("fillScreen(%d) _mono_buffer len:%d\n",data,sizeof(_mono_buffer)); + } else { + + // This is to make faster black & white + if (color == 255 || color == 0) { + for(uint32_t i=0;i0 && i % bufferMaxSpi == 0) { + //printf("Sent part buff %ld from %ld\n", bufindex, i); + IO.data(xbuf, bufferMaxSpi); + bufindex = 0; + } + bufindex++; + } + + bufindex = 0; + IO.cmd(0x26); //RAM2 buffer: SPI2 + for(i=0;i<=bufferLenght;i++) + { + xbuf[bufindex] = _buffer2[i]; + if (i>0 && i % bufferMaxSpi == 0) { + IO.data(xbuf, bufferMaxSpi); + bufindex = 0; + } + bufindex++; + } + } + uint64_t endTime = esp_timer_get_time(); + + IO.cmd(0x22); // Display Update Control + uint8_t twenty_two = (_mono_mode) ? 0xF7 : 0xC4; + IO.data(twenty_two); // When 4 gray 0xC4 : Same as gdeh042Z96 + IO.cmd(0x20); // Update sequence + + _waitBusy("update full"); + uint64_t powerOnTime = esp_timer_get_time(); + + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + + _sleep(); +} + +void Gdey029T94::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) +{ + ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); + + if (using_rotation) _rotate(x, y, w, h); + if (x >= GDEY029T94_WIDTH) return; + if (y >= GDEY029T94_HEIGHT) return; + uint16_t xe = gx_uint16_min(GDEY029T94_WIDTH, x + w) - 1; + uint16_t ye = gx_uint16_min(GDEY029T94_HEIGHT, y + h) - 1; + uint16_t xs_d8 = x / 8; + uint16_t xe_d8 = xe / 8; + + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area + _SetRamPointer(xs_d8, y % 256, y / 256); // set ram + _waitBusy("updateWindow I"); + + IO.cmd(0x22); + IO.data(0xFF); + + IO.cmd(0x24); // BW RAM + printf("Loop from ys:%d to ye:%d\n", y, ye); + + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEY029T94_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; + IO.data(data); + } + } + + // If I don't do this then the 2nd partial comes out gray: + IO.cmd(0x26); // RAM2 + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEY029T94_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; + IO.data(~data); + } + } + + IO.cmd(0x20); + _waitBusy("update partial"); +} + +void Gdey029T94::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>1000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } +} + +void Gdey029T94::_sleep(){ + IO.cmd(0x10); // deep sleep + IO.data(0x01); +} + +void Gdey029T94::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEY029T94_WIDTH - x - w - 1; + break; + case 2: + x = GDEY029T94_WIDTH - x - w - 1; + y = GDEY029T94_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEY029T94_HEIGHT - y - h - 1; + break; + } +} + +void Gdey029T94::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + + // check rotation, move pixel around if necessary + switch (getRotation()) + { + case 0: + x = GDEY029T94_VISIBLE_WIDTH - x; + break; + case 1: + swap(x, y); + break; + case 2: + y = GDEY029T94_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + break; + } + uint16_t i = x / 8 + y * GDEY029T94_WIDTH / 8; + uint8_t mask = 1 << (7 - x % 8); + + if (_mono_mode) { + if (color) { + _mono_buffer[i] = _mono_buffer[i] | mask; + } else { + _mono_buffer[i] = _mono_buffer[i] & (0xFF ^ mask); + } + } else { + // 4 gray mode + mask = 0x80 >> (x & 7); + color >>= 6; // Color is from 0 (black) to 255 (white) + + switch (color) + { + case 1: + // Dark gray + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] | mask; + break; + case 2: + // Light gray + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + case 3: + // White + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + default: + // Black + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] | mask; + break; + } + } +} + +// _InitDisplay generalizing names here +void Gdey029T94::_wakeUp(){ + IO.reset(10); + _waitBusy("RST reset"); + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + + IO.cmd(0x01); //Driver output control + IO.data(0x27); + IO.data(0x01); + IO.data(0x00); + + IO.cmd(0x11); //data entry mode + IO.data(0x01); + + IO.cmd(0x44); //set Ram-X address start/end position + IO.data(0x00); + IO.data(0x0F); //0x0F-->(15+1)*8=128 + + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0x27); //0x0127-->(295+1)=296 + IO.data(0x01); + IO.data(0x00); + IO.data(0x00); + + IO.cmd(0x3C); //BorderWavefrom + IO.data(0x05); + + IO.cmd(0x21); // Display update control + IO.data(0x00); + IO.data(0x80); + + IO.cmd(0x18); //Read built-in temperature sensor + IO.data(0x80); + + IO.cmd(0x4E); // set RAM x address count to 0; + IO.data(0x00); + IO.cmd(0x4F); // set RAM y address count to 0X199; + IO.data(0x27); + IO.data(0x01); + _waitBusy("wakeup CMDs"); +} + +void Gdey029T94::_wakeUpGrayMode(){ + IO.reset(10); + _waitBusy("RST reset"); + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + + IO.cmd(0x3C); //BorderWavefrom + IO.data(0x05); + + IO.cmd(0x2C); //VCOM Voltage + IO.data(lut_4_grays.data[158]); //0x1C + + IO.cmd(0x3F); //EOPQ + IO.data(lut_4_grays.data[153]); + + IO.cmd(0x03); //VGH + IO.data(lut_4_grays.data[154]); + + IO.cmd(0x04); // Check what is this about + IO.data(lut_4_grays.data[155]); //VSH1 + IO.data(lut_4_grays.data[156]); //VSH2 + IO.data(lut_4_grays.data[157]); //VSL + + // LUT init table for 4 gray. Check if it's needed! + IO.cmd(lut_4_grays.cmd); // boost + for (int i=0; i Date: Tue, 8 Nov 2022 13:19:41 +0100 Subject: [PATCH 30/49] #70 Getting better partial update --- .../CalEPD/models/goodisplay/gdey029T94.cpp | 13 +- .../{TESTER-esp32 => testing-ESP32-WROVERB} | 1205 ++++++++---- config-examples/watch/PL-flex-watch-tinypico | 1746 +++++++++++++++++ 3 files changed, 2619 insertions(+), 345 deletions(-) rename config-examples/{TESTER-esp32 => testing-ESP32-WROVERB} (55%) create mode 100644 config-examples/watch/PL-flex-watch-tinypico diff --git a/components/CalEPD/models/goodisplay/gdey029T94.cpp b/components/CalEPD/models/goodisplay/gdey029T94.cpp index 541d337e..0eabe452 100644 --- a/components/CalEPD/models/goodisplay/gdey029T94.cpp +++ b/components/CalEPD/models/goodisplay/gdey029T94.cpp @@ -178,8 +178,11 @@ void Gdey029T94::update() void Gdey029T94::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { - ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); - + //ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); + if (!_using_partial_mode) { + _using_partial_mode = true; + _wakeUp(); + } if (using_rotation) _rotate(x, y, w, h); if (x >= GDEY029T94_WIDTH) return; if (y >= GDEY029T94_HEIGHT) return; @@ -190,7 +193,8 @@ void Gdey029T94::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bo IO.cmd(0x12); //SWRESET _waitBusy("SWRESET"); - + + _setRamDataEntryMode(0x03); _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram _waitBusy("updateWindow I"); @@ -224,7 +228,8 @@ void Gdey029T94::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bo } IO.cmd(0x20); - _waitBusy("update partial"); + _waitBusy("update partial"); + //_sleep(); } void Gdey029T94::_waitBusy(const char* message){ diff --git a/config-examples/TESTER-esp32 b/config-examples/testing-ESP32-WROVERB similarity index 55% rename from config-examples/TESTER-esp32 rename to config-examples/testing-ESP32-WROVERB index 6d3dc361..920541ef 100644 --- a/config-examples/TESTER-esp32 +++ b/config-examples/testing-ESP32-WROVERB @@ -2,18 +2,190 @@ # Automatically generated file. DO NOT EDIT. # Espressif IoT Development Framework (ESP-IDF) Project Configuration # +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_DPORT_WORKAROUND="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=3 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=5 +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_DAC_PERIPH_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_APLL_MULTIPLIER_OUT_MIN_HZ=350000000 +CONFIG_SOC_APLL_MULTIPLIER_OUT_MAX_HZ=500000000 +CONFIG_SOC_APLL_MIN_HZ=5303031 +CONFIG_SOC_APLL_MAX_HZ=125000000 +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TOUCH_VERSION_1=y +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" CONFIG_IDF_TARGET="esp32" CONFIG_IDF_TARGET_ESP32=y CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 -# -# SDK tool configuration -# -CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-" -# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set -# end of SDK tool configuration - # # Build type # @@ -22,21 +194,16 @@ CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y CONFIG_APP_BUILD_GENERATE_BINARIES=y CONFIG_APP_BUILD_BOOTLOADER=y CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set # end of Build type -# -# Application manager -# -CONFIG_APP_COMPILE_TIME_DATE=y -# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set -# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set -# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set -CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 -# end of Application manager - # # Bootloader config # +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set @@ -52,32 +219,53 @@ CONFIG_BOOTLOADER_LOG_LEVEL=3 CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y # CONFIG_BOOTLOADER_FACTORY_RESET is not set # CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y CONFIG_BOOTLOADER_WDT_ENABLE=y # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set CONFIG_BOOTLOADER_WDT_TIME_MS=9000 # CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y # end of Bootloader config # # Security features # +CONFIG_SECURE_BOOT_V1_SUPPORTED=y # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set # CONFIG_SECURE_BOOT is not set # CONFIG_SECURE_FLASH_ENC_ENABLED is not set # end of Security features +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y + # # Serial flasher config # -CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 -CONFIG_ESPTOOLPY_WITH_STUB=y +# CONFIG_ESPTOOLPY_NO_STUB is not set # CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set # CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set CONFIG_ESPTOOLPY_FLASHMODE_DIO=y # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y CONFIG_ESPTOOLPY_FLASHMODE="dio" # CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set CONFIG_ESPTOOLPY_FLASHFREQ_40M=y @@ -89,22 +277,17 @@ CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set CONFIG_ESPTOOLPY_FLASHSIZE="2MB" -CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set CONFIG_ESPTOOLPY_BEFORE_RESET=y # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set CONFIG_ESPTOOLPY_BEFORE="default_reset" CONFIG_ESPTOOLPY_AFTER_RESET=y # CONFIG_ESPTOOLPY_AFTER_NORESET is not set CONFIG_ESPTOOLPY_AFTER="hard_reset" -# CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set -CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y -# CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set -# CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set -CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200 CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 # end of Serial flasher config @@ -112,6 +295,7 @@ CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 # Partition Table # CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set # CONFIG_PARTITION_TABLE_TWO_OTA is not set # CONFIG_PARTITION_TABLE_CUSTOM is not set CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" @@ -120,6 +304,19 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000 CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table +# +# CALE Configuration +# +CONFIG_ESP_WIFI_SSID="KabelBox-A210" +CONFIG_ESP_WIFI_PASSWORD="" +CONFIG_CALE_SCREEN_URL="http://cale.es" +CONFIG_CALE_BEARER_TOKEN="" +CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=60 +CONFIG_ESP_TRIGGER_SENSOR1=27 +CONFIG_DISPLAY_ROTATION=0 +CONFIG_ESP_MAXIMUM_RETRY=5 +# end of CALE Configuration + # # Display Configuration # @@ -133,10 +330,10 @@ CONFIG_PARTITION_TABLE_MD5=y # CONFIG_EINK_SPI_MOSI=23 CONFIG_EINK_SPI_CLK=18 -CONFIG_EINK_SPI_CS=32 -CONFIG_EINK_DC=27 -CONFIG_EINK_RST=26 -CONFIG_EINK_BUSY=35 +CONFIG_EINK_SPI_CS=5 +CONFIG_EINK_DC=4 +CONFIG_EINK_RST=22 +CONFIG_EINK_BUSY=34 # # Important: Leave the rest of unconfigured GPIOs to -1 unless multi-SPI channels (wave12I48) or Plasticlogic EPDs @@ -145,7 +342,7 @@ CONFIG_EINK_BUSY=35 # # CS2 and MISO pins apply only to Plasticlogic.com epaper displays # -CONFIG_EINK_SPI_CS2=2 +CONFIG_EINK_SPI_CS2=4 CONFIG_EINK_SPI_MISO=19 # @@ -163,32 +360,35 @@ CONFIG_EINK_SPI_MISO=19 # # | M1 | S1 | # -CONFIG_EINK_SPI_M1_CS=0 -CONFIG_EINK_SPI_S1_CS=0 -CONFIG_EINK_SPI_M2_CS=0 -CONFIG_EINK_SPI_S2_CS=0 -CONFIG_EINK_SPI_M1_BUSY=0 -CONFIG_EINK_SPI_S1_BUSY=0 -CONFIG_EINK_SPI_M2_BUSY=0 -CONFIG_EINK_SPI_S2_BUSY=0 -CONFIG_EINK_M1S1_DC=0 -CONFIG_EINK_M2S2_DC=0 -CONFIG_EINK_M1S1_RST=0 -CONFIG_EINK_M2S2_RST=0 +CONFIG_EINK_SPI_M1_CS=23 +CONFIG_EINK_SPI_S1_CS=22 +CONFIG_EINK_SPI_M2_CS=16 +CONFIG_EINK_SPI_S2_CS=19 +CONFIG_EINK_SPI_M1_BUSY=32 +CONFIG_EINK_SPI_S1_BUSY=26 +CONFIG_EINK_SPI_M2_BUSY=18 +CONFIG_EINK_SPI_S2_BUSY=4 +CONFIG_EINK_M1S1_DC=25 +CONFIG_EINK_M2S2_DC=17 +CONFIG_EINK_M1S1_RST=33 +CONFIG_EINK_M2S2_RST=5 # end of Display Configuration # -# CALE Configuration +# Touch FT6X36 Configuration # -CONFIG_ESP_WIFI_SSID="KabelBox-A210" -CONFIG_ESP_WIFI_PASSWORD="14237187131701431551" -CONFIG_CALE_SCREEN_URL="http://img.cale.es/bmp/fasani/5e4d6dd0bd483" -CONFIG_CALE_BEARER_TOKEN="" -CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=60 -CONFIG_ESP_TRIGGER_SENSOR1=27 -CONFIG_DISPLAY_ROTATION=1 -CONFIG_ESP_MAXIMUM_RETRY=5 -# end of CALE Configuration + +# +# The touch chip needs an I2C port and one input GPIO +# +CONFIG_TOUCH_SDA=21 +CONFIG_TOUCH_SDL=22 +CONFIG_TOUCH_INT=17 +CONFIG_I2C_MASTER_FREQUENCY=50000 +CONFIG_L58_MULTITOUCH=0 +CONFIG_FT6X36_DEBUG=0 +CONFIG_FT6X36_DEBUG_EVENTS=0 +# end of Touch FT6X36 Configuration # # Compiler options @@ -200,6 +400,10 @@ CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y # CONFIG_COMPILER_CXX_EXCEPTIONS is not set # CONFIG_COMPILER_CXX_RTTI is not set CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y @@ -207,7 +411,7 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y # CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set -# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set # end of Compiler options # @@ -217,8 +421,12 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y # # Application Level Tracing # -# CONFIG_APPTRACE_DEST_TRAX is not set +# CONFIG_APPTRACE_DEST_JTAG is not set CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 CONFIG_APPTRACE_LOCK_ENABLE=y # end of Application Level Tracing @@ -226,56 +434,111 @@ CONFIG_APPTRACE_LOCK_ENABLE=y # Bluetooth # # CONFIG_BT_ENABLED is not set -CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 -CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0 -CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 -CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 -CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 -CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 -CONFIG_BT_RESERVE_DRAM=0 # end of Bluetooth # -# CoAP Configuration +# Driver Configurations # -CONFIG_COAP_MBEDTLS_PSK=y -# CONFIG_COAP_MBEDTLS_PKI is not set -# CONFIG_COAP_MBEDTLS_DEBUG is not set -CONFIG_COAP_LOG_DEFAULT_LEVEL=0 -# end of CoAP Configuration # -# Driver configurations +# Legacy ADC Configuration # +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set # -# ADC configuration +# Legacy ADC Calibration Configuration # -# CONFIG_ADC_FORCE_XPD_FSM is not set -CONFIG_ADC_DISABLE_DAC=y -# end of ADC configuration +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration # -# SPI configuration +# SPI Configuration # # CONFIG_SPI_MASTER_IN_IRAM is not set CONFIG_SPI_MASTER_ISR_IN_IRAM=y # CONFIG_SPI_SLAVE_IN_IRAM is not set CONFIG_SPI_SLAVE_ISR_IN_IRAM=y -# end of SPI configuration +# end of SPI Configuration + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +# end of TWAI Configuration # -# UART configuration +# UART Configuration # # CONFIG_UART_ISR_IN_IRAM is not set -# end of UART configuration +# end of UART Configuration # -# RTCIO configuration +# GPIO Configuration # -# CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set -# end of RTCIO configuration -# end of Driver configurations +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration +# end of Driver Configurations # # eFuse Bit Manager @@ -293,108 +556,33 @@ CONFIG_EFUSE_MAX_BLK_LEN=192 # CONFIG_ESP_TLS_USING_MBEDTLS=y # CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set # CONFIG_ESP_TLS_SERVER is not set # CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set # end of ESP-TLS # -# ESP32-specific +# ADC and ADC Calibration # -CONFIG_ESP32_REV_MIN_0=y -# CONFIG_ESP32_REV_MIN_1 is not set -# CONFIG_ESP32_REV_MIN_2 is not set -# CONFIG_ESP32_REV_MIN_3 is not set -CONFIG_ESP32_REV_MIN=0 -CONFIG_ESP32_DPORT_WORKAROUND=y -# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set -CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y -# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set -CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 -# CONFIG_ESP32_SPIRAM_SUPPORT is not set -# CONFIG_ESP32_TRAX is not set -CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 -# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set -CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y -CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 -# CONFIG_ESP32_ULP_COPROC_ENABLED is not set -CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0 -CONFIG_ESP32_DEBUG_OCDAWARE=y -CONFIG_ESP32_BROWNOUT_DET=y -CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set -CONFIG_ESP32_BROWNOUT_DET_LVL=0 -CONFIG_ESP32_REDUCE_PHY_TX_POWER=y -CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y -# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set -# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set -# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set -CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y -# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set -# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set -# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set -CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 -CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 -CONFIG_ESP32_XTAL_FREQ_40=y -# CONFIG_ESP32_XTAL_FREQ_26 is not set -# CONFIG_ESP32_XTAL_FREQ_AUTO is not set -CONFIG_ESP32_XTAL_FREQ=40 -# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set -# CONFIG_ESP32_NO_BLOBS is not set -# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set -# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set -CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5 -# end of ESP32-specific +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set # -# Power Management +# ADC Calibration Configurations # -# CONFIG_PM_ENABLE is not set -# end of Power Management +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations -# -# ADC-Calibration -# -CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y -CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y -CONFIG_ADC_CAL_LUT_ENABLE=y -# end of ADC-Calibration +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# end of ADC and ADC Calibration # # Common ESP-related # CONFIG_ESP_ERR_TO_NAME_LOOKUP=y -CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 -CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 -CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 -CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y -CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 -CONFIG_ESP_CONSOLE_UART_DEFAULT=y -# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set -# CONFIG_ESP_CONSOLE_NONE is not set -CONFIG_ESP_CONSOLE_UART=y -CONFIG_ESP_CONSOLE_UART_NUM=0 -CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 -CONFIG_ESP_INT_WDT=y -CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 -CONFIG_ESP_INT_WDT_CHECK_CPU1=y -CONFIG_ESP_TASK_WDT=y -# CONFIG_ESP_TASK_WDT_PANIC is not set -CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 -CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y -CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y -# CONFIG_ESP_PANIC_HANDLER_IRAM is not set -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_BT_OFFSET=2 -CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y # end of Common ESP-related # @@ -403,7 +591,6 @@ CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y CONFIG_ETH_ENABLED=y CONFIG_ETH_USE_ESP32_EMAC=y CONFIG_ETH_PHY_INTERFACE_RMII=y -# CONFIG_ETH_PHY_INTERFACE_MII is not set CONFIG_ETH_RMII_CLK_INPUT=y # CONFIG_ETH_RMII_CLK_OUTPUT is not set CONFIG_ETH_RMII_CLK_IN_GPIO=0 @@ -412,7 +599,10 @@ CONFIG_ETH_DMA_RX_BUFFER_NUM=10 CONFIG_ETH_DMA_TX_BUFFER_NUM=10 CONFIG_ETH_USE_SPI_ETHERNET=y # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set # CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set # end of Ethernet # @@ -433,6 +623,7 @@ CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y # CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y # CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set # end of ESP HTTP client # @@ -444,12 +635,14 @@ CONFIG_HTTPD_ERR_RESP_NO_DELAY=y CONFIG_HTTPD_PURGE_BUF_LEN=32 # CONFIG_HTTPD_LOG_PURGE_DATA is not set # CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set # end of HTTP Server # # ESP HTTPS OTA # -# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set # end of ESP HTTPS OTA # @@ -458,36 +651,232 @@ CONFIG_HTTPD_PURGE_BUF_LEN=32 # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set # end of ESP HTTPS server +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +CONFIG_ESP32_REV_MIN=0 + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + # # ESP NETIF Adapter # CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 CONFIG_ESP_NETIF_TCPIP_LWIP=y # CONFIG_ESP_NETIF_LOOPBACK is not set -CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set # end of ESP NETIF Adapter +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_REDUCE_TX_POWER=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + # # ESP System Settings # +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# end of Brownout Detector + +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y # end of ESP System Settings +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + # # High resolution timer (esp_timer) # # CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 -# CONFIG_ESP_TIMER_IMPL_FRC2 is not set +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set CONFIG_ESP_TIMER_IMPL_TG0_LAC=y # end of High resolution timer (esp_timer) # # Wi-Fi # +CONFIG_ESP32_WIFI_ENABLED=y CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 # CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set @@ -504,32 +893,41 @@ CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 -# CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE is not set CONFIG_ESP32_WIFI_IRAM_OPT=y CONFIG_ESP32_WIFI_RX_IRAM_OPT=y CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set # end of Wi-Fi -# -# PHY -# -CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y -# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set -CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 -CONFIG_ESP32_PHY_MAX_TX_POWER=20 -# end of PHY - # # Core dump # -# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set -# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set -CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y # end of Core dump # # FAT Filesystem support # +CONFIG_FATFS_VOLUME_COUNT=2 +# CONFIG_FATFS_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set CONFIG_FATFS_CODEPAGE_437=y # CONFIG_FATFS_CODEPAGE_720 is not set @@ -552,6 +950,9 @@ CONFIG_FATFS_CODEPAGE_437=y # CONFIG_FATFS_CODEPAGE_936 is not set # CONFIG_FATFS_CODEPAGE_949 is not set # CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set CONFIG_FATFS_CODEPAGE=437 CONFIG_FATFS_LFN_NONE=y # CONFIG_FATFS_LFN_HEAP is not set @@ -559,68 +960,72 @@ CONFIG_FATFS_LFN_NONE=y CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set # end of FAT Filesystem support # -# Modbus configuration -# -CONFIG_FMB_COMM_MODE_RTU_EN=y -CONFIG_FMB_COMM_MODE_ASCII_EN=y -CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150 -CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 -CONFIG_FMB_QUEUE_LENGTH=20 -CONFIG_FMB_SERIAL_TASK_STACK_SIZE=2048 -CONFIG_FMB_SERIAL_BUF_SIZE=256 -CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 -CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 -CONFIG_FMB_SERIAL_TASK_PRIO=10 -# CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT is not set -CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 -CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 -CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 -CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 -CONFIG_FMB_TIMER_PORT_ENABLED=y -CONFIG_FMB_TIMER_GROUP=0 -CONFIG_FMB_TIMER_INDEX=0 -# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set -# end of Modbus configuration +# FreeRTOS +# # -# FreeRTOS +# Kernel # +# CONFIG_FREERTOS_SMP is not set # CONFIG_FREERTOS_UNICORE is not set -CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF -CONFIG_FREERTOS_CORETIMER_0=y -# CONFIG_FREERTOS_CORETIMER_1 is not set CONFIG_FREERTOS_HZ=100 -CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y -# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set -CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 -CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y -# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set -# CONFIG_FREERTOS_ASSERT_DISABLE is not set CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 -CONFIG_FREERTOS_ISR_STACKSIZE=1536 -# CONFIG_FREERTOS_LEGACY_HOOKS is not set +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 -# CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION is not set +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y CONFIG_FREERTOS_DEBUG_OCDAWARE=y -# CONFIG_FREERTOS_FPU_IN_ISR is not set # end of FreeRTOS +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + # # Heap memory debugging # @@ -633,18 +1038,6 @@ CONFIG_HEAP_TRACING_OFF=y # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set # end of Heap memory debugging -# -# jsmn -# -# CONFIG_JSMN_PARENT_LINKS is not set -# CONFIG_JSMN_STRICT is not set -# end of jsmn - -# -# libsodium -# -# end of libsodium - # # Log output # @@ -655,6 +1048,10 @@ CONFIG_LOG_DEFAULT_LEVEL_INFO=y # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 CONFIG_LOG_COLORS=y CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set @@ -664,6 +1061,8 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # LWIP # CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y # CONFIG_LWIP_L2_TO_L3_COPY is not set # CONFIG_LWIP_IRAM_OPTIMIZATION is not set @@ -675,26 +1074,36 @@ CONFIG_LWIP_SO_REUSE=y CONFIG_LWIP_SO_REUSE_RXTOALL=y # CONFIG_LWIP_SO_RCVBUF is not set # CONFIG_LWIP_NETBUF_RECVINFO is not set -CONFIG_LWIP_IP_FRAG=y -# CONFIG_LWIP_IP_REASSEMBLY is not set +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set # CONFIG_LWIP_IP_FORWARD is not set # CONFIG_LWIP_STATS is not set -# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set CONFIG_LWIP_ESP_GRATUITOUS_ARP=y CONFIG_LWIP_GARP_TMR_INTERVAL=60 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y # CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 # # DHCP server # +CONFIG_LWIP_DHCPS=y CONFIG_LWIP_DHCPS_LEASE_UNIT=60 CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 # end of DHCP server # CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV6=y # CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set CONFIG_LWIP_NETIF_LOOPBACK=y CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 @@ -703,8 +1112,9 @@ CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 # CONFIG_LWIP_MAX_ACTIVE_TCP=16 CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y CONFIG_LWIP_TCP_MAXRTX=12 -CONFIG_LWIP_TCP_SYNMAXRTX=6 +CONFIG_LWIP_TCP_SYNMAXRTX=12 CONFIG_LWIP_TCP_MSS=1440 CONFIG_LWIP_TCP_TMR_INTERVAL=250 CONFIG_LWIP_TCP_MSL=60000 @@ -713,11 +1123,10 @@ CONFIG_LWIP_TCP_WND_DEFAULT=5744 CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 CONFIG_LWIP_TCP_QUEUE_OOSEQ=y # CONFIG_LWIP_TCP_SACK_OUT is not set -# CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set CONFIG_LWIP_TCP_OVERSIZE_MSS=y # CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set # CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set -CONFIG_LWIP_TCP_RTO_TIME=3000 +CONFIG_LWIP_TCP_RTO_TIME=1500 # end of TCP # @@ -727,16 +1136,28 @@ CONFIG_LWIP_MAX_UDP_PCBS=16 CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 # end of UDP +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF # CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set # # ICMP # +CONFIG_LWIP_ICMP=y # CONFIG_LWIP_MULTICAST_PING is not set # CONFIG_LWIP_BROADCAST_PING is not set # end of ICMP @@ -750,11 +1171,35 @@ CONFIG_LWIP_MAX_RAW_PCBS=16 # # SNTP # -CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 # end of SNTP +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set # end of LWIP # @@ -769,6 +1214,16 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 # CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set # CONFIG_MBEDTLS_DEBUG is not set +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v3.x related + # # Certificate Bundle # @@ -777,6 +1232,7 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 # end of Certificate Bundle # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set @@ -784,9 +1240,11 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y CONFIG_MBEDTLS_HARDWARE_AES=y CONFIG_MBEDTLS_HARDWARE_MPI=y CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y CONFIG_MBEDTLS_SHA512_C=y @@ -803,7 +1261,6 @@ CONFIG_MBEDTLS_TLS_ENABLED=y # # CONFIG_MBEDTLS_PSK_MODES is not set CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y @@ -812,10 +1269,8 @@ CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y # end of TLS Key Exchange Methods CONFIG_MBEDTLS_SSL_RENEGOTIATION=y -# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set -CONFIG_MBEDTLS_SSL_PROTO_TLS1=y -CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set # CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set CONFIG_MBEDTLS_SSL_ALPN=y CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y @@ -827,13 +1282,11 @@ CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y CONFIG_MBEDTLS_AES_C=y # CONFIG_MBEDTLS_CAMELLIA_C is not set # CONFIG_MBEDTLS_DES_C is not set -CONFIG_MBEDTLS_RC4_DISABLED=y -# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set -# CONFIG_MBEDTLS_RC4_ENABLED is not set # CONFIG_MBEDTLS_BLOWFISH_C is not set # CONFIG_MBEDTLS_XTEA_C is not set CONFIG_MBEDTLS_CCM_C=y CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set # end of Symmetric Ciphers # CONFIG_MBEDTLS_RIPEMD160_C is not set @@ -848,6 +1301,7 @@ CONFIG_MBEDTLS_X509_CSR_PARSE_C=y # end of Certificates CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set CONFIG_MBEDTLS_ECDH_C=y CONFIG_MBEDTLS_ECDSA_C=y # CONFIG_MBEDTLS_ECJPAKE_C is not set @@ -868,30 +1322,21 @@ CONFIG_MBEDTLS_ECP_NIST_OPTIM=y # CONFIG_MBEDTLS_CHACHA20_C is not set # CONFIG_MBEDTLS_HKDF_C is not set # CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set # CONFIG_MBEDTLS_SECURITY_RISKS is not set # end of mbedTLS -# -# mDNS -# -CONFIG_MDNS_MAX_SERVICES=10 -CONFIG_MDNS_TASK_PRIORITY=1 -CONFIG_MDNS_TASK_STACK_SIZE=4096 -# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set -CONFIG_MDNS_TASK_AFFINITY_CPU0=y -# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set -CONFIG_MDNS_TASK_AFFINITY=0x0 -CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 -CONFIG_MDNS_TIMER_PERIOD_MS=100 -# end of mDNS - # # ESP-MQTT Configurations # CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set CONFIG_MQTT_TRANSPORT_SSL=y CONFIG_MQTT_TRANSPORT_WEBSOCKET=y CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set # CONFIG_MQTT_USE_CUSTOM_CONFIG is not set # CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set # CONFIG_MQTT_CUSTOM_OUTBOX is not set @@ -907,20 +1352,31 @@ CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y # CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y # CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set # end of Newlib # # NVS # +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set # end of NVS # -# OpenSSL +# OpenThread # -# CONFIG_OPENSSL_DEBUG is not set -# CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set -CONFIG_OPENSSL_ASSERT_EXIT=y -# end of OpenSSL +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm # # PThreads @@ -944,13 +1400,22 @@ CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set -# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set # CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout # # Auto-detect flash chips @@ -958,7 +1423,12 @@ CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set # end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y # end of SPI Flash driver # @@ -998,22 +1468,30 @@ CONFIG_SPIFFS_USE_MTIME=y # end of SPIFFS Configuration # -# TinyUSB +# TCP Transport # # -# Descriptor configuration +# Websocket # -CONFIG_USB_DESC_CUSTOM_VID=0x1234 -CONFIG_USB_DESC_CUSTOM_PID=0x5678 -# end of Descriptor configuration -# end of TinyUSB +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor # # Unity unit testing library # CONFIG_UNITY_ENABLE_FLOAT=y CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set # CONFIG_UNITY_ENABLE_COLOR is not set CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y # CONFIG_UNITY_ENABLE_FIXTURE is not set @@ -1033,7 +1511,6 @@ CONFIG_VFS_SUPPORT_TERMIOS=y # Host File System I/O (Semihosting) # CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 # end of Host File System I/O (Semihosting) # end of Virtual file system @@ -1050,26 +1527,56 @@ CONFIG_WL_SECTOR_SIZE=4096 # CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y # end of Wi-Fi Provisioning Manager # # Supplicant # CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set # CONFIG_WPA_DEBUG_PRINT is not set # CONFIG_WPA_TESTING_OPTIONS is not set -# CONFIG_WPA_WPS_WARS is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set # end of Supplicant -# end of Component config # -# Compatibility options -# -# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set -# end of Compatibility options +# ESP RainMaker Common +# +CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y +# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set +CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 +CONFIG_ESP_RMAKER_MQTT_PORT_443=y +# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set +CONFIG_ESP_RMAKER_MQTT_PORT=1 +# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set +CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y +CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00" +CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 +CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" +CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" +CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" +CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" +CONFIG_ESP_RMAKER_MAX_COMMANDS=10 +# end of ESP RainMaker Common +# end of Component config # Deprecated options for backward compatibility -CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set @@ -1083,66 +1590,71 @@ CONFIG_LOG_BOOTLOADER_LEVEL=3 # CONFIG_FLASHMODE_QOUT is not set CONFIG_FLASHMODE_DIO=y # CONFIG_FLASHMODE_DOUT is not set -# CONFIG_MONITOR_BAUD_9600B is not set -# CONFIG_MONITOR_BAUD_57600B is not set -CONFIG_MONITOR_BAUD_115200B=y -# CONFIG_MONITOR_BAUD_230400B is not set -# CONFIG_MONITOR_BAUD_921600B is not set -# CONFIG_MONITOR_BAUD_2MB is not set -# CONFIG_MONITOR_BAUD_OTHER is not set -CONFIG_MONITOR_BAUD_OTHER_VAL=115200 CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set # CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 # CONFIG_CXX_EXCEPTIONS is not set CONFIG_STACK_CHECK_NONE=y # CONFIG_STACK_CHECK_NORM is not set # CONFIG_STACK_CHECK_STRONG is not set # CONFIG_STACK_CHECK_ALL is not set # CONFIG_WARN_WRITE_STRINGS is not set -# CONFIG_DISABLE_GCC8_WARNINGS is not set # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set CONFIG_ESP32_APPTRACE_DEST_NONE=y CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y -CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 -CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 -CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 -CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 CONFIG_ADC2_DISABLE_DAC=y -# CONFIG_SPIRAM_SUPPORT is not set -CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 -# CONFIG_ULP_COPROC_ENABLED is not set -CONFIG_ULP_COPROC_RESERVE_MEM=0 -CONFIG_BROWNOUT_DET=y -CONFIG_BROWNOUT_DET_LVL_SEL_0=y -# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set -CONFIG_BROWNOUT_DET_LVL=0 -CONFIG_REDUCE_PHY_TX_POWER=y +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set # CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set -# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set -# CONFIG_NO_BLOBS is not set -# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 CONFIG_MAIN_TASK_STACK_SIZE=3584 -CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_CONSOLE_UART_DEFAULT=y # CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set # CONFIG_ESP_CONSOLE_UART_NONE is not set CONFIG_CONSOLE_UART=y CONFIG_CONSOLE_UART_NUM=0 @@ -1155,46 +1667,51 @@ CONFIG_TASK_WDT=y CONFIG_TASK_WDT_TIMEOUT_S=5 CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y -# CONFIG_EVENT_LOOP_PROFILING is not set -CONFIG_POST_EVENTS_FROM_ISR=y -CONFIG_POST_EVENTS_FROM_IRAM_ISR=y -# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set -CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y -# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set -# CONFIG_ESP32S2_PANIC_GDBSTUB is not set +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_TIMER_TASK_STACK_SIZE=3584 -CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150 -CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 -CONFIG_MB_QUEUE_LENGTH=20 -CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 -CONFIG_MB_SERIAL_BUF_SIZE=256 -CONFIG_MB_SERIAL_TASK_PRIO=10 -# CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT is not set -CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 -CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 -CONFIG_MB_CONTROLLER_STACK_SIZE=4096 -CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 -CONFIG_MB_TIMER_PORT_ENABLED=y -CONFIG_MB_TIMER_GROUP=0 -CONFIG_MB_TIMER_INDEX=0 -# CONFIG_SUPPORT_STATIC_ALLOCATION is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y CONFIG_TIMER_TASK_PRIORITY=1 CONFIG_TIMER_TASK_STACK_DEPTH=2048 CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set # CONFIG_L2_TO_L3_COPY is not set -# CONFIG_USE_ONLY_LWIP_SELECT is not set CONFIG_ESP_GRATUITOUS_ARP=y CONFIG_GARP_TMR_INTERVAL=60 CONFIG_TCPIP_RECVMBOX_SIZE=32 CONFIG_TCP_MAXRTX=12 -CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_SYNMAXRTX=12 CONFIG_TCP_MSS=1440 CONFIG_TCP_MSL=60000 CONFIG_TCP_SND_BUF_DEFAULT=5744 CONFIG_TCP_WND_DEFAULT=5744 CONFIG_TCP_RECVMBOX_SIZE=6 CONFIG_TCP_QUEUE_OOSEQ=y -# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set CONFIG_TCP_OVERSIZE_MSS=y # CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set # CONFIG_TCP_OVERSIZE_DISABLE is not set @@ -1205,6 +1722,12 @@ CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y # CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF # CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 CONFIG_ESP32_PTHREAD_STACK_MIN=768 @@ -1216,8 +1739,8 @@ CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y CONFIG_SUPPORT_TERMIOS=y CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 # End of deprecated options diff --git a/config-examples/watch/PL-flex-watch-tinypico b/config-examples/watch/PL-flex-watch-tinypico new file mode 100644 index 00000000..75a9752f --- /dev/null +++ b/config-examples/watch/PL-flex-watch-tinypico @@ -0,0 +1,1746 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_DPORT_WORKAROUND="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=3 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=5 +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_DAC_PERIPH_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_APLL_MULTIPLIER_OUT_MIN_HZ=350000000 +CONFIG_SOC_APLL_MULTIPLIER_OUT_MAX_HZ=500000000 +CONFIG_SOC_APLL_MIN_HZ=5303031 +CONFIG_SOC_APLL_MAX_HZ=125000000 +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TOUCH_VERSION_1=y +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# end of Build type + +# +# Bootloader config +# +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V1_SUPPORTED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# CALE Configuration +# +CONFIG_ESP_WIFI_SSID="sagemcom6AE0" +CONFIG_ESP_WIFI_PASSWORD="GTZZGJN52NXQZY" +CONFIG_CALE_SCREEN_URL="http://img.cale.es/bmp/fasani/5e8cc4cf03d81" +CONFIG_CALE_BEARER_TOKEN="" +CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=60 +CONFIG_ESP_TRIGGER_SENSOR1=27 +CONFIG_DISPLAY_ROTATION=0 +CONFIG_ESP_MAXIMUM_RETRY=5 +# end of CALE Configuration + +# +# Display Configuration +# + +# +# Fill only EPD entries for single SPI displays (Good display/Waveshare) +# + +# +# Mosi and Clock should be set for any epaper +# +CONFIG_EINK_SPI_MOSI=23 +CONFIG_EINK_SPI_CLK=18 +CONFIG_EINK_SPI_CS=5 +CONFIG_EINK_DC=0 +CONFIG_EINK_RST=32 +CONFIG_EINK_BUSY=33 + +# +# Important: Leave the rest of unconfigured GPIOs to -1 unless multi-SPI channels (wave12I48) or Plasticlogic EPDs +# + +# +# CS2 and MISO pins apply only to Plasticlogic.com epaper displays +# +CONFIG_EINK_SPI_CS2=4 +CONFIG_EINK_SPI_MISO=19 + +# +# Config below applies to 4 epaper module wave12I48 w/4 SPI CS & BUSY pins (14 pins) +# + +# +# | S2 | M2 | +# + +# +# ----------- +# + +# +# | M1 | S1 | +# +CONFIG_EINK_SPI_M1_CS=23 +CONFIG_EINK_SPI_S1_CS=22 +CONFIG_EINK_SPI_M2_CS=16 +CONFIG_EINK_SPI_S2_CS=19 +CONFIG_EINK_SPI_M1_BUSY=32 +CONFIG_EINK_SPI_S1_BUSY=26 +CONFIG_EINK_SPI_M2_BUSY=18 +CONFIG_EINK_SPI_S2_BUSY=4 +CONFIG_EINK_M1S1_DC=25 +CONFIG_EINK_M2S2_DC=17 +CONFIG_EINK_M1S1_RST=33 +CONFIG_EINK_M2S2_RST=5 +# end of Display Configuration + +# +# Touch FT6X36 Configuration +# + +# +# The touch chip needs an I2C port and one input GPIO +# +CONFIG_TOUCH_SDA=21 +CONFIG_TOUCH_SDL=22 +CONFIG_TOUCH_INT=17 +CONFIG_I2C_MASTER_FREQUENCY=50000 +CONFIG_L58_MULTITOUCH=0 +CONFIG_FT6X36_DEBUG=0 +CONFIG_FT6X36_DEBUG_EVENTS=0 +# end of Touch FT6X36 Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +# end of Bluetooth + +# +# Driver Configurations +# + +# +# Legacy ADC Configuration +# +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set + +# +# Legacy ADC Calibration Configuration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration + +# +# SPI Configuration +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of SPI Configuration + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +# end of TWAI Configuration + +# +# UART Configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART Configuration + +# +# GPIO Configuration +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# end of ADC and ADC Calibration + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +CONFIG_ESP32_REV_MIN=0 + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# end of ESP NETIF Adapter + +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_REDUCE_TX_POWER=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# end of Brownout Detector + +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# High resolution timer (esp_timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +# CONFIG_FATFS_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# end of Heap memory debugging + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +# end of SNTP + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +# CONFIG_MBEDTLS_CMAC_C is not set +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +# CONFIG_MBEDTLS_SECURITY_RISKS is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_VFS_SUPPORT_TERMIOS=y + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y +# end of Wi-Fi Provisioning Manager + +# +# Supplicant +# +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# end of Supplicant + +# +# ESP RainMaker Common +# +CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y +# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set +CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 +CONFIG_ESP_RMAKER_MQTT_PORT_443=y +# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set +CONFIG_ESP_RMAKER_MQTT_PORT=1 +# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set +CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y +CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00" +CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 +CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" +CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" +CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" +CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" +CONFIG_ESP_RMAKER_MAX_COMMANDS=10 +# end of ESP RainMaker Common +# end of Component config + +# Deprecated options for backward compatibility +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options From 235a2d6f1c812ac1cbaf50de80a88edd2c2f97be Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 8 Nov 2022 14:08:12 +0100 Subject: [PATCH 31/49] #70 Get rotation right! --- .../CalEPD/models/goodisplay/gdey029T94.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/components/CalEPD/models/goodisplay/gdey029T94.cpp b/components/CalEPD/models/goodisplay/gdey029T94.cpp index 0eabe452..3fa91210 100644 --- a/components/CalEPD/models/goodisplay/gdey029T94.cpp +++ b/components/CalEPD/models/goodisplay/gdey029T94.cpp @@ -112,7 +112,8 @@ void Gdey029T94::update() _wakeUp(); IO.cmd(0x24); // write RAM1 for black(0)/white (1) - for (uint16_t y = 0; y < GDEY029T94_HEIGHT; y++) { + for (uint16_t y = GDEY029T94_HEIGHT; y > 0; y--) { + //for (uint16_t y = 0; y < GDEY029T94_HEIGHT; y++) { for (uint16_t x = 0; x < xLineBytes; x++) { uint16_t idx = y * xLineBytes + x; @@ -203,7 +204,7 @@ void Gdey029T94::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bo IO.data(0xFF); IO.cmd(0x24); // BW RAM - printf("Loop from ys:%d to ye:%d\n", y, ye); + //printf("Loop from ys:%d to ye:%d\n", y, ye); for (int16_t y1 = y; y1 <= ye; y1++) { @@ -281,17 +282,17 @@ void Gdey029T94::drawPixel(int16_t x, int16_t y, uint16_t color) { // check rotation, move pixel around if necessary switch (getRotation()) { - case 0: - x = GDEY029T94_VISIBLE_WIDTH - x; - break; case 1: swap(x, y); + x = GDEY029T94_VISIBLE_WIDTH - x -1; break; case 2: + x = GDEY029T94_VISIBLE_WIDTH - x -1; y = GDEY029T94_HEIGHT - y - 1; break; case 3: swap(x, y); + y = GDEY029T94_HEIGHT - y - 1; break; } uint16_t i = x / 8 + y * GDEY029T94_WIDTH / 8; @@ -409,9 +410,9 @@ void Gdey029T94::_wakeUpGrayMode(){ void Gdey029T94::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) { - // if (debug_enabled) + if (debug_enabled) { printf("_SetRamArea(xS:%d,xE:%d,Ys:%d,Y1s:%d,Ye:%d,Ye1:%d)\n",Xstart,Xend,Ystart,Ystart1,Yend,Yend1); - // } + } IO.cmd(0x44); IO.data(Xstart); IO.data(Xend); @@ -424,9 +425,9 @@ void Gdey029T94::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8 void Gdey029T94::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) { - // if (debug_enabled) { + if (debug_enabled) { printf("_SetRamPointer(addrX:%d,addrY:%d,addrY1:%d)\n",addrX,addrY,addrY1); - // } + } IO.cmd(0x4e); IO.data(addrX); IO.cmd(0x4f); From 91a8f59de2443356a2d34f79206b85c9b15833cd Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 8 Nov 2022 14:27:58 +0100 Subject: [PATCH 32/49] #70 Fix also 4 gray mode --- .../CalEPD/models/goodisplay/gdey029T94.cpp | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/components/CalEPD/models/goodisplay/gdey029T94.cpp b/components/CalEPD/models/goodisplay/gdey029T94.cpp index 3fa91210..3c671806 100644 --- a/components/CalEPD/models/goodisplay/gdey029T94.cpp +++ b/components/CalEPD/models/goodisplay/gdey029T94.cpp @@ -113,7 +113,6 @@ void Gdey029T94::update() IO.cmd(0x24); // write RAM1 for black(0)/white (1) for (uint16_t y = GDEY029T94_HEIGHT; y > 0; y--) { - //for (uint16_t y = 0; y < GDEY029T94_HEIGHT; y++) { for (uint16_t x = 0; x < xLineBytes; x++) { uint16_t idx = y * xLineBytes + x; @@ -131,35 +130,35 @@ void Gdey029T94::update() _wakeUpGrayMode(); // 4 grays mode - uint32_t bufindex = 0; - uint16_t bufferLenght = GDEY029T94_BUFFER_SIZE+1; - uint16_t bufferMaxSpi = 1579; - uint8_t xbuf[bufferMaxSpi]; - IO.cmd(0x24); // write RAM1 for black(0)/white (1) - for(i=0; i<=bufferLenght; i++) - { - xbuf[bufindex] = _buffer1[i]; - // Flush SPI buffer - if (i>0 && i % bufferMaxSpi == 0) { - //printf("Sent part buff %ld from %ld\n", bufindex, i); - IO.data(xbuf, bufferMaxSpi); - bufindex = 0; - } - bufindex++; - } + for (uint16_t y = GDEY029T94_HEIGHT; y > 0; y--) { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + uint8_t data = i < sizeof(_buffer1) ? _buffer1[idx] : 0x00; + x1buf[x] = data; // ~ is invert - bufindex = 0; + if (x==xLineBytes-1) { // Flush the X line buffer to SPI + IO.data(x1buf,sizeof(x1buf)); + } + ++i; + } + } + i = 0; IO.cmd(0x26); //RAM2 buffer: SPI2 - for(i=0;i<=bufferLenght;i++) - { - xbuf[bufindex] = _buffer2[i]; - if (i>0 && i % bufferMaxSpi == 0) { - IO.data(xbuf, bufferMaxSpi); - bufindex = 0; - } - bufindex++; + for (uint16_t y = GDEY029T94_HEIGHT; y > 0; y--) { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + uint8_t data = i < sizeof(_buffer2) ? _buffer2[idx] : 0x00; + x1buf[x] = data; // ~ is invert + + if (x==xLineBytes-1) { // Flush the X line buffer to SPI + IO.data(x1buf,sizeof(x1buf)); + } + ++i; } + } } uint64_t endTime = esp_timer_get_time(); From 06c6dd7e6f164bbe1b50db67e8b1795a65ac2d27 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 8 Nov 2022 14:50:28 +0100 Subject: [PATCH 33/49] #68 Fixes partial update for gdey0213b74 --- .../CalEPD/models/goodisplay/gdey0213b74.cpp | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index 836ed7c7..a4d0547a 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -113,7 +113,7 @@ void Gdey0213b74::update() _wakeUp(); IO.cmd(0x24); // write RAM1 for black(0)/white (1) - for (uint16_t y = 0; y < GDEH0213B73_HEIGHT; y++) { + for (uint16_t y = GDEH0213B73_HEIGHT; y >0; y--) { for (uint16_t x = 0; x < xLineBytes; x++) { uint16_t idx = y * xLineBytes + x; @@ -130,37 +130,39 @@ void Gdey0213b74::update() } else { _wakeUpGrayMode(); - // 4 grays mode + // 4 grays mode GDEH0213B73 printf("\n4 gray MODE. sends LUT 159 bytes\n"); - uint32_t bufindex = 0; - uint16_t bufferLenght = GDEH0213B73_BUFFER_SIZE+1; // 4000 - uint16_t bufferMaxSpi = 2000; - uint8_t xbuf[bufferMaxSpi]; - IO.cmd(0x24); // write RAM1 for black(0)/white (1) - for(i=0;i0 && i % bufferMaxSpi == 0) { - //printf("10 sent part buff %d from *%d\n", bufindex,i); - IO.data(xbuf, bufferMaxSpi); - bufindex = 0; - } - bufindex++; - } + for (uint16_t y = GDEH0213B73_HEIGHT; y > 0; y--) { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + uint8_t data = i < sizeof(_buffer1) ? _buffer1[idx] : 0x00; + x1buf[x] = data; // ~ is invert - bufindex = 0; + if (x==xLineBytes-1) { // Flush the X line buffer to SPI + IO.data(x1buf,sizeof(x1buf)); + } + ++i; + } + } + + i = 0; IO.cmd(0x26); //RAM2 buffer: SPI2 - for(i=0;i0 && i % bufferMaxSpi == 0) { - IO.data(xbuf, bufferMaxSpi); - bufindex = 0; - } - bufindex++; + for (uint16_t y = GDEH0213B73_HEIGHT; y > 0; y--) { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + uint8_t data = i < sizeof(_buffer2) ? _buffer2[idx] : 0x00; + x1buf[x] = data; // ~ is invert + + if (x==xLineBytes-1) { // Flush the X line buffer to SPI + IO.data(x1buf,sizeof(x1buf)); + } + ++i; } + } + } uint64_t endTime = esp_timer_get_time(); @@ -180,8 +182,11 @@ void Gdey0213b74::update() void Gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { - ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); - + //ESP_LOGE("PARTIAL", "update is not implemented x:%d y:%d\n", (int)x, (int)y); + if (!_using_partial_mode) { + _using_partial_mode = true; + _wakeUp(); + } if (using_rotation) _rotate(x, y, w, h); if (x >= GDEH0213B73_WIDTH) return; if (y >= GDEH0213B73_HEIGHT) return; @@ -192,7 +197,7 @@ void Gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b IO.cmd(0x12); //SWRESET _waitBusy("SWRESET"); - + _setRamDataEntryMode(0x03); _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram _waitBusy("updateWindow I"); @@ -201,8 +206,6 @@ void Gdey0213b74::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b IO.data(0xFF); IO.cmd(0x24); // BW RAM - printf("Loop from ys:%d to ye:%d\n", y, ye); - for (int16_t y1 = y; y1 <= ye; y1++) { for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) @@ -278,19 +281,17 @@ void Gdey0213b74::drawPixel(int16_t x, int16_t y, uint16_t color) { // check rotation, move pixel around if necessary switch (getRotation()) { - case 0: - x = GDEH0213B73_VISIBLE_WIDTH - x; - break; case 1: swap(x, y); + x = GDEH0213B73_VISIBLE_WIDTH - x - 1; break; case 2: - //x = GDEH0213B73_VISIBLE_WIDTH - x - 1; // Do not mirror X here + x = GDEH0213B73_VISIBLE_WIDTH - x - 1; y = GDEH0213B73_HEIGHT - y - 1; break; case 3: swap(x, y); - //y = GDEH0213B73_HEIGHT - y - 1; + y = GDEH0213B73_HEIGHT - y - 1; break; } uint16_t i = x / 8 + y * GDEH0213B73_WIDTH / 8; @@ -431,9 +432,9 @@ void Gdey0213b74::_wakeUpGrayMode(){ void Gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) { - // if (debug_enabled) + if (debug_enabled) { printf("_SetRamArea(xS:%d,xE:%d,Ys:%d,Y1s:%d,Ye:%d,Ye1:%d)\n",Xstart,Xend,Ystart,Ystart1,Yend,Yend1); - // } + } IO.cmd(0x44); IO.data(Xstart); IO.data(Xend); @@ -446,9 +447,9 @@ void Gdey0213b74::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint void Gdey0213b74::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) { - // if (debug_enabled) { + if (debug_enabled) { printf("_SetRamPointer(addrX:%d,addrY:%d,addrY1:%d)\n",addrX,addrY,addrY1); - // } + } IO.cmd(0x4e); IO.data(addrX); IO.cmd(0x4f); From 87feb15d7417787fbbc6c0674419fc7e5b8bfb5b Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 8 Nov 2022 15:46:57 +0100 Subject: [PATCH 34/49] gdey0154d67 partialWindow corrections but still comes out darkgray --- .../CalEPD/include/goodisplay/gdey0154d67.h | 1 - .../CalEPD/models/goodisplay/gdey0154d67.cpp | 70 +++++++++++-------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h index d94c370e..2db68b18 100644 --- a/components/CalEPD/include/goodisplay/gdey0154d67.h +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -37,7 +37,6 @@ class Gdey0154d67 : public Epd // EPD tests void init(bool debug = false); void initFullUpdate(); - void initPartialUpdate(); void setMonoMode(bool mode); void fillScreen(uint16_t color); void update(); diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index 9b2a8db5..6f19f7cd 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -36,10 +36,6 @@ DRAM_ATTR const epd_init_3 Gdey0154d67::GDOControl={ 0x01,{(GDEY0154D67_HEIGHT - 1) % 256, (GDEY0154D67_HEIGHT - 1) / 256, 0x00},3 }; -// Partial Update Delay -#define GDEY0154D67_PU_DELAY 100 - - // Constructor Gdey0154d67::Gdey0154d67(EpdSpi& dio): Adafruit_GFX(GDEY0154D67_WIDTH, GDEY0154D67_HEIGHT), @@ -55,14 +51,6 @@ void Gdey0154d67::initFullUpdate(){ if (debug_enabled) printf("initFullUpdate() LUT\n"); } -void Gdey0154d67::initPartialUpdate(){ - _wakeUp(0x03); - - _PowerOn(); - - if (debug_enabled) printf("initPartialUpdate() LUT\n"); -} - //Initialize the display void Gdey0154d67::init(bool debug) { @@ -178,15 +166,20 @@ void Gdey0154d67::_wakeUp(uint8_t em) { IO.reset(10); IO.cmd(0x12); // SWRESET // Theoretically this display could be driven without RST pin connected - _waitBusy("RST reset"); + _waitBusy("SWRESET"); - IO.cmd(GDOControl.cmd); + /* IO.cmd(GDOControl.cmd); for (int i=0;i(18+1)*8=200 @@ -194,20 +187,22 @@ void Gdey0154d67::_wakeUp(uint8_t em) { IO.data(0xC7); //0xC7-->(199+1)=200 IO.data(0x00); IO.data(0x00); - IO.data(0x00); + IO.data(0x00); + IO.cmd(0x3c); //BorderWavefrom - IO.data(0x01); + IO.data(0x05); + IO.cmd(0x18); IO.data(0x80); - IO.cmd(0x22); // //Load Temperature and waveform setting. - IO.data(0XB1); - IO.cmd(0x20); + IO.cmd(0x22); //Load Temperature and waveform setting. + IO.data(0XB1); + IO.cmd(0x20); + IO.cmd(0x4e); // set RAM x address count to 0; IO.data(0x00); IO.cmd(0x4f); // set RAM y address count to 0X199; IO.data(0xC7); IO.data(0x00); - } void Gdey0154d67::update() @@ -349,7 +344,13 @@ void Gdey0154d67::_PowerOn(void) void Gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) { - + ESP_LOGE("PARTIAL", "update is still coming out gray. Corrections needed! x:%d y:%d\n", (int)x, (int)y); + + if (!_using_partial_mode) { + _using_partial_mode = true; + _wakeUp(0x03); + _PowerOn(); + } if (using_rotation) _rotate(x, y, w, h); if (x >= GDEY0154D67_WIDTH) return; if (y >= GDEY0154D67_HEIGHT) return; @@ -357,13 +358,16 @@ void Gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b uint16_t ye = gx_uint16_min(GDEY0154D67_HEIGHT, y + h) - 1; uint16_t xs_d8 = x / 8; uint16_t xe_d8 = xe / 8; - initPartialUpdate(); + + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + _setRamDataEntryMode(0x03); _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram _waitBusy("partialUpdate1", 100); // needed ? - ESP_LOGE("Gdey0154d67", "Partial update still not tested on this display"); - + IO.cmd(0x22); + IO.data(0xFF); //0x04 IO.cmd(0x24); for (int16_t y1 = y; y1 <= ye; y1++) { @@ -374,13 +378,19 @@ void Gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b IO.data(~data); } } + /* IO.cmd(0x26); + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEY0154D67_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; + IO.data(~data); + } + } */ - IO.cmd(0x22); - IO.data(0xFF); //0x04 IO.cmd(0x20); - _waitBusy("partialUpdate2", 300); - - vTaskDelay(GDEY0154D67_PU_DELAY/portTICK_RATE_MS); + _waitBusy("updateWindow"); } void Gdey0154d67::_waitBusy(const char* message, uint16_t busy_time){ From 6e0248fb5d5b1481370e1b177bb72ea15485496d Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 8 Nov 2022 16:11:50 +0100 Subject: [PATCH 35/49] gdey0154d67 partialWindow fix gray update --- .../CalEPD/models/goodisplay/gdey0154d67.cpp | 45 +++++++++---------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index 6f19f7cd..cabed37a 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -172,30 +172,30 @@ void Gdey0154d67::_wakeUp(uint8_t em) { for (int i=0;i(18+1)*8=200 - IO.cmd(0x45); //set Ram-Y address start/end position - IO.data(0xC7); //0xC7-->(199+1)=200 + IO.data(0x18); //0x0C-->(18+1)*8=200 + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0xC7); //0xC7-->(199+1)=200 IO.data(0x00); IO.data(0x00); IO.data(0x00); - IO.cmd(0x3c); //BorderWavefrom + IO.cmd(0x3c); //BorderWavefrom IO.data(0x05); - IO.cmd(0x18); - IO.data(0x80); + IO.cmd(0x18); + IO.data(0x80); IO.cmd(0x22); //Load Temperature and waveform setting. - IO.data(0XB1); + IO.data(0XB1); IO.cmd(0x20); IO.cmd(0x4e); // set RAM x address count to 0; @@ -350,6 +350,12 @@ void Gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b _using_partial_mode = true; _wakeUp(0x03); _PowerOn(); + // Fix gray partial update + IO.cmd(0x26); + for (int16_t i = 0; i <= GDEY0154D67_BUFFER_SIZE; i++) + { + IO.data(0xFF); + } } if (using_rotation) _rotate(x, y, w, h); if (x >= GDEY0154D67_WIDTH) return; @@ -364,10 +370,8 @@ void Gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b _setRamDataEntryMode(0x03); _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area _SetRamPointer(xs_d8, y % 256, y / 256); // set ram - _waitBusy("partialUpdate1", 100); // needed ? + //_waitBusy("partialUpdate1", 100); // needed ? - IO.cmd(0x22); - IO.data(0xFF); //0x04 IO.cmd(0x24); for (int16_t y1 = y; y1 <= ye; y1++) { @@ -378,17 +382,10 @@ void Gdey0154d67::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, b IO.data(~data); } } - /* IO.cmd(0x26); - for (int16_t y1 = y; y1 <= ye; y1++) - { - for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) - { - uint16_t idx = y1 * (GDEY0154D67_WIDTH / 8) + x1; - uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; - IO.data(~data); - } - } */ + + IO.cmd(0x22); + IO.data(0xFF); //0x04 IO.cmd(0x20); _waitBusy("updateWindow"); } From bd05d15894422cf69f0bb8f6893e8208a59f10f0 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 10 Nov 2022 10:48:31 +0100 Subject: [PATCH 36/49] #71 Add goodisplay/gdey029T94 --- components/CalEPD/CMakeLists.txt | 2 +- components/CalEPD/include/gdew027w3.h | 2 +- components/CalEPD/include/gdew027w3T.h | 2 +- .../CalEPD/include/goodisplay/gdey0154d67.h | 4 +- .../CalEPD/include/goodisplay/gdey027T91.h | 74 +++ .../CalEPD/models/goodisplay/gdey0154d67.cpp | 5 - .../CalEPD/models/goodisplay/gdey027T91.cpp | 489 ++++++++++++++++++ .../CalEPD/models/goodisplay/gdey029T94.cpp | 10 +- 8 files changed, 575 insertions(+), 13 deletions(-) create mode 100644 components/CalEPD/include/goodisplay/gdey027T91.h create mode 100644 components/CalEPD/models/goodisplay/gdey027T91.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index 81eebe83..f1ddce83 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -4,7 +4,7 @@ set(srcs "models/goodisplay/gdey0213b74.cpp" "models/goodisplay/gdey0154d67.cpp" "models/goodisplay/gdey029T94.cpp" - + "models/goodisplay/gdey027T91.cpp" # Other mixed brands mostly GOODISPLAY based or using their epapers "models/wave12i48.cpp" "models/gdew075HD.cpp" diff --git a/components/CalEPD/include/gdew027w3.h b/components/CalEPD/include/gdew027w3.h index fdc1ead2..ceb1fc4f 100644 --- a/components/CalEPD/include/gdew027w3.h +++ b/components/CalEPD/include/gdew027w3.h @@ -14,7 +14,7 @@ #include #include -// Controller: IL91874 Note: This is the display that the T5S from TTGO use +// Controller: EK79652 Note: This is the display that the T5S from TTGO use #define GDEW027W3_WIDTH 176 #define GDEW027W3_HEIGHT 264 #define GDEW027W3_BUFFER_SIZE (uint32_t(GDEW027W3_WIDTH) * uint32_t(GDEW027W3_HEIGHT) / 8) diff --git a/components/CalEPD/include/gdew027w3T.h b/components/CalEPD/include/gdew027w3T.h index 4b9a7071..c8d6b19f 100644 --- a/components/CalEPD/include/gdew027w3T.h +++ b/components/CalEPD/include/gdew027w3T.h @@ -14,7 +14,7 @@ #include #include "FT6X36.h" // Touch interface -// Controller: IL91874 Note: This is the display that the T5S from TTGO use +// Controller: EK79652 Note: This is the display that the T5S from TTGO use #define GDEW027W3_WIDTH 176 #define GDEW027W3_HEIGHT 264 #define GDEW027W3_BUFFER_SIZE (uint32_t(GDEW027W3_WIDTH) * uint32_t(GDEW027W3_HEIGHT) / 8) diff --git a/components/CalEPD/include/goodisplay/gdey0154d67.h b/components/CalEPD/include/goodisplay/gdey0154d67.h index 2db68b18..046846fa 100644 --- a/components/CalEPD/include/goodisplay/gdey0154d67.h +++ b/components/CalEPD/include/goodisplay/gdey0154d67.h @@ -28,8 +28,9 @@ class Gdey0154d67 : public Epd { public: Gdey0154d67(EpdSpi& IO); + const uint8_t colors_supported = 1; - const uint8_t partial_supported = 0; + const uint8_t partial_supported = 1; bool spi_optimized = true; void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method @@ -58,7 +59,6 @@ class Gdey0154d67 : public Epd void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); - uint16_t _setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye); // Default wakeUp used for 4 gray mode void _wakeUp(); diff --git a/components/CalEPD/include/goodisplay/gdey027T91.h b/components/CalEPD/include/goodisplay/gdey027T91.h new file mode 100644 index 00000000..806f6a84 --- /dev/null +++ b/components/CalEPD/include/goodisplay/gdey027T91.h @@ -0,0 +1,74 @@ +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include + +// Controller: SSD1680 (Solomon) +#define GDEY027T91_WIDTH 176 +#define GDEY027T91_HEIGHT 264 +#define GDEY027T91_BUFFER_SIZE (uint32_t(GDEY027T91_WIDTH) * uint32_t(GDEY027T91_HEIGHT) / 8) +// 1 byte of this color in the buffer +#define GDEY027T91_8PIX_BLACK 0xFF +#define GDEY027T91_8PIX_WHITE 0x00 + +class Gdey027T91 : public Epd +{ + public: + Gdey027T91(EpdSpi& IO); + + const uint8_t colors_supported = 1; + const uint8_t partial_supported = 1; + bool spi_optimized = true; + + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method + + // EPD tests + void init(bool debug = false); + void initFullUpdate(); + void initPartialUpdate(); + void setMonoMode(bool mode); + void fillScreen(uint16_t color); + void update(); + // Partial update of rectangle from buffer to screen, does not power off + void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); + + private: + EpdSpi& IO; + uint8_t _mono_buffer[GDEY027T91_BUFFER_SIZE]; + uint8_t _buffer1[GDEY027T91_BUFFER_SIZE]; + uint8_t _buffer2[GDEY027T91_BUFFER_SIZE]; + + bool color = false; + bool _initial = true; + bool _debug_buffer = false; + bool _mono_mode = false; + void _PowerOn(); + // Ram data entry mode methods + void _setRamDataEntryMode(uint8_t em); + void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); + void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); + + // Default wakeUp used for 4 gray mode + void _wakeUp(); + void _wakeUp(uint8_t em); + + void _sleep(); + void _waitBusy(const char* message, uint16_t busy_time); + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); + + // Command & data structs + static const epd_lut_159 lut_4_grays; + static const epd_init_3 GDOControl; +}; \ No newline at end of file diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index cabed37a..b7c5a251 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -104,11 +104,6 @@ void Gdey0154d67::fillScreen(uint16_t color) if (debug_enabled) printf("fillScreen(%d) _mono_buffer len:%d\n",color,sizeof(_mono_buffer)); } -uint16_t Gdey0154d67::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye) { - printf("_setPartialRamArea not used in Gdey0154d67"); - return 0; -} - // Now redefined as 4 gray mode void Gdey0154d67::_wakeUp(){ printf("_wakeUp 4 Gray\n"); diff --git a/components/CalEPD/models/goodisplay/gdey027T91.cpp b/components/CalEPD/models/goodisplay/gdey027T91.cpp new file mode 100644 index 00000000..56a36a35 --- /dev/null +++ b/components/CalEPD/models/goodisplay/gdey027T91.cpp @@ -0,0 +1,489 @@ +// GOODISPLAY product https://www.good-display.com/product/432.html +#include "goodisplay/gdey027T91.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include + +const epd_lut_159 Gdey027T91::lut_4_grays={ +0x32, { + 0x40, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x8, 0x48, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x2, 0x48, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x20, 0x48, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0xA, 0x19, 0x0, 0x3, 0x8, 0x0, 0x0, +0x14, 0x1, 0x0, 0x14, 0x1, 0x0, 0x3, +0xA, 0x3, 0x0, 0x8, 0x19, 0x0, 0x0, +0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, +0x22, 0x17, 0x41, 0x0, 0x32, 0x1C +},159}; + +DRAM_ATTR const epd_init_3 Gdey027T91::GDOControl={ +0x01,{(GDEY027T91_HEIGHT - 1) % 256, (GDEY027T91_HEIGHT - 1) / 256, 0x00},3 +}; + +// Constructor +Gdey027T91::Gdey027T91(EpdSpi& dio): + Adafruit_GFX(GDEY027T91_WIDTH, GDEY027T91_HEIGHT), + Epd(GDEY027T91_WIDTH, GDEY027T91_HEIGHT), IO(dio) +{ + printf("Gdey027T91() %d*%d\n", + GDEY027T91_WIDTH, GDEY027T91_HEIGHT); +} + +void Gdey027T91::initFullUpdate(){ + _wakeUp(0x01); + _PowerOn(); + if (debug_enabled) printf("initFullUpdate() LUT\n"); +} + +//Initialize the display +void Gdey027T91::init(bool debug) +{ + debug_enabled = debug; + if (debug_enabled) printf("Gdey027T91::init(%d)\n", debug); + IO.init(4, debug); // 4MHz frequency + + printf("Free heap:%d\n", (int)xPortGetFreeHeapSize()); + fillScreen(EPD_WHITE); + _mono_mode = 1; + fillScreen(EPD_WHITE); +} + +void Gdey027T91::fillScreen(uint16_t color) +{ + if (_mono_mode) { + // 0xFF = 8 pixels black, 0x00 = 8 pix. white + uint8_t data = (color == EPD_BLACK) ? GDEY027T91_8PIX_BLACK : GDEY027T91_8PIX_WHITE; + for (uint16_t x = 0; x < sizeof(_mono_buffer); x++) + { + _mono_buffer[x] = data; + } + } else { + // 4 Grays mode + // This is to make faster black & white + if (color == 255 || color == 0) { + for(uint32_t i=0;i Needed? + IO.cmd(0x18); + IO.data(0x80); + IO.cmd(0x22); //Load Temperature and waveform setting. + IO.data(0XB1); + IO.cmd(0x20); + _waitBusy("Load temp."); + IO.cmd(0x1A); // Write to temperature register + IO.data(0x64); + IO.data(0x00); + + IO.cmd(0x22); // Load temperature value + IO.data(0x91); + IO.cmd(0x20); + _waitBusy("_wake"); + // + + IO.cmd(0x2C); //VCOM Voltage + IO.data(lut_4_grays.data[158]); //0x1C + + IO.cmd(0x3F); //EOPQ + IO.data(lut_4_grays.data[153]); + + IO.cmd(0x03); //VGH + IO.data(lut_4_grays.data[154]); + + IO.cmd(0x04); // + IO.data(lut_4_grays.data[155]); //VSH1 + IO.data(lut_4_grays.data[156]); //VSH2 + IO.data(lut_4_grays.data[157]); //VSL + + // LUT init table for 4 gray. Check if it's needed! + IO.cmd(lut_4_grays.cmd); // boost + for (int i=0; i 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_mono_buffer)) ? ~ _mono_buffer[idx] : 0xFF; + countPix++; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + + printf("Total pix sent: %d \n", countPix); + + } else { + // NOT optimized: is minimal the time difference for small buffers like this one + for (uint16_t y = GDEY027T91_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < GDEY027T91_WIDTH / 8; x++) + { + uint16_t idx = y * (GDEY027T91_WIDTH / 8) + x; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0xFF; + IO.data(~data); + } + } + } + + } else { + // 4 gray mode! + _wakeUp(); + printf("buffer size: %d", sizeof(_buffer1)); + + IO.cmd(0x24); // RAM1 + for (uint16_t y = GDEY027T91_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_buffer1)) ? ~ _buffer1[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + IO.cmd(0x26); // RAM2 + for (uint16_t y = GDEY027T91_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_buffer2)) ? ~ _buffer2[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + } + uint64_t endTime = esp_timer_get_time(); + IO.cmd(0x22); + IO.data(0xc4); + // NOTE: Using F7 as in the GD example the display turns black into gray at the end. With C4 is fine + IO.cmd(0x20); + _waitBusy("_Update_Full", 1200); + uint64_t powerOnTime = esp_timer_get_time(); + + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + + _sleep(); +} + +void Gdey027T91::_setRamDataEntryMode(uint8_t em) +{ + const uint16_t xPixelsPar = GDEY027T91_WIDTH - 1; + const uint16_t yPixelsPar = GDEY027T91_HEIGHT - 1; + em = gx_uint16_min(em, 0x03); + IO.cmd(0x11); + IO.data(em); + switch (em) + { + case 0x00: // x decrease, y decrease + _SetRamArea(xPixelsPar / 8, 0x00, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x01: // x increase, y decrease : as in demo code + _SetRamArea(0x00, xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(0x00, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x02: // x decrease, y increase + _SetRamArea(xPixelsPar / 8, 0x00, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, 0x00, 0x00); // set ram + break; + case 0x03: // x increase, y increase : normal mode + _SetRamArea(0x00, xPixelsPar / 8, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(0x00, 0x00, 0x00); // set ram + break; + } +} + +void Gdey027T91::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) +{ + IO.cmd(0x44); + IO.data(Xstart); + IO.data(Xend); + IO.cmd(0x45); + IO.data(Ystart); + IO.data(Ystart1); + IO.data(Yend); + IO.data(Yend1); +} + +void Gdey027T91::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) +{ + IO.cmd(0x4e); + IO.data(addrX); + IO.cmd(0x4f); + IO.data(addrY); + IO.data(addrY1); +} + +void Gdey027T91::_PowerOn(void) +{ + IO.cmd(0x22); + IO.data(0xc0); + IO.cmd(0x20); + _waitBusy("_PowerOn"); +} + +void Gdey027T91::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) +{ + if (!_using_partial_mode) { + _using_partial_mode = true; + _wakeUp(0x03); + _PowerOn(); + // Fix gray partial update + IO.cmd(0x26); + for (int16_t i = 0; i <= GDEY027T91_BUFFER_SIZE; i++) + { + IO.data(0xFF); + } + } + if (using_rotation) _rotate(x, y, w, h); + if (x >= GDEY027T91_WIDTH) return; + if (y >= GDEY027T91_HEIGHT) return; + uint16_t xe = gx_uint16_min(GDEY027T91_WIDTH, x + w) - 1; + uint16_t ye = gx_uint16_min(GDEY027T91_HEIGHT, y + h) - 1; + uint16_t xs_d8 = x / 8; + uint16_t xe_d8 = xe / 8; + + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + _setRamDataEntryMode(0x03); + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area + _SetRamPointer(xs_d8, y % 256, y / 256); // set ram + //_waitBusy("partialUpdate1", 100); // needed ? + + IO.cmd(0x24); + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEY027T91_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; + IO.data(~data); + } + } + + + IO.cmd(0x22); + IO.data(0xFF); //0x04 + IO.cmd(0x20); + _waitBusy("updateWindow"); +} + +void Gdey027T91::_waitBusy(const char* message, uint16_t busy_time){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + // On high is busy + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) { + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>7000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } + } else { + vTaskDelay(busy_time/portTICK_RATE_MS); + } +} + +void Gdey027T91::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + // On low is not busy anymore + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>7000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } +} + +void Gdey027T91::_sleep(){ + IO.cmd(0x22); // power off display + IO.data(0xc3); + IO.cmd(0x20); + _waitBusy("power_off"); +} + +void Gdey027T91::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEY027T91_WIDTH - x - w - 1; + break; + case 2: + x = GDEY027T91_WIDTH - x - w - 1; + y = GDEY027T91_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEY027T91_HEIGHT - y - h - 1; + break; + } +} + + +void Gdey027T91::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + + // check rotation, move pixel around if necessary + switch (getRotation()) + { + case 1: + swap(x, y); + x = GDEY027T91_WIDTH - x - 1; + break; + case 2: + x = GDEY027T91_WIDTH - x - 1; + y = GDEY027T91_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + y = GDEY027T91_HEIGHT - y - 1; + break; + } + uint16_t i = x / 8 + y * GDEY027T91_WIDTH / 8; + + if (_mono_mode) { + // This is the trick to draw colors right. Genious Jean-Marc + if (color) { + _mono_buffer[i] = (_mono_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + } else { + _mono_buffer[i] = (_mono_buffer[i] | (1 << (7 - x % 8))); + } + } else { + // 4 gray mode + uint8_t mask = 0x80 >> (x & 7); + + color >>= 6; // Color is from 0 (black) to 255 (white) + + switch (color) + { + case 1: + // Dark gray: Correct + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + case 2: + // Light gray: Correct + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] | mask; + break; + case 3: + // WHITE + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] | mask; + break; + default: + // Black + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + } + } +} + +void Gdey027T91::setMonoMode(bool mode) { + _mono_mode = mode; +} diff --git a/components/CalEPD/models/goodisplay/gdey029T94.cpp b/components/CalEPD/models/goodisplay/gdey029T94.cpp index 3c671806..5ed32b96 100644 --- a/components/CalEPD/models/goodisplay/gdey029T94.cpp +++ b/components/CalEPD/models/goodisplay/gdey029T94.cpp @@ -369,11 +369,15 @@ void Gdey029T94::_wakeUp(){ IO.cmd(0x18); //Read built-in temperature sensor IO.data(0x80); - IO.cmd(0x4E); // set RAM x address count to 0; + IO.cmd(0x44); //set Ram-X address start/end position IO.data(0x00); - IO.cmd(0x4F); // set RAM y address count to 0X199; - IO.data(0x27); + IO.data(0x0F); //0x0F-->(15+1)*8=128 + + IO.cmd(0x45); //set Ram-Y address start/end position + IO.data(0x27); //0x0127-->(295+1)=296 IO.data(0x01); + IO.data(0x00); + IO.data(0x00); _waitBusy("wakeup CMDs"); } From 62a23b56bb5609fbdb90487a391187742752cb82 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 10 Nov 2022 11:13:28 +0100 Subject: [PATCH 37/49] Fixes after idf_v5 merge --- components/CalEPD/epd.cpp | 20 -------------------- components/CalEPD/epdspi.cpp | 3 ++- components/CalEPD/include/epdspi.h | 3 ++- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/components/CalEPD/epd.cpp b/components/CalEPD/epd.cpp index 33be7020..e0fce4cd 100644 --- a/components/CalEPD/epd.cpp +++ b/components/CalEPD/epd.cpp @@ -114,23 +114,3 @@ void Epd::printerf(const char *format, ...) { void Epd::newline() { write(10); } - -/** - * @brief Similar to printf - * Note that buffer needs to end with null character - * @param format - * @param ... va_list - */ -void Epd::printerf(const char *format, ...) { - va_list args; - va_start(args, format); - char max_buffer[1024]; - int size = vsnprintf(max_buffer, sizeof max_buffer, format, args); - va_end(args); - - if (size < sizeof(max_buffer)) { - print(std::string(max_buffer)); - } else { - ESP_LOGE("Epd::printerf", "max_buffer out of range. Increase max_buffer!"); - } -} \ No newline at end of file diff --git a/components/CalEPD/epdspi.cpp b/components/CalEPD/epdspi.cpp index e5100eab..9fc49e37 100644 --- a/components/CalEPD/epdspi.cpp +++ b/components/CalEPD/epdspi.cpp @@ -164,7 +164,8 @@ void EpdSpi::reset(uint8_t millis=20) { } /** - * Send multiple data in one transaction using vectors + * @deprecated Not used at the moment + * @brief Send multiple data in one transaction using vectors */ void EpdSpi::dataVector(vector _buffer) { diff --git a/components/CalEPD/include/epdspi.h b/components/CalEPD/include/epdspi.h index 4221dda7..21dd1061 100644 --- a/components/CalEPD/include/epdspi.h +++ b/components/CalEPD/include/epdspi.h @@ -18,7 +18,8 @@ class EpdSpi void data(uint8_t data) ; void dataBuffer(uint8_t data); void data(const uint8_t *data, int len) ; - + // Deprecated + void dataVector(vector _buffer); void reset(uint8_t millis) ; void init(uint8_t frequency, bool debug) ; private: From 14cc5349fcb60473e1133507b50c82505cd4d49d Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 11 Nov 2022 19:35:22 +0100 Subject: [PATCH 38/49] #66 Switch GDEY073D46 to use PSRAM --- components/CalEPD/include/color/gdey073d46.h | 6 +++--- components/CalEPD/models/color/gdey073d46.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/components/CalEPD/include/color/gdey073d46.h b/components/CalEPD/include/color/gdey073d46.h index 839cd439..0c11528c 100644 --- a/components/CalEPD/include/color/gdey073d46.h +++ b/components/CalEPD/include/color/gdey073d46.h @@ -35,10 +35,10 @@ class gdey073d46 : public Epd7Color private: EpdSpi& IO; + // In case this _buffer is too large and there is no DRAM available to build, then store it in PSRAM + //uint8_t _buffer[GDEY073D46_BUFFER_SIZE]; + uint8_t* _buffer = (uint8_t*)heap_caps_malloc(GDEY073D46_BUFFER_SIZE, MALLOC_CAP_SPIRAM); - uint8_t _buffer[GDEY073D46_BUFFER_SIZE]; - - bool _initial = true; void _wakeUp(); void _sleep(); void _waitBusy(const char* message); diff --git a/components/CalEPD/models/color/gdey073d46.cpp b/components/CalEPD/models/color/gdey073d46.cpp index 0eb2d434..5898b237 100644 --- a/components/CalEPD/models/color/gdey073d46.cpp +++ b/components/CalEPD/models/color/gdey073d46.cpp @@ -33,7 +33,7 @@ void gdey073d46::fillScreen(uint16_t color) { uint8_t pv = _color7(color); uint8_t pv2 = pv | pv << 4; - for (uint32_t x = 0; x < sizeof(_buffer); x++) + for (uint32_t x = 0; x < GDEY073D46_BUFFER_SIZE; x++) { _buffer[x] = pv2; } @@ -155,7 +155,7 @@ void gdey073d46::update() { for (uint16_t x = 1; x <= xLineBytes; x++) { - uint8_t data = i < sizeof(_buffer) ? _buffer[i] : 0x33; + uint8_t data = i < GDEY073D46_BUFFER_SIZE ? _buffer[i] : 0x33; x1buf[x - 1] = data; if (x == xLineBytes) { // Flush the X line buffer to SPI @@ -170,7 +170,7 @@ void gdey073d46::update() } } else { - for (uint32_t i = 0; i < sizeof(_buffer); i++) { + for (uint32_t i = 0; i < GDEY073D46_BUFFER_SIZE; i++) { IO.data(_buffer[i]); } } From c4d07e394256ac93e701286e66c96dc0eab4ddda Mon Sep 17 00:00:00 2001 From: martinberlin Date: Tue, 15 Nov 2022 09:02:27 +0100 Subject: [PATCH 39/49] Exclude parallel CPP classes if CALEPD_EXCLUDE_PARALLEL is defined --- components/CalEPD/include/parallel/ED047TC1.h | 7 ++++++- components/CalEPD/include/parallel/ED047TC1touch.h | 6 +++++- components/CalEPD/include/parallel/ED060SC4.h | 6 +++++- components/CalEPD/models/parallel/ED047TC1.cpp | 7 ++++++- components/CalEPD/models/parallel/ED047TC1touch.cpp | 5 +++++ components/CalEPD/models/parallel/ED060SC4.cpp | 5 +++++ 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/components/CalEPD/include/parallel/ED047TC1.h b/components/CalEPD/include/parallel/ED047TC1.h index 5f495815..cc19e16a 100644 --- a/components/CalEPD/include/parallel/ED047TC1.h +++ b/components/CalEPD/include/parallel/ED047TC1.h @@ -1,3 +1,6 @@ +// Excluded when this define is present +#ifndef CALEPD_EXCLUDE_PARALLEL + #include #include #include @@ -47,4 +50,6 @@ class Ed047TC1 : public EpdParallel bool _initial = true; bool _debug_buffer = false; void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); -}; \ No newline at end of file +}; + +#endif diff --git a/components/CalEPD/include/parallel/ED047TC1touch.h b/components/CalEPD/include/parallel/ED047TC1touch.h index 82e7a319..3f95170f 100644 --- a/components/CalEPD/include/parallel/ED047TC1touch.h +++ b/components/CalEPD/include/parallel/ED047TC1touch.h @@ -1,3 +1,5 @@ +#ifndef CALEPD_EXCLUDE_PARALLEL + #include #include #include @@ -56,4 +58,6 @@ class Ed047TC1t : public EpdParallel bool _initial = true; bool _debug_buffer = false; void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); -}; \ No newline at end of file +}; + +#endif diff --git a/components/CalEPD/include/parallel/ED060SC4.h b/components/CalEPD/include/parallel/ED060SC4.h index 0624a216..cd9ca649 100644 --- a/components/CalEPD/include/parallel/ED060SC4.h +++ b/components/CalEPD/include/parallel/ED060SC4.h @@ -1,3 +1,5 @@ +#ifndef CALEPD_EXCLUDE_PARALLEL + #include #include #include @@ -46,4 +48,6 @@ class Ed060SC4 : public EpdParallel bool _initial = true; bool _debug_buffer = false; void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); -}; \ No newline at end of file +}; + +#endif diff --git a/components/CalEPD/models/parallel/ED047TC1.cpp b/components/CalEPD/models/parallel/ED047TC1.cpp index f2a4d225..abe40e1e 100644 --- a/components/CalEPD/models/parallel/ED047TC1.cpp +++ b/components/CalEPD/models/parallel/ED047TC1.cpp @@ -1,3 +1,6 @@ +// Excluded when this define is present +#ifndef CALEPD_EXCLUDE_PARALLEL + #include "parallel/ED047TC1.h" #include #include @@ -141,4 +144,6 @@ void Ed047TC1::cpyFramebuffer(uint16_t x, uint16_t y, const void * src, size_t n void Ed047TC1::setAllWhite() { epd_hl_set_all_white(&hl); -} \ No newline at end of file +} + +#endif diff --git a/components/CalEPD/models/parallel/ED047TC1touch.cpp b/components/CalEPD/models/parallel/ED047TC1touch.cpp index 25a019a7..3cfdfe6b 100644 --- a/components/CalEPD/models/parallel/ED047TC1touch.cpp +++ b/components/CalEPD/models/parallel/ED047TC1touch.cpp @@ -1,3 +1,6 @@ +// Excluded when this define is present +#ifndef CALEPD_EXCLUDE_PARALLEL + #include "parallel/ED047TC1touch.h" #include #include @@ -173,3 +176,5 @@ void Ed047TC1t::registerMultiTouchHandler(void (*fn)(TPoint point1, TPoint point void Ed047TC1t::touchLoop(){ Touch.loop(); } + +#endif diff --git a/components/CalEPD/models/parallel/ED060SC4.cpp b/components/CalEPD/models/parallel/ED060SC4.cpp index b1809011..a5cc55ac 100644 --- a/components/CalEPD/models/parallel/ED060SC4.cpp +++ b/components/CalEPD/models/parallel/ED060SC4.cpp @@ -1,3 +1,6 @@ +// Excluded when this define is present +#ifndef CALEPD_EXCLUDE_PARALLEL + #include "parallel/ED060SC4.h" #include #include @@ -130,3 +133,5 @@ void Ed060SC4::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) printf("x:%d y:%d w:%d h:%d\n",x,y,w,h); */ } + +#endif From b455e4d0cc9b3f425ece73fb085a436e2bd6dcac Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 17 Nov 2022 21:08:56 +0100 Subject: [PATCH 40/49] Update new models removing rtc_wdt_feed --- components/Adafruit-GFX/glcdfont.c | 4 +- .../CalEPD/models/goodisplay/gdey0154d67.cpp | 3 - .../CalEPD/models/goodisplay/gdey0213b74.cpp | 3 - .../CalEPD/models/goodisplay/gdey027T91.cpp | 3 - .../CalEPD/models/goodisplay/gdey029T94.cpp | 3 - components/CalEPD/models/testing/wave7i5.cpp | 226 -- components/CalEPD/models/testing/wave7i5.h | 54 - config-examples/lolin_d32_pro_PSRAM | 1826 +++++++++++++++++ config-examples/watch/tiny-goodisplay | 1746 ++++++++++++++++ main/demos/demo-touch.cpp | 7 +- 10 files changed, 3578 insertions(+), 297 deletions(-) delete mode 100644 components/CalEPD/models/testing/wave7i5.cpp delete mode 100644 components/CalEPD/models/testing/wave7i5.h create mode 100644 config-examples/lolin_d32_pro_PSRAM create mode 100644 config-examples/watch/tiny-goodisplay diff --git a/components/Adafruit-GFX/glcdfont.c b/components/Adafruit-GFX/glcdfont.c index 8ecbf00c..fb30aac8 100644 --- a/components/Adafruit-GFX/glcdfont.c +++ b/components/Adafruit-GFX/glcdfont.c @@ -5,8 +5,8 @@ #define FONT5X7_H // Standard ASCII 5x7 font - -static const unsigned char font[] = { +// static -> removed since it gave an error building this with Platformio +const unsigned char font[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, diff --git a/components/CalEPD/models/goodisplay/gdey0154d67.cpp b/components/CalEPD/models/goodisplay/gdey0154d67.cpp index b7c5a251..ab23070a 100644 --- a/components/CalEPD/models/goodisplay/gdey0154d67.cpp +++ b/components/CalEPD/models/goodisplay/gdey0154d67.cpp @@ -92,9 +92,6 @@ void Gdey0154d67::fillScreen(uint16_t color) drawPixel(x, y, color); if (x % 8 == 0) { - #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) - rtc_wdt_feed(); - #endif vTaskDelay(pdMS_TO_TICKS(2)); } } diff --git a/components/CalEPD/models/goodisplay/gdey0213b74.cpp b/components/CalEPD/models/goodisplay/gdey0213b74.cpp index a4d0547a..b1da939b 100644 --- a/components/CalEPD/models/goodisplay/gdey0213b74.cpp +++ b/components/CalEPD/models/goodisplay/gdey0213b74.cpp @@ -87,9 +87,6 @@ void Gdey0213b74::fillScreen(uint16_t color) drawPixel(x, y, color); if (x % 8 == 0) { - #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) - rtc_wdt_feed(); - #endif vTaskDelay(pdMS_TO_TICKS(2)); } } diff --git a/components/CalEPD/models/goodisplay/gdey027T91.cpp b/components/CalEPD/models/goodisplay/gdey027T91.cpp index 56a36a35..0662f874 100644 --- a/components/CalEPD/models/goodisplay/gdey027T91.cpp +++ b/components/CalEPD/models/goodisplay/gdey027T91.cpp @@ -91,9 +91,6 @@ void Gdey027T91::fillScreen(uint16_t color) drawPixel(x, y, color); if (x % 8 == 0) { - #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) - rtc_wdt_feed(); - #endif vTaskDelay(pdMS_TO_TICKS(2)); } } diff --git a/components/CalEPD/models/goodisplay/gdey029T94.cpp b/components/CalEPD/models/goodisplay/gdey029T94.cpp index 5ed32b96..4396095e 100644 --- a/components/CalEPD/models/goodisplay/gdey029T94.cpp +++ b/components/CalEPD/models/goodisplay/gdey029T94.cpp @@ -87,9 +87,6 @@ void Gdey029T94::fillScreen(uint16_t color) drawPixel(x, y, color); if (x % 8 == 0) { - #if defined CONFIG_IDF_TARGET_ESP32 && ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) - rtc_wdt_feed(); - #endif vTaskDelay(pdMS_TO_TICKS(2)); } } diff --git a/components/CalEPD/models/testing/wave7i5.cpp b/components/CalEPD/models/testing/wave7i5.cpp deleted file mode 100644 index 8fabe515..00000000 --- a/components/CalEPD/models/testing/wave7i5.cpp +++ /dev/null @@ -1,226 +0,0 @@ -#include "wave7i5.h" -#include -#include -#include "esp_log.h" -#include "freertos/task.h" - -#define GDEW075T7_PU_DELAY 100 - -// Constructor -Wave7i5::Wave7i5(EpdSpi &dio) : Adafruit_GFX(GDEW075T7_WIDTH, GDEW075T7_HEIGHT), - Epd(GDEW075T7_WIDTH, GDEW075T7_HEIGHT), IO(dio) -{ - printf("Wave7i5() constructor injects IO and extends Adafruit_GFX(%d,%d) Pix Buffer[%d]\n", - GDEW075T7_WIDTH, GDEW075T7_HEIGHT, GDEW075T7_BUFFER_SIZE); -} - -//Initialize the display -void Wave7i5::init(bool debug) -{ - debug_enabled = debug; - if (debug_enabled) - printf("Wave7i5::init(debug:%d)\n", debug); - //Initialize SPI at 4MHz frequency. true for debug - IO.init(4, false); - fillScreen(EPD_WHITE); -} - -void Wave7i5::fillScreen(uint16_t color) -{ - uint8_t data = (color == EPD_BLACK) ? GDEW075T7_8PIX_BLACK : GDEW075T7_8PIX_WHITE; - for (uint16_t x = 0; x < sizeof(_buffer); x++) - { - _buffer[x] = data; - } -} - -void Wave7i5::_wakeUp() -{ - IO.reset(10); - - IO.cmd(0x01); - IO.data(0x07); - IO.data(0x07); - IO.data(0x3f); - IO.data(0x3f); - - IO.cmd(0x04); - _waitBusy("Power on"); - - IO.cmd(0X00); // PANNEL SETTING - IO.data(0x1F); // KW-3f KWR-2F BWROTP 0f BWOTP 1f - - IO.cmd(0x61); // Tres - IO.data(0x03); // source 800 - IO.data(0x20); - IO.data(0x01); // gate 480 - IO.data(0xE0); - - IO.cmd(0X15); - IO.data(0x00); - - IO.cmd(0X50); // VCOM AND DATA INTERVAL SETTING - IO.data(0x10); - IO.data(0x07); - - IO.cmd(0X60); // TCON SETTING - IO.data(0x22); -} - -void Wave7i5::update() -{ - uint64_t startTime = esp_timer_get_time(); - _using_partial_mode = false; - _wakeUp(); - - IO.cmd(0x13); - printf("Sending a %d bytes buffer via SPI\n", sizeof(_buffer)); - - // v2 SPI optimizing. Check: https://github.com/martinberlin/cale-idf/wiki/About-SPI-optimization - uint16_t i = 0; - uint8_t xLineBytes = GDEW075T7_WIDTH / 8; - uint8_t x1buf[xLineBytes]; - for (uint16_t y = 1; y <= GDEW075T7_HEIGHT; y++) - { - for (uint16_t x = 1; x <= xLineBytes; x++) - { - uint8_t data = i < sizeof(_buffer) ? _buffer[i] : 0x00; - x1buf[x - 1] = data; - if (x == xLineBytes) - { // Flush the X line buffer to SPI - IO.data(x1buf, sizeof(x1buf)); - } - ++i; - } - } - - uint64_t endTime = esp_timer_get_time(); - IO.cmd(0x12); - _waitBusy("update"); - uint64_t updateTime = esp_timer_get_time(); - - printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu update \n%llu total time in millis\n", - (endTime - startTime) / 1000, (updateTime - endTime) / 1000, (updateTime - startTime) / 1000); - - _sleep(); -} - -void Wave7i5::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) -{ - printf("updateWindow: Waveshare this is not a good example of partial update. Use Gdew075T7\n"); - /* if (using_rotation) - _rotate(x, y, w, h); - if (x >= GDEW075T7_WIDTH) - return; - if (y >= GDEW075T7_HEIGHT) - return; - - if (!_using_partial_mode) - _wakeUp(); - _using_partial_mode = true; - - IO.cmd(0x13); - for (unsigned long j = 0; j < GDEW075T7_HEIGHT; j++) { - for (unsigned long i = 0; i < GDEW075T7_WIDTH/8; i++) { - if( (j>=y) && (j=x) && (i*8 2000000) - { - if (debug_enabled) - ESP_LOGI(TAG, "Busy Timeout"); - break; - } - } -} - -void Wave7i5::_sleep() -{ - IO.cmd(0x02); - _waitBusy("power_off"); - IO.cmd(0x07); // Deep sleep - IO.data(0xA5); -} - -void Wave7i5::_rotate(uint16_t &x, uint16_t &y, uint16_t &w, uint16_t &h) -{ - switch (getRotation()) - { - case 1: - swap(x, y); - swap(w, h); - x = GDEW075T7_WIDTH - x - w - 1; - break; - case 2: - x = GDEW075T7_WIDTH - x - w - 1; - y = GDEW075T7_HEIGHT - y - h - 1; - break; - case 3: - swap(x, y); - swap(w, h); - y = GDEW075T7_HEIGHT - y - h - 1; - break; - } -} - -void Wave7i5::drawPixel(int16_t x, int16_t y, uint16_t color) -{ - if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) - return; - switch (getRotation()) - { - case 1: - swap(x, y); - x = GDEW075T7_WIDTH - x - 1; - break; - case 2: - x = GDEW075T7_WIDTH - x - 1; - y = GDEW075T7_HEIGHT - y - 1; - break; - case 3: - swap(x, y); - y = GDEW075T7_HEIGHT - y - 1; - break; - } - uint16_t i = x / 8 + y * GDEW075T7_WIDTH / 8; - - if (!color) - { - _buffer[i] = (_buffer[i] | (1 << (7 - x % 8))); - } - else - { - _buffer[i] = (_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); - } -} - -uint16_t Wave7i5::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye) { - printf("Not used in Wave7i5 EPD\n"); - return 0; -} \ No newline at end of file diff --git a/components/CalEPD/models/testing/wave7i5.h b/components/CalEPD/models/testing/wave7i5.h deleted file mode 100644 index 19910449..00000000 --- a/components/CalEPD/models/testing/wave7i5.h +++ /dev/null @@ -1,54 +0,0 @@ -// 7.5 800*480 V2 b/w Manufacturer sample: https://github.com/waveshare/e-Paper/blob/master/Arduino/epd7in5_V2/epd7in5_V2.cpp -// Alternative class just for Waveshare 7.5 V2 since partial update was not working as expected -#include -#include -#include -#include "freertos/FreeRTOS.h" -#include "esp_system.h" -#include -#include -#include "sdkconfig.h" -#include "esp_log.h" -#include -#include -#include -#include -#include "soc/rtc_wdt.h" -#define GDEW075T7_WIDTH 800 -#define GDEW075T7_HEIGHT 480 - -// EPD comment: Pixel number expressed in bytes; this is neither the buffer size nor the size of the buffer in the controller -// We are not adding page support so here this is our Buffer size -#define GDEW075T7_BUFFER_SIZE (uint32_t(GDEW075T7_WIDTH) * uint32_t(GDEW075T7_HEIGHT) / 8) -// 8 pix of this color in a buffer byte: -#define GDEW075T7_8PIX_BLACK 0xFF -#define GDEW075T7_8PIX_WHITE 0x00 - -class Wave7i5 : public Epd -{ - public: - - Wave7i5(EpdSpi& IO); - - void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method - - // EPD tests - void init(bool debug); - void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation); - void fillScreen(uint16_t color); - void update(); - - private: - EpdSpi& IO; - - uint8_t _buffer[GDEW075T7_BUFFER_SIZE]; - bool _using_partial_mode = false; - bool _initial = true; - - uint16_t _setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye); - void _wakeUp(); - void _sleep(); - void _waitBusy(const char* message); - void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); - -}; \ No newline at end of file diff --git a/config-examples/lolin_d32_pro_PSRAM b/config-examples/lolin_d32_pro_PSRAM new file mode 100644 index 00000000..99d55957 --- /dev/null +++ b/config-examples/lolin_d32_pro_PSRAM @@ -0,0 +1,1826 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_DPORT_WORKAROUND="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=3 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=5 +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_DAC_PERIPH_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_APLL_MULTIPLIER_OUT_MIN_HZ=350000000 +CONFIG_SOC_APLL_MULTIPLIER_OUT_MAX_HZ=500000000 +CONFIG_SOC_APLL_MIN_HZ=5303031 +CONFIG_SOC_APLL_MAX_HZ=125000000 +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TOUCH_VERSION_1=y +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# end of Build type + +# +# Bootloader config +# +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V1_SUPPORTED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# CALE Configuration +# +CONFIG_ESP_WIFI_SSID="KabelBox-A210" +CONFIG_ESP_WIFI_PASSWORD="" +CONFIG_CALE_SCREEN_URL="http://cale.es" +CONFIG_CALE_BEARER_TOKEN="" +CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=60 +CONFIG_ESP_TRIGGER_SENSOR1=27 +CONFIG_DISPLAY_ROTATION=0 +CONFIG_ESP_MAXIMUM_RETRY=5 +# end of CALE Configuration + +# +# Display Configuration +# + +# +# Fill only EPD entries for single SPI displays (Good display/Waveshare) +# + +# +# Mosi and Clock should be set for any epaper +# +CONFIG_EINK_SPI_MOSI=23 +CONFIG_EINK_SPI_CLK=18 +CONFIG_EINK_SPI_CS=12 +CONFIG_EINK_DC=32 +CONFIG_EINK_RST=27 +CONFIG_EINK_BUSY=33 + +# +# Important: Leave the rest of unconfigured GPIOs to -1 unless multi-SPI channels (wave12I48) or Plasticlogic EPDs +# + +# +# CS2 and MISO pins apply only to Plasticlogic.com epaper displays +# +CONFIG_EINK_SPI_CS2=4 +CONFIG_EINK_SPI_MISO=19 + +# +# Config below applies to 4 epaper module wave12I48 w/4 SPI CS & BUSY pins (14 pins) +# + +# +# | S2 | M2 | +# + +# +# ----------- +# + +# +# | M1 | S1 | +# +CONFIG_EINK_SPI_M1_CS=23 +CONFIG_EINK_SPI_S1_CS=22 +CONFIG_EINK_SPI_M2_CS=16 +CONFIG_EINK_SPI_S2_CS=19 +CONFIG_EINK_SPI_M1_BUSY=32 +CONFIG_EINK_SPI_S1_BUSY=26 +CONFIG_EINK_SPI_M2_BUSY=18 +CONFIG_EINK_SPI_S2_BUSY=4 +CONFIG_EINK_M1S1_DC=25 +CONFIG_EINK_M2S2_DC=17 +CONFIG_EINK_M1S1_RST=33 +CONFIG_EINK_M2S2_RST=5 +# end of Display Configuration + +# +# Touch FT6X36 Configuration +# + +# +# The touch chip needs an I2C port and one input GPIO +# +CONFIG_TOUCH_SDA=21 +CONFIG_TOUCH_SDL=22 +CONFIG_TOUCH_INT=17 +CONFIG_I2C_MASTER_FREQUENCY=50000 +CONFIG_L58_MULTITOUCH=0 +CONFIG_FT6X36_DEBUG=0 +CONFIG_FT6X36_DEBUG_EVENTS=0 +# end of Touch FT6X36 Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +# end of Bluetooth + +# +# Driver Configurations +# + +# +# Legacy ADC Configuration +# +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set + +# +# Legacy ADC Calibration Configuration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration + +# +# SPI Configuration +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of SPI Configuration + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +# end of TWAI Configuration + +# +# UART Configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART Configuration + +# +# GPIO Configuration +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# end of ADC and ADC Calibration + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND=y +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +CONFIG_ESP32_REV_MIN=0 + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# end of ESP NETIF Adapter + +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_REDUCE_TX_POWER=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +# end of Power Management + +# +# ESP PSRAM +# +CONFIG_SPIRAM=y + +# +# SPI RAM config +# +CONFIG_SPIRAM_MODE_QUAD=y +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_SPEED_40M=y +CONFIG_SPIRAM_SPEED=40 +CONFIG_SPIRAM_BOOT_INIT=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +# CONFIG_SPIRAM_USE_MEMMAP is not set +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +CONFIG_SPIRAM_USE_MALLOC=y +CONFIG_SPIRAM_MEMTEST=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 +# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set +CONFIG_SPIRAM_CACHE_WORKAROUND=y + +# +# SPIRAM cache workaround debugging +# +CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_MEMW=y +# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_DUPLDST is not set +# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_NOPS is not set +# end of SPIRAM cache workaround debugging + +# +# SPIRAM workaround libraries placement +# +CONFIG_SPIRAM_CACHE_LIBJMP_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBMATH_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBNUMPARSER_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBIO_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBTIME_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBCHAR_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBMEM_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBSTR_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBRAND_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBENV_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBFILE_IN_IRAM=y +CONFIG_SPIRAM_CACHE_LIBMISC_IN_IRAM=y +# end of SPIRAM workaround libraries placement + +CONFIG_SPIRAM_BANKSWITCH_ENABLE=y +CONFIG_SPIRAM_BANKSWITCH_RESERVE=8 +# CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY is not set + +# +# PSRAM clock and cs IO for ESP32-DOWD +# +CONFIG_D0WD_PSRAM_CLK_IO=17 +CONFIG_D0WD_PSRAM_CS_IO=16 +# end of PSRAM clock and cs IO for ESP32-DOWD + +# +# PSRAM clock and cs IO for ESP32-D2WD +# +CONFIG_D2WD_PSRAM_CLK_IO=9 +CONFIG_D2WD_PSRAM_CS_IO=10 +# end of PSRAM clock and cs IO for ESP32-D2WD + +# +# PSRAM clock and cs IO for ESP32-PICO +# +CONFIG_PICO_PSRAM_CS_IO=10 +# end of PSRAM clock and cs IO for ESP32-PICO + +# CONFIG_SPIRAM_CUSTOM_SPIWP_SD3_PIN is not set +CONFIG_SPIRAM_SPIWP_SD3_PIN=7 +# CONFIG_SPIRAM_2T_MODE is not set +# end of SPI RAM config +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# end of Brownout Detector + +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_ESP32_ECO3_CACHE_LOCK_FIX=y +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# High resolution timer (esp_timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +# CONFIG_FATFS_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y +# CONFIG_FATFS_USE_FASTSEEK is not set +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# end of Heap memory debugging + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +# end of SNTP + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +# CONFIG_MBEDTLS_CMAC_C is not set +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +# CONFIG_MBEDTLS_SECURITY_RISKS is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +# CONFIG_MQTT_PROTOCOL_311 is not set +# CONFIG_MQTT_PROTOCOL_5 is not set +# CONFIG_MQTT_TRANSPORT_SSL is not set +# CONFIG_MQTT_TRANSPORT_WEBSOCKET is not set +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_VFS_SUPPORT_TERMIOS=y + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y +# end of Wi-Fi Provisioning Manager + +# +# Supplicant +# +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# end of Supplicant + +# +# ESP RainMaker Common +# +CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y +# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set +CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 +CONFIG_ESP_RMAKER_MQTT_PORT_443=y +# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set +CONFIG_ESP_RMAKER_MQTT_PORT=1 +# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set +CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y +CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00" +CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 +CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" +CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" +CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" +CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" +CONFIG_ESP_RMAKER_MAX_COMMANDS=10 +# end of ESP RainMaker Common +# end of Component config + +# Deprecated options for backward compatibility +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +CONFIG_SPIRAM_SUPPORT=y +CONFIG_ESP32_SPIRAM_SUPPORT=y +# CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options diff --git a/config-examples/watch/tiny-goodisplay b/config-examples/watch/tiny-goodisplay new file mode 100644 index 00000000..c9944bfd --- /dev/null +++ b/config-examples/watch/tiny-goodisplay @@ -0,0 +1,1746 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_DPORT_WORKAROUND="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=3 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=5 +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_DAC_PERIPH_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_APLL_MULTIPLIER_OUT_MIN_HZ=350000000 +CONFIG_SOC_APLL_MULTIPLIER_OUT_MAX_HZ=500000000 +CONFIG_SOC_APLL_MIN_HZ=5303031 +CONFIG_SOC_APLL_MAX_HZ=125000000 +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TOUCH_VERSION_1=y +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# end of Build type + +# +# Bootloader config +# +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V1_SUPPORTED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# CALE Configuration +# +CONFIG_ESP_WIFI_SSID="sagemcom6AE0" +CONFIG_ESP_WIFI_PASSWORD="GTZZGJN52NXQZY" +CONFIG_CALE_SCREEN_URL="http://img.cale.es/bmp/fasani/5e8cc4cf03d81" +CONFIG_CALE_BEARER_TOKEN="" +CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=60 +CONFIG_ESP_TRIGGER_SENSOR1=27 +CONFIG_DISPLAY_ROTATION=0 +CONFIG_ESP_MAXIMUM_RETRY=5 +# end of CALE Configuration + +# +# Display Configuration +# + +# +# Fill only EPD entries for single SPI displays (Good display/Waveshare) +# + +# +# Mosi and Clock should be set for any epaper +# +CONFIG_EINK_SPI_MOSI=23 +CONFIG_EINK_SPI_CLK=18 +CONFIG_EINK_SPI_CS=5 +CONFIG_EINK_DC=19 +CONFIG_EINK_RST=33 +CONFIG_EINK_BUSY=32 + +# +# Important: Leave the rest of unconfigured GPIOs to -1 unless multi-SPI channels (wave12I48) or Plasticlogic EPDs +# + +# +# CS2 and MISO pins apply only to Plasticlogic.com epaper displays +# +CONFIG_EINK_SPI_CS2=4 +CONFIG_EINK_SPI_MISO=19 + +# +# Config below applies to 4 epaper module wave12I48 w/4 SPI CS & BUSY pins (14 pins) +# + +# +# | S2 | M2 | +# + +# +# ----------- +# + +# +# | M1 | S1 | +# +CONFIG_EINK_SPI_M1_CS=23 +CONFIG_EINK_SPI_S1_CS=22 +CONFIG_EINK_SPI_M2_CS=16 +CONFIG_EINK_SPI_S2_CS=19 +CONFIG_EINK_SPI_M1_BUSY=32 +CONFIG_EINK_SPI_S1_BUSY=26 +CONFIG_EINK_SPI_M2_BUSY=18 +CONFIG_EINK_SPI_S2_BUSY=4 +CONFIG_EINK_M1S1_DC=25 +CONFIG_EINK_M2S2_DC=17 +CONFIG_EINK_M1S1_RST=33 +CONFIG_EINK_M2S2_RST=5 +# end of Display Configuration + +# +# Touch FT6X36 Configuration +# + +# +# The touch chip needs an I2C port and one input GPIO +# +CONFIG_TOUCH_SDA=21 +CONFIG_TOUCH_SDL=22 +CONFIG_TOUCH_INT=17 +CONFIG_I2C_MASTER_FREQUENCY=50000 +CONFIG_L58_MULTITOUCH=0 +CONFIG_FT6X36_DEBUG=0 +CONFIG_FT6X36_DEBUG_EVENTS=0 +# end of Touch FT6X36 Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +# end of Bluetooth + +# +# Driver Configurations +# + +# +# Legacy ADC Configuration +# +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set + +# +# Legacy ADC Calibration Configuration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration + +# +# SPI Configuration +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of SPI Configuration + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +# end of TWAI Configuration + +# +# UART Configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART Configuration + +# +# GPIO Configuration +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# end of ADC and ADC Calibration + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +CONFIG_ESP32_REV_MIN=0 + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# end of ESP NETIF Adapter + +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_REDUCE_TX_POWER=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# end of Brownout Detector + +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# High resolution timer (esp_timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +# CONFIG_FATFS_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# end of Heap memory debugging + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +# end of SNTP + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +# CONFIG_MBEDTLS_CMAC_C is not set +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +# CONFIG_MBEDTLS_SECURITY_RISKS is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_VFS_SUPPORT_TERMIOS=y + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y +# end of Wi-Fi Provisioning Manager + +# +# Supplicant +# +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# end of Supplicant + +# +# ESP RainMaker Common +# +CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y +# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set +CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 +CONFIG_ESP_RMAKER_MQTT_PORT_443=y +# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set +CONFIG_ESP_RMAKER_MQTT_PORT=1 +# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set +CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y +CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00" +CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 +CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" +CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" +CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" +CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" +CONFIG_ESP_RMAKER_MAX_COMMANDS=10 +# end of ESP RainMaker Common +# end of Component config + +# Deprecated options for backward compatibility +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options diff --git a/main/demos/demo-touch.cpp b/main/demos/demo-touch.cpp index ea53892c..f6bd7100 100644 --- a/main/demos/demo-touch.cpp +++ b/main/demos/demo-touch.cpp @@ -13,13 +13,14 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "FT6X36.h" -#include "soc/rtc_wdt.h" -#include + +#include "goodisplay/gdey027T91.h" +//#include // INTGPIO is touch interrupt, goes low when it detects a touch, which coordinates are read by I2C FT6X36 ts(CONFIG_TOUCH_INT); EpdSpi io; -Gdew027w3 display(io); +Gdey027T91 display(io); // Only debugging: //#define DEBUG_COUNT_TOUCH From 27ff4a93021ad24096fe76eae4157010eb2600e2 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Thu, 17 Nov 2022 23:09:00 +0100 Subject: [PATCH 41/49] Fix touch for IDF>=4.4 --- components/FT6X36-IDF/FT6X36.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/FT6X36-IDF/FT6X36.cpp b/components/FT6X36-IDF/FT6X36.cpp index 28021b57..0c9233d6 100644 --- a/components/FT6X36-IDF/FT6X36.cpp +++ b/components/FT6X36-IDF/FT6X36.cpp @@ -13,10 +13,13 @@ FT6X36::FT6X36(int8_t intPin) i2c_config_t conf; conf.mode = I2C_MODE_MASTER; conf.sda_io_num = (gpio_num_t)CONFIG_TOUCH_SDA; - conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + //conf.sda_pullup_en = GPIO_PULLUP_ENABLE; conf.scl_io_num = (gpio_num_t)CONFIG_TOUCH_SDL; - conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + //conf.scl_pullup_en = GPIO_PULLUP_ENABLE; conf.master.clk_speed = CONFIG_I2C_MASTER_FREQUENCY; + // you can use I2C_SCLK_SRC_FLAG_* flags to choose i2c source clock here + conf.clk_flags = 0; + i2c_param_config(I2C_NUM_0, &conf); esp_err_t i2c_driver = i2c_driver_install(I2C_NUM_0, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); if (i2c_driver == ESP_OK) { From 042c0a52aac5f32d34233abb3264ee0e6b5dd78f Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 18 Nov 2022 16:09:41 +0100 Subject: [PATCH 42/49] #72 Get rid of Printable dependency --- components/Adafruit-GFX/Print.cpp | 34 +++--------------------- components/Adafruit-GFX/Print.h | 3 --- components/Adafruit-GFX/Printable.h | 41 ----------------------------- 3 files changed, 3 insertions(+), 75 deletions(-) delete mode 100644 components/Adafruit-GFX/Printable.h diff --git a/components/Adafruit-GFX/Print.cpp b/components/Adafruit-GFX/Print.cpp index da98fed2..42ac2f10 100644 --- a/components/Adafruit-GFX/Print.cpp +++ b/components/Adafruit-GFX/Print.cpp @@ -46,37 +46,9 @@ size_t Print::write(const uint8_t *buffer, size_t size) // This printf will generate an error : //undefined reference to `Print::printf(char const*, ...) -// I just want to use Adafruit_GFX print function but not -// overload ESP-IDF owns means to do printf -/* size_t Print::printf(const char *format, ...) -{ - char loc_buf[64]; - char * temp = loc_buf; - va_list arg; - va_list copy; - va_start(arg, format); - va_copy(copy, arg); - int len = vsnprintf(temp, sizeof(loc_buf), format, copy); - va_end(copy); - if(len < 0) { - va_end(arg); - return 0; - }; - if(len >= sizeof(loc_buf)){ - temp = (char*) malloc(len+1); - if(temp == NULL) { - va_end(arg); - return 0; - } - len = vsnprintf(temp, len+1, format, arg); - } - va_end(arg); - len = write((uint8_t*)temp, len); - if(temp != loc_buf){ - free(temp); - } - return len; -} */ +// I just want to use Adafruit_GFX print function but not overload ESP-IDF owns means to do printf + +// Please use: display.printerf(const char *format, ...) instead size_t Print::print(const __FlashStringHelper *ifsh) { diff --git a/components/Adafruit-GFX/Print.h b/components/Adafruit-GFX/Print.h index dc0e21e3..9dace971 100644 --- a/components/Adafruit-GFX/Print.h +++ b/components/Adafruit-GFX/Print.h @@ -23,7 +23,6 @@ #include #include #include "WString.h" -#include "Printable.h" #define DEC 10 #define HEX 16 @@ -83,7 +82,6 @@ class Print size_t print(long, int = DEC); size_t print(unsigned long, int = DEC); size_t print(double, int = 2); - size_t print(const Printable&); size_t print(struct tm * timeinfo, const char * format = NULL); size_t println(const __FlashStringHelper *); @@ -96,7 +94,6 @@ class Print size_t println(long, int = DEC); size_t println(unsigned long, int = DEC); size_t println(double, int = 2); - size_t println(const Printable&); size_t println(struct tm * timeinfo, const char * format = NULL); size_t println(void); }; diff --git a/components/Adafruit-GFX/Printable.h b/components/Adafruit-GFX/Printable.h deleted file mode 100644 index aa4e62f8..00000000 --- a/components/Adafruit-GFX/Printable.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - Printable.h - Interface class that allows printing of complex types - Copyright (c) 2011 Adrian McEwen. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef Printable_h -#define Printable_h - -#include - -class Print; - -/** The Printable class provides a way for new classes to allow themselves to be printed. - By deriving from Printable and implementing the printTo method, it will then be possible - for users to print out instances of this class by passing them into the usual - Print::print and Print::println methods. - */ - -class Printable -{ -public: - virtual ~Printable() {} - virtual size_t printTo(Print& p) const = 0; -}; - -#endif - From c349d86944631582ef068e397aa108ef7d1e037b Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sat, 19 Nov 2022 18:20:09 +0100 Subject: [PATCH 43/49] #71 goodisplay/touch/gdey027T91T class --- components/CalEPD/CMakeLists.txt | 2 + .../include/goodisplay/touch/gdey027T91T.h | 83 +++ .../models/goodisplay/touch/gdey027T91T.cpp | 512 ++++++++++++++++++ main/demos/demo-touch-keyboard.cpp | 7 +- 4 files changed, 602 insertions(+), 2 deletions(-) create mode 100644 components/CalEPD/include/goodisplay/touch/gdey027T91T.h create mode 100644 components/CalEPD/models/goodisplay/touch/gdey027T91T.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index f1ddce83..dc55a951 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -5,6 +5,8 @@ set(srcs "models/goodisplay/gdey0154d67.cpp" "models/goodisplay/gdey029T94.cpp" "models/goodisplay/gdey027T91.cpp" + # With touch integrated + "models/goodisplay/touch/gdey027T91T.cpp" # Other mixed brands mostly GOODISPLAY based or using their epapers "models/wave12i48.cpp" "models/gdew075HD.cpp" diff --git a/components/CalEPD/include/goodisplay/touch/gdey027T91T.h b/components/CalEPD/include/goodisplay/touch/gdey027T91T.h new file mode 100644 index 00000000..bafdc7a7 --- /dev/null +++ b/components/CalEPD/include/goodisplay/touch/gdey027T91T.h @@ -0,0 +1,83 @@ +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include +#include "FT6X36.h" // Touch interface + +// Controller: SSD1680 (Solomon) +#define GDEY027T91T_WIDTH 176 +#define GDEY027T91T_HEIGHT 264 +#define GDEY027T91T_BUFFER_SIZE (uint32_t(GDEY027T91T_WIDTH) * uint32_t(GDEY027T91T_HEIGHT) / 8) +// 1 byte of this color in the buffer +#define GDEY027T91T_8PIX_BLACK 0xFF +#define GDEY027T91T_8PIX_WHITE 0x00 + +class Gdey027T91T : public Epd +{ + public: + Gdey027T91T(EpdSpi& IO, FT6X36& ts); + + const uint8_t colors_supported = 1; + const uint8_t partial_supported = 1; + bool spi_optimized = true; + + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method + + // EPD tests + void init(bool debug = false); + void initFullUpdate(); + void initPartialUpdate(); + void setMonoMode(bool mode); + void fillScreen(uint16_t color); + void update(); + // Partial update of rectangle from buffer to screen, does not power off + void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); + // TOUCH related + void displayRotation(uint8_t rotation); // Rotates both Epd & Touch + void touchLoop(); + void registerTouchHandler(void(*fn)(TPoint point, TEvent e)); + void(*_touchHandler)(TPoint point, TEvent e) = nullptr; + + private: + EpdSpi& IO; + FT6X36& Touch; + + uint8_t _mono_buffer[GDEY027T91T_BUFFER_SIZE]; + uint8_t _buffer1[GDEY027T91T_BUFFER_SIZE]; + uint8_t _buffer2[GDEY027T91T_BUFFER_SIZE]; + + bool color = false; + bool _initial = true; + bool _debug_buffer = false; + bool _mono_mode = false; + + void _PowerOn(); + // Ram data entry mode methods + void _setRamDataEntryMode(uint8_t em); + void _SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1); + void _SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1); + + // Default wakeUp used for 4 gray mode + void _wakeUp(); + void _wakeUp(uint8_t em); + + void _sleep(); + void _waitBusy(const char* message, uint16_t busy_time); + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); + + // Command & data structs + static const epd_lut_159 lut_4_grays; + static const epd_init_3 GDOControl; +}; \ No newline at end of file diff --git a/components/CalEPD/models/goodisplay/touch/gdey027T91T.cpp b/components/CalEPD/models/goodisplay/touch/gdey027T91T.cpp new file mode 100644 index 00000000..ed226b5a --- /dev/null +++ b/components/CalEPD/models/goodisplay/touch/gdey027T91T.cpp @@ -0,0 +1,512 @@ +// GOODISPLAY product https://www.good-display.com/product/432.html +#include "goodisplay/touch/gdey027T91T.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include + +const epd_lut_159 Gdey027T91T::lut_4_grays={ +0x32, { + 0x40, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x8, 0x48, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x2, 0x48, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x20, 0x48, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0xA, 0x19, 0x0, 0x3, 0x8, 0x0, 0x0, +0x14, 0x1, 0x0, 0x14, 0x1, 0x0, 0x3, +0xA, 0x3, 0x0, 0x8, 0x19, 0x0, 0x0, +0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, +0x22, 0x17, 0x41, 0x0, 0x32, 0x1C +},159}; + +DRAM_ATTR const epd_init_3 Gdey027T91T::GDOControl={ +0x01,{(GDEY027T91T_HEIGHT - 1) % 256, (GDEY027T91T_HEIGHT - 1) / 256, 0x00},3 +}; + +// Constructor +Gdey027T91T::Gdey027T91T(EpdSpi& dio, FT6X36& ts): + Adafruit_GFX(GDEY027T91T_WIDTH, GDEY027T91T_HEIGHT), + Epd(GDEY027T91T_WIDTH, GDEY027T91T_HEIGHT), IO(dio), Touch(ts) +{ + printf("Gdey027T91T() %d*%d\n", + GDEY027T91T_WIDTH, GDEY027T91T_HEIGHT); +} + +void Gdey027T91T::initFullUpdate(){ + _wakeUp(0x01); + _PowerOn(); + if (debug_enabled) printf("initFullUpdate() LUT\n"); +} + +//Initialize the display +void Gdey027T91T::init(bool debug) +{ + debug_enabled = debug; + if (debug_enabled) printf("Gdey027T91T::init(%d)\n", debug); + IO.init(4, debug); // 4MHz frequency + + // Initialize touch. Default: 22 FT6X36_DEFAULT_THRESHOLD + Touch.begin(22, width(), height()); + + printf("IO & touch initialized. Free heap:%d\n", (int)xPortGetFreeHeapSize()); + fillScreen(EPD_WHITE); + + fillScreen(EPD_WHITE); + _mono_mode = 1; + fillScreen(EPD_WHITE); +} + +void Gdey027T91T::fillScreen(uint16_t color) +{ + if (_mono_mode) { + // 0xFF = 8 pixels black, 0x00 = 8 pix. white + uint8_t data = (color == EPD_BLACK) ? GDEY027T91T_8PIX_BLACK : GDEY027T91T_8PIX_WHITE; + for (uint16_t x = 0; x < sizeof(_mono_buffer); x++) + { + _mono_buffer[x] = data; + } + } else { + // 4 Grays mode + // This is to make faster black & white + if (color == 255 || color == 0) { + for(uint32_t i=0;i Needed? + IO.cmd(0x18); + IO.data(0x80); + IO.cmd(0x22); //Load Temperature and waveform setting. + IO.data(0XB1); + IO.cmd(0x20); + _waitBusy("Load temp."); + IO.cmd(0x1A); // Write to temperature register + IO.data(0x64); + IO.data(0x00); + + IO.cmd(0x22); // Load temperature value + IO.data(0x91); + IO.cmd(0x20); + _waitBusy("_wake"); + // + + IO.cmd(0x2C); //VCOM Voltage + IO.data(lut_4_grays.data[158]); //0x1C + + IO.cmd(0x3F); //EOPQ + IO.data(lut_4_grays.data[153]); + + IO.cmd(0x03); //VGH + IO.data(lut_4_grays.data[154]); + + IO.cmd(0x04); // + IO.data(lut_4_grays.data[155]); //VSH1 + IO.data(lut_4_grays.data[156]); //VSH2 + IO.data(lut_4_grays.data[157]); //VSL + + // LUT init table for 4 gray. Check if it's needed! + IO.cmd(lut_4_grays.cmd); // boost + for (int i=0; i 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_mono_buffer)) ? ~ _mono_buffer[idx] : 0xFF; + countPix++; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + + printf("Total pix sent: %d \n", countPix); + + } else { + // NOT optimized: is minimal the time difference for small buffers like this one + for (uint16_t y = GDEY027T91T_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < GDEY027T91T_WIDTH / 8; x++) + { + uint16_t idx = y * (GDEY027T91T_WIDTH / 8) + x; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0xFF; + IO.data(~data); + } + } + } + + } else { + // 4 gray mode! + _wakeUp(); + printf("buffer size: %d", sizeof(_buffer1)); + + IO.cmd(0x24); // RAM1 + for (uint16_t y = GDEY027T91T_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_buffer1)) ? ~ _buffer1[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + IO.cmd(0x26); // RAM2 + for (uint16_t y = GDEY027T91T_HEIGHT; y > 0; y--) + { + for (uint16_t x = 0; x < xLineBytes; x++) + { + uint16_t idx = y * xLineBytes + x; + x1buf[x] = (idx < sizeof(_buffer2)) ? ~ _buffer2[idx] : 0xFF; + } + // Flush the X line buffer to SPI + IO.data(x1buf, sizeof(x1buf)); + } + } + uint64_t endTime = esp_timer_get_time(); + IO.cmd(0x22); + IO.data(0xc4); + // NOTE: Using F7 as in the GD example the display turns black into gray at the end. With C4 is fine + IO.cmd(0x20); + _waitBusy("_Update_Full", 1200); + uint64_t powerOnTime = esp_timer_get_time(); + + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + + _sleep(); +} + +void Gdey027T91T::_setRamDataEntryMode(uint8_t em) +{ + const uint16_t xPixelsPar = GDEY027T91T_WIDTH - 1; + const uint16_t yPixelsPar = GDEY027T91T_HEIGHT - 1; + em = gx_uint16_min(em, 0x03); + IO.cmd(0x11); + IO.data(em); + switch (em) + { + case 0x00: // x decrease, y decrease + _SetRamArea(xPixelsPar / 8, 0x00, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x01: // x increase, y decrease : as in demo code + _SetRamArea(0x00, xPixelsPar / 8, yPixelsPar % 256, yPixelsPar / 256, 0x00, 0x00); // X-source area,Y-gate area + _SetRamPointer(0x00, yPixelsPar % 256, yPixelsPar / 256); // set ram + break; + case 0x02: // x decrease, y increase + _SetRamArea(xPixelsPar / 8, 0x00, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(xPixelsPar / 8, 0x00, 0x00); // set ram + break; + case 0x03: // x increase, y increase : normal mode + _SetRamArea(0x00, xPixelsPar / 8, 0x00, 0x00, yPixelsPar % 256, yPixelsPar / 256); // X-source area,Y-gate area + _SetRamPointer(0x00, 0x00, 0x00); // set ram + break; + } +} + +void Gdey027T91T::_SetRamArea(uint8_t Xstart, uint8_t Xend, uint8_t Ystart, uint8_t Ystart1, uint8_t Yend, uint8_t Yend1) +{ + IO.cmd(0x44); + IO.data(Xstart); + IO.data(Xend); + IO.cmd(0x45); + IO.data(Ystart); + IO.data(Ystart1); + IO.data(Yend); + IO.data(Yend1); +} + +void Gdey027T91T::_SetRamPointer(uint8_t addrX, uint8_t addrY, uint8_t addrY1) +{ + IO.cmd(0x4e); + IO.data(addrX); + IO.cmd(0x4f); + IO.data(addrY); + IO.data(addrY1); +} + +void Gdey027T91T::_PowerOn(void) +{ + IO.cmd(0x22); + IO.data(0xc0); + IO.cmd(0x20); + _waitBusy("_PowerOn"); +} + +void Gdey027T91T::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation) +{ + if (!_using_partial_mode) { + _using_partial_mode = true; + _wakeUp(0x03); + _PowerOn(); + // Fix gray partial update + IO.cmd(0x26); + for (int16_t i = 0; i <= GDEY027T91T_BUFFER_SIZE; i++) + { + IO.data(0xFF); + } + } + if (using_rotation) _rotate(x, y, w, h); + if (x >= GDEY027T91T_WIDTH) return; + if (y >= GDEY027T91T_HEIGHT) return; + uint16_t xe = gx_uint16_min(GDEY027T91T_WIDTH, x + w) - 1; + uint16_t ye = gx_uint16_min(GDEY027T91T_HEIGHT, y + h) - 1; + uint16_t xs_d8 = x / 8; + uint16_t xe_d8 = xe / 8; + + IO.cmd(0x12); //SWRESET + _waitBusy("SWRESET"); + _setRamDataEntryMode(0x03); + _SetRamArea(xs_d8, xe_d8, y % 256, y / 256, ye % 256, ye / 256); // X-source area,Y-gate area + _SetRamPointer(xs_d8, y % 256, y / 256); // set ram + //_waitBusy("partialUpdate1", 100); // needed ? + + IO.cmd(0x24); + for (int16_t y1 = y; y1 <= ye; y1++) + { + for (int16_t x1 = xs_d8; x1 <= xe_d8; x1++) + { + uint16_t idx = y1 * (GDEY027T91T_WIDTH / 8) + x1; + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; + IO.data(~data); + } + } + + + IO.cmd(0x22); + IO.data(0xFF); //0x04 + IO.cmd(0x20); + _waitBusy("updateWindow"); +} + +void Gdey027T91T::_waitBusy(const char* message, uint16_t busy_time){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + // On high is busy + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) { + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>7000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } + } else { + vTaskDelay(busy_time/portTICK_RATE_MS); + } +} + +void Gdey027T91T::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + // On low is not busy anymore + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 0) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>7000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } +} + +void Gdey027T91T::_sleep(){ + IO.cmd(0x22); // power off display + IO.data(0xc3); + IO.cmd(0x20); + _waitBusy("power_off"); +} + +void Gdey027T91T::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEY027T91T_WIDTH - x - w - 1; + break; + case 2: + x = GDEY027T91T_WIDTH - x - w - 1; + y = GDEY027T91T_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEY027T91T_HEIGHT - y - h - 1; + break; + } +} + + +void Gdey027T91T::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + + // check rotation, move pixel around if necessary + switch (getRotation()) + { + case 1: + swap(x, y); + x = GDEY027T91T_WIDTH - x - 1; + break; + case 2: + x = GDEY027T91T_WIDTH - x - 1; + y = GDEY027T91T_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + y = GDEY027T91T_HEIGHT - y - 1; + break; + } + uint16_t i = x / 8 + y * GDEY027T91T_WIDTH / 8; + + if (_mono_mode) { + // This is the trick to draw colors right. Genious Jean-Marc + if (color) { + _mono_buffer[i] = (_mono_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + } else { + _mono_buffer[i] = (_mono_buffer[i] | (1 << (7 - x % 8))); + } + } else { + // 4 gray mode + uint8_t mask = 0x80 >> (x & 7); + + color >>= 6; // Color is from 0 (black) to 255 (white) + + switch (color) + { + case 1: + // Dark gray: Correct + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + case 2: + // Light gray: Correct + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] | mask; + break; + case 3: + // WHITE + _buffer1[i] = _buffer1[i] | mask; + _buffer2[i] = _buffer2[i] | mask; + break; + default: + // Black + _buffer1[i] = _buffer1[i] & (0xFF ^ mask); + _buffer2[i] = _buffer2[i] & (0xFF ^ mask); + break; + } + } +} + +void Gdey027T91T::setMonoMode(bool mode) { + _mono_mode = mode; +} + +/** + * Helper method to set both epaper and touch rotation + */ +void Gdey027T91T::displayRotation(uint8_t rotation) { + if (rotation>3) { + printf("INVALID rotation value (valid: 0 to 3, got %d) rotation*90\n",rotation); + return; + } + setRotation(rotation); + Touch.setRotation(rotation); +} + +void Gdey027T91T::registerTouchHandler(void (*fn)(TPoint point, TEvent e)) +{ + Touch._touchHandler = fn; +} + +void Gdey027T91T::touchLoop(){ + Touch.loop(); +} \ No newline at end of file diff --git a/main/demos/demo-touch-keyboard.cpp b/main/demos/demo-touch-keyboard.cpp index 055ec81c..b7625de2 100644 --- a/main/demos/demo-touch-keyboard.cpp +++ b/main/demos/demo-touch-keyboard.cpp @@ -12,7 +12,9 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "FT6X36.h" -#include + +#include "goodisplay/touch/gdey027T91T.h" +//#include // Optional font for the writing box: #include bool use_custom_font = true; // false to use default Adafruit GFX font (Small 8px) @@ -22,7 +24,8 @@ bool use_custom_font = true; // false to use default Adafruit GFX font (Small 8p // INTGPIO is touch interrupt, goes low when it detects a touch, which coordinates are read by I2C FT6X36 ts(CONFIG_TOUCH_INT); EpdSpi io; -Gdew027w3T display(io, ts); +Gdey027T91T display(io, ts); +//Gdew027w3T display(io, ts); uint8_t display_rotation = 3; // 1 or 3: Landscape mode extern "C" { From 3742950bbe81b6f331c378cb2c5e125a30ed4a85 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Mon, 21 Nov 2022 21:40:36 +0100 Subject: [PATCH 44/49] Cleanup GDEW042T2, needs further Partial update corrections --- components/CalEPD/include/gdew042t2.h | 4 +- components/CalEPD/include/gdew042t2Grays.h | 10 +- .../CalEPD/include/goodisplay/gdey027T91.h | 1 + .../include/goodisplay/touch/gdey027T91T.h | 1 + components/CalEPD/models/gdew042t2Grays.cpp | 151 +++++------------- 5 files changed, 51 insertions(+), 116 deletions(-) diff --git a/components/CalEPD/include/gdew042t2.h b/components/CalEPD/include/gdew042t2.h index cb5f5219..b9199872 100644 --- a/components/CalEPD/include/gdew042t2.h +++ b/components/CalEPD/include/gdew042t2.h @@ -14,7 +14,7 @@ #include #include #include -// Controller: IL0398 : http://www.good-display.com/download_detail/downloadsId=537.html +// Controller: IL0398 (old version, new see Grays class) : http://www.good-display.com/download_detail/downloadsId=537.html #define GDEW042T2_WIDTH 400 #define GDEW042T2_HEIGHT 300 @@ -37,7 +37,7 @@ class Gdew042t2 : public Epd void init(bool debug = false); void initFullUpdate(); void initPartialUpdate(); - void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation); + void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); void fillScreen(uint16_t color); void update(); diff --git a/components/CalEPD/include/gdew042t2Grays.h b/components/CalEPD/include/gdew042t2Grays.h index 2eb2a068..42707c10 100644 --- a/components/CalEPD/include/gdew042t2Grays.h +++ b/components/CalEPD/include/gdew042t2Grays.h @@ -17,7 +17,7 @@ #endif #include #include -// Controller: IL0398 : http://www.good-display.com/download_detail/downloadsId=537.html +// Controller: UC8176 #define GDEW042T2_WIDTH 400 #define GDEW042T2_HEIGHT 300 @@ -39,7 +39,7 @@ class Gdew042t2Grays : public Epd void setMonoMode(bool mode); void initFullUpdate(); void initPartialUpdate(); - void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation); + void updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool using_rotation = true); void fillScreen(uint16_t color); void update(); @@ -62,7 +62,7 @@ class Gdew042t2Grays : public Epd // Command & data structs - Mono? static const epd_init_30 lut_full; // 4 gray - static const epd_init_44 lut_mono_mode; + static const epd_init_44 lut_20_vcom0_partial; static const epd_init_42 lut_vcom11; static const epd_init_42 lut_ww_full; @@ -70,10 +70,6 @@ class Gdew042t2Grays : public Epd static const epd_init_42 lut_wb_full; static const epd_init_42 lut_bb_full; - static const epd_init_42 lut_ww_mono; - static const epd_init_42 lut_bw_mono; - static const epd_init_42 lut_wb_mono; - static const epd_init_42 lut_bb_mono; //static const epd_init_44 lut_20_vcom0_partial; static const epd_init_42 lut_21_ww_partial; diff --git a/components/CalEPD/include/goodisplay/gdey027T91.h b/components/CalEPD/include/goodisplay/gdey027T91.h index 806f6a84..a0e714ed 100644 --- a/components/CalEPD/include/goodisplay/gdey027T91.h +++ b/components/CalEPD/include/goodisplay/gdey027T91.h @@ -1,3 +1,4 @@ +// GOODISPLAY product https://www.good-display.com/product/432.html #include #include #include diff --git a/components/CalEPD/include/goodisplay/touch/gdey027T91T.h b/components/CalEPD/include/goodisplay/touch/gdey027T91T.h index bafdc7a7..3b79b5c2 100644 --- a/components/CalEPD/include/goodisplay/touch/gdey027T91T.h +++ b/components/CalEPD/include/goodisplay/touch/gdey027T91T.h @@ -1,3 +1,4 @@ +// GOODISPLAY product https://www.good-display.com/product/432.html #include #include #include diff --git a/components/CalEPD/models/gdew042t2Grays.cpp b/components/CalEPD/models/gdew042t2Grays.cpp index b66f8849..50fc2296 100644 --- a/components/CalEPD/models/gdew042t2Grays.cpp +++ b/components/CalEPD/models/gdew042t2Grays.cpp @@ -21,29 +21,6 @@ DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_vcom11={ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 },42}; -//full screen update LUT. lut_vcom0_full in original class -DRAM_ATTR const epd_init_44 Gdew042t2Grays::lut_mono_mode={ -0x20, { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x00, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -},44}; -// R21 Mono -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_ww_mono={ -0x21, { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -},42}; - // R21 DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_ww_full={ 0x21, { @@ -55,17 +32,7 @@ DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_ww_full={ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, },42}; -// R22 Mono -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_bw_mono={ -0x22,{ - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -},42}; + // R22H r DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_bw_full={ 0x22,{ @@ -78,17 +45,6 @@ DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_bw_full={ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, },42}; -//R23H w -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_wb_mono={ -0x23,{ - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -},42}; //R23H w DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_wb_full={ 0x23,{ @@ -101,17 +57,6 @@ DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_wb_full={ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, },42}; -//R24 mono -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_bb_mono={ -0x24,{ - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -},42}; //R24H b DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_bb_full={ 0x24,{ @@ -210,25 +155,9 @@ Gdew042t2Grays::Gdew042t2Grays(EpdSpi& dio): } void Gdew042t2Grays::initFullUpdate(){ - if (_mono_mode) { - IO.cmd(0x00); //300x400 B/W mode, LUT set by register - IO.data(0x3F); - IO.cmd(lut_mono_mode.cmd); - IO.data(lut_mono_mode.data,lut_mono_mode.databytes); - - IO.cmd(lut_ww_mono.cmd); - IO.data(lut_ww_mono.data,lut_ww_mono.databytes); - IO.cmd(lut_bw_mono.cmd); - IO.data(lut_bw_mono.data,lut_bw_mono.databytes); - IO.cmd(lut_wb_mono.cmd); - IO.data(lut_wb_mono.data,lut_wb_mono.databytes); - IO.cmd(lut_bb_mono.cmd); - IO.data(lut_bb_mono.data,lut_bb_mono.databytes); - - } else { + if (_mono_mode == false) { IO.cmd(lut_vcom11.cmd); IO.data(lut_vcom11.data,lut_vcom11.databytes); - IO.cmd(lut_ww_full.cmd); IO.data(lut_ww_full.data,lut_ww_full.databytes); IO.cmd(lut_bw_full.cmd); @@ -249,7 +178,7 @@ void Gdew042t2Grays::initFullUpdate(){ void Gdew042t2Grays::initPartialUpdate(){ IO.cmd(0x00); IO.data(0x3F); //300x400 B/W mode, LUT set by register - + // LUT Tables for partial update. Send them directly in 42 bytes chunks. In total 210 bytes IO.cmd(lut_20_vcom0_partial.cmd); IO.data(lut_20_vcom0_partial.data,lut_20_vcom0_partial.databytes); @@ -265,7 +194,7 @@ void Gdew042t2Grays::initPartialUpdate(){ IO.cmd(lut_24_bb_partial.cmd); IO.data(lut_24_bb_partial.data,lut_24_bb_partial.databytes); - } +} //Initialize the display void Gdew042t2Grays::init(bool debug) @@ -326,48 +255,58 @@ void Gdew042t2Grays::_wakeUp(){ IO.reset(10); - IO.cmd(epd_wakeup_power.cmd); - for (int i=0;i Date: Mon, 21 Nov 2022 23:51:30 +0100 Subject: [PATCH 45/49] GDEW042T2 best waveform for partial update could find --- components/CalEPD/include/gdew042t2Grays.h | 9 +- components/CalEPD/models/gdew042t2Grays.cpp | 213 +++++++++++--------- 2 files changed, 124 insertions(+), 98 deletions(-) diff --git a/components/CalEPD/include/gdew042t2Grays.h b/components/CalEPD/include/gdew042t2Grays.h index 42707c10..32b284a9 100644 --- a/components/CalEPD/include/gdew042t2Grays.h +++ b/components/CalEPD/include/gdew042t2Grays.h @@ -52,7 +52,8 @@ class Gdew042t2Grays : public Epd uint8_t _buffer2[GDEW042T2_MONO_BUFFER_SIZE]; uint8_t _mono_buffer[GDEW042T2_MONO_BUFFER_SIZE]; bool _initial = true; - uint16_t _partials = 0; + bool _partial_mode = false; + //uint16_t _partials = 0; uint16_t _setPartialRamArea(uint16_t x, uint16_t y, uint16_t xe, uint16_t ye); void _wakeUp(); @@ -63,15 +64,13 @@ class Gdew042t2Grays : public Epd // Command & data structs - Mono? static const epd_init_30 lut_full; // 4 gray - static const epd_init_44 lut_20_vcom0_partial; static const epd_init_42 lut_vcom11; static const epd_init_42 lut_ww_full; static const epd_init_42 lut_bw_full; static const epd_init_42 lut_wb_full; static const epd_init_42 lut_bb_full; - - - //static const epd_init_44 lut_20_vcom0_partial; + + static const epd_init_44 lut_20_vcom0_partial; static const epd_init_42 lut_21_ww_partial; static const epd_init_42 lut_22_bw_partial; static const epd_init_42 lut_23_wb_partial; diff --git a/components/CalEPD/models/gdew042t2Grays.cpp b/components/CalEPD/models/gdew042t2Grays.cpp index 50fc2296..e8bde11c 100644 --- a/components/CalEPD/models/gdew042t2Grays.cpp +++ b/components/CalEPD/models/gdew042t2Grays.cpp @@ -9,6 +9,66 @@ /* The EPD needs a bunch of command/data values to be initialized. They are send using the IO class */ +// new waveform created by Jean-Marc Zingg for the actual panel +// Fell free to play with this numbers and mess it up +/* +#define T1 0 // color change charge balance pre-phase +#define T2 25 // color change or sustain charge balance pre-phase +#define T3 25 // color change or sustain phase +#define T4 0 // color change phase */ +#define T1 20 // charge balance pre-phase +#define T2 20 // optional extension +#define T3 40 // color change phase (b/w) +#define T4 40 // optional extension for one color +#define T5 3 // white sustain phase +#define T6 3 // black sustain phase + +DRAM_ATTR const epd_init_44 Gdew042t2Grays::lut_20_vcom0_partial={ +0x20,{ + 0x00, T1, T2, T3, T4, 1, // 00 00 00 00 + 0x00, 0, 0, 0, 0, 0, // gnd phase + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00 +},44}; + +DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_21_ww_partial={ +0x21,{ // 10 w + 0x18, T1, T2, T3, T5, 1, // 00 01 10 00 + 0x00, 0, 0, 0, 0, 0, // gnd phase - 12 till here + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +},42}; + +DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_22_bw_partial={ +0x22,{ // 10 w + 0x5A, T1, T2, T3, T4, 1, // 01 01 10 10 + 0x00, 0, 0, 0, 0, 0, // gnd phase + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +},42}; + +DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_23_wb_partial={ +0x23,{ + 0xA5, T1, T2, T3, T4, 1, // 10 10 01 01 + 0x00, 0, 0, 0, 0, 0, // gnd phase + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +},42}; + +DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_24_bb_partial={ +0x24,{ + 0x24, T1, T2, T3, T6, 1, // 00 10 01 00 + 0x00, 0, 0, 0, 0, 0, // gnd phase + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +},42}; + // Full screen update LUT 4 gray (Only full refresh) DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_vcom11={ 0x20, { @@ -69,59 +129,6 @@ DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_bb_full={ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, },42}; -// new waveform created by Jean-Marc Zingg for the actual panel -// Fell free to play with this numbers, could not make it better -#define T1 0 // color change charge balance pre-phase -#define T2 25 // color change or sustain charge balance pre-phase -#define T3 25 // color change or sustain phase -#define T4 0 // color change phase - -DRAM_ATTR const epd_init_44 Gdew042t2Grays::lut_20_vcom0_partial={ -0x20,{ - 0x00, T1, T2, T3, T4, 1, // 00 00 00 00 - 0x00, 1, 0, 0, 0, 1, // gnd phase - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00 -},44}; - -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_21_ww_partial={ -0x21,{ - 0x18, T1, T2, T3, T4, 1, // 00 01 10 00 - 0x00, 1, 0, 0, 0, 1, // gnd phase - 12 till here - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -},42}; - -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_22_bw_partial={ -0x22,{ // 10 w - 0x5A, T1, T2, T3, T4, 1, // 01 01 10 10 - 0x00, 1, 0, 0, 0, 1, // gnd phase - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -},42}; - -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_23_wb_partial={ -0x23,{ - 0xA5, T1, T2, T3, T4, 1, // 10 10 01 01 - 0x00, 1, 0, 0, 0, 1, // gnd phase - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -},42}; - -DRAM_ATTR const epd_init_42 Gdew042t2Grays::lut_24_bb_partial={ -0x24,{ - 0x24, T1, T2, T3, T4, 1, // 00 10 01 00 - 0x00, 1, 0, 0, 0, 1, // gnd phase - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -},42}; - DRAM_ATTR const epd_power_4 Gdew042t2Grays::epd_wakeup_power={ 0x01,{0x03,0x00,0x2b,0x2b},4 }; @@ -176,24 +183,46 @@ void Gdew042t2Grays::initFullUpdate(){ * */ void Gdew042t2Grays::initPartialUpdate(){ - IO.cmd(0x00); - IO.data(0x3F); //300x400 B/W mode, LUT set by register - - // LUT Tables for partial update. Send them directly in 42 bytes chunks. In total 210 bytes - IO.cmd(lut_20_vcom0_partial.cmd); - IO.data(lut_20_vcom0_partial.data,lut_20_vcom0_partial.databytes); + printf("INIT PARTIAL MODE\n"); + IO.reset(10); + + IO.cmd(0x04); // Power on + _waitBusy("0x04"); + + IO.cmd(epd_wakeup_power.cmd); + for (int i=0;i= GDEW042T2_WIDTH) return; if (y >= GDEW042T2_HEIGHT) return; @@ -411,40 +441,37 @@ void Gdew042t2Grays::updateWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h uint16_t ye = gx_uint16_min(GDEW042T2_HEIGHT, y + h) - 1; uint16_t xs_bx = x / 8; uint16_t xe_bx = (xe + 7) / 8; - // _wakeUp has to be done always, doing it only once is not working good the 2nd update - _wakeUp(); - initPartialUpdate(); - + + // This command makes the display enter partial mode IO.cmd(0x91); // partial in + // Here it sets where in RAM is going to write it _setPartialRamArea(x, y, xe, ye); - IO.cmd(0x13); + // OLD data (Gray channel) + /* IO.cmd(0x10); for (int16_t y1 = y; y1 <= ye; y1++) { for (int16_t x1 = xs_bx; x1 < xe_bx; x1++) { - uint16_t idx = y1 * (GDEW042T2_WIDTH / 8) + x1; - uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; // white is 0x00 in buffer - IO.data(data); // white is 0xFF on device + IO.data(0x00); } - } - IO.cmd(0x92); // partial out - IO.cmd(0x12); // display refresh - _waitBusy("updateWindow"); + } */ - IO.cmd(0x91); // partial in - _setPartialRamArea(x, y, xe, ye); + // New data IO.cmd(0x13); - for (int16_t y1 = y; y1 <= ye; y1++) + for (int16_t y1 = y; y1 <= ye+1; y1++) { for (int16_t x1 = xs_bx; x1 < xe_bx; x1++) { uint16_t idx = y1 * (GDEW042T2_WIDTH / 8) + x1; - uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; - IO.data(data); + uint8_t data = (idx < sizeof(_mono_buffer)) ? _mono_buffer[idx] : 0x00; // white is 0x00 in buffer + IO.data(data); // white is 0xFF on device } } - IO.cmd(0x92); // partial out + + IO.cmd(0x12); // Refresh + _waitBusy("partial"); + IO.cmd(0x92); // Partial out } void Gdew042t2Grays::_waitBusy(const char* message){ From 8330f9b35c8be63d77887468a06228739fb238cf Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 2 Dec 2022 20:38:39 +0100 Subject: [PATCH 46/49] Update fontconvert to latest version --- .../Adafruit-GFX/fontconvert/fontconvert | Bin 10224 -> 14472 bytes .../Adafruit-GFX/fontconvert/fontconvert.c | 419 +++++++++--------- 2 files changed, 216 insertions(+), 203 deletions(-) diff --git a/components/Adafruit-GFX/fontconvert/fontconvert b/components/Adafruit-GFX/fontconvert/fontconvert index be6307a9c7e6bf71974f55a4ab1cdb8987b5a605..cc7c6130a80b84fb19b85daa6fb001bebdc9ab74 100755 GIT binary patch literal 14472 zcmeHOeQ;FQb-ycVK?u+a420qjUI>c8phaL{z?6C=c;b-}iEJZ63uIZO722`By8G6k z!~%IXV77}~xkD1Qb*AbJZE1##No)vq6C#0&aGE;8aXi?WIC5(@yTx|M`Xj^vZ-3{$ zd!C-2wUe1NGx%5JlT2a zQt@sYFSYcTvfQpuv*f}>PpJ5rI_)SoqC(lNA4_K{yGljbj?zVTWy-Eh*)bI=pG-NQ zloR?}qx`w41{oDi{tDr?+pg@~bfeN|N_9|q;7zmf_o=T=*{xh)`Ek=)3l>bdzWZP& z^Qq*&i*PsJuj08w8i&V>|e9GV)aUYtlhst$|)|Y zgT~aR&(>3S3=qcd=z5moN#1wu7bkyv{HgoC-86juWYs_HnE9E9H?R+?lXR$%J$Etj zbbTxSNJqBc^9Zg)0bw*ZE{9)eU7JnuG$GlTG8=|7#~>C%m^Kcc1~#64E)V|sJh+($ zzdcVpMS1WodGKH7@&95T{406z=knkUdFrjrgZtq}!=JnSGl22(xiF8Py?OKx<-s@Q z@$<_(`hh(9w9IJubC;(8j2HisJbtzUS5te8tF^#qhtc$jH zgrjC>@PV)?z;6nh!A&il9nHjSgv($J>fMTZ3AjJphB`+THn&C0F$%Tqp~m2b=1`Qh z;Zj})ABcQWnoEDS_s@p+1#3bLVQO51)vA~oZRqF}v5sh@&1@22qYceb(GfReXcZdN z@L;f^`N3dQDAGb`1JwkrmT;SB4YjniH$bg{vJ~7CBrawm-l%BW7mb)<5i;8&qDeW2 z;{H&uDbf~dq40u13PUBWH56$Rn`$>#ZwRjN-)w69k9S5Xhqx>KN5q5`Z+eC?FA6z~{0P(CZGI)?zL^zG+`@F3O9P{$$|X zRI;gb;JkMbzQ%#mKEWm6z~y;H2@D7B+$ZZCIMvN%y94Lkk!-gEN5|Nu*@2hXs1O|v zTphinbiV_i=FsnU;20QoIpV;5HY!A~1E1l*`y9A)ed>4MYKTay6AqmAWiF>2_-qD2 z&pPlq4t&6Yf5L%Za^QdBz=s|9JO@5;Igx>h3`}I;kDY;ceRq6lB;G1EQr=gV31J)> zFbi_SM&h~R3o^9asw|GS*y&C>>!%{*fBv~guKe`)iyVP!KRo2QK`o4L>CX@kmUs%)M% zrfg=p&C`aI&3w}4X(P&JX4pI(46+%I&C`aI&HU;kZZ91W(0-ezjS20ydD@WBew(L_ z2<^9d+JMl0o2QKj?Png@-X*iWQOJCQ@518%-~3TN?&4creAvbBa`E*pev6COUHp0% zzski|xcG7xf4hsH?c%4qc(04UxpZv%-*@qEyZAR<{LftcPn`Vnw>Kv*f5Axpmyvkm zTHV &ZgsjL|dwM;J&(&-%Z?_|DD#HcZ~@1^YTKj2`c+MAlw6XJhI-M%S1+Q*tA| z`Q7MEaY0e&e@p7G`Ua839~sGO#^5{m8iUsh4bMg6@<-+@I0!2T#kr9t+0SfG^Q(J( z7sMjIq~1uZuck{Q`KCF|NUg5{lYahYE|+e^V7=(A2k+ShTf2U;&+LPcF6v>2$zGPc zenh{~-E~8lb9`rJFMyHnjJE(}%J32IEf)Lk5+R1uN4!@-A$^K4oLC@enmnW6dYV;qz;jdkt#z+OoMl$XVp#W`Q(rl#TrC$me#n;-(uxq z^~3=5Nh#e7c~U=VIV_6bI;t^OY1BxKzN_mj9dCTa$8{D+onxZ{O&L$Ij8l5wI{jGJ z%#?mCsUHQG)Q_d~qe;DQ)C9}8IEQ6ihE;Wg@}Xlf?-~~7WFw&ud#?IeITa|D!W0zH zhBtl-<;1`&*&fUA3Jk9Za{;Paq8~#S8-2#$NFiy|SQ;bH7!mQikhhl>Q>BB?PDkbE zC|Bsm5vuZzq;aMk+^?GCB>lh7ST&vl|wxVC!kHP{X5N1-6DZc7V_8eQf)SAW>> zya;E$?+D*_2Fisd#G!$>mL~o2G!i34nB8Sax6xq5?-{-*f(iYoXAI^$BaY~YySomH z_~S;8ewNz!>W4HsP9?fd3G>s))Hg6LQ}w41>dQ2mIMg3QEv28ztj6Xyq#yYdLPm?u z8a?$#jO1mbXZ8ST_pJI)%P4&d^tmq+1L*ilr9J@lXQ{I ztayL$8!M1+VpmS-CkIC+84cIqd!S0@^qC&Gw*7zIGDLsU#Qhw6T8Td`ozOrX(rI>z z%n%L*GFO+#7aSBIz!xaS40N3dO5O?0Ek~^!l{>?H5}KKZ;D}rpsqQ{FK1YWQa`U3g zO|{d_hcxy$)y?E)*;qHo^CdMXJ6(=`^JzysKXN*nPmcZvqumjY;iafBO49)0Qookc zdogo*X8k*G(j39SOVvNolq>_2P8mhxDI|Yzq^>~9i}Q&KA?7R~8QtW4@cJao!h9A* zu(*~o7Uh$Br980oS(?Df%Zu|mnlz*zhl;ow8`Asb#rBlm-%~gF(16c4kF71KKMf!; zGWpqVh?9dq{xCUwM1K_ik(N5E;ele`llpOr_G!;0WC+voj98#QO54Ctx)!-j==~lt zN!1}o{cF$f`@4jG+(IxHj|1pdVo8MW$@8c(sh>!6oe<{2vlu&KiGBjW)spX1nCTC$ z)8IbQQ*Y4w5@w2l&neCi%{dJ6a&}ZuFfS$YWOI zJ99mcsL*%jQXWx(@650i)%HxYhi0wklC>t%J;63TIarmvE?czFZqcjnqos-G&;gW% zu4+)JQEqFTg+`+5===k>;rGD7Ijk|m*7zzkzE7w0^lhZ;%Ij-52-E&Xnf&h}&g35H zwNHBOlU^;2f3r0L(16J~0O>d0bN0tKZ5^s_w4a``@uD&KX&Zmb@egi*Hi@r+@w{Bx~?yp*er~Pt|$0HkqwW zzOym;i>lnLpBsq_9%Jp#;{Qwci#v8z?X22W^@Xb7g{IL;>6Auyl0@ZwrhR8AW19H+ zBWJ*)o{ldq(KNAC6P5eRD_3k6qCOVd8@@*?k7-TqcwrG~32QODOwe{TMWQitm$suN z1X3cl$afPOUPZJ=OGJ5NhgsgZNAQ~!ErQo5mJq%g1>SvxqaD#Oek&ddM`MxpHep8N z^6ihPK}A{%Ub8q1L_>R9%+%sAToW`APIbg=4RyqJ?9%G)|JPvXweq{i{;VW+Wuw-GENj}bWtz>Vf_42Uap#9c7<-!P#0=vWPRH-L=?G z%F+^&*fEmCic$)!`j)DC5e#BkS3)Kqle8!iqO9uZh_>(dllGoYGaRF2cy29RXMoc7 z`qtaI+{2(df0@f22Wyo4T*KTiiSE zp1bZ|xB#g1yA$-(JGq=RBoKw_Gx2u<_-?XSh3caFgjZ1CWy18*vcm-%rcWxkgovzn zIVS=C720zrZZT|m;T=;*VI!a);;$bE;xMSFDJ}c!g3YCKA1l;LwVooqbkR}o#?s2e zlZ?_eiOHKv18t>is!A)XN*7g^YSpE4t4qtOON*^{WQgk${9wDBC=(f&$iPGfCNeOQ zfr$)EWMCo#f8Y%8_eK0Y5g!TNl)h=AGR-3P2Tt_7n@Th8o2l5}eyH!2_}d^lD^rQf8t| zeV0N{PpOot3qFtIF{dp2jY~6~c~KbeRRMF{S1hqmYIgl9Eq42G{Fm)RxY87ldL&<` z9N|R_%cVyg$0a{U$?;TB^4tzp?H`QT-&wmnR;rtbfTDGZ?pCxz(QZY17428_l%fNQ z4l6pM=ru+0k)$kTifW2hDjHCGx0!Km zt$(GzvSN8$a?1~_sPtE^^e(*ZQ+uF^re{WmdkNZaX{iOri z6OZ77>PVx4s;W0vn4!HwsyByX&BEW<*%s?;wWt}jB>bR2swpN2Sv1@dA_H~R(PB~* z5&YuPzqego#KH~2Z-)1S#V3&wXty_p%#iShn}bc!P-{5Y+z4;XSw4cHXf)JmS@1Qg z3bjVy%rf5-iwS>2duwaBjczFapM~ZvO<|sobJYN6%IgGI!|N0C^oaq@O}1a7?3rq; zs3^}{hVhPLjQw_H&y?=Fou$ah;Ce0oob^Af?3rpVeYgE4$nmJWo#W^AkLe<1&+DH% z{`(-O9I`#Hk4(=h0mVqUV|!jF{~Q>F%=WzAGUfFZDzdoq9|B5i7u)lC#q=I!$MLfs z(>BOyEo7e8L#6>`?~Y%=q6-(4Q?~C_4P?seGuQ8K|D(#jS~=wPo+D)vuV;$#J_r?A-2G3_UYz!tvSTWr^(b2+F8AVVF8f}!4l-qZcELQ;ewTf}vS+&6 z)!}T%^j}@}fDN>kAlw!p%<|CE;a z9xkYftd{Tpa#-J8|9`mbyBAoROc%NG=dS-JP^ZtX)UqLjIzRFM?YQ-sXZkv9eGYp* zUlmsXL}5LP8|4{)8v+`;TtA-!`2VmtF*N_EupRf~-vgs2+V<*vRkn<@@g2EE>|eHL z`T-Nvqj? zYfDaq)vo2ydL>tG8IR&29nyGQrgZ~NTm_Q}S%Hm++tPK@CXCZ2Y9^$+A!(GD5ZSR& zzjNO`tH+|916l>`{k_FXdg=rZDgtAIewxjUKu2R`mDm$h^#m|)cM}4EuJ|)kk+aaUElys>y zT`~PsPgP3x7Rvfe+3t^EM{)kHr9vt0QSIf+%Z!SjDUZY2&S1-?+O?hjHJ!okXz!Zd zx=m{~)w&}g_j=iH@=v-u9&VN`QCc}w6!Ri{2qXEP#O_f2^GCk?fY0;MD+BMnaOlw= z93$Oj`0%*NigH2t=3gdwYJj`7IAM6_t+2$jdGO1?=F|Uq9^9V?Uzn%eYkBmy=F$J} zJo@MI;DdSa*Yekotj z?ZJo{2=Cjytuxde*yn5M3<$5cy(`r1jhMc$>GfKw^C~v(^X>?k-W{ENJskqfcDV31 zqMdzchk!kSZnQC{u(La8-lVWA=Ap7b{QS_9OX zR;w2gGu+zKCn7!JV7J*Oz=m5p!lEZ?M$ij%p!IQYYscf>Heaxl&{k>*TAhJz(dFyx z47Eb7m9pY(@e&s?5pP(uJsA#~0pT-4LD8n1L$TNAZ3}k$Iw?G_m%>m<>hcA<#g1J& z8@74ZyEkNOwb|Nw_eL5J+D{79vryG6oFu$Akp}ZcvgW`pbqR9bFYgKl7t+oiz<3k3 zNb-dur1+@crKrw^XJ4g|)Z1`=XOV$n!|m_& zCL3;lukE+t)HatxHk@-!vJM-LfytI08(x-0h3K{6>IfvI12$X@mBfc^c)88bs14`2 zL*g+Teuqu}xDB`OM<;CfT{itwHk{t2Tu$5Y#SDTbZTJ!!e$j@jBZrixY`8j7N!*D2 zwA4sA|8B7+jKQQ?Fq<-BZ2RPUe*4|Au&)GMVF&|108Ys$@nb{}S;uMKS}D|8wGLYGisO{~Yl& zB{GL3|EI*$RLC?*{wd;V3S{afA10oLK2sz4!^G2&XEe#T5Kl`jQz7|3CZ2{qBP73v zcv^Cq=^Fs5K21DLfy|WT8;GZ&&!i;(An`QhnWW^`6Hh~(IVJh~h^HaW9M9Ufje?hD z-OqN$-+s)9|Imp2Xu4_Nt`X-?&=+H5VMLOxUqz;87hk_i6W3hJx07V+y>QrUj5zNG zH8#%}@hj%t7}B?(Lqodo;OtbJ+qL`|>Hpw)8pSyt_WwnSBOBiVX*Q~Fz}}d+QE0@c zjfwO_hU0?q_6@TV4qs3X7m&kz{sy*w5o#j3)`)Fwr&=?`v%pAfJq#|r5E)DxcwBJy zfp<_i0~FZ1=iw6lA@zfqHfT@{v$G;TGo*ho(Eoujm$=3k>#%Z-JF7r$OAR?US?m&! zRC>r+Zm}gG&m>)gF*t_udv_8WZA6tMv7}?jc>@^uUxR$|_9vDi4KHC1ou*LIy&qD1 z--Ae8y#tcLtmH9BV3m}{$@m2bAI}Os((FrQcEK3~8Mxr=CvNmx=VfR9HeiZs*QXe}a$uT@dOd1qCz1Bz!l8uq5z-VlMXN=l4 ztOO%IX$9^=1gGUvbQ7%9V@c?fQu-mt3b}V zDQHZI=zYlBZz_%p zeHaSj>LclYlMM>Pb+-9A!||_%Bjx&Z%iL{+=RKt#gP8oK>u?h`hqc{pQc`Y`F$GNQ?dS2!u&Xrb;+e6+*1hkEy@Xp z`qxlP=%+Flv2F7(#gZ7)8g%TmG18ng;%}d!o{-a>Hm8_Q&c3YE5xdhpP?P2`x$vIV zKsy>p=&w#p6&tP75GFk`SFex2b=LpqEkg_yt;fCaX(jaUr4yQile*krGhfGRN#@`p z`GSK21bB&JyaHW&$N#+?9p61{^}X62=HEgya~O`ug^?H-LnvqIbw_S4<+yp??&bz% zi&N+)Hy^v%4H9=z&9`WdBi-)k+jd9G$k98P$hLS4Cq;$Xmj(!z`gB4c#iAHl^d@l9 zoWg`kG#_h=SAa<;nu?Ud0-M6cp{4>U#axosIl@8+IRi+<0C}F6DK_Hg=GQNR{&b>g z)%;SYl-934Lu;}+kBj0-{bh*7)ySlNTvqlc^y4ETj9`uJQU}*V%bz2t>~9uCvKJW<{>?nLMIG*Z9Re zq5{`=N{V)k%uT3Wj*Hg*M(5E-^!S7)J|mZNZMH{0{1ti{djkVNS?F&7l^Pqf8cArx z`iGYv`3Rmzo?gNl_hvQz5*pv6vthcHbaV3heVoVWbw%6AyI7i5CJ#%mW76xG^lEAR zV^+g}223siNPlq6J|5r5>Z~Lk`92}<=d<{NoA5WY_%+K9t*_&V*GSaYTZ?NV(Tq3j zQ5odPtooZ!w_blEO^$d9Z@=o4noO}|iB$eVR(Z_wEqDA!QJ4KR644pIv7uI;MoeeA z6@qV_AN733^T^KlcRkG>oJFf%DV9ggHAMG%;vepeU*ADo!JnDh zy6^G%a98~OUGeMN<3IPzF8U86cHUuZ{?F)7=sU)NgPun{2R)B@yyr*f&ZF<1M`y{O z`WE6)-;P(8X_{EAiJIQ3n)Ul}PK@~40}pCd5v?tR3yWZ9K#SlqK|9bE3`fj^+JR0V zNSW9z?hgsT%%Y*`0|TJ_|iIYlVZb=eU#Qvcf{19xE!hT znrOBmXm@yW2IoDbYSr)%uCDIayfV=H!#M z2TYS>?Q|QYOtt<|xaQZF_Ig$STf=c3*WiDXYs!l8uohR+Lg;wYOTei(ont%$Bk; zfml2}J>gKVo6^_PX9n<{$FZz%3%(WzIyepdVs@5Z;KN=io^B^89z#q$t+-A{_D%&#xRO2|n+J&m@> zcX>r)dF7{Fw?A1rARbz}<-QFoSC9*`r?@rvrPl!$vV9bv6^Qwt3G|d#JX^4BVR6Al zL}dB?9N>R}T)szGUij5gQXrql@ae#5H2^9a$}9e?prO3-`9ho#Mv5BBR}DLj@|tIh zjq-s@Hr6SR;2?A?WKNl{eJo8sDMv{V(60^4eZ%sSCabrgct*<-fWy8zO#8EjA}H zD2G%9Uom7!D!B?n45~o+?y^$pEmo8XjySSZs(U_O(=*DR_cPi@sqkHKoeGfgL#o1Y zU$)fo`><8G{f{c1_3&j>_7BZT2uCT&Ysw$)Em$rsv3*MZ$ExEvA4{J5q1^wUk?ilg zIUd_oqMuOoSw&w|^c6+N6}_P7cNG1xqSqBIRs*#}(T^*-Nzq0{A5pYT(I*srR?!y~ zeMQlnuzxGdzcUOtc5K`Bpth>HCE9I9wFlfA-8E}AL?yTG$htarO>MP>3gM1);1?a! z*CO0F=LEt%!rdJ*18z^l&NZg5U2*N*QFlu;h+m3>e&Hsr!x!lgZhv2Qq_4}OX4sNE z5eP?uq3)X)FJ$3Br;iL&t*6tZCWCmQ>TVCAVg`Eg#E(QlD24n!((%hc-&hkbpP1=rDnuPfM!n5212BqH3cp{}k#xA|KW_&X}l@X!+D^_K5{5A04Y zM`p!csL>K(``rH(Xjx6GQk28r3*K&TDo0FL=IH0z*Fui3iXm>F_a~-o&-)dxcXsjqczX=ydN^<{SPX#>y#bG&w5M` zKu&uV^Soa%tylKB@heyyMul?9_J`Dd$CUR^Za=sGG!e #include -#include #include +#include +#include #include FT_GLYPH_H +#include FT_MODULE_H +#include FT_TRUETYPE_DRIVER_H #include "../gfxfont.h" // Adafruit_GFX font structures #define DPI 141 // Approximate res. of Adafruit 2.8" TFT // Accumulate bits for output, with periodic hexadecimal byte write void enbit(uint8_t value) { - static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; - if(value) sum |= bit; // Set bit if needed - if(!(bit >>= 1)) { // Advance to next bit, end of byte reached? - if(!firstCall) { // Format output table nicely - if(++row >= 12) { // Last entry on line? - printf(",\n "); // Newline format output - row = 0; // Reset row counter - } else { // Not end of line - printf(", "); // Simple comma delim - } - } - printf("0x%02X", sum); // Write byte value - sum = 0; // Clear for next byte - bit = 0x80; // Reset bit counter - firstCall = 0; // Formatting flag - } + static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; + if (value) + sum |= bit; // Set bit if needed + if (!(bit >>= 1)) { // Advance to next bit, end of byte reached? + if (!firstCall) { // Format output table nicely + if (++row >= 12) { // Last entry on line? + printf(",\n "); // Newline format output + row = 0; // Reset row counter + } else { // Not end of line + printf(", "); // Simple comma delim + } + } + printf("0x%02X", sum); // Write byte value + sum = 0; // Clear for next byte + bit = 0x80; // Reset bit counter + firstCall = 0; // Formatting flag + } } int main(int argc, char *argv[]) { - int i, j, err, size, first=' ', last='~', - bitmapOffset = 0, x, y, byte; - char *fontName, c, *ptr; - FT_Library library; - FT_Face face; - FT_Glyph glyph; - FT_Bitmap *bitmap; - FT_BitmapGlyphRec *g; - GFXglyph *table; - uint8_t bit; - - // Parse command line. Valid syntaxes are: - // fontconvert [filename] [size] - // fontconvert [filename] [size] [last char] - // fontconvert [filename] [size] [first char] [last char] - // Unless overridden, default first and last chars are - // ' ' (space) and '~', respectively - - if(argc < 3) { - fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", - argv[0]); - return 1; - } - - size = atoi(argv[2]); - - if(argc == 4) { - last = atoi(argv[3]); - } else if(argc == 5) { - first = atoi(argv[3]); - last = atoi(argv[4]); - } - - if(last < first) { - i = first; - first = last; - last = i; - } - - ptr = strrchr(argv[1], '/'); // Find last slash in filename - if(ptr) ptr++; // First character of filename (path stripped) - else ptr = argv[1]; // No path; font in local dir. - - // Allocate space for font name and glyph table - if((!(fontName = malloc(strlen(ptr) + 20))) || - (!(table = (GFXglyph *)malloc((last - first + 1) * - sizeof(GFXglyph))))) { - fprintf(stderr, "Malloc error\n"); - return 1; - } - - // Derive font table names from filename. Period (filename - // extension) is truncated and replaced with the font size & bits. - strcpy(fontName, ptr); - ptr = strrchr(fontName, '.'); // Find last period (file ext) - if(!ptr) ptr = &fontName[strlen(fontName)]; // If none, append - // Insert font size and 7/8 bit. fontName was alloc'd w/extra - // space to allow this, we're not sprintfing into Forbidden Zone. - sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); - // Space and punctuation chars in name replaced w/ underscores. - for(i=0; (c=fontName[i]); i++) { - if(isspace(c) || ispunct(c)) fontName[i] = '_'; - } - - // Init FreeType lib, load font - if((err = FT_Init_FreeType(&library))) { - fprintf(stderr, "FreeType init error: %d", err); - return err; - } - if((err = FT_New_Face(library, argv[1], 0, &face))) { - fprintf(stderr, "Font load error: %d", err); - FT_Done_FreeType(library); - return err; - } - - // << 6 because '26dot6' fixed-point format - FT_Set_Char_Size(face, size << 6, 0, DPI, 0); - - // Currently all symbols from 'first' to 'last' are processed. - // Fonts may contain WAY more glyphs than that, but this code - // will need to handle encoding stuff to deal with extracting - // the right symbols, and that's not done yet. - // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); - - printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); - - // Process glyphs and output huge bitmap data array - for(i=first, j=0; i<=last; i++, j++) { - // MONO renderer provides clean image with perfect crop - // (no wasted pixels) via bitmap struct. - if((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { - fprintf(stderr, "Error %d loading char '%c'\n", - err, i); - continue; - } - - if((err = FT_Render_Glyph(face->glyph, - FT_RENDER_MODE_MONO))) { - fprintf(stderr, "Error %d rendering char '%c'\n", - err, i); - continue; - } - - if((err = FT_Get_Glyph(face->glyph, &glyph))) { - fprintf(stderr, "Error %d getting glyph '%c'\n", - err, i); - continue; - } - - bitmap = &face->glyph->bitmap; - g = (FT_BitmapGlyphRec *)glyph; - - // Minimal font and per-glyph information is stored to - // reduce flash space requirements. Glyph bitmaps are - // fully bit-packed; no per-scanline pad, though end of - // each character may be padded to next byte boundary - // when needed. 16-bit offset means 64K max for bitmaps, - // code currently doesn't check for overflow. (Doesn't - // check that size & offsets are within bounds either for - // that matter...please convert fonts responsibly.) - table[j].bitmapOffset = bitmapOffset; - table[j].width = bitmap->width; - table[j].height = bitmap->rows; - table[j].xAdvance = face->glyph->advance.x >> 6; - table[j].xOffset = g->left; - table[j].yOffset = 1 - g->top; - - for(y=0; y < bitmap->rows; y++) { - for(x=0;x < bitmap->width; x++) { - byte = x / 8; - bit = 0x80 >> (x & 7); - enbit(bitmap->buffer[ - y * bitmap->pitch + byte] & bit); - } - } - - // Pad end of char bitmap to next byte boundary if needed - int n = (bitmap->width * bitmap->rows) & 7; - if(n) { // Pixel count not an even multiple of 8? - n = 8 - n; // # bits to next multiple - while(n--) enbit(0); - } - bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; - - FT_Done_Glyph(glyph); - } - - printf(" };\n\n"); // End bitmap array - - // Output glyph attributes table (one per character) - printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); - for(i=first, j=0; i<=last; i++, j++) { - printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", - table[j].bitmapOffset, - table[j].width, - table[j].height, - table[j].xAdvance, - table[j].xOffset, - table[j].yOffset); - if(i < last) { - printf(", // 0x%02X", i); - if((i >= ' ') && (i <= '~')) { - printf(" '%c'", i); - } - putchar('\n'); - } - } - printf(" }; // 0x%02X", last); - if((last >= ' ') && (last <= '~')) printf(" '%c'", last); - printf("\n\n"); - - // Output font structure - printf("const GFXfont %s PROGMEM = {\n", fontName); - printf(" (uint8_t *)%sBitmaps,\n", fontName); - printf(" (GFXglyph *)%sGlyphs,\n", fontName); - printf(" 0x%02X, 0x%02X, %ld };\n\n", - first, last, face->size->metrics.height >> 6); - printf("// Approx. %d bytes\n", - bitmapOffset + (last - first + 1) * 7 + 7); - // Size estimate is based on AVR struct and pointer sizes; - // actual size may vary. - - FT_Done_FreeType(library); - - return 0; + int i, j, err, size, first = ' ', last = '~', bitmapOffset = 0, x, y, byte; + char *fontName, c, *ptr; + FT_Library library; + FT_Face face; + FT_Glyph glyph; + FT_Bitmap *bitmap; + FT_BitmapGlyphRec *g; + GFXglyph *table; + uint8_t bit; + + // Parse command line. Valid syntaxes are: + // fontconvert [filename] [size] + // fontconvert [filename] [size] [last char] + // fontconvert [filename] [size] [first char] [last char] + // Unless overridden, default first and last chars are + // ' ' (space) and '~', respectively + + if (argc < 3) { + fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", argv[0]); + return 1; + } + + size = atoi(argv[2]); + + if (argc == 4) { + last = atoi(argv[3]); + } else if (argc == 5) { + first = atoi(argv[3]); + last = atoi(argv[4]); + } + + if (last < first) { + i = first; + first = last; + last = i; + } + + ptr = strrchr(argv[1], '/'); // Find last slash in filename + if (ptr) + ptr++; // First character of filename (path stripped) + else + ptr = argv[1]; // No path; font in local dir. + + // Allocate space for font name and glyph table + if ((!(fontName = malloc(strlen(ptr) + 20))) || + (!(table = (GFXglyph *)malloc((last - first + 1) * sizeof(GFXglyph))))) { + fprintf(stderr, "Malloc error\n"); + return 1; + } + + // Derive font table names from filename. Period (filename + // extension) is truncated and replaced with the font size & bits. + strcpy(fontName, ptr); + ptr = strrchr(fontName, '.'); // Find last period (file ext) + if (!ptr) + ptr = &fontName[strlen(fontName)]; // If none, append + // Insert font size and 7/8 bit. fontName was alloc'd w/extra + // space to allow this, we're not sprintfing into Forbidden Zone. + sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); + // Space and punctuation chars in name replaced w/ underscores. + for (i = 0; (c = fontName[i]); i++) { + if (isspace(c) || ispunct(c)) + fontName[i] = '_'; + } + + // Init FreeType lib, load font + if ((err = FT_Init_FreeType(&library))) { + fprintf(stderr, "FreeType init error: %d", err); + return err; + } + + // Use TrueType engine version 35, without subpixel rendering. + // This improves clarity of fonts since this library does not + // support rendering multiple levels of gray in a glyph. + // See https://github.com/adafruit/Adafruit-GFX-Library/issues/103 + FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; + FT_Property_Set(library, "truetype", "interpreter-version", + &interpreter_version); + + if ((err = FT_New_Face(library, argv[1], 0, &face))) { + fprintf(stderr, "Font load error: %d", err); + FT_Done_FreeType(library); + return err; + } + + // << 6 because '26dot6' fixed-point format + FT_Set_Char_Size(face, size << 6, 0, DPI, 0); + + // Currently all symbols from 'first' to 'last' are processed. + // Fonts may contain WAY more glyphs than that, but this code + // will need to handle encoding stuff to deal with extracting + // the right symbols, and that's not done yet. + // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); + + printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); + + // Process glyphs and output huge bitmap data array + for (i = first, j = 0; i <= last; i++, j++) { + // MONO renderer provides clean image with perfect crop + // (no wasted pixels) via bitmap struct. + if ((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { + fprintf(stderr, "Error %d loading char '%c'\n", err, i); + continue; + } + + if ((err = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO))) { + fprintf(stderr, "Error %d rendering char '%c'\n", err, i); + continue; + } + + if ((err = FT_Get_Glyph(face->glyph, &glyph))) { + fprintf(stderr, "Error %d getting glyph '%c'\n", err, i); + continue; + } + + bitmap = &face->glyph->bitmap; + g = (FT_BitmapGlyphRec *)glyph; + + // Minimal font and per-glyph information is stored to + // reduce flash space requirements. Glyph bitmaps are + // fully bit-packed; no per-scanline pad, though end of + // each character may be padded to next byte boundary + // when needed. 16-bit offset means 64K max for bitmaps, + // code currently doesn't check for overflow. (Doesn't + // check that size & offsets are within bounds either for + // that matter...please convert fonts responsibly.) + table[j].bitmapOffset = bitmapOffset; + table[j].width = bitmap->width; + table[j].height = bitmap->rows; + table[j].xAdvance = face->glyph->advance.x >> 6; + table[j].xOffset = g->left; + table[j].yOffset = 1 - g->top; + + for (y = 0; y < bitmap->rows; y++) { + for (x = 0; x < bitmap->width; x++) { + byte = x / 8; + bit = 0x80 >> (x & 7); + enbit(bitmap->buffer[y * bitmap->pitch + byte] & bit); + } + } + + // Pad end of char bitmap to next byte boundary if needed + int n = (bitmap->width * bitmap->rows) & 7; + if (n) { // Pixel count not an even multiple of 8? + n = 8 - n; // # bits to next multiple + while (n--) + enbit(0); + } + bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; + + FT_Done_Glyph(glyph); + } + + printf(" };\n\n"); // End bitmap array + + // Output glyph attributes table (one per character) + printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); + for (i = first, j = 0; i <= last; i++, j++) { + printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", table[j].bitmapOffset, + table[j].width, table[j].height, table[j].xAdvance, table[j].xOffset, + table[j].yOffset); + if (i < last) { + printf(", // 0x%02X", i); + if ((i >= ' ') && (i <= '~')) { + printf(" '%c'", i); + } + putchar('\n'); + } + } + printf(" }; // 0x%02X", last); + if ((last >= ' ') && (last <= '~')) + printf(" '%c'", last); + printf("\n\n"); + + // Output font structure + printf("const GFXfont %s PROGMEM = {\n", fontName); + printf(" (uint8_t *)%sBitmaps,\n", fontName); + printf(" (GFXglyph *)%sGlyphs,\n", fontName); + if (face->size->metrics.height == 0) { + // No face height info, assume fixed width and get from a glyph. + printf(" 0x%02X, 0x%02X, %d };\n\n", first, last, table[0].height); + } else { + printf(" 0x%02X, 0x%02X, %ld };\n\n", first, last, + face->size->metrics.height >> 6); + } + printf("// Approx. %d bytes\n", bitmapOffset + (last - first + 1) * 7 + 7); + // Size estimate is based on AVR struct and pointer sizes; + // actual size may vary. + + FT_Done_FreeType(library); + + return 0; } /* ------------------------------------------------------------------------- @@ -276,3 +287,5 @@ the cursor on the X axis after drawing the corresponding symbol. There's also some changes with regard to 'background' color and new GFX fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. */ + +#endif /* !ARDUINO */ From 4ebbbffd5e1890ae3542b3f96177461ea2109f55 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Fri, 16 Dec 2022 10:11:11 +0100 Subject: [PATCH 47/49] Simple ON/OFF switch with touch --- main/CMakeLists.txt | 3 +- main/demos/on-off-switch.cpp | 154 +++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 main/demos/on-off-switch.cpp diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 43539c46..8fa70bdd 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -10,13 +10,14 @@ idf_component_register( #SRCS "cale-grayscale.cpp" # Generic demos for touch displays (With an added layer or Gdew027w3T that comes with touch mounted) - SRCS "demos/demo-epaper.cpp" + #SRCS "demos/demo-epaper.cpp" #SRCS "demos/demo-grays.cpp" # TOUCH examples. 1- Touch indepently from Epd class uses Gdew027w3 2- Touch implemented in Gdew027w3T class #SRCS "demos/demo-touch.cpp" #SRCS "demos/demo-touch-epd-implemented.cpp" #SRCS "demos/demo-touch-keyboard.cpp" + SRCS "demos/on-off-switch.cpp" # Generic demos for any displays #SRCS "demos/demo-sleep-clock.cpp" diff --git a/main/demos/on-off-switch.cpp b/main/demos/on-off-switch.cpp new file mode 100644 index 00000000..1b482a64 --- /dev/null +++ b/main/demos/on-off-switch.cpp @@ -0,0 +1,154 @@ +/** + * This is a demo to be used with Good Display 2.7 touch epaper + */ + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "FT6X36.h" +#include "driver/gpio.h" + +#include "goodisplay/gdey027T91.h" + +// INTGPIO is touch interrupt, goes low when it detects a touch, which coordinates are read by I2C +FT6X36 ts(CONFIG_TOUCH_INT); +EpdSpi io; +Gdey027T91 display(io); + +// Only debugging: +//#define DEBUG_COUNT_TOUCH + +// Relay ON (high) / OFF +#define GPIO_RELAY 25 +// FONT used for title / message body - Only after display library +//Converting fonts with ümlauts: ./fontconvert *.ttf 18 32 252 +#include +uint8_t display_rotation = 0; + +extern "C" +{ + void app_main(); +} + +// Some GFX constants +uint16_t blockWidth = 42; +uint16_t blockHeight = display.height()/4; +uint16_t lineSpacing = 18; +uint16_t circleColor = EPD_BLACK; +uint16_t circleRadio = 10; +uint16_t selectTextColor = EPD_WHITE; +uint16_t selectBackground = EPD_BLACK; +template static inline void +swap(T& a, T& b) +{ + T t = a; + a = b; + b = t; +} + +bool switch_state = false; // false = OFF + +void draw_centered_text(const GFXfont *font, char * text, int16_t x, int16_t y, uint16_t w, uint16_t h) { + // Draw external boundary where text needs to be centered in the middle + printf("drawRect x:%d y:%d w:%d h:%d\n\n", x, y, w, h); + display.drawRect(x, y, w, h, EPD_DARKGREY); + + display.setFont(font); + int16_t text_x = 0; + int16_t text_y = 0; + uint16_t text_w = 0; + uint16_t text_h = 0; + + display.getTextBounds(text, x, y, &text_x, &text_y, &text_w, &text_h); + printf("text_x:%d y:%d w:%d h:%d\n\n", text_x,text_y,text_w,text_h); + //display.drawRect(text_x, text_y, text_w, text_h, EPD_BLACK); // text boundaries + + if (text_w > w) { + printf("W: Text width out of bounds"); + } + if (text_h > h) { + printf("W: Text height out of bounds"); + } + // Calculate the middle position + text_x += (w-text_w)/2; + + uint ty = (h/2)+y+(text_h/2); + + printf("setCusor x:%d y:%d\n", text_x, ty); + display.setCursor(text_x, ty); + display.print(text); +} + +void drawUX(){ + uint16_t dw = display.width(); + uint16_t dh = display.height(); + uint8_t sw = 20; + uint8_t sh = 50; + uint8_t keyw = 16; + uint8_t keyh = 20; + display.fillScreen(EPD_WHITE); + display.drawRoundRect(dw/2-sw/2, dh/2-sh/2, sw, sh, 4, EPD_BLACK); + + // OFF position + if (!switch_state) { + display.fillRoundRect(dw/2-keyw/2, dh/2, keyw, keyh, 5, EPD_BLACK); + gpio_set_level((gpio_num_t)GPIO_RELAY, 0); // OFF + } else { + display.fillRoundRect(dw/2-keyw/2, dh/2-keyh, keyw, keyh, 5, EPD_BLACK); + gpio_set_level((gpio_num_t)GPIO_RELAY, 1); // ON + } + + char * label = (switch_state) ? (char *)"ON" : (char *)"OFF"; + draw_centered_text(&Ubuntu_M8pt8b, label, dw/2-22, dh/2-sh, 40, 20); + display.update(); + // It does not work correctly with partial update leaves last position gray + //display.updateWindow(dw/2-40, dh/2-keyh-40, 100, 86); +} + + +uint16_t t_counter = 0; + +void touchEvent(TPoint p, TEvent e) +{ + #if defined(DEBUG_COUNT_TOUCH) && DEBUG_COUNT_TOUCH==1 + ++t_counter; + printf("e %x %d ",e,t_counter); // Working + #endif + + if (e != TEvent::Tap && e != TEvent::DragStart && e != TEvent::DragMove && e != TEvent::DragEnd) + return; + + switch_state = !switch_state; + printf("state:%d\n", (int)switch_state); + drawUX(); +} + +void app_main(void) +{ + printf("CalEPD version: %s\n", CALEPD_VERSION); + + //Initialize GPIOs direction & initial states + gpio_set_direction((gpio_num_t)GPIO_RELAY, GPIO_MODE_OUTPUT); + gpio_set_level((gpio_num_t)GPIO_RELAY, 0); // OFF + + // Test Epd class + display.init(false); + //display.setFont(&Ubuntu_M8pt8b); + + printf("display.colors_supported:%d\n", display.colors_supported); + display.setRotation(2); + display.update(); + display.setFont(&Ubuntu_M8pt8b); + display.setTextColor(EPD_BLACK); + drawUX(); + + // Instantiate touch. Important pass here the 3 required variables including display width and height + ts.begin(FT6X36_DEFAULT_THRESHOLD, display.width(), display.height()); + ts.setRotation(display.getRotation()); + ts.registerTouchHandler(touchEvent); + + for (;;) { + ts.loop(); + } + +} From d4fad9e42c89d4304f39f0a8e3c5e5a36913b1e6 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Sun, 1 Jan 2023 19:20:56 +0100 Subject: [PATCH 48/49] Add more tinypico example configs --- .../PlasticLogic-tinypico-HAT | 0 .../tinypico.com/esp32-tinypico-GD-HAT-touch | 1748 +++++++++++++++++ 2 files changed, 1748 insertions(+) rename config-examples/{ => tinypico.com}/PlasticLogic-tinypico-HAT (100%) create mode 100644 config-examples/tinypico.com/esp32-tinypico-GD-HAT-touch diff --git a/config-examples/PlasticLogic-tinypico-HAT b/config-examples/tinypico.com/PlasticLogic-tinypico-HAT similarity index 100% rename from config-examples/PlasticLogic-tinypico-HAT rename to config-examples/tinypico.com/PlasticLogic-tinypico-HAT diff --git a/config-examples/tinypico.com/esp32-tinypico-GD-HAT-touch b/config-examples/tinypico.com/esp32-tinypico-GD-HAT-touch new file mode 100644 index 00000000..465933ec --- /dev/null +++ b/config-examples/tinypico.com/esp32-tinypico-GD-HAT-touch @@ -0,0 +1,1748 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_DPORT_WORKAROUND="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=3 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=5 +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_DAC_PERIPH_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_APLL_MULTIPLIER_OUT_MIN_HZ=350000000 +CONFIG_SOC_APLL_MULTIPLIER_OUT_MAX_HZ=500000000 +CONFIG_SOC_APLL_MIN_HZ=5303031 +CONFIG_SOC_APLL_MAX_HZ=125000000 +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAX_CS_NUM=3 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TOUCH_VERSION_1=y +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# end of Build type + +# +# Bootloader config +# +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V1_SUPPORTED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# CALE Configuration +# +CONFIG_ESP_WIFI_SSID="sagemcom6AE0" +CONFIG_ESP_WIFI_PASSWORD="GTZZGJN52NXQZY" +CONFIG_CALE_SCREEN_URL="http://img.cale.es/bmp/frrrreddie/637cd3e3098fd" +CONFIG_CALE_BEARER_TOKEN="" +CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER=60 +CONFIG_ESP_TRIGGER_SENSOR1=27 +CONFIG_DISPLAY_ROTATION=0 +CONFIG_ESP_MAXIMUM_RETRY=5 +# end of CALE Configuration + +# +# Display Configuration +# + +# +# Fill only EPD entries for single SPI displays (Good display/Waveshare) +# + +# +# Mosi and Clock should be set for any epaper +# +CONFIG_EINK_SPI_MOSI=23 +CONFIG_EINK_SPI_CLK=18 +CONFIG_EINK_SPI_CS=5 +CONFIG_EINK_DC=19 +CONFIG_EINK_RST=33 +CONFIG_EINK_BUSY=32 + +# +# Important: Leave the rest of unconfigured GPIOs to -1 unless multi-SPI channels (wave12I48) or Plasticlogic EPDs +# + +# +# CS2 and MISO pins apply only to Plasticlogic.com epaper displays +# +CONFIG_EINK_SPI_CS2=4 +CONFIG_EINK_SPI_MISO=19 + +# +# Config below applies to 4 epaper module wave12I48 w/4 SPI CS & BUSY pins (14 pins) +# + +# +# | S2 | M2 | +# + +# +# ----------- +# + +# +# | M1 | S1 | +# +CONFIG_EINK_SPI_M1_CS=23 +CONFIG_EINK_SPI_S1_CS=22 +CONFIG_EINK_SPI_M2_CS=16 +CONFIG_EINK_SPI_S2_CS=19 +CONFIG_EINK_SPI_M1_BUSY=32 +CONFIG_EINK_SPI_S1_BUSY=26 +CONFIG_EINK_SPI_M2_BUSY=18 +CONFIG_EINK_SPI_S2_BUSY=4 +CONFIG_EINK_M1S1_DC=25 +CONFIG_EINK_M2S2_DC=17 +CONFIG_EINK_M1S1_RST=33 +CONFIG_EINK_M2S2_RST=5 +# end of Display Configuration + +# +# Touch FT6X36 Configuration +# + +# +# The touch chip needs an I2C port and one input GPIO +# +CONFIG_TOUCH_SDA=21 +CONFIG_TOUCH_SDL=22 +CONFIG_TOUCH_INT=4 +CONFIG_I2C_MASTER_FREQUENCY=50000 +CONFIG_L58_MULTITOUCH=0 +CONFIG_FT6X36_DEBUG=0 +CONFIG_FT6X36_DEBUG_EVENTS=0 +# end of Touch FT6X36 Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +# end of Bluetooth + +# +# Driver Configurations +# + +# +# Legacy ADC Configuration +# +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set + +# +# Legacy ADC Calibration Configuration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Configuration + +# +# SPI Configuration +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of SPI Configuration + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +# end of TWAI Configuration + +# +# UART Configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART Configuration + +# +# GPIO Configuration +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# Sigma Delta Modulator Configuration +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of Sigma Delta Modulator Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration + +# +# MCPWM Configuration +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of MCPWM Configuration + +# +# I2S Configuration +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of I2S Configuration +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# end of ADC and ADC Calibration + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +CONFIG_ESP32_REV_MIN=0 + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# end of ESP NETIF Adapter + +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_REDUCE_TX_POWER=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# end of Brownout Detector + +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# High resolution timer (esp_timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +# CONFIG_FATFS_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# end of Heap memory debugging + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +# end of SNTP + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +# CONFIG_MBEDTLS_CMAC_C is not set +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +# CONFIG_MBEDTLS_SECURITY_RISKS is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_VFS_SUPPORT_TERMIOS=y + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y +# end of Wi-Fi Provisioning Manager + +# +# Supplicant +# +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# end of Supplicant + +# +# ESP RainMaker Common +# +CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y +# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set +CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 +CONFIG_ESP_RMAKER_MQTT_PORT_443=y +# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set +CONFIG_ESP_RMAKER_MQTT_PORT=1 +# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set +CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y +CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00" +CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 +CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" +CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" +CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" +CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" +CONFIG_ESP_RMAKER_MAX_COMMANDS=10 +# end of ESP RainMaker Common +# end of Component config + +# Deprecated options for backward compatibility +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options From dcf8e0b3e9fb1717a00f104272bb527f3da57825 Mon Sep 17 00:00:00 2001 From: martinberlin Date: Wed, 11 Jan 2023 12:20:26 +0100 Subject: [PATCH 49/49] #78 gdew0102I4FC added --- components/CalEPD/CMakeLists.txt | 3 + .../CalEPD/include/small/gdew0102I4FC.h | 51 +++++ .../CalEPD/models/small/gdew0102I4FC.cpp | 188 ++++++++++++++++++ dependencies.lock | 2 +- main/CMakeLists.txt | 5 +- main/demos/small/small-display.cpp | 90 +++++++++ 6 files changed, 337 insertions(+), 2 deletions(-) create mode 100644 components/CalEPD/include/small/gdew0102I4FC.h create mode 100644 components/CalEPD/models/small/gdew0102I4FC.cpp create mode 100644 main/demos/small/small-display.cpp diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index d9e0072e..736bd1ca 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -25,6 +25,9 @@ set(srcs "models/gdeh0154d67.cpp" "models/heltec0151.cpp" + # SMALL epapers + "models/small/gdew0102I4FC.cpp" + # 3 colors Goodisplay "models/color/gdeh0154z90.cpp" "models/color/gdew0583z21.cpp" diff --git a/components/CalEPD/include/small/gdew0102I4FC.h b/components/CalEPD/include/small/gdew0102I4FC.h new file mode 100644 index 00000000..9c434f17 --- /dev/null +++ b/components/CalEPD/include/small/gdew0102I4FC.h @@ -0,0 +1,51 @@ +// Product page: https://www.good-display.com/product/341.html +// 1.02 mono Controller: UC8175 +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "esp_system.h" +#include +#include +#include "sdkconfig.h" +#include "esp_log.h" +#include +#include +#include +#include +#include +#include + +#define GDEW0102I4FC_WIDTH 80 +#define GDEW0102I4FC_HEIGHT 128 +#define GDEW0102I4FC_BUFFER_SIZE (uint32_t(GDEW0102I4FC_WIDTH) * uint32_t(GDEW0102I4FC_HEIGHT) / 8) + +#define GDEW0102I4FC_8PIX_BLACK 0x00 +#define GDEW0102I4FC_8PIX_WHITE 0xFF + +class Gdew0102I4FC : public Epd +{ + public: + // & Copy contructor: Copying the injected IO into our class so we can access IO methods + Gdew0102I4FC(EpdSpi& IO); + uint8_t colors_supported = 1; + + // EPD tests + void init(bool debug = false); + void drawPixel(int16_t x, int16_t y, uint16_t color); // Override GFX own drawPixel method + + void fillScreen(uint16_t color); + void update(); + + private: + EpdSpi& IO; + + uint8_t _black_buffer[GDEW0102I4FC_BUFFER_SIZE]; + + bool _initial = true; + + void _wakeUp(); + void _sleep(); + void _waitBusy(const char* message); + void _rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h); +}; \ No newline at end of file diff --git a/components/CalEPD/models/small/gdew0102I4FC.cpp b/components/CalEPD/models/small/gdew0102I4FC.cpp new file mode 100644 index 00000000..25cac98c --- /dev/null +++ b/components/CalEPD/models/small/gdew0102I4FC.cpp @@ -0,0 +1,188 @@ +#include "small/gdew0102I4FC.h" +#include +#include +#include "esp_log.h" +#include "freertos/task.h" +#include +#include +#include + +// Constructor +Gdew0102I4FC::Gdew0102I4FC(EpdSpi& dio): + Adafruit_GFX(GDEW0102I4FC_WIDTH, GDEW0102I4FC_HEIGHT), + Epd(GDEW0102I4FC_WIDTH, GDEW0102I4FC_HEIGHT), IO(dio) +{ + printf("Gdew0102I4FC() constructor injects IO and extends Adafruit_GFX(%d,%d)\n", + GDEW0102I4FC_WIDTH, GDEW0102I4FC_HEIGHT); +} + +//Initialize the display +void Gdew0102I4FC::init(bool debug) +{ + debug_enabled = debug; + if (debug_enabled) printf("Gdew0102I4FC::init(%d) and reset EPD\n", debug); + //Initialize the Epaper and reset it + IO.init(4, debug); // 4MHz frequency, debug + + //Reset the display + IO.reset(20); + //setModel("GDEW042C37"); // Can be commented and set from your app_main() + fillScreen(EPD_WHITE); +} + + +void Gdew0102I4FC::_wakeUp(){ + + IO.reset(10); + + IO.cmd(0x00); // Panel setting + IO.data(0x5f); // OTP + + IO.cmd(0x2A); + IO.data(0x00); + IO.data(0x00); + + IO.cmd(0x04); //Power on + _waitBusy("epd_wakeup");; //waiting for the electronic paper IC to release the idle signal + + IO.cmd(0x50); //Solve some black paper black border problems + IO.data(0x97); +} + +void Gdew0102I4FC::_waitBusy(const char* message){ + if (debug_enabled) { + ESP_LOGI(TAG, "_waitBusy for %s", message); + } + int64_t time_since_boot = esp_timer_get_time(); + + while (1){ + if (gpio_get_level((gpio_num_t)CONFIG_EINK_BUSY) == 1) break; + vTaskDelay(1); + if (esp_timer_get_time()-time_since_boot>2000000) + { + if (debug_enabled) ESP_LOGI(TAG, "Busy Timeout"); + break; + } + } +} + +void Gdew0102I4FC::_sleep(){ + IO.cmd(0X50); //VCOM AND DATA INTERVAL SETTING + IO.data(0xf7); + + IO.cmd(0X02); //power off + _waitBusy("power off"); + IO.cmd(0X07); //deep sleep + IO.data(0xA5); +} + +void Gdew0102I4FC::_rotate(uint16_t& x, uint16_t& y, uint16_t& w, uint16_t& h) +{ + switch (getRotation()) + { + case 1: + swap(x, y); + swap(w, h); + x = GDEW0102I4FC_WIDTH - x - w - 1; + break; + case 2: + x = GDEW0102I4FC_WIDTH - x - w - 1; + y = GDEW0102I4FC_HEIGHT - y - h - 1; + break; + case 3: + swap(x, y); + swap(w, h); + y = GDEW0102I4FC_HEIGHT - y - h - 1; + break; + } +} + +void Gdew0102I4FC::update() +{ + uint64_t startTime = esp_timer_get_time(); + _using_partial_mode = false; + _wakeUp(); + + + // BLACK: Write RAM for black(0)/white (1) + // v2 SPI optimizing. Check: https://github.com/martinberlin/cale-idf/wiki/About-SPI-optimization + uint16_t i = 0; + uint8_t xLineBytes = GDEW0102I4FC_WIDTH/8; + uint8_t x1buf[xLineBytes]; + +// Note that in IC specs is 0x10 old data (?) and 0x13 new + IO.cmd(0x10); + uint8_t full_buff[GDEW0102I4FC_BUFFER_SIZE]; + for(uint16_t y = 0; y < GDEW0102I4FC_BUFFER_SIZE; y++) { + full_buff[y] = 0xFF; + } + IO.data(full_buff, GDEW0102I4FC_BUFFER_SIZE); + +// BLACK new data: Write RAM + IO.cmd(0x13); + for(uint16_t y = 1; y <= GDEW0102I4FC_HEIGHT; y++) { + for(uint16_t x = 1; x <= xLineBytes; x++) { + uint8_t data = i < sizeof(_black_buffer) ? _black_buffer[i] : GDEW0102I4FC_8PIX_WHITE; + x1buf[x-1] = data; + if (x==xLineBytes) { // Flush the X line buffer to SPI + IO.data(x1buf,sizeof(x1buf)); + } + ++i; + } + } + + uint64_t endTime = esp_timer_get_time(); + IO.cmd(0x12); //DISPLAY REFRESH + + _waitBusy("epaper refresh"); + uint64_t powerOnTime = esp_timer_get_time(); + + printf("\n\nSTATS (ms)\n%llu _wakeUp settings+send Buffer\n%llu _powerOn\n%llu total time in millis\n", + (endTime-startTime)/1000, (powerOnTime-endTime)/1000, (powerOnTime-startTime)/1000); + + _sleep(); +} + +void Gdew0102I4FC::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; + switch (getRotation()) + { + case 1: + swap(x, y); + x = GDEW0102I4FC_WIDTH - x - 1; + break; + case 2: + x = GDEW0102I4FC_WIDTH - x - 1; + y = GDEW0102I4FC_HEIGHT - y - 1; + break; + case 3: + swap(x, y); + y = GDEW0102I4FC_HEIGHT - y - 1; + break; + } + uint16_t i = x / 8 + y * GDEW0102I4FC_WIDTH / 8; + + if (!color) { + _black_buffer[i] = (_black_buffer[i] & (0xFF ^ (1 << (7 - x % 8)))); + } else { + _black_buffer[i] = (_black_buffer[i] | (1 << (7 - x % 8))); + } +} + + +void Gdew0102I4FC::fillScreen(uint16_t color) +{ + // Fill screen will be inverted with the way is done NOW + uint8_t fill = GDEW0102I4FC_8PIX_WHITE; + + if (color == EPD_BLACK) { + fill = GDEW0102I4FC_8PIX_BLACK; + } + + for (uint16_t x = 0; x < sizeof(_black_buffer); x++) + { + _black_buffer[x] = fill; + } + + if (debug_enabled) printf("fillScreen(%x) black len:%d\n", fill, sizeof(_black_buffer)); +} diff --git a/dependencies.lock b/dependencies.lock index 665f7e02..54080c07 100644 --- a/dependencies.lock +++ b/dependencies.lock @@ -1,3 +1,3 @@ manifest_hash: af80dd68bc674d0bd725fc63d1287180424f4ef686530b02e4f0be0ec2633f0f -target: esp32s3 +target: esp32 version: 1.0.0 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 8fa70bdd..8dd160a0 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -13,11 +13,14 @@ idf_component_register( #SRCS "demos/demo-epaper.cpp" #SRCS "demos/demo-grays.cpp" + # SMALL displays + SRCS "demos/small/small-display.cpp" + # TOUCH examples. 1- Touch indepently from Epd class uses Gdew027w3 2- Touch implemented in Gdew027w3T class #SRCS "demos/demo-touch.cpp" #SRCS "demos/demo-touch-epd-implemented.cpp" #SRCS "demos/demo-touch-keyboard.cpp" - SRCS "demos/on-off-switch.cpp" + #SRCS "demos/on-off-switch.cpp" # Generic demos for any displays #SRCS "demos/demo-sleep-clock.cpp" diff --git a/main/demos/small/small-display.cpp b/main/demos/small/small-display.cpp new file mode 100644 index 00000000..78096455 --- /dev/null +++ b/main/demos/small/small-display.cpp @@ -0,0 +1,90 @@ +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +// Should match with your epaper module, size + +// New small GOODISPLAY models +#include "small/gdew0102I4FC.h" + + +// Single SPI EPD +EpdSpi io; +Gdew0102I4FC display(io); + + +// FONT used for title / message body - Only after display library +//Converting fonts with ümlauts: ./fontconvert *.ttf 18 32 252 +#include + +extern "C" +{ + void app_main(); +} +void delay(uint32_t millis) { vTaskDelay(millis / portTICK_PERIOD_MS); } + + +void demo(uint16_t bkcolor, uint16_t fgcolor) +{ + display.fillScreen(bkcolor); + display.setTextColor(fgcolor); + display.setCursor(10, 40); + display.setFont(&Ubuntu_M12pt8b); + display.println("CalEPD display test\n"); + // Print all character from an Adafruit Font + if (true) + { + for (int i = 40; i <= 126; i++) + { + display.write(i); // Needs to be >32 (first character definition) + } + } +} + +void draw_content(uint8_t rotation){ + // Sizes are calculated dividing the screen in 4 equal parts it may not be perfect for all models + + display.setTextColor(EPD_BLACK); + display.setFont(&Ubuntu_M12pt8b); + + uint8_t rectW = display.width(); + uint8_t rectH = display.height(); + if (display.getRotation() %2 == 0) { + rectW = display.height(); + rectH = display.width(); + } + display.fillRect(1,1,11,11,EPD_BLACK); + display.fillRect(1,rectW-10,11,11,EPD_BLACK); + display.fillRect(rectH-10,0,10,10,EPD_BLACK); + display.fillRect(rectH-10,rectW-10,10,10,EPD_BLACK); + display.setCursor(10, rectH/2-12); + display.print("Hello!"); + display.update(); + delay(2000); +} + +void app_main(void) +{ + printf("CalEPD version: %s\n", CALEPD_VERSION); + // 5V is not enought for Front light if there are Leds in serie + //gpio_set_level(GPIO_ENABLE_5V, 1); + + // Test Epd class + display.init(false); + display.setFont(&Ubuntu_M12pt8b); + display.fillCircle(30,display.height()/2,30,EPD_BLACK); + display.update(); + delay(1000); + display.fillScreen(EPD_WHITE); + //return; // Just clean display and draw a circle + + display.setRotation(0); + draw_content(display.getRotation()); + display.fillScreen(EPD_WHITE); + delay(1000); + display.setRotation(1); + draw_content(display.getRotation()); + delay(1000); + display.fillScreen(EPD_WHITE); + display.update(); + printf("display: We are done with the demo"); +}