From a4d15b2a1e2d88ee8e5c76671d3600b715df7eb5 Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Sat, 20 Sep 2025 13:07:34 +0200 Subject: [PATCH] Add esp_http_client and expose it to TactilityC (#341) --- Documentation/ideas.md | 6 ++- Tactility/CMakeLists.txt | 20 ++++++++- TactilityC/Source/tt_init.cpp | 78 ++++++++++++++++++++++++++++++++++- 3 files changed, 101 insertions(+), 3 deletions(-) diff --git a/Documentation/ideas.md b/Documentation/ideas.md index 816bdfe8..8c14c0c6 100644 --- a/Documentation/ideas.md +++ b/Documentation/ideas.md @@ -112,4 +112,8 @@ - File - Name - Description -- List apps \ No newline at end of file +- List apps + +# Notes on firmware size + +- adding esp_http_client (with esp_event) added about 100kB \ No newline at end of file diff --git a/Tactility/CMakeLists.txt b/Tactility/CMakeLists.txt index 75e8b9c3..b13d9cc9 100644 --- a/Tactility/CMakeLists.txt +++ b/Tactility/CMakeLists.txt @@ -6,7 +6,25 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) if (DEFINED ENV{ESP_IDF_VERSION}) file(GLOB_RECURSE SOURCE_FILES Source/*.c*) - list(APPEND REQUIRES_LIST TactilityCore lvgl driver elf_loader lv_screenshot QRCode esp_lvgl_port minitar minmea esp_wifi nvs_flash spiffs vfs fatfs lwip esp_http_server) + list(APPEND REQUIRES_LIST + TactilityCore + lvgl + driver + elf_loader + lv_screenshot + QRCode + esp_http_server + esp_http_client + esp_lvgl_port + esp_wifi + minitar + minmea + nvs_flash + spiffs + vfs + fatfs + lwip + ) if ("${IDF_TARGET}" STREQUAL "esp32s3") list(APPEND REQUIRES_LIST esp_tinyusb) endif () diff --git a/TactilityC/Source/tt_init.cpp b/TactilityC/Source/tt_init.cpp index 91d488e8..32b6c2e8 100644 --- a/TactilityC/Source/tt_init.cpp +++ b/TactilityC/Source/tt_init.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -111,6 +112,66 @@ const esp_elfsym elf_symbols[] { ESP_ELFSYM_EXPORT(esp_log), ESP_ELFSYM_EXPORT(esp_log_write), ESP_ELFSYM_EXPORT(esp_log_timestamp), + // esp_http_client + ESP_ELFSYM_EXPORT(esp_http_client_init), + ESP_ELFSYM_EXPORT(esp_http_client_perform), + ESP_ELFSYM_EXPORT(esp_http_client_cancel_request), + ESP_ELFSYM_EXPORT(esp_http_client_set_url), + ESP_ELFSYM_EXPORT(esp_http_client_set_post_field), + ESP_ELFSYM_EXPORT(esp_http_client_get_post_field), + ESP_ELFSYM_EXPORT(esp_http_client_set_header), + ESP_ELFSYM_EXPORT(esp_http_client_get_header), + ESP_ELFSYM_EXPORT(esp_http_client_get_username), + ESP_ELFSYM_EXPORT(esp_http_client_set_username), + ESP_ELFSYM_EXPORT(esp_http_client_get_password), + ESP_ELFSYM_EXPORT(esp_http_client_set_password), + ESP_ELFSYM_EXPORT(esp_http_client_cancel_request), + ESP_ELFSYM_EXPORT(esp_http_client_set_authtype), + ESP_ELFSYM_EXPORT(esp_http_client_get_user_data), + ESP_ELFSYM_EXPORT(esp_http_client_set_user_data), + ESP_ELFSYM_EXPORT(esp_http_client_get_errno), + ESP_ELFSYM_EXPORT(esp_http_client_get_and_clear_last_tls_error), + ESP_ELFSYM_EXPORT(esp_http_client_set_method), + ESP_ELFSYM_EXPORT(esp_http_client_set_timeout_ms), + ESP_ELFSYM_EXPORT(esp_http_client_delete_header), + ESP_ELFSYM_EXPORT(esp_http_client_delete_all_headers), + ESP_ELFSYM_EXPORT(esp_http_client_open), + ESP_ELFSYM_EXPORT(esp_http_client_write), + ESP_ELFSYM_EXPORT(esp_http_client_fetch_headers), + ESP_ELFSYM_EXPORT(esp_http_client_is_chunked_response), + ESP_ELFSYM_EXPORT(esp_http_client_read), + ESP_ELFSYM_EXPORT(esp_http_client_get_status_code), + ESP_ELFSYM_EXPORT(esp_http_client_get_content_length), + ESP_ELFSYM_EXPORT(esp_http_client_close), + ESP_ELFSYM_EXPORT(esp_http_client_cleanup), + ESP_ELFSYM_EXPORT(esp_http_client_get_transport_type), + ESP_ELFSYM_EXPORT(esp_http_client_set_redirection), + ESP_ELFSYM_EXPORT(esp_http_client_reset_redirect_counter), + ESP_ELFSYM_EXPORT(esp_http_client_set_auth_data), + ESP_ELFSYM_EXPORT(esp_http_client_add_auth), + ESP_ELFSYM_EXPORT(esp_http_client_is_complete_data_received), + ESP_ELFSYM_EXPORT(esp_http_client_read_response), + ESP_ELFSYM_EXPORT(esp_http_client_flush_response), + ESP_ELFSYM_EXPORT(esp_http_client_get_url), + ESP_ELFSYM_EXPORT(esp_http_client_get_chunk_length), + // esp_event + ESP_ELFSYM_EXPORT(esp_event_loop_create), + ESP_ELFSYM_EXPORT(esp_event_loop_delete), + ESP_ELFSYM_EXPORT(esp_event_loop_create_default), + ESP_ELFSYM_EXPORT(esp_event_loop_delete_default), + ESP_ELFSYM_EXPORT(esp_event_loop_run), + ESP_ELFSYM_EXPORT(esp_event_handler_register), + ESP_ELFSYM_EXPORT(esp_event_handler_register_with), + ESP_ELFSYM_EXPORT(esp_event_handler_instance_register_with), + ESP_ELFSYM_EXPORT(esp_event_handler_instance_register), + ESP_ELFSYM_EXPORT(esp_event_handler_unregister), + ESP_ELFSYM_EXPORT(esp_event_handler_unregister_with), + ESP_ELFSYM_EXPORT(esp_event_handler_instance_unregister_with), + ESP_ELFSYM_EXPORT(esp_event_handler_instance_unregister), + ESP_ELFSYM_EXPORT(esp_event_post), + ESP_ELFSYM_EXPORT(esp_event_post_to), + ESP_ELFSYM_EXPORT(esp_event_isr_post), + ESP_ELFSYM_EXPORT(esp_event_isr_post_to), // Tactility ESP_ELFSYM_EXPORT(tt_app_start), ESP_ELFSYM_EXPORT(tt_app_start_with_bundle), @@ -256,6 +317,8 @@ const esp_elfsym elf_symbols[] { ESP_ELFSYM_EXPORT(lv_event_get_target), ESP_ELFSYM_EXPORT(lv_event_get_current_target_obj), // lv_obj + ESP_ELFSYM_EXPORT(lv_color_hex), + ESP_ELFSYM_EXPORT(lv_color_make), ESP_ELFSYM_EXPORT(lv_obj_create), ESP_ELFSYM_EXPORT(lv_obj_delete), ESP_ELFSYM_EXPORT(lv_obj_add_event_cb), @@ -271,7 +334,6 @@ const esp_elfsym elf_symbols[] { ESP_ELFSYM_EXPORT(lv_obj_get_content_width), ESP_ELFSYM_EXPORT(lv_obj_get_content_height), ESP_ELFSYM_EXPORT(lv_obj_center), - ESP_ELFSYM_EXPORT(lv_color_make), ESP_ELFSYM_EXPORT(lv_obj_remove_event_cb), ESP_ELFSYM_EXPORT(lv_obj_get_user_data), ESP_ELFSYM_EXPORT(lv_obj_set_user_data), @@ -282,6 +344,11 @@ const esp_elfsym elf_symbols[] { ESP_ELFSYM_EXPORT(lv_obj_set_flex_flow), ESP_ELFSYM_EXPORT(lv_obj_set_flex_grow), ESP_ELFSYM_EXPORT(lv_obj_set_style_bg_color), + ESP_ELFSYM_EXPORT(lv_obj_set_style_bg_opa), + ESP_ELFSYM_EXPORT(lv_obj_set_style_bg_image_src), + ESP_ELFSYM_EXPORT(lv_obj_set_style_bg_image_opa), + ESP_ELFSYM_EXPORT(lv_obj_set_style_bg_image_recolor), + ESP_ELFSYM_EXPORT(lv_obj_set_style_bg_image_recolor_opa), ESP_ELFSYM_EXPORT(lv_obj_set_style_margin_hor), ESP_ELFSYM_EXPORT(lv_obj_set_style_margin_ver), ESP_ELFSYM_EXPORT(lv_obj_set_style_margin_top), @@ -303,6 +370,15 @@ const esp_elfsym elf_symbols[] { ESP_ELFSYM_EXPORT(lv_obj_set_style_border_post), ESP_ELFSYM_EXPORT(lv_obj_set_style_border_side), ESP_ELFSYM_EXPORT(lv_obj_set_style_border_color), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_opa), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_align), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_color), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_font), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_letter_space), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_line_space), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_outline_stroke_color), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_outline_stroke_opa), + ESP_ELFSYM_EXPORT(lv_obj_set_style_text_outline_stroke_width), ESP_ELFSYM_EXPORT(lv_obj_set_align), ESP_ELFSYM_EXPORT(lv_obj_set_x), ESP_ELFSYM_EXPORT(lv_obj_set_y),