evtGroup & notif & multi-target

This commit is contained in:
marc 2025-04-25 23:40:25 +02:00
parent be6c9a1dd1
commit d0e336a4ee
14 changed files with 283 additions and 230 deletions

View File

@ -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)

View File

@ -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 <string.h>
#include <sys/unistd.h>
@ -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();
download();
heap_caps_free(source_buf);
printf("Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
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);
}
}
}

View File

@ -1,2 +1,2 @@
void imgdwn();
void imgdwn(void* evtGroup);
#pragma once

View File

@ -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);

View File

@ -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");
}

View File

@ -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")
lvgl_port_add_images(${COMPONENT_LIB} "images/")
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()
littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT)

View File

@ -1,12 +1,23 @@
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.*'
@ -14,11 +25,3 @@ dependencies:
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

View File

@ -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 = {

View File

@ -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);

View File

@ -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)
{

View File

@ -1,3 +1,5 @@
#pragma once
void obtain_time();
void updateTime(void *pvParameter);
#pragma once
extern EventGroupHandle_t domotic_event_group;

127
sdkconfig
View File

@ -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

View File

@ -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

View File

@ -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