diff --git a/CMakeLists.txt b/CMakeLists.txt index b9867c4..abbeaaf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,9 +8,15 @@ set(COMPONENTS main) include($ENV{IDF_PATH}/tools/cmake/project.cmake) if(${IDF_TARGET} STREQUAL "esp32p4") -set(EXTRA_COMPONENT_DIRS - /home/marc/esp-dev-kits/examples/esp32-p4-function-ev-board/examples/common_components - ) + set(EXTRA_COMPONENT_DIRS + /home/marc/esp-dev-kits/examples/esp32-p4-function-ev-board/examples/common_components + $ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs + ) +else() + set(EXTRA_COMPONENT_DIRS + $ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs + ) + endif() project(rgb_lcd) diff --git a/components/image_downloader/image_downloader.c b/components/image_downloader/image_downloader.c index bf7ac53..790f1dd 100644 --- a/components/image_downloader/image_downloader.c +++ b/components/image_downloader/image_downloader.c @@ -14,11 +14,8 @@ #include "esp_event.h" #include "esp_log.h" #include "esp_timer.h" -#include "lwip/err.h" -#include "lwip/sys.h" -// HTTP Client + time +// HTTP Client #include "esp_http_client.h" -#include "esp_sntp.h" #include #include @@ -127,15 +124,15 @@ esp_err_t _http_event_handler_id(esp_http_client_event_t *evt) case HTTP_EVENT_ON_FINISH: // Do not draw if it's a redirect (302) if (esp_http_client_get_status_code(evt->client) == 200) { - printf("%li bytes read from %s\nIMG_BUF size: %li\n", img_buf_pos, IMGDWN_URL, img_buf_pos); + printf("%"PRIu32" bytes read from %s\nIMG_BUF size: %"PRIu32"\n", img_buf_pos, IMGDWN_URL, img_buf_pos); //drawBufJpeg(source_buf, 0, 0); create_file_app(source_buf,img_buf_pos); //function which opens and records data to spiffs file time_download = (esp_timer_get_time()-startTime)/1000; - ESP_LOGI("www-dw", "%li ms - download", time_download); + ESP_LOGI("www-dw", "%"PRIu32" ms - download", time_download); // Refresh display //display.update(); - ESP_LOGI("total", "%li ms - total time spent\n", time_download+time_decomp+time_render); + ESP_LOGI("total", "%"PRIu32" ms - total time spent\n", time_download+time_decomp+time_render); } else { printf("HTTP on finish got status code: %d\n", esp_http_client_get_status_code(evt->client)); } @@ -168,7 +165,7 @@ static void download(void) esp_err_t err = esp_http_client_perform(client); if (err == ESP_OK) { - ESP_LOGI(TAG, "\nIMAGE URL: %s\n\nHTTP GET Status = %d, content_length = %lli\n", + ESP_LOGI(TAG, "\nIMAGE URL: %s\n\nHTTP GET Status = %d, content_length = %"PRIi64"\n", IMGDWN_URL, esp_http_client_get_status_code(client), esp_http_client_get_content_length(client)); @@ -180,25 +177,40 @@ static void download(void) //printf("Go to sleep %d minutes\n", CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER); esp_http_client_cleanup(client); - vTaskDelay(3600000 / portTICK_PERIOD_MS); //deepsleep(); } -void imgdwn(void *pvParameter) { +void imgdwn(void *domotic_event_group) { - ESP_LOGE(TAG, "beginning"); + while(1){ + // Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum + // number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) + EventBits_t bits = xEventGroupWaitBits(domotic_event_group, + BIT0, + pdFALSE, + pdFALSE, + portMAX_DELAY); + if (bits & BIT0) + { + ESP_LOGE(TAG, "beginning"); - // Should be big enough to allocate the JPEG file size, width * height should suffice - source_buf = (uint8_t *)heap_caps_malloc(IMGDWN_HEIGHT * IMGDWN_WIDTH, MALLOC_CAP_SPIRAM); - if (source_buf == NULL) { - ESP_LOGE(TAG, "Initial alloc source_buf failed!"); - } - printf("Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize()); + // Should be big enough to allocate the JPEG file size, width * height should suffice + source_buf = (uint8_t *)heap_caps_malloc(IMGDWN_HEIGHT * IMGDWN_WIDTH, MALLOC_CAP_SPIRAM); + if (source_buf == NULL) { + ESP_LOGE(TAG, "Initial alloc source_buf failed!"); + } + printf("Free heap after buffers allocation: %"PRIu16"\n", xPortGetFreeHeapSize()); + + download(); + + heap_caps_free(source_buf); + printf("Free heap after buffers allocation: %"PRIu16"\n", xPortGetFreeHeapSize()); + vTaskDelay(3600000 / portTICK_PERIOD_MS); + + }else{ + vTaskDelay(5000 / portTICK_PERIOD_MS); + } + } - download(); - - heap_caps_free(source_buf); - printf("Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize()); - } \ No newline at end of file diff --git a/components/image_downloader/include/image_downloader.h b/components/image_downloader/include/image_downloader.h index 6af9130..62d814a 100644 --- a/components/image_downloader/include/image_downloader.h +++ b/components/image_downloader/include/image_downloader.h @@ -1,2 +1,2 @@ -void imgdwn(); +void imgdwn(void* evtGroup); #pragma once diff --git a/components/meteofrance/include/meteofrance.h b/components/meteofrance/include/meteofrance.h index dcae367..02ddbae 100644 --- a/components/meteofrance/include/meteofrance.h +++ b/components/meteofrance/include/meteofrance.h @@ -60,5 +60,5 @@ void printff(struct meteoforecast_data *tmp); void on_weather_data_retrieval(weather_data_callback data_retreived_cb); void on_weather_data_retrieval_start(weather_data_callback data_retreived_cb); -void initialise_weather_data_retrieval(unsigned long retreival_period); +void initialise_weather_data_retrieval(unsigned long retreival_period, void* evtGroup); diff --git a/components/meteofrance/meteofrance.c b/components/meteofrance/meteofrance.c index 12e5a62..cf30e09 100644 --- a/components/meteofrance/meteofrance.c +++ b/components/meteofrance/meteofrance.c @@ -128,7 +128,11 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) if (evt->user_data) { // The last byte in evt->user_data is kept for the NULL character in case of out-of-bound access. - copy_len = MIN(evt->data_len, (MAX_HTTP_OUTPUT_BUFFER - output_len)); + if(evt->data_len<(MAX_HTTP_OUTPUT_BUFFER - output_len)){ + copy_len = evt->data_len; + }else{ + copy_len=(MAX_HTTP_OUTPUT_BUFFER - output_len); + } if (copy_len) { memcpy(evt->user_data + output_len, evt->data, copy_len); @@ -148,7 +152,11 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) return ESP_FAIL; } } - copy_len = MIN(evt->data_len, (content_len - output_len)); + if(evt->data_len<(content_len - output_len)){ + copy_len = evt->data_len; + }else{ + copy_len=(content_len - output_len); + } if (copy_len) { memcpy(output_buffer + output_len, evt->data, copy_len); @@ -314,69 +322,74 @@ static bool process_response_body(const char *body) return true; } -static void http_request_task(void *pvParameter) +static void http_request_task(void* domotic_event_group) { while (1) { - if(!mainState.wifi_init){ - //On attend le wifi - ESP_LOGI(TAG, "Pas de wifi on attend 5 secondes"); - vTaskDelay(10000 / portTICK_PERIOD_MS); + ESP_LOGE(TAG,"En attente connexion wifi"); + // Waiting until either the connection is established (WIFI_CONNECTED_BIT). + EventBits_t bits = xEventGroupWaitBits(domotic_event_group, + BIT0, + pdTRUE, + pdFALSE, + portMAX_DELAY); + if (bits & BIT0){ + ESP_LOGE(TAG,"connexion wifi ok"); + ESP_LOGV(TAG, "Début recup méteo --------------------------"); + weather.data_retreived_cb_start(NULL); + char *local_response_buffer = heap_caps_malloc((MAX_HTTP_OUTPUT_BUFFER + 1) * (sizeof(char)), MALLOC_CAP_SPIRAM); + // char local_response_buffer[MAX_HTTP_OUTPUT_BUFFER + 1] = {0}; + /** + * NOTE: All the configuration parameters for http_client must be spefied either in URL or as host and path parameters. + * If host and path parameters are not set, query parameter will be ignored. In such cases, + * query parameter should be specified in URL. + * + * If URL as well as host and path parameters are specified, values of host and path will be considered. + */ + esp_http_client_config_t config = { + .host = WEB_SERVER, + .port = WEB_PORT, + .path = WEB_URL, + .query = WEB_QUERY, + .event_handler = _http_event_handler, + .user_data = local_response_buffer, // Pass address of local buffer to get response + .disable_auto_redirect = true, + }; + esp_http_client_handle_t client = esp_http_client_init(&config); + char url[50]; + esp_http_client_get_url(client, url, 50); + ESP_LOGV(TAG, "%s", url); + // GET + esp_err_t err = esp_http_client_perform(client); + if (err == ESP_OK) + { + ESP_LOGV(TAG, "HTTP GET Status = %d, content_length = %" PRId64, + esp_http_client_get_status_code(client), + esp_http_client_get_content_length(client)); + } + else + { + ESP_LOGE(TAG, "HTTP GET request failed: %s", esp_err_to_name(err)); + } + // ESP_LOGE(TAG, "%s",local_response_buffer); + + process_response_body(local_response_buffer); + heap_caps_free(local_response_buffer); + esp_http_client_cleanup(client); + if(dailydatas->isValid){ + ESP_LOGV(TAG, "Données valides on appelle le cb"); + weather.data_retreived_cb(dailydatas, forecastdatas); + vTaskDelay(weather.retreival_period / portTICK_PERIOD_MS); + }else{ + //Ca a échoué on recommence dans 30 secondes + ESP_LOGI(TAG, "Données non valides on attend avant de retenter"); + vTaskDelay(30000 / portTICK_PERIOD_MS); + } }else{ - ESP_LOGV(TAG, "Début recup méteo --------------------------"); - weather.data_retreived_cb_start(NULL); - char *local_response_buffer = heap_caps_malloc((MAX_HTTP_OUTPUT_BUFFER + 1) * (sizeof(char)), MALLOC_CAP_SPIRAM); - // char local_response_buffer[MAX_HTTP_OUTPUT_BUFFER + 1] = {0}; - /** - * NOTE: All the configuration parameters for http_client must be spefied either in URL or as host and path parameters. - * If host and path parameters are not set, query parameter will be ignored. In such cases, - * query parameter should be specified in URL. - * - * If URL as well as host and path parameters are specified, values of host and path will be considered. - */ - esp_http_client_config_t config = { - .host = WEB_SERVER, - .port = WEB_PORT, - .path = WEB_URL, - .query = WEB_QUERY, - .event_handler = _http_event_handler, - .user_data = local_response_buffer, // Pass address of local buffer to get response - .disable_auto_redirect = true, - }; - esp_http_client_handle_t client = esp_http_client_init(&config); - char url[50]; - esp_http_client_get_url(client, url, 50); - ESP_LOGV(TAG, "%s", url); - // GET - esp_err_t err = esp_http_client_perform(client); - if (err == ESP_OK) - { - ESP_LOGV(TAG, "HTTP GET Status = %d, content_length = %" PRId64, - esp_http_client_get_status_code(client), - esp_http_client_get_content_length(client)); + ESP_LOGI(TAG, "Wifi non connecté"); } - else - { - ESP_LOGE(TAG, "HTTP GET request failed: %s", esp_err_to_name(err)); - } - // ESP_LOGE(TAG, "%s",local_response_buffer); - - process_response_body(local_response_buffer); - heap_caps_free(local_response_buffer); - esp_http_client_cleanup(client); - if(dailydatas->isValid){ - ESP_LOGV(TAG, "Données valides on appelle le cb"); - weather.data_retreived_cb(dailydatas, forecastdatas); - vTaskDelay(weather.retreival_period / portTICK_PERIOD_MS); - }else{ - //Ca a échoué on recommence dans 30 secondes - ESP_LOGI(TAG, "Données non valides on attend avant de retenter"); - vTaskDelay(30000 / portTICK_PERIOD_MS); - } - } - } } @@ -390,7 +403,7 @@ void on_weather_data_retrieval_start(weather_data_callback data_retreived_cb_sta weather.data_retreived_cb_start = data_retreived_cb_start; } -void initialise_weather_data_retrieval(unsigned long retreival_period) +void initialise_weather_data_retrieval(unsigned long retreival_period, void* domotic_event_group) { weather.retreival_period = retreival_period; @@ -398,9 +411,9 @@ void initialise_weather_data_retrieval(unsigned long retreival_period) // http_client_on_process_chunk(&http_client, process_chunk); // http_client_on_disconnected(&http_client, disconnected); TaskHandle_t xHandle = NULL; - BaseType_t ret1 = xTaskCreate(&http_request_task, "http_meteof", 5 * 1024, NULL, 5, &xHandle); + BaseType_t ret1 = xTaskCreatePinnedToCore(&http_request_task, "http_meteof", 5 * 1024, domotic_event_group, 5, &xHandle, 1); if(ret1!=pdPASS ){ - ESP_LOGE(TAG, "Impossible de creer la tache %i", ret1); + ESP_LOGE(TAG, "Impossible de creer la tache %"PRIi16, ret1); } ESP_LOGI(TAG, "HTTP request task started"); } diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index d4bf1fe..376263e 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,9 +1,9 @@ set(EXTRA_COMPONENT_DIRS ../components) -set(comps heap nvs_flash meteofrance esp_netif image_downloader fatfs sdmmc vfs littlefs wifi_logger protocol_examples_common app_update esp_https_ota mqtt) +set(comps heap nvs_flash meteofrance esp_netif image_downloader fatfs protocol_examples_common mqtt esp_wifi) if(${IDF_TARGET} STREQUAL "esp32p4") - list(APPEND comps bsp_extra esp32_p4_function_ev_board) + list(APPEND comps bsp_extra esp32_p4_function_ev_board sdmmc vfs littlefs wifi_logger app_update esp_https_ota) endif() idf_component_register(SRC_DIRS . fonts @@ -17,12 +17,14 @@ set_source_files_properties( "-DLV_LVGL_H_INCLUDE_SIMPLE;-Wno-format;-DLV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(montserrat_medium_12) LV_FONT_DECLARE(montserrat_medium_18) LV_FONT_DECLARE(montserrat_medium_24)" ) -lvgl_port_create_c_image("images/wifi_ok.png" "images/" "ARGB8888" "NONE") -lvgl_port_create_c_image("images/wifi_ko.png" "images/" "ARGB8888" "NONE") -lvgl_port_create_c_image("images/mqtt_ok.png" "images/" "AUTO" "NONE") -lvgl_port_create_c_image("images/mqtt_ko.png" "images/" "ARGB8888" "NONE") +if(${IDF_TARGET} STREQUAL "esp32p4") + lvgl_port_create_c_image("images/wifi_ok.png" "images/" "ARGB8888" "NONE") + lvgl_port_create_c_image("images/wifi_ko.png" "images/" "ARGB8888" "NONE") + lvgl_port_create_c_image("images/mqtt_ok.png" "images/" "AUTO" "NONE") + lvgl_port_create_c_image("images/mqtt_ko.png" "images/" "ARGB8888" "NONE") + lvgl_port_add_images(${COMPONENT_LIB} "images/") + littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT) +endif() -lvgl_port_add_images(${COMPONENT_LIB} "images/") -littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT) \ No newline at end of file diff --git a/main/idf_component.yml b/main/idf_component.yml index 24dedb3..8bf5277 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -1,24 +1,27 @@ dependencies: - espressif/esp_wifi_remote: "0.8.5" - #espressif/esp32_p4_function_ev_board: "^4.1.1" - suda-morris/am2302_rmt: "^1.0.0" - espressif/esp_websocket_client: "^1.3.0" - joltwallet/littlefs: ^1.14.8 + espressif/esp_wifi_remote: + rules: + - if: target in ["esp32p4"] + version: "0.8.5" + + suda-morris/am2302_rmt: + version: "^1.0.0" + rules: + - if: target in ["esp32p4"] + joltwallet/littlefs: + rules: + - if: target in ["esp32p4"] + version: "^1.14.8" esp_lcd_touch_gt911: - version: ^1 + rules: + - if: target in ["esp32p4"] esp_lvgl_port: + rules: + - if: target in ["esp32p4"] version: 2.5.0 idf: version: '5.4.*' lvgl/lvgl: version: 9.2.0 #espressif/esp32_p4_function_ev_board: - # version: "4.1.*" - - chmorgan/esp-audio-player: - version: "1.0.*" - public: true - - chmorgan/esp-file-iterator: - version: "1.0.0" - public: true + # version: "4.1.*" \ No newline at end of file diff --git a/main/ihm.c b/main/ihm.c index 4591967..e495bf2 100644 --- a/main/ihm.c +++ b/main/ihm.c @@ -81,9 +81,20 @@ static void event_handler(lv_event_t *e) } } + void init_display(){ + lvgl_port_cfg_t cfgLVGL = { + .task_priority = 4, + .task_stack = 7168, + .task_affinity = 1, // On se met sur le core 1 + .task_max_sleep_ms = 500, + .timer_period_ms = 5, + }; + + bsp_display_cfg_t cfg = { - .lvgl_port_cfg = ESP_LVGL_PORT_INIT_CONFIG(), + //.lvgl_port_cfg = ESP_LVGL_PORT_INIT_CONFIG(), + .lvgl_port_cfg = cfgLVGL, .buffer_size = BSP_LCD_DRAW_BUFF_SIZE, .double_buffer = BSP_LCD_DRAW_BUFF_DOUBLE, .flags = { diff --git a/main/main.c b/main/main.c index 5faa7b1..1eaf035 100644 --- a/main/main.c +++ b/main/main.c @@ -18,11 +18,6 @@ #include "main.h" #include "ihm.h" -// OTA -#include "esp_ota_ops.h" -#include "esp_http_client.h" -#include "esp_https_ota.h" - // Includes personnels #include "wifi_logger.h" #include "obtain_time.h" @@ -191,7 +186,7 @@ void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){ } } -extern EventGroupHandle_t domotic_event_group; +EventGroupHandle_t domotic_event_group; void send_event(domo_events evt){ ESP_LOGE(TAG,"On est dans l'event handler %i", evt); @@ -279,6 +274,7 @@ void mount_sd_card() extern char *days[7]; extern char *months[12]; +/* esp_err_t _ota_http_event_handler(esp_http_client_event_t *evt) { switch (evt->event_id) { @@ -309,10 +305,12 @@ esp_err_t _ota_http_event_handler(esp_http_client_event_t *evt) } return ESP_OK; } +*/ extern const uint8_t server_cert_pem_start[] asm("_binary_ca_cert_pem_start"); extern const uint8_t server_cert_pem_end[] asm("_binary_ca_cert_pem_end"); +/* void simple_ota_example_task(void *pvParameter) { ESP_LOGI(TAG, "Starting OTA example task"); @@ -356,7 +354,6 @@ void simple_ota_example_task(void *pvParameter) #ifdef CONFIG_EXAMPLE_SKIP_COMMON_NAME_CHECK config.skip_cert_common_name_check = true; #endif - esp_https_ota_config_t ota_config = { .http_config = &config, }; @@ -371,10 +368,12 @@ void simple_ota_example_task(void *pvParameter) while (1) { vTaskDelay(1000 / portTICK_PERIOD_MS); } + } +*/ - am2302_handle_t sensor = NULL; +am2302_handle_t sensor = NULL; void readTempHumid(void *pvParameter) { @@ -634,21 +633,25 @@ void app_main(void) on_weather_data_retrieval(weather_data_retreived); on_weather_data_retrieval_start(weather_data_retreived_start); ESP_LOGW(TAG, "Weather data retrieval initialized"); - initialise_weather_data_retrieval(600000); + initialise_weather_data_retrieval(600000, domotic_event_group); TaskHandle_t xHandle = NULL; BaseType_t ret1; - ret1 = xTaskCreate(&imgdwn, "imageDownload_task", 3 * 1024, NULL, 5, &xHandle); + ret1 = xTaskCreate(&imgdwn, "imageDownload_task", 3 * 1024, domotic_event_group, 5, &xHandle); if (ret1 != pdPASS) { ESP_LOGE(TAG, "Impossiblke de creer la tache imageDownload_task %i", ret1); } + /* Tache updateTime */ BaseType_t ret2 = xTaskCreate(&updateTime, "updateTimeTask", 3 * 1024, NULL, 5, NULL); if (ret2 != pdPASS) { ESP_LOGE(TAG, "Impossiblke de creer la tache updateTimeTask %i", ret2); } + /* Tache updateTime - FIN*/ + mqtt_app_start(mqtt_cb); + start_wifi_logger(); wifi_log_e("test", "%s %d %f", "hello world wifi logger", 43, 45.341223242); // write log over wifi with log level -> ERROR } @@ -659,20 +662,6 @@ void app_main(void) printf("9 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize()); - time_t now; - struct tm timeinfo; - time(&now); - localtime_r(&now, &timeinfo); - // Is time set? If not, tm_year will be (1970 - 1900). - if (timeinfo.tm_year < (2016 - 1900)) - { - ESP_LOGI(TAG, "Time is not set yet. Connecting to WiFi and getting time over NTP."); - obtain_time(); - // update 'now' variable with current time - time(&now); - } - - printf("10. Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize()); heap_caps_print_heap_info(MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); diff --git a/main/obtain_time.c b/main/obtain_time.c index df0bea4..34955e6 100644 --- a/main/obtain_time.c +++ b/main/obtain_time.c @@ -33,8 +33,6 @@ void obtain_time() } -/* FreeRTOS event group to signal when we are connected*/ -EventGroupHandle_t domotic_event_group; void updateTime(void *pvParameter) { diff --git a/main/obtain_time.h b/main/obtain_time.h index 38ad1ac..30fe5c3 100644 --- a/main/obtain_time.h +++ b/main/obtain_time.h @@ -1,3 +1,5 @@ +#pragma once void obtain_time(); void updateTime(void *pvParameter); -#pragma once + +extern EventGroupHandle_t domotic_event_group; diff --git a/sdkconfig b/sdkconfig index 80de773..6079b10 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1213,6 +1213,7 @@ CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y # # CONFIG_PM_ENABLE is not set # CONFIG_PM_SLP_IRAM_OPT is not set +CONFIG_PM_SLP_DEFAULT_PARAMS_OPT=y # CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set # end of Power Management @@ -1369,8 +1370,8 @@ CONFIG_ESP_TIMER_IMPL_SYSTIMER=y # CONFIG_ESP_HOST_WIFI_ENABLED is not set CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0 -CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y @@ -1381,11 +1382,13 @@ CONFIG_ESP_WIFI_NVS_ENABLED=y CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 CONFIG_ESP_WIFI_IRAM_OPT=y +CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y CONFIG_ESP_WIFI_RX_IRAM_OPT=y CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y CONFIG_ESP_WIFI_ENABLE_SAE_PK=y CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y +CONFIG_ESP_WIFI_SLP_IRAM_OPT=y CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 @@ -2357,12 +2360,6 @@ CONFIG_ESP_LCD_TOUCH_MAX_POINTS=5 CONFIG_ESP_LCD_TOUCH_MAX_BUTTONS=1 # end of ESP LCD TOUCH -# -# ESP WebSocket client -# -# CONFIG_ESP_WS_CLIENT_ENABLE_DYNAMIC_BUFFER is not set -# end of ESP WebSocket client - # # Wi-Fi Remote # @@ -2395,10 +2392,10 @@ CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y # CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=10 CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=32 -CONFIG_WIFI_RMT_STATIC_TX_BUFFER=y -# CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER is not set -CONFIG_WIFI_RMT_TX_BUFFER_TYPE=0 -CONFIG_WIFI_RMT_STATIC_TX_BUFFER_NUM=16 +# CONFIG_WIFI_RMT_STATIC_TX_BUFFER is not set +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER=y +CONFIG_WIFI_RMT_TX_BUFFER_TYPE=1 +CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=32 CONFIG_WIFI_RMT_STATIC_RX_MGMT_BUFFER=y # CONFIG_WIFI_RMT_DYNAMIC_RX_MGMT_BUFFER is not set CONFIG_WIFI_RMT_DYNAMIC_RX_MGMT_BUF=0 @@ -2412,13 +2409,13 @@ CONFIG_WIFI_RMT_NVS_ENABLED=y CONFIG_WIFI_RMT_SOFTAP_BEACON_MAX_LEN=752 CONFIG_WIFI_RMT_MGMT_SBUF_NUM=32 CONFIG_WIFI_RMT_IRAM_OPT=y -# CONFIG_WIFI_RMT_EXTRA_IRAM_OPT is not set +CONFIG_WIFI_RMT_EXTRA_IRAM_OPT=y CONFIG_WIFI_RMT_RX_IRAM_OPT=y CONFIG_WIFI_RMT_ENABLE_WPA3_SAE=y CONFIG_WIFI_RMT_ENABLE_SAE_PK=y CONFIG_WIFI_RMT_SOFTAP_SAE_SUPPORT=y CONFIG_WIFI_RMT_ENABLE_WPA3_OWE_STA=y -# CONFIG_WIFI_RMT_SLP_IRAM_OPT is not set +CONFIG_WIFI_RMT_SLP_IRAM_OPT=y CONFIG_WIFI_RMT_SLP_DEFAULT_MIN_ACTIVE_TIME=50 CONFIG_WIFI_RMT_SLP_DEFAULT_MAX_ACTIVE_TIME=10 CONFIG_WIFI_RMT_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 @@ -2512,8 +2509,8 @@ CONFIG_LV_USE_CLIB_MALLOC=y # CONFIG_LV_USE_MICROPYTHON_MALLOC is not set # CONFIG_LV_USE_RTTHREAD_MALLOC is not set # CONFIG_LV_USE_CUSTOM_MALLOC is not set -CONFIG_LV_USE_BUILTIN_STRING=y -# CONFIG_LV_USE_CLIB_STRING is not set +# CONFIG_LV_USE_BUILTIN_STRING is not set +CONFIG_LV_USE_CLIB_STRING=y # CONFIG_LV_USE_CUSTOM_STRING is not set # CONFIG_LV_USE_BUILTIN_SPRINTF is not set CONFIG_LV_USE_CLIB_SPRINTF=y @@ -2523,7 +2520,7 @@ CONFIG_LV_USE_CLIB_SPRINTF=y # # HAL Settings # -CONFIG_LV_DEF_REFR_PERIOD=33 +CONFIG_LV_DEF_REFR_PERIOD=10 CONFIG_LV_DPI_DEF=130 # end of HAL Settings @@ -2584,26 +2581,7 @@ CONFIG_LV_USE_DRAW_SW_ASM=0 # # Logging # -CONFIG_LV_USE_LOG=y -# CONFIG_LV_LOG_LEVEL_TRACE is not set -# CONFIG_LV_LOG_LEVEL_INFO is not set -# CONFIG_LV_LOG_LEVEL_WARN is not set -CONFIG_LV_LOG_LEVEL_ERROR=y -# CONFIG_LV_LOG_LEVEL_USER is not set -# CONFIG_LV_LOG_LEVEL_NONE is not set -CONFIG_LV_LOG_LEVEL=3 -CONFIG_LV_LOG_PRINTF=y -# CONFIG_LV_LOG_USE_TIMESTAMP is not set -# CONFIG_LV_LOG_USE_FILE_LINE is not set -# CONFIG_LV_LOG_TRACE_MEM is not set -# CONFIG_LV_LOG_TRACE_TIMER is not set -# CONFIG_LV_LOG_TRACE_INDEV is not set -# CONFIG_LV_LOG_TRACE_DISP_REFR is not set -# CONFIG_LV_LOG_TRACE_EVENT is not set -# CONFIG_LV_LOG_TRACE_OBJ_CREATE is not set -# CONFIG_LV_LOG_TRACE_LAYOUT is not set -# CONFIG_LV_LOG_TRACE_ANIM is not set -# CONFIG_LV_LOG_TRACE_CACHE is not set +# CONFIG_LV_USE_LOG is not set # end of Logging # @@ -2611,7 +2589,7 @@ CONFIG_LV_LOG_PRINTF=y # CONFIG_LV_USE_ASSERT_NULL=y CONFIG_LV_USE_ASSERT_MALLOC=y -CONFIG_LV_USE_ASSERT_STYLE=y +# CONFIG_LV_USE_ASSERT_STYLE is not set # CONFIG_LV_USE_ASSERT_MEM_INTEGRITY is not set # CONFIG_LV_USE_ASSERT_OBJ is not set CONFIG_LV_ASSERT_HANDLER_INCLUDE="assert.h" @@ -2659,12 +2637,12 @@ CONFIG_LV_USE_PRIVATE_API=y # # CONFIG_LV_FONT_MONTSERRAT_8 is not set # CONFIG_LV_FONT_MONTSERRAT_10 is not set -CONFIG_LV_FONT_MONTSERRAT_12=y +# CONFIG_LV_FONT_MONTSERRAT_12 is not set CONFIG_LV_FONT_MONTSERRAT_14=y -CONFIG_LV_FONT_MONTSERRAT_16=y -CONFIG_LV_FONT_MONTSERRAT_18=y -CONFIG_LV_FONT_MONTSERRAT_20=y -CONFIG_LV_FONT_MONTSERRAT_22=y +# CONFIG_LV_FONT_MONTSERRAT_16 is not set +# CONFIG_LV_FONT_MONTSERRAT_18 is not set +# CONFIG_LV_FONT_MONTSERRAT_20 is not set +# CONFIG_LV_FONT_MONTSERRAT_22 is not set # CONFIG_LV_FONT_MONTSERRAT_24 is not set # CONFIG_LV_FONT_MONTSERRAT_26 is not set # CONFIG_LV_FONT_MONTSERRAT_28 is not set @@ -2733,41 +2711,46 @@ CONFIG_LV_TXT_LINE_BREAK_LONG_LEN=0 # Widget Usage # CONFIG_LV_WIDGETS_HAS_DEFAULT_VALUE=y -# CONFIG_LV_USE_ANIMIMG is not set -# CONFIG_LV_USE_ARC is not set +CONFIG_LV_USE_ANIMIMG=y +CONFIG_LV_USE_ARC=y CONFIG_LV_USE_BAR=y CONFIG_LV_USE_BUTTON=y CONFIG_LV_USE_BUTTONMATRIX=y -# CONFIG_LV_USE_CALENDAR is not set +CONFIG_LV_USE_CALENDAR=y +# CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY is not set +CONFIG_LV_USE_CALENDAR_HEADER_ARROW=y +CONFIG_LV_USE_CALENDAR_HEADER_DROPDOWN=y +# CONFIG_LV_USE_CALENDAR_CHINESE is not set CONFIG_LV_USE_CANVAS=y CONFIG_LV_USE_CHART=y CONFIG_LV_USE_CHECKBOX=y -# CONFIG_LV_USE_DROPDOWN is not set +CONFIG_LV_USE_DROPDOWN=y CONFIG_LV_USE_IMAGE=y CONFIG_LV_USE_IMAGEBUTTON=y -# CONFIG_LV_USE_KEYBOARD is not set +CONFIG_LV_USE_KEYBOARD=y CONFIG_LV_USE_LABEL=y CONFIG_LV_LABEL_TEXT_SELECTION=y CONFIG_LV_LABEL_LONG_TXT_HINT=y CONFIG_LV_LABEL_WAIT_CHAR_COUNT=3 -# CONFIG_LV_USE_LED is not set -# CONFIG_LV_USE_LINE is not set -# CONFIG_LV_USE_LIST is not set -# CONFIG_LV_USE_MENU is not set -# CONFIG_LV_USE_MSGBOX is not set +CONFIG_LV_USE_LED=y +CONFIG_LV_USE_LINE=y +CONFIG_LV_USE_LIST=y +CONFIG_LV_USE_MENU=y +CONFIG_LV_USE_MSGBOX=y CONFIG_LV_USE_ROLLER=y -# CONFIG_LV_USE_SCALE is not set +CONFIG_LV_USE_SCALE=y CONFIG_LV_USE_SLIDER=y -# CONFIG_LV_USE_SPAN is not set -# CONFIG_LV_USE_SPINBOX is not set -# CONFIG_LV_USE_SPINNER is not set +CONFIG_LV_USE_SPAN=y +CONFIG_LV_SPAN_SNIPPET_STACK_SIZE=64 +CONFIG_LV_USE_SPINBOX=y +CONFIG_LV_USE_SPINNER=y CONFIG_LV_USE_SWITCH=y CONFIG_LV_USE_TEXTAREA=y CONFIG_LV_TEXTAREA_DEF_PWD_SHOW_TIME=1500 -# CONFIG_LV_USE_TABLE is not set +CONFIG_LV_USE_TABLE=y CONFIG_LV_USE_TABVIEW=y -# CONFIG_LV_USE_TILEVIEW is not set -# CONFIG_LV_USE_WIN is not set +CONFIG_LV_USE_TILEVIEW=y +CONFIG_LV_USE_WIN=y # end of Widget Usage # @@ -2825,9 +2808,20 @@ CONFIG_LV_USE_LODEPNG=y # Others # # CONFIG_LV_USE_SNAPSHOT is not set -# CONFIG_LV_USE_SYSMON is not set +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y +# CONFIG_LV_PERF_MONITOR_ALIGN_TOP_LEFT is not set +# CONFIG_LV_PERF_MONITOR_ALIGN_TOP_MID is not set +# CONFIG_LV_PERF_MONITOR_ALIGN_TOP_RIGHT is not set +# CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_LEFT is not set +# CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_MID is not set +CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_RIGHT=y +# CONFIG_LV_PERF_MONITOR_ALIGN_LEFT_MID is not set +# CONFIG_LV_PERF_MONITOR_ALIGN_RIGHT_MID is not set +# CONFIG_LV_PERF_MONITOR_ALIGN_CENTER is not set +# CONFIG_LV_USE_PERF_MONITOR_LOG_MODE is not set # CONFIG_LV_USE_PROFILER is not set -CONFIG_LV_USE_MONKEY=y +# CONFIG_LV_USE_MONKEY is not set # CONFIG_LV_USE_GRIDNAV is not set # CONFIG_LV_USE_FRAGMENT is not set # CONFIG_LV_USE_IMGFONT is not set @@ -2872,7 +2866,6 @@ CONFIG_LV_USE_OBSERVER=y # CONFIG_LV_USE_DEMO_RENDER is not set # CONFIG_LV_USE_DEMO_SCROLL is not set # CONFIG_LV_USE_DEMO_STRESS is not set -# CONFIG_LV_USE_DEMO_TRANSFORM is not set # CONFIG_LV_USE_DEMO_MUSIC is not set # CONFIG_LV_USE_DEMO_FLEX_LAYOUT is not set # CONFIG_LV_USE_DEMO_MULTILANG is not set @@ -2948,8 +2941,8 @@ CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_TIMER_TASK_STACK_SIZE=3584 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 -CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_TX_BA_WIN=6 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y @@ -3050,8 +3043,8 @@ CONFIG_TO_WIFI_DATA_THROTTLE_HIGH_THRESHOLD=80 CONFIG_TO_WIFI_DATA_THROTTLE_LOW_THRESHOLD=60 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 -CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_TX_BA_WIN=6 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 2c812f8..769b6cf 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -42,31 +42,14 @@ CONFIG_LV_LAYER_SIMPLE_BUF_SIZE=102400 CONFIG_LV_IMG_CACHE_DEF_SIZE=20 CONFIG_LV_GRAD_CACHE_DEF_SIZE=10240 CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y -CONFIG_LV_FONT_MONTSERRAT_8=y -CONFIG_LV_FONT_MONTSERRAT_10=y -CONFIG_LV_FONT_MONTSERRAT_12=y -CONFIG_LV_FONT_MONTSERRAT_16=y -CONFIG_LV_FONT_MONTSERRAT_18=y -CONFIG_LV_FONT_MONTSERRAT_20=y -CONFIG_LV_FONT_MONTSERRAT_22=y -CONFIG_LV_FONT_MONTSERRAT_24=y -CONFIG_LV_FONT_MONTSERRAT_26=y -CONFIG_LV_FONT_MONTSERRAT_28=y -CONFIG_LV_FONT_MONTSERRAT_30=y -CONFIG_LV_FONT_MONTSERRAT_32=y -CONFIG_LV_FONT_MONTSERRAT_34=y -CONFIG_LV_FONT_MONTSERRAT_36=y -CONFIG_LV_FONT_MONTSERRAT_38=y -CONFIG_LV_FONT_MONTSERRAT_40=y -CONFIG_LV_FONT_MONTSERRAT_42=y -CONFIG_LV_FONT_MONTSERRAT_44=y -CONFIG_LV_FONT_MONTSERRAT_46=y -CONFIG_LV_FONT_MONTSERRAT_48=y -CONFIG_LV_USE_MONKEY=y -CONFIG_LV_USE_DEMO_WIDGETS=y -CONFIG_LV_USE_DEMO_BENCHMARK=y -CONFIG_LV_USE_DEMO_STRESS=y +CONFIG_LV_USE_MONKEY=n +CONFIG_LV_USE_DEMO_WIDGETS=n +CONFIG_LV_USE_DEMO_BENCHMARK=n +CONFIG_LV_USE_DEMO_STRESS=n CONFIG_IDF_EXPERIMENTAL_FEATURES=y +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_BUILD_EXAMPLES=n #Necessaire pour lire les fichiers depuis littlefs CONFIG_LV_USE_FS_STDIO=y @@ -76,6 +59,11 @@ CONFIG_LV_FS_STDIO_CACHE_SIZE=0 # Necessaire pour lire le png CONFIG_LV_USE_LODEPNG=y +CONFIG_LV_FONT_MONTSERRAT_40=y + +# Important pour la fluidité des animations +CONFIG_LV_DEF_REFR_PERIOD=10 + #Dégradés CONFIG_LV_USE_DRAW_SW_COMPLEX_GRADIENTS=y @@ -84,3 +72,8 @@ CONFIG_LV_USE_PRIVATE_API=y CONFIG_SPIRAM_USE_MALLOC=y +#Specifique P4 +CONFIG_SLAVE_IDF_TARGET_ESP32C6=y + + + diff --git a/sdkconfig.defaults.esp32p4 b/sdkconfig.defaults.esp32p4 new file mode 100644 index 0000000..707186f --- /dev/null +++ b/sdkconfig.defaults.esp32p4 @@ -0,0 +1,31 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32p4" + +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_FREERTOS_HZ=1000 + +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_HEX=y +CONFIG_SPIRAM_SPEED_200M=y +CONFIG_IDF_EXPERIMENTAL_FEATURES=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y +CONFIG_LV_DEF_REFR_PERIOD=10 + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y + + +# CONFIG_LV_BUILD_EXAMPLES is not set