diff --git a/components/bt/common/ble_log/ble_log_spi_out.c b/components/bt/common/ble_log/ble_log_spi_out.c index a9c77abfff..9c54242f6b 100644 --- a/components/bt/common/ble_log/ble_log_spi_out.c +++ b/components/bt/common/ble_log/ble_log_spi_out.c @@ -3,6 +3,7 @@ * * SPDX-License-Identifier: Apache-2.0 */ +#include "freertos/FreeRTOS.h" #include "ble_log/ble_log_spi_out.h" #if CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED diff --git a/components/esp_driver_dac/esp32s2/dac_dma.c b/components/esp_driver_dac/esp32s2/dac_dma.c index f81cc72120..cbe3d3c9f9 100644 --- a/components/esp_driver_dac/esp32s2/dac_dma.c +++ b/components/esp_driver_dac/esp32s2/dac_dma.c @@ -33,6 +33,7 @@ #endif #include "esp_check.h" #include "esp_attr.h" +#include "esp_heap_caps.h" #define DAC_DMA_PERIPH_SPI_HOST SPI3_HOST diff --git a/components/esp_driver_isp/include/esp_private/isp_private.h b/components/esp_driver_isp/include/esp_private/isp_private.h index 7684801b84..f095f2dc8f 100644 --- a/components/esp_driver_isp/include/esp_private/isp_private.h +++ b/components/esp_driver_isp/include/esp_private/isp_private.h @@ -16,9 +16,7 @@ #include "esp_check.h" #include "esp_heap_caps.h" #include "esp_intr_alloc.h" -#include "freertos/FreeRTOS.h" -#include "freertos/queue.h" -#include "freertos/idf_additions.h" +#include "esp_private/critical_section.h" #include "driver/isp_types.h" #include "soc/soc_caps.h" #if SOC_ISP_SUPPORTED @@ -69,7 +67,7 @@ typedef struct isp_processor_t { void *csi_brg_hw; #endif ISP_ATOMIC_TYPE(isp_fsm_t) isp_fsm; - portMUX_TYPE spinlock; + DECLARE_CRIT_SECTION_LOCK_IN_STRUCT(spinlock); color_space_pixel_format_t in_color_format; color_space_pixel_format_t out_color_format; uint32_t h_res; diff --git a/components/esp_driver_sd_intf/include/driver/sd_host.h b/components/esp_driver_sd_intf/include/driver/sd_host.h index 69480addef..04a9c9719a 100644 --- a/components/esp_driver_sd_intf/include/driver/sd_host.h +++ b/components/esp_driver_sd_intf/include/driver/sd_host.h @@ -102,7 +102,7 @@ esp_err_t sd_host_slot_enable_io_int(sd_host_slot_handle_t slot); * - ESP_ERR_INVALID_ARG: Invalid argument * - ESP_ERR_TIMEOUT: Timeout */ -esp_err_t sd_host_slot_wait_io_int(sd_host_slot_handle_t slot, TickType_t timeout_ticks); +esp_err_t sd_host_slot_wait_io_int(sd_host_slot_handle_t slot, uint32_t timeout_ticks); /** * @brief Get slot info diff --git a/components/esp_driver_sd_intf/include/esp_private/sd_driver_interface.h b/components/esp_driver_sd_intf/include/esp_private/sd_driver_interface.h index 9fa1fb6119..bbdb647864 100644 --- a/components/esp_driver_sd_intf/include/esp_private/sd_driver_interface.h +++ b/components/esp_driver_sd_intf/include/esp_private/sd_driver_interface.h @@ -125,7 +125,7 @@ struct sd_slot_driver_t { * - ESP_ERR_INVALID_ARG: Invalid argument * - ESP_ERR_TIMEOUT: Timeout */ - esp_err_t (*wait_io_int)(sd_slot_driver_t *slot_drv, TickType_t timeout_ticks); + esp_err_t (*wait_io_int)(sd_slot_driver_t *slot_drv, uint32_t timeout_ticks); /** * @brief Get slot info diff --git a/components/esp_driver_sd_intf/sd_host.c b/components/esp_driver_sd_intf/sd_host.c index 096956ee08..38154da493 100644 --- a/components/esp_driver_sd_intf/sd_host.c +++ b/components/esp_driver_sd_intf/sd_host.c @@ -7,6 +7,7 @@ #include #include "esp_types.h" #include "sdkconfig.h" +#include "freertos/FreeRTOS.h" #include "esp_err.h" #include "esp_log.h" #include "esp_check.h" @@ -85,7 +86,7 @@ esp_err_t sd_host_slot_enable_io_int(sd_host_slot_handle_t slot) return slot->enable_io_int(slot); } -esp_err_t sd_host_slot_wait_io_int(sd_host_slot_handle_t slot, TickType_t timeout_ticks) +esp_err_t sd_host_slot_wait_io_int(sd_host_slot_handle_t slot, uint32_t timeout_ticks) { SD_HOST_ARG_CHECK(slot); SD_HOST_FUNC_CHECK(slot->wait_io_int); diff --git a/components/esp_driver_sdio/include/driver/sdio_slave.h b/components/esp_driver_sdio/include/driver/sdio_slave.h index 3359c6a9a0..d9383d883d 100644 --- a/components/esp_driver_sdio/include/driver/sdio_slave.h +++ b/components/esp_driver_sdio/include/driver/sdio_slave.h @@ -7,7 +7,6 @@ #pragma once #include "esp_err.h" -#include "freertos/FreeRTOS.h" // for TickType_t #include "hal/sdio_slave_types.h" #ifdef __cplusplus @@ -160,7 +159,7 @@ esp_err_t sdio_slave_recv_load_buf(sdio_slave_buf_handle_t handle); * - ESP_ERR_NOT_FINISHED if returned buffer is not the end of a packet from the host, should call this API again until the end of a packet * - ESP_OK if success */ -esp_err_t sdio_slave_recv_packet(sdio_slave_buf_handle_t* handle_ret, TickType_t wait); +esp_err_t sdio_slave_recv_packet(sdio_slave_buf_handle_t* handle_ret, uint32_t wait); /** Get received data if exist. The driver returns the ownership of the buffer to the app. * @@ -177,7 +176,7 @@ esp_err_t sdio_slave_recv_packet(sdio_slave_buf_handle_t* handle_ret, TickType_t * - ESP_ERR_TIMEOUT if timeout before receiving new data * - ESP_OK if success */ -esp_err_t sdio_slave_recv(sdio_slave_buf_handle_t* handle_ret, uint8_t **out_addr, size_t *out_len, TickType_t wait); +esp_err_t sdio_slave_recv(sdio_slave_buf_handle_t* handle_ret, uint8_t **out_addr, size_t *out_len, uint32_t wait); /** Retrieve the buffer corresponding to a handle. * @@ -205,7 +204,7 @@ uint8_t* sdio_slave_recv_get_buf(sdio_slave_buf_handle_t handle, size_t *len_o); * - ESP_ERR_TIMEOUT if the queue is still full until timeout. * - ESP_OK if success. */ -esp_err_t sdio_slave_send_queue(uint8_t* addr, size_t len, void* arg, TickType_t wait); +esp_err_t sdio_slave_send_queue(uint8_t* addr, size_t len, void* arg, uint32_t wait); /** Return the ownership of a finished transaction. * @param out_arg Argument of the finished transaction. Set to NULL if unused. @@ -213,7 +212,7 @@ esp_err_t sdio_slave_send_queue(uint8_t* addr, size_t len, void* arg, TickType_t * * @return ESP_ERR_TIMEOUT if no transaction finished, or ESP_OK if succeed. */ -esp_err_t sdio_slave_send_get_finished(void** out_arg, TickType_t wait); +esp_err_t sdio_slave_send_get_finished(void** out_arg, uint32_t wait); /** Start a new sending transfer, and wait for it (blocked) to be finished. * @@ -289,7 +288,7 @@ void sdio_slave_clear_host_int(sdio_slave_hostint_t mask); * * @return ESP_OK if success, ESP_ERR_TIMEOUT if timeout. */ -esp_err_t sdio_slave_wait_int(int pos, TickType_t wait); +esp_err_t sdio_slave_wait_int(int pos, uint32_t wait); #ifdef __cplusplus } diff --git a/components/esp_driver_sdio/src/sdio_slave.c b/components/esp_driver_sdio/src/sdio_slave.c index 3f2f8f788b..205409f102 100644 --- a/components/esp_driver_sdio/src/sdio_slave.c +++ b/components/esp_driver_sdio/src/sdio_slave.c @@ -504,7 +504,7 @@ static void sdio_intr_host(void *arg) } } -esp_err_t sdio_slave_wait_int(int pos, TickType_t wait) +esp_err_t sdio_slave_wait_int(int pos, uint32_t wait) { SDIO_SLAVE_CHECK(pos >= 0 && pos < 8, "interrupt num invalid", ESP_ERR_INVALID_ARG); return xSemaphoreTake(context.events[pos], wait); @@ -616,7 +616,7 @@ static void sdio_intr_send(void *arg) } } -esp_err_t sdio_slave_send_queue(uint8_t *addr, size_t len, void *arg, TickType_t wait) +esp_err_t sdio_slave_send_queue(uint8_t *addr, size_t len, void *arg, uint32_t wait) { SDIO_SLAVE_CHECK(len > 0, "len <= 0", ESP_ERR_INVALID_ARG); SDIO_SLAVE_CHECK(esp_ptr_dma_capable(addr) && (uint32_t)addr % 4 == 0, "buffer to send should be DMA capable and 32-bit aligned", @@ -637,7 +637,7 @@ esp_err_t sdio_slave_send_queue(uint8_t *addr, size_t len, void *arg, TickType_t return ESP_OK; } -esp_err_t sdio_slave_send_get_finished(void **out_arg, TickType_t wait) +esp_err_t sdio_slave_send_get_finished(void **out_arg, uint32_t wait) { void *arg = NULL; BaseType_t err = xQueueReceive(context.ret_queue, &arg, wait); @@ -784,7 +784,7 @@ sdio_slave_buf_handle_t sdio_slave_recv_register_buf(uint8_t *start) return desc; } -esp_err_t sdio_slave_recv(sdio_slave_buf_handle_t *handle_ret, uint8_t **out_addr, size_t *out_len, TickType_t wait) +esp_err_t sdio_slave_recv(sdio_slave_buf_handle_t *handle_ret, uint8_t **out_addr, size_t *out_len, uint32_t wait) { esp_err_t ret = sdio_slave_recv_packet(handle_ret, wait); if (ret == ESP_ERR_NOT_FINISHED) { @@ -803,7 +803,7 @@ esp_err_t sdio_slave_recv(sdio_slave_buf_handle_t *handle_ret, uint8_t **out_add return ret; } -esp_err_t sdio_slave_recv_packet(sdio_slave_buf_handle_t *handle_ret, TickType_t wait) +esp_err_t sdio_slave_recv_packet(sdio_slave_buf_handle_t *handle_ret, uint32_t wait) { SDIO_SLAVE_CHECK(handle_ret != NULL, "handle address cannot be 0", ESP_ERR_INVALID_ARG); BaseType_t err = xSemaphoreTake(context.recv_event, wait); diff --git a/components/esp_driver_sdmmc/legacy/include/driver/sdmmc_host.h b/components/esp_driver_sdmmc/legacy/include/driver/sdmmc_host.h index 6c117261e2..e8d7440291 100644 --- a/components/esp_driver_sdmmc/legacy/include/driver/sdmmc_host.h +++ b/components/esp_driver_sdmmc/legacy/include/driver/sdmmc_host.h @@ -207,7 +207,7 @@ esp_err_t sdmmc_host_io_int_enable(int slot); * - ESP_OK on success (interrupt received) * - ESP_ERR_TIMEOUT if the interrupt did not occur within timeout_ticks */ -esp_err_t sdmmc_host_io_int_wait(int slot, TickType_t timeout_ticks); +esp_err_t sdmmc_host_io_int_wait(int slot, uint32_t timeout_ticks); /** * @brief Disable SDMMC host and release allocated resources gracefully diff --git a/components/esp_driver_sdmmc/legacy/src/sdmmc_host.c b/components/esp_driver_sdmmc/legacy/src/sdmmc_host.c index 864e7d800c..a532050003 100644 --- a/components/esp_driver_sdmmc/legacy/src/sdmmc_host.c +++ b/components/esp_driver_sdmmc/legacy/src/sdmmc_host.c @@ -233,7 +233,7 @@ esp_err_t sdmmc_host_io_int_enable(int slot) return sd_host_slot_enable_io_int(hdl); } -esp_err_t sdmmc_host_io_int_wait(int slot, TickType_t timeout_ticks) +esp_err_t sdmmc_host_io_int_wait(int slot, uint32_t timeout_ticks) { assert(slot == 0 || slot == 1); sd_host_slot_handle_t hdl = sdmmc_get_slot_handle(slot); diff --git a/components/esp_driver_sdmmc/src/sd_host_sdmmc.c b/components/esp_driver_sdmmc/src/sd_host_sdmmc.c index 66c1764b81..c358a677cc 100644 --- a/components/esp_driver_sdmmc/src/sd_host_sdmmc.c +++ b/components/esp_driver_sdmmc/src/sd_host_sdmmc.c @@ -29,6 +29,7 @@ #include "esp_private/esp_cache_private.h" #include "esp_private/gpio.h" #include "esp_private/sd_host_private.h" +#include "freertos/FreeRTOS.h" typedef struct sd_platform_t { _lock_t mutex; diff --git a/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_cd_wp_common.c b/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_cd_wp_common.c index 3eb9ab984a..2c99c52a97 100644 --- a/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_cd_wp_common.c +++ b/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_cd_wp_common.c @@ -10,6 +10,7 @@ #include "hal/gpio_hal.h" #include "sdmmc_cmd.h" #include "sdmmc_test_cd_wp_common.h" +#include "esp_heap_caps.h" void sdmmc_test_cd_input(int gpio_cd_num, const sdmmc_host_t* config) { diff --git a/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_erase_common_sd.c b/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_erase_common_sd.c index 77ff8cc53e..b4e0269b6f 100644 --- a/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_erase_common_sd.c +++ b/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_erase_common_sd.c @@ -9,6 +9,7 @@ #include #include "unity.h" #include "sdmmc_cmd.h" +#include "esp_heap_caps.h" #define PATTERN_SEED 0x12345678 #define FLAG_ERASE_TEST_ADJACENT (1 << 0) diff --git a/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_rw_common.c b/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_rw_common.c index 122d09a4bc..6c1f8fd7cb 100644 --- a/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_rw_common.c +++ b/components/esp_driver_sdmmc/test_apps/sd_test_utils/components/common_test_flows/sdmmc_test_rw_common.c @@ -18,6 +18,7 @@ #include "sd_protocol_defs.h" #include "sdmmc_cmd.h" #include "sdmmc_test_rw_common.h" +#include "freertos/FreeRTOS.h" static void do_single_rw_perf_test(sdmmc_card_t* card, size_t start_block, size_t block_count, size_t alignment, FILE* performance_log, diff --git a/components/esp_driver_sdmmc/test_apps/sdmmc/components/sdmmc_tests/sdmmc_test_probe_sd.c b/components/esp_driver_sdmmc/test_apps/sdmmc/components/sdmmc_tests/sdmmc_test_probe_sd.c index f10d8d68a4..9149db6ee7 100644 --- a/components/esp_driver_sdmmc/test_apps/sdmmc/components/sdmmc_tests/sdmmc_test_probe_sd.c +++ b/components/esp_driver_sdmmc/test_apps/sdmmc/components/sdmmc_tests/sdmmc_test_probe_sd.c @@ -7,6 +7,7 @@ #include "unity.h" #include "sdmmc_cmd.h" #include "sdmmc_test_begin_end_sd.h" +#include "esp_heap_caps.h" #define SDMMC_FREQ_CUSTOM_10M 10000 diff --git a/components/esp_driver_sdspi/include/driver/sdspi_host.h b/components/esp_driver_sdspi/include/driver/sdspi_host.h index 7af24dce80..979ec3615c 100644 --- a/components/esp_driver_sdspi/include/driver/sdspi_host.h +++ b/components/esp_driver_sdspi/include/driver/sdspi_host.h @@ -225,7 +225,7 @@ esp_err_t sdspi_host_io_int_enable(sdspi_dev_handle_t handle); * @return * - ESP_OK on success */ -esp_err_t sdspi_host_io_int_wait(sdspi_dev_handle_t handle, TickType_t timeout_ticks); +esp_err_t sdspi_host_io_int_wait(sdspi_dev_handle_t handle, uint32_t timeout_ticks); /** * @brief Check if the buffer meets the alignment requirements diff --git a/components/esp_driver_sdspi/src/sdspi_host.c b/components/esp_driver_sdspi/src/sdspi_host.c index 432b8337d7..99c2a0b5b5 100644 --- a/components/esp_driver_sdspi/src/sdspi_host.c +++ b/components/esp_driver_sdspi/src/sdspi_host.c @@ -1024,7 +1024,7 @@ esp_err_t sdspi_host_io_int_enable(sdspi_dev_handle_t handle) } //the interrupt will give the semaphore and then disable itself -esp_err_t sdspi_host_io_int_wait(sdspi_dev_handle_t handle, TickType_t timeout_ticks) +esp_err_t sdspi_host_io_int_wait(sdspi_dev_handle_t handle, uint32_t timeout_ticks) { slot_info_t* slot = get_slot_info(handle); //skip the interrupt and semaphore if the gpio is already low. diff --git a/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_erase_common_spi.c b/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_erase_common_spi.c index d7daf7a17d..add1f5f0fd 100644 --- a/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_erase_common_spi.c +++ b/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_erase_common_spi.c @@ -10,6 +10,7 @@ #include "unity.h" #include "sdmmc_cmd.h" #include "sdmmc_test_begin_end_spi.h" +#include "esp_heap_caps.h" #define PATTERN_SEED 0x12345678 #define FLAG_ERASE_TEST_ADJACENT (1 << 0) diff --git a/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_probe_spi.c b/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_probe_spi.c index c669727338..c64d721bca 100644 --- a/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_probe_spi.c +++ b/components/esp_driver_sdspi/test_apps/sdspi/components/sdspi_tests/sdmmc_test_probe_spi.c @@ -7,6 +7,7 @@ #include "unity.h" #include "sdmmc_cmd.h" #include "sdmmc_test_begin_end_spi.h" +#include "esp_heap_caps.h" #define SDMMC_FREQ_CUSTOM_10M 10000 diff --git a/components/esp_driver_spi/include/driver/spi_master.h b/components/esp_driver_spi/include/driver/spi_master.h index 3567c45e9a..67cdcda5aa 100644 --- a/components/esp_driver_spi/include/driver/spi_master.h +++ b/components/esp_driver_spi/include/driver/spi_master.h @@ -7,7 +7,6 @@ #pragma once #include "esp_err.h" -#include "freertos/FreeRTOS.h" #include "hal/spi_types.h" //for spi_bus_initialization functions. to be back-compatible #include "driver/spi_common.h" @@ -225,7 +224,7 @@ esp_err_t spi_bus_remove_device(spi_device_handle_t handle); * - ESP_ERR_INVALID_STATE if previous transactions are not finished * - ESP_OK on success */ -esp_err_t spi_device_queue_trans(spi_device_handle_t handle, spi_transaction_t *trans_desc, TickType_t ticks_to_wait); +esp_err_t spi_device_queue_trans(spi_device_handle_t handle, spi_transaction_t *trans_desc, uint32_t ticks_to_wait); /** * @brief Get the result of a SPI transaction queued earlier by ``spi_device_queue_trans``. @@ -247,7 +246,7 @@ esp_err_t spi_device_queue_trans(spi_device_handle_t handle, spi_transaction_t * * - ESP_ERR_TIMEOUT if there was no completed transaction before ticks_to_wait expired * - ESP_OK on success */ -esp_err_t spi_device_get_trans_result(spi_device_handle_t handle, spi_transaction_t **trans_desc, TickType_t ticks_to_wait); +esp_err_t spi_device_get_trans_result(spi_device_handle_t handle, spi_transaction_t **trans_desc, uint32_t ticks_to_wait); /** * @brief Send a SPI transaction, wait for it to complete, and return the result @@ -288,7 +287,7 @@ esp_err_t spi_device_transmit(spi_device_handle_t handle, spi_transaction_t *tra * - ESP_ERR_INVALID_STATE if previous transactions are not finished * - ESP_OK on success */ -esp_err_t spi_device_polling_start(spi_device_handle_t handle, spi_transaction_t *trans_desc, TickType_t ticks_to_wait); +esp_err_t spi_device_polling_start(spi_device_handle_t handle, spi_transaction_t *trans_desc, uint32_t ticks_to_wait); /** * @brief Poll until the polling transaction ends. @@ -305,7 +304,7 @@ esp_err_t spi_device_polling_start(spi_device_handle_t handle, spi_transaction_t * - ESP_ERR_TIMEOUT if the transaction cannot finish before ticks_to_wait expired * - ESP_OK on success */ -esp_err_t spi_device_polling_end(spi_device_handle_t handle, TickType_t ticks_to_wait); +esp_err_t spi_device_polling_end(spi_device_handle_t handle, uint32_t ticks_to_wait); /** * @brief Send a polling transaction, wait for it to complete, and return the result @@ -342,7 +341,7 @@ esp_err_t spi_device_polling_transmit(spi_device_handle_t handle, spi_transactio * - ESP_ERR_INVALID_ARG : ``wait`` is not set to portMAX_DELAY. * - ESP_OK : Success. */ -esp_err_t spi_device_acquire_bus(spi_device_handle_t device, TickType_t wait); +esp_err_t spi_device_acquire_bus(spi_device_handle_t device, uint32_t wait); /** * @brief Release the SPI bus occupied by the device. All other devices can start sending transactions. diff --git a/components/esp_driver_spi/include/driver/spi_slave.h b/components/esp_driver_spi/include/driver/spi_slave.h index b7755185cf..b22b0078dd 100644 --- a/components/esp_driver_spi/include/driver/spi_slave.h +++ b/components/esp_driver_spi/include/driver/spi_slave.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2010-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2010-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,8 +8,6 @@ #define _DRIVER_SPI_SLAVE_H_ #include "esp_err.h" -#include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" #include "driver/spi_common.h" #ifdef __cplusplus @@ -167,7 +165,7 @@ esp_err_t spi_slave_disable(spi_host_device_t host); * - ESP_ERR_INVALID_STATE if sync data between Cache and memory failed * - ESP_OK on success */ -esp_err_t spi_slave_queue_trans(spi_host_device_t host, const spi_slave_transaction_t *trans_desc, TickType_t ticks_to_wait); +esp_err_t spi_slave_queue_trans(spi_host_device_t host, const spi_slave_transaction_t *trans_desc, uint32_t ticks_to_wait); /** * @brief Get the result of a SPI transaction queued earlier @@ -189,7 +187,7 @@ esp_err_t spi_slave_queue_trans(spi_host_device_t host, const spi_slave_transact * - ESP_ERR_NOT_SUPPORTED if flag `SPI_SLAVE_NO_RETURN_RESULT` is set * - ESP_OK on success */ -esp_err_t spi_slave_get_trans_result(spi_host_device_t host, spi_slave_transaction_t **trans_desc, TickType_t ticks_to_wait); +esp_err_t spi_slave_get_trans_result(spi_host_device_t host, spi_slave_transaction_t **trans_desc, uint32_t ticks_to_wait); /** * @brief Do a SPI transaction @@ -208,7 +206,7 @@ esp_err_t spi_slave_get_trans_result(spi_host_device_t host, spi_slave_transacti * - ESP_ERR_INVALID_ARG if parameter is invalid * - ESP_OK on success */ -esp_err_t spi_slave_transmit(spi_host_device_t host, spi_slave_transaction_t *trans_desc, TickType_t ticks_to_wait); +esp_err_t spi_slave_transmit(spi_host_device_t host, spi_slave_transaction_t *trans_desc, uint32_t ticks_to_wait); #ifdef __cplusplus } diff --git a/components/esp_driver_spi/include/driver/spi_slave_hd.h b/components/esp_driver_spi/include/driver/spi_slave_hd.h index 62a62bd143..df9a10517f 100644 --- a/components/esp_driver_spi/include/driver/spi_slave_hd.h +++ b/components/esp_driver_spi/include/driver/spi_slave_hd.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2010-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2010-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,8 +8,6 @@ #include "esp_types.h" #include "soc/soc_caps.h" -#include "freertos/FreeRTOS.h" - #include "hal/spi_types.h" #include "driver/spi_common.h" #include "sdkconfig.h" @@ -41,7 +39,7 @@ typedef struct { } spi_slave_hd_event_t; /// Callback for SPI Slave HD -typedef bool (*slave_cb_t)(void* arg, spi_slave_hd_event_t* event, BaseType_t* awoken); +typedef bool (*slave_cb_t)(void* arg, spi_slave_hd_event_t* event, int* awoken); /// Channel of SPI Slave HD to do data transaction typedef enum { @@ -153,7 +151,7 @@ esp_err_t spi_slave_hd_disable(spi_host_device_t host_id); * - ESP_ERR_TIMEOUT: Cannot queue the data before timeout. Master is still processing previous transaction. * - ESP_ERR_INVALID_STATE: Function called in invalid state. This API should be called under segment mode. */ -esp_err_t spi_slave_hd_queue_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t* trans, TickType_t timeout); +esp_err_t spi_slave_hd_queue_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t* trans, uint32_t timeout); /** * @brief Get the result of a data transaction (segment mode) @@ -170,7 +168,7 @@ esp_err_t spi_slave_hd_queue_trans(spi_host_device_t host_id, spi_slave_chan_t c * - ESP_ERR_TIMEOUT: There's no transaction done before timeout * - ESP_ERR_INVALID_STATE: Function called in invalid state. This API should be called under segment mode. */ -esp_err_t spi_slave_hd_get_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, TickType_t timeout); +esp_err_t spi_slave_hd_get_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, uint32_t timeout); /** * @brief Read the shared registers @@ -210,7 +208,7 @@ void spi_slave_hd_write_buffer(spi_host_device_t host_id, int addr, uint8_t *dat * - ESP_ERR_TIMEOUT: Master is still processing previous transaction. There is no available transaction for slave to load * - ESP_ERR_INVALID_STATE: Function called in invalid state. This API should be called under append mode. */ -esp_err_t spi_slave_hd_append_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t *trans, TickType_t timeout); +esp_err_t spi_slave_hd_append_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t *trans, uint32_t timeout); /** * @brief Get the result of a data transaction (append mode) @@ -227,7 +225,7 @@ esp_err_t spi_slave_hd_append_trans(spi_host_device_t host_id, spi_slave_chan_t * - ESP_ERR_TIMEOUT: There's no transaction done before timeout * - ESP_ERR_INVALID_STATE: Function called in invalid state. This API should be called under append mode. */ -esp_err_t spi_slave_hd_get_append_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, TickType_t timeout); +esp_err_t spi_slave_hd_get_append_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, uint32_t timeout); #ifdef __cplusplus } diff --git a/components/esp_driver_spi/include/esp_private/spi_common_internal.h b/components/esp_driver_spi/include/esp_private/spi_common_internal.h index a10c75a682..e604254ed8 100644 --- a/components/esp_driver_spi/include/esp_private/spi_common_internal.h +++ b/components/esp_driver_spi/include/esp_private/spi_common_internal.h @@ -10,7 +10,6 @@ #include #include "driver/spi_common.h" -#include "freertos/FreeRTOS.h" #include "hal/spi_types.h" #include "hal/dma_types.h" #include "soc/ext_mem_defs.h" //for SOC_NON_CACHEABLE_OFFSET diff --git a/components/esp_driver_spi/include/esp_private/spi_master_internal.h b/components/esp_driver_spi/include/esp_private/spi_master_internal.h index b7ea40c89d..8ac30ca921 100644 --- a/components/esp_driver_spi/include/esp_private/spi_master_internal.h +++ b/components/esp_driver_spi/include/esp_private/spi_master_internal.h @@ -94,7 +94,7 @@ esp_err_t spi_bus_multi_trans_mode_enable(spi_device_handle_t handle, bool enabl * - ESP_ERR_INVALID_STATE: Invalid states, e.g.: an SPI polling transaction is ongoing, SCT mode isn't enabled, DMA descriptors not enough, etc. * - ESP_ERR_TIMEOUT: Timeout, this SCT transaction isn't queued successfully */ -esp_err_t spi_device_queue_multi_trans(spi_device_handle_t handle, spi_multi_transaction_t *seg_trans_desc, uint32_t trans_num, TickType_t ticks_to_wait); +esp_err_t spi_device_queue_multi_trans(spi_device_handle_t handle, spi_multi_transaction_t *seg_trans_desc, uint32_t trans_num, uint32_t ticks_to_wait); /** * @brief Get the result of an SPI Segmented-Configure-Transaction (SCT). @@ -114,7 +114,7 @@ esp_err_t spi_device_queue_multi_trans(spi_device_handle_t handle, spi_multi_tra * - ESP_ERR_INVALID_STATE: Invalid states, e.g.: SCT mode isn't enabled, etc. * - ESP_ERR_TIMEOUT: Timeout, didn't get a completed SCT transaction */ -esp_err_t spi_device_get_multi_trans_result(spi_device_handle_t handle, spi_multi_transaction_t **seg_trans_desc, TickType_t ticks_to_wait); +esp_err_t spi_device_get_multi_trans_result(spi_device_handle_t handle, spi_multi_transaction_t **seg_trans_desc, uint32_t ticks_to_wait); #endif //#if SOC_SPI_SCT_SUPPORTED #ifdef __cplusplus diff --git a/components/esp_driver_spi/src/gpspi/spi_common.c b/components/esp_driver_spi/src/gpspi/spi_common.c index b19f9a8e83..648683d07b 100644 --- a/components/esp_driver_spi/src/gpspi/spi_common.c +++ b/components/esp_driver_spi/src/gpspi/spi_common.c @@ -26,6 +26,7 @@ #include "esp_private/sleep_retention.h" #include "esp_dma_utils.h" #include "hal/spi_hal.h" +#include "freertos/FreeRTOS.h" #if CONFIG_IDF_TARGET_ESP32 #include "soc/dport_reg.h" #endif diff --git a/components/esp_driver_spi/src/gpspi/spi_master.c b/components/esp_driver_spi/src/gpspi/spi_master.c index 9136ad5f76..28ba959ce9 100644 --- a/components/esp_driver_spi/src/gpspi/spi_master.c +++ b/components/esp_driver_spi/src/gpspi/spi_master.c @@ -124,6 +124,7 @@ We have two bits to control the interrupt: #include "esp_ipc.h" #include "esp_cache.h" #include "esp_heap_caps.h" +#include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "soc/soc_memory_layout.h" @@ -1249,7 +1250,7 @@ clean_up: return ret; } -esp_err_t SPI_MASTER_ATTR spi_device_queue_trans(spi_device_handle_t handle, spi_transaction_t *trans_desc, TickType_t ticks_to_wait) +esp_err_t SPI_MASTER_ATTR spi_device_queue_trans(spi_device_handle_t handle, spi_transaction_t *trans_desc, uint32_t ticks_to_wait) { esp_err_t ret = check_trans_valid(handle, trans_desc); if (ret != ESP_OK) { @@ -1301,7 +1302,7 @@ clean_up: return ret; } -esp_err_t SPI_MASTER_ATTR spi_device_get_trans_result(spi_device_handle_t handle, spi_transaction_t **trans_desc, TickType_t ticks_to_wait) +esp_err_t SPI_MASTER_ATTR spi_device_get_trans_result(spi_device_handle_t handle, spi_transaction_t **trans_desc, uint32_t ticks_to_wait) { BaseType_t r; spi_trans_priv_t trans_buf; @@ -1345,7 +1346,7 @@ esp_err_t SPI_MASTER_ATTR spi_device_transmit(spi_device_handle_t handle, spi_tr return ESP_OK; } -esp_err_t SPI_MASTER_ISR_ATTR spi_device_acquire_bus(spi_device_t *device, TickType_t wait) +esp_err_t SPI_MASTER_ISR_ATTR spi_device_acquire_bus(spi_device_t *device, uint32_t wait) { spi_host_t *const host = device->host; SPI_CHECK(wait == portMAX_DELAY, "acquire finite time not supported now.", ESP_ERR_INVALID_ARG); @@ -1409,7 +1410,7 @@ void SPI_MASTER_ISR_ATTR spi_device_release_bus(spi_device_t *dev) (void) ret; } -esp_err_t SPI_MASTER_ISR_ATTR spi_device_polling_start(spi_device_handle_t handle, spi_transaction_t *trans_desc, TickType_t ticks_to_wait) +esp_err_t SPI_MASTER_ISR_ATTR spi_device_polling_start(spi_device_handle_t handle, spi_transaction_t *trans_desc, uint32_t ticks_to_wait) { esp_err_t ret; SPI_CHECK(ticks_to_wait == portMAX_DELAY, "currently timeout is not available for polling transactions", ESP_ERR_INVALID_ARG); @@ -1456,7 +1457,7 @@ esp_err_t SPI_MASTER_ISR_ATTR spi_device_polling_start(spi_device_handle_t handl return ESP_OK; } -esp_err_t SPI_MASTER_ISR_ATTR spi_device_polling_end(spi_device_handle_t handle, TickType_t ticks_to_wait) +esp_err_t SPI_MASTER_ISR_ATTR spi_device_polling_end(spi_device_handle_t handle, uint32_t ticks_to_wait) { SPI_CHECK(handle != NULL, "invalid dev handle", ESP_ERR_INVALID_ARG); spi_host_t *host = handle->host; @@ -1822,7 +1823,7 @@ static void SPI_MASTER_ATTR s_sct_format_conf_buffer(spi_device_handle_t handle, spi_hal_sct_format_conf_buffer(hal, &seg_config, hal_dev, buffer); } -esp_err_t SPI_MASTER_ATTR spi_device_queue_multi_trans(spi_device_handle_t handle, spi_multi_transaction_t *seg_trans_desc, uint32_t trans_num, TickType_t ticks_to_wait) +esp_err_t SPI_MASTER_ATTR spi_device_queue_multi_trans(spi_device_handle_t handle, spi_multi_transaction_t *seg_trans_desc, uint32_t trans_num, uint32_t ticks_to_wait) { SPI_CHECK(handle, "Invalid arguments.", ESP_ERR_INVALID_ARG); SPI_CHECK(SOC_SPI_SCT_SUPPORTED_PERIPH(handle->host->id), "Invalid arguments", ESP_ERR_INVALID_ARG); @@ -1920,7 +1921,7 @@ esp_err_t SPI_MASTER_ATTR spi_device_queue_multi_trans(spi_device_handle_t handl return ESP_OK; } -esp_err_t SPI_MASTER_ATTR spi_device_get_multi_trans_result(spi_device_handle_t handle, spi_multi_transaction_t **seg_trans_desc, TickType_t ticks_to_wait) +esp_err_t SPI_MASTER_ATTR spi_device_get_multi_trans_result(spi_device_handle_t handle, spi_multi_transaction_t **seg_trans_desc, uint32_t ticks_to_wait) { SPI_CHECK(handle, "Invalid arguments.", ESP_ERR_INVALID_ARG); SPI_CHECK(SOC_SPI_SCT_SUPPORTED_PERIPH(handle->host->id), "Invalid arguments", ESP_ERR_INVALID_ARG); diff --git a/components/esp_driver_spi/src/gpspi/spi_slave.c b/components/esp_driver_spi/src/gpspi/spi_slave.c index 6b04e3524e..52a1652ad0 100644 --- a/components/esp_driver_spi/src/gpspi/spi_slave.c +++ b/components/esp_driver_spi/src/gpspi/spi_slave.c @@ -473,7 +473,7 @@ static esp_err_t SPI_SLAVE_ISR_ATTR spi_slave_setup_priv_trans(spi_host_device_t return ESP_OK; } -esp_err_t SPI_SLAVE_ATTR spi_slave_queue_trans(spi_host_device_t host, const spi_slave_transaction_t *trans_desc, TickType_t ticks_to_wait) +esp_err_t SPI_SLAVE_ATTR spi_slave_queue_trans(spi_host_device_t host, const spi_slave_transaction_t *trans_desc, uint32_t ticks_to_wait) { BaseType_t r; SPI_CHECK(is_valid_host(host), "invalid host", ESP_ERR_INVALID_ARG); @@ -601,7 +601,7 @@ esp_err_t SPI_SLAVE_ISR_ATTR spi_slave_queue_reset_isr(spi_host_device_t host) return ESP_OK; } -esp_err_t SPI_SLAVE_ATTR spi_slave_get_trans_result(spi_host_device_t host, spi_slave_transaction_t **trans_desc, TickType_t ticks_to_wait) +esp_err_t SPI_SLAVE_ATTR spi_slave_get_trans_result(spi_host_device_t host, spi_slave_transaction_t **trans_desc, uint32_t ticks_to_wait) { BaseType_t r; SPI_CHECK(is_valid_host(host), "invalid host", ESP_ERR_INVALID_ARG); @@ -620,7 +620,7 @@ esp_err_t SPI_SLAVE_ATTR spi_slave_get_trans_result(spi_host_device_t host, spi_ return ESP_OK; } -esp_err_t SPI_SLAVE_ATTR spi_slave_transmit(spi_host_device_t host, spi_slave_transaction_t *trans_desc, TickType_t ticks_to_wait) +esp_err_t SPI_SLAVE_ATTR spi_slave_transmit(spi_host_device_t host, spi_slave_transaction_t *trans_desc, uint32_t ticks_to_wait) { esp_err_t ret; spi_slave_transaction_t *ret_trans; diff --git a/components/esp_driver_spi/src/gpspi/spi_slave_hd.c b/components/esp_driver_spi/src/gpspi/spi_slave_hd.c index a779f3b63b..6c831f89b9 100644 --- a/components/esp_driver_spi/src/gpspi/spi_slave_hd.c +++ b/components/esp_driver_spi/src/gpspi/spi_slave_hd.c @@ -836,7 +836,7 @@ esp_err_t s_spi_slave_hd_append_rxdma(spi_slave_hd_slot_t *host, uint8_t *data, } //---------------------------------------------------------Segment Mode Transaction APIs-----------------------------------------------------------// -esp_err_t spi_slave_hd_queue_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t *trans, TickType_t timeout) +esp_err_t spi_slave_hd_queue_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t *trans, uint32_t timeout) { spi_slave_hd_slot_t *host = spihost[host_id]; @@ -864,7 +864,7 @@ esp_err_t spi_slave_hd_queue_trans(spi_host_device_t host_id, spi_slave_chan_t c return ESP_OK; } -esp_err_t spi_slave_hd_get_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, TickType_t timeout) +esp_err_t spi_slave_hd_get_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, uint32_t timeout) { esp_err_t ret; spi_slave_hd_slot_t *host = spihost[host_id]; @@ -887,7 +887,7 @@ void spi_slave_hd_write_buffer(spi_host_device_t host_id, int addr, uint8_t *dat } //---------------------------------------------------------Append Mode Transaction APIs-----------------------------------------------------------// -esp_err_t spi_slave_hd_append_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t *trans, TickType_t timeout) +esp_err_t spi_slave_hd_append_trans(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t *trans, uint32_t timeout) { esp_err_t err; spi_slave_hd_slot_t *host = spihost[host_id]; @@ -921,7 +921,7 @@ esp_err_t spi_slave_hd_append_trans(spi_host_device_t host_id, spi_slave_chan_t return err; } -esp_err_t spi_slave_hd_get_append_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, TickType_t timeout) +esp_err_t spi_slave_hd_get_append_trans_res(spi_host_device_t host_id, spi_slave_chan_t chan, spi_slave_hd_data_t **out_trans, uint32_t timeout) { esp_err_t ret; spi_slave_hd_slot_t *host = spihost[host_id]; diff --git a/components/esp_driver_uart/include/driver/uart.h b/components/esp_driver_uart/include/driver/uart.h index 16ce34a503..1c6623a597 100644 --- a/components/esp_driver_uart/include/driver/uart.h +++ b/components/esp_driver_uart/include/driver/uart.h @@ -516,7 +516,7 @@ esp_err_t uart_intr_config(uart_port_t uart_num, const uart_intr_config_t *intr_ * - ESP_FAIL Parameter error * - ESP_ERR_TIMEOUT Timeout */ -esp_err_t uart_wait_tx_done(uart_port_t uart_num, TickType_t ticks_to_wait); +esp_err_t uart_wait_tx_done(uart_port_t uart_num, uint32_t ticks_to_wait); /** * @brief Send data to the UART port from a given buffer and length. @@ -587,7 +587,7 @@ int uart_write_bytes_with_break(uart_port_t uart_num, const void* src, size_t si * - (-1) Error * - OTHERS (>=0) The number of bytes read from UART buffer */ -int uart_read_bytes(uart_port_t uart_num, void* buf, uint32_t length, TickType_t ticks_to_wait); +int uart_read_bytes(uart_port_t uart_num, void* buf, uint32_t length, uint32_t ticks_to_wait); /** * @brief Alias of uart_flush_input. diff --git a/components/esp_driver_uart/include/driver/uhci.h b/components/esp_driver_uart/include/driver/uhci.h index fd466ab924..fb7be8238e 100644 --- a/components/esp_driver_uart/include/driver/uhci.h +++ b/components/esp_driver_uart/include/driver/uhci.h @@ -7,8 +7,6 @@ #pragma once #include "esp_err.h" -#include "freertos/FreeRTOS.h" -#include "freertos/queue.h" #include "driver/uhci_types.h" #ifdef __cplusplus diff --git a/components/esp_driver_uart/src/uart.c b/components/esp_driver_uart/src/uart.c index 22b4defbfa..a9f672061c 100644 --- a/components/esp_driver_uart/src/uart.c +++ b/components/esp_driver_uart/src/uart.c @@ -1540,7 +1540,7 @@ static void UART_ISR_ATTR uart_rx_intr_handler_default(void *param) } /**************************************************************/ -esp_err_t uart_wait_tx_done(uart_port_t uart_num, TickType_t ticks_to_wait) +esp_err_t uart_wait_tx_done(uart_port_t uart_num, uint32_t ticks_to_wait) { ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_FAIL, UART_TAG, "uart driver error"); @@ -1720,7 +1720,7 @@ static bool uart_check_buf_full(uart_port_t uart_num) return false; } -int uart_read_bytes(uart_port_t uart_num, void *buf, uint32_t length, TickType_t ticks_to_wait) +int uart_read_bytes(uart_port_t uart_num, void *buf, uint32_t length, uint32_t ticks_to_wait) { ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), (-1), UART_TAG, "uart_num error"); ESP_RETURN_ON_FALSE((buf), (-1), UART_TAG, "uart data null"); diff --git a/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag.h b/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag.h index bd516d3306..b5b24033af 100644 --- a/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag.h +++ b/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -7,8 +7,6 @@ #pragma once #include "esp_err.h" -#include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" #ifdef __cplusplus extern "C" { @@ -57,7 +55,7 @@ esp_err_t usb_serial_jtag_driver_install(usb_serial_jtag_driver_config_t *usb_se * @return * - The number of bytes read from USB_SERIAL FIFO */ -int usb_serial_jtag_read_bytes(void* buf, uint32_t length, TickType_t ticks_to_wait); +int usb_serial_jtag_read_bytes(void* buf, uint32_t length, uint32_t ticks_to_wait); /** * @brief Send data to the USB-UART port from a given buffer and length, @@ -72,7 +70,7 @@ int usb_serial_jtag_read_bytes(void* buf, uint32_t length, TickType_t ticks_to_w * @return * - The number of bytes pushed to the TX FIFO */ -int usb_serial_jtag_write_bytes(const void* src, size_t size, TickType_t ticks_to_wait); +int usb_serial_jtag_write_bytes(const void* src, size_t size, uint32_t ticks_to_wait); /** * @brief Blocks until all data written using `usb_serial_jtag_write_bytes` is sent to the host, or until timeout. @@ -81,7 +79,7 @@ int usb_serial_jtag_write_bytes(const void* src, size_t size, TickType_t ticks_t * * @return ESP_OK when flushed, ESP_ERR_TIMEOUT on timeout. */ -esp_err_t usb_serial_jtag_wait_tx_done(TickType_t ticks_to_wait); +esp_err_t usb_serial_jtag_wait_tx_done(uint32_t ticks_to_wait); /** * @brief Uninstall USB-SERIAL-JTAG driver. diff --git a/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag_select.h b/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag_select.h index 4c3e36d9ce..c6e9544a71 100644 --- a/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag_select.h +++ b/components/esp_driver_usb_serial_jtag/include/driver/usb_serial_jtag_select.h @@ -19,7 +19,7 @@ typedef enum { USJ_SELECT_ERROR_NOTIF, } usj_select_notif_t; -typedef void (*usj_select_notif_callback_t)(usj_select_notif_t usb_serial_jtag_select_notif, BaseType_t *task_woken); +typedef void (*usj_select_notif_callback_t)(usj_select_notif_t usb_serial_jtag_select_notif, int *task_woken); /** * @brief Set notification callback function for select() events diff --git a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag.c b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag.c index 631829de9e..f585f664ca 100644 --- a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag.c +++ b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag.c @@ -239,7 +239,7 @@ _exit: return err; } -int usb_serial_jtag_read_bytes(void* buf, uint32_t length, TickType_t ticks_to_wait) +int usb_serial_jtag_read_bytes(void* buf, uint32_t length, uint32_t ticks_to_wait) { uint8_t *data = NULL; size_t data_read_len = 0; @@ -262,7 +262,7 @@ int usb_serial_jtag_read_bytes(void* buf, uint32_t length, TickType_t ticks_to_w return data_read_len; } -int usb_serial_jtag_write_bytes(const void* src, size_t size, TickType_t ticks_to_wait) +int usb_serial_jtag_write_bytes(const void* src, size_t size, uint32_t ticks_to_wait) { ESP_RETURN_ON_FALSE(src && size, 0, USB_SERIAL_JTAG_TAG, "invalid buffer or size"); ESP_RETURN_ON_FALSE(p_usb_serial_jtag_obj != NULL, 0, USB_SERIAL_JTAG_TAG, "driver is not initialized yet"); @@ -288,7 +288,7 @@ int usb_serial_jtag_write_bytes(const void* src, size_t size, TickType_t ticks_t return (result == pdFALSE) ? 0 : size; } -esp_err_t usb_serial_jtag_wait_tx_done(TickType_t ticks_to_wait) +esp_err_t usb_serial_jtag_wait_tx_done(uint32_t ticks_to_wait) { int r; TimeOut_t timeout; diff --git a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_connection_monitor.c b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_connection_monitor.c index a730a636c0..e2dcdf1199 100644 --- a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_connection_monitor.c +++ b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_connection_monitor.c @@ -7,6 +7,7 @@ #include #include "driver/usb_serial_jtag.h" #include "hal/usb_serial_jtag_ll.h" +#include "freertos/FreeRTOS.h" #include "esp_private/startup_internal.h" #include "esp_freertos_hooks.h" #include "esp_pm.h" diff --git a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c index 930feaaebf..6a923d8620 100644 --- a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c +++ b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c @@ -373,7 +373,7 @@ static int usb_serial_jtag_fsync(int fd) #ifdef CONFIG_VFS_SUPPORT_SELECT -static void select_notif_callback_isr(usj_select_notif_t usj_select_notif, BaseType_t *task_woken) +static void select_notif_callback_isr(usj_select_notif_t usj_select_notif, int *task_woken) { portENTER_CRITICAL_ISR(&s_registered_select_lock); for (int i = 0; i < s_registered_select_num; ++i) { diff --git a/components/esp_hw_support/include/esp_private/spi_share_hw_ctrl.h b/components/esp_hw_support/include/esp_private/spi_share_hw_ctrl.h index 6969731fff..6b616a5110 100644 --- a/components/esp_hw_support/include/esp_private/spi_share_hw_ctrl.h +++ b/components/esp_hw_support/include/esp_private/spi_share_hw_ctrl.h @@ -12,7 +12,7 @@ #include "soc/spi_periph.h" #include "soc/gpio_struct.h" #include "esp_private/periph_ctrl.h" -#include "freertos/FreeRTOS.h" +#include "esp_err.h" #ifdef __cplusplus extern "C" { @@ -334,7 +334,7 @@ bool spi_bus_lock_touch(spi_bus_lock_dev_handle_t dev_handle); * - ESP_OK: on success * - ESP_ERR_INVALID_ARG: timeout is not portMAX_DELAY */ -esp_err_t spi_bus_lock_acquire_start(spi_bus_lock_dev_handle_t dev_handle, TickType_t wait); +esp_err_t spi_bus_lock_acquire_start(spi_bus_lock_dev_handle_t dev_handle, uint32_t wait); /** * Release the bus acquired. Will pass the acquiring processor to other blocked @@ -395,7 +395,7 @@ esp_err_t spi_bus_lock_bg_request(spi_bus_lock_dev_handle_t dev_handle); * - ESP_ERR_INVALID_STATE: The device is not the acquiring bus. * - ESP_ERR_INVALID_ARG: Timeout is not portMAX_DELAY. */ -esp_err_t spi_bus_lock_wait_bg_done(spi_bus_lock_dev_handle_t dev_handle, TickType_t wait); +esp_err_t spi_bus_lock_wait_bg_done(spi_bus_lock_dev_handle_t dev_handle, uint32_t wait); /** * Handle interrupt and closure of last operation. Should be called at the beginning of the ISR, @@ -437,7 +437,7 @@ bool spi_bus_lock_bg_entry(spi_bus_lock_handle_t lock); * @return false if retry is required, indicating that there is pending BG request. * otherwise true and quit ISR is allowed. */ -bool spi_bus_lock_bg_exit(spi_bus_lock_handle_t lock, bool wip, BaseType_t* do_yield); +bool spi_bus_lock_bg_exit(spi_bus_lock_handle_t lock, bool wip, int* do_yield); /** * Check whether there is device asking for the acquiring device, and the desired diff --git a/components/esp_hw_support/include/soc/esp32s3/soc_memprot_types.h b/components/esp_hw_support/include/soc/esp32s3/soc_memprot_types.h index 6a83cea9d5..b684ace3e6 100644 --- a/components/esp_hw_support/include/soc/esp32s3/soc_memprot_types.h +++ b/components/esp_hw_support/include/soc/esp32s3/soc_memprot_types.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -14,7 +14,6 @@ #include #include #include "soc/soc.h" -#include "freertos/FreeRTOSConfig.h" #ifdef __cplusplus extern "C" { diff --git a/components/esp_hw_support/power_supply/include/esp_vbat.h b/components/esp_hw_support/power_supply/include/esp_vbat.h index 0bf511697e..6759eed53d 100644 --- a/components/esp_hw_support/power_supply/include/esp_vbat.h +++ b/components/esp_hw_support/power_supply/include/esp_vbat.h @@ -7,7 +7,6 @@ #pragma once #include "sdkconfig.h" -#include "freertos/FreeRTOS.h" #include "esp_err.h" #ifdef __cplusplus @@ -32,7 +31,7 @@ typedef enum { * - ESP_FAIL: Called in ISR context * - ESP_ERR_TIMEOUT: Timeout waiting for battery charging to complete */ -esp_err_t esp_vbat_wait_battery_charge_done(TickType_t checking_period); +esp_err_t esp_vbat_wait_battery_charge_done(uint32_t checking_period); #endif /** diff --git a/components/esp_hw_support/power_supply/vbat.c b/components/esp_hw_support/power_supply/vbat.c index 70f7782a0f..a841278908 100644 --- a/components/esp_hw_support/power_supply/vbat.c +++ b/components/esp_hw_support/power_supply/vbat.c @@ -120,7 +120,7 @@ IRAM_ATTR static void vbat_isr_handler(void *arg) } #if CONFIG_ESP_VBAT_USE_RECHARGEABLE_BATTERY -esp_err_t esp_vbat_wait_battery_charge_done(TickType_t checking_period) +esp_err_t esp_vbat_wait_battery_charge_done(uint32_t checking_period) { BaseType_t ret; if (!xPortInIsrContext()) { diff --git a/components/esp_hw_support/spi_bus_lock.c b/components/esp_hw_support/spi_bus_lock.c index 0e0a0762a8..d128205abf 100644 --- a/components/esp_hw_support/spi_bus_lock.c +++ b/components/esp_hw_support/spi_bus_lock.c @@ -721,7 +721,7 @@ IRAM_ATTR bool spi_bus_lock_touch(spi_bus_lock_dev_handle_t dev_handle) /******************************************************************************* * Acquiring service ******************************************************************************/ -IRAM_ATTR esp_err_t spi_bus_lock_acquire_start(spi_bus_lock_dev_t *dev_handle, TickType_t wait) +IRAM_ATTR esp_err_t spi_bus_lock_acquire_start(spi_bus_lock_dev_t *dev_handle, uint32_t wait) { ESP_RETURN_ON_FALSE_ISR(wait == portMAX_DELAY, ESP_ERR_INVALID_ARG, TAG, "timeout other than portMAX_DELAY not supported"); @@ -774,9 +774,9 @@ SPI_BUS_LOCK_ISR_ATTR bool spi_bus_lock_bg_entry(spi_bus_lock_t* lock) return bg_entry_core(lock); } -SPI_BUS_LOCK_ISR_ATTR bool spi_bus_lock_bg_exit(spi_bus_lock_t* lock, bool wip, BaseType_t* do_yield) +SPI_BUS_LOCK_ISR_ATTR bool spi_bus_lock_bg_exit(spi_bus_lock_t* lock, bool wip, int* do_yield) { - return bg_exit_core(lock, wip, do_yield); + return bg_exit_core(lock, wip, (BaseType_t*)do_yield); } SPI_BUSLOCK_ATTR esp_err_t spi_bus_lock_bg_request(spi_bus_lock_dev_t *dev_handle) @@ -785,7 +785,7 @@ SPI_BUSLOCK_ATTR esp_err_t spi_bus_lock_bg_request(spi_bus_lock_dev_t *dev_handl return ESP_OK; } -IRAM_ATTR esp_err_t spi_bus_lock_wait_bg_done(spi_bus_lock_dev_handle_t dev_handle, TickType_t wait) +IRAM_ATTR esp_err_t spi_bus_lock_wait_bg_done(spi_bus_lock_dev_handle_t dev_handle, uint32_t wait) { spi_bus_lock_t *lock = dev_handle->parent; diff --git a/components/esp_lcd/spi/esp_lcd_panel_io_spi.c b/components/esp_lcd/spi/esp_lcd_panel_io_spi.c index 48ed5bc0f1..8bd3b7bd56 100644 --- a/components/esp_lcd/spi/esp_lcd_panel_io_spi.c +++ b/components/esp_lcd/spi/esp_lcd_panel_io_spi.c @@ -24,6 +24,7 @@ #include "esp_log.h" #include "esp_check.h" #include "esp_lcd_common.h" +#include "freertos/FreeRTOS.h" static const char *TAG = "lcd_panel.io.spi"; diff --git a/components/esp_system/startup_funcs.c b/components/esp_system/startup_funcs.c index 953842b4aa..008a9a9e6c 100644 --- a/components/esp_system/startup_funcs.c +++ b/components/esp_system/startup_funcs.c @@ -25,6 +25,7 @@ #include "hal/wdt_hal.h" #include "hal/uart_types.h" #include "hal/uart_ll.h" +#include "freertos/FreeRTOS.h" #if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE #include "private/esp_coexist_internal.h" diff --git a/components/sdmmc/include/esp_private/sdmmc_common.h b/components/sdmmc/include/esp_private/sdmmc_common.h index d1ea4d7abd..c3979ac30e 100644 --- a/components/sdmmc/include/esp_private/sdmmc_common.h +++ b/components/sdmmc/include/esp_private/sdmmc_common.h @@ -20,8 +20,6 @@ #include "esp_log.h" #include "esp_check.h" #include "esp_heap_caps.h" -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" #include "sd_protocol_defs.h" #include "sd_protocol_types.h" #include "sdmmc_cmd.h" diff --git a/components/sdmmc/include/sd_protocol_types.h b/components/sdmmc/include/sd_protocol_types.h index 2c8cfccd6f..b9bbdd6497 100644 --- a/components/sdmmc/include/sd_protocol_types.h +++ b/components/sdmmc/include/sd_protocol_types.h @@ -26,7 +26,6 @@ #include #include #include "esp_err.h" -#include "freertos/FreeRTOS.h" #include "sd_pwr_ctrl.h" #include "esp_dma_utils.h" #include "hal/sd_types.h" @@ -218,7 +217,7 @@ typedef struct { esp_err_t (*deinit_p)(int slot); /*!< host function to deinitialize the driver, called with the `slot` */ }; esp_err_t (*io_int_enable)(int slot); /*!< Host function to enable SDIO interrupt line */ - esp_err_t (*io_int_wait)(int slot, TickType_t timeout_ticks); /*!< Host function to wait for SDIO interrupt line to be active */ + esp_err_t (*io_int_wait)(int slot, uint32_t timeout_ticks); /*!< Host function to wait for SDIO interrupt line to be active */ int command_timeout_ms; /*!< timeout, in milliseconds, of a single command. Set to 0 to use the default value. */ esp_err_t (*get_real_freq)(int slot, int* real_freq); /*!< Host function to provide real working freq, based on SDMMC controller setup */ sdmmc_delay_phase_t input_delay_phase; /*!< input delay phase, this will only take into effect when the host works in SDMMC_FREQ_HIGHSPEED or SDMMC_FREQ_52M. Driver will print out how long the delay is*/ diff --git a/components/sdmmc/include/sdmmc_cmd.h b/components/sdmmc/include/sdmmc_cmd.h index df86abe553..487edf98bf 100644 --- a/components/sdmmc/include/sdmmc_cmd.h +++ b/components/sdmmc/include/sdmmc_cmd.h @@ -318,7 +318,7 @@ esp_err_t sdmmc_io_enable_int(sdmmc_card_t* card); * IO interrupts * - ESP_ERR_TIMEOUT if the interrupt does not happen in timeout_ticks */ -esp_err_t sdmmc_io_wait_int(sdmmc_card_t* card, TickType_t timeout_ticks); +esp_err_t sdmmc_io_wait_int(sdmmc_card_t* card, uint32_t timeout_ticks); /** * Get the data of CIS region of an SDIO card. diff --git a/components/sdmmc/sdmmc_cmd.c b/components/sdmmc/sdmmc_cmd.c index a928dee6d2..ba96b80b02 100644 --- a/components/sdmmc/sdmmc_cmd.c +++ b/components/sdmmc/sdmmc_cmd.c @@ -5,6 +5,7 @@ */ #include +#include "freertos/FreeRTOS.h" #include "esp_private/sdmmc_common.h" static const char* TAG = "sdmmc_cmd"; diff --git a/components/sdmmc/sdmmc_common.c b/components/sdmmc/sdmmc_common.c index d26705f4c1..e35c72f400 100644 --- a/components/sdmmc/sdmmc_common.c +++ b/components/sdmmc/sdmmc_common.c @@ -17,6 +17,7 @@ #include #include "esp_log.h" +#include "freertos/FreeRTOS.h" #include "esp_timer.h" #include "esp_private/sdmmc_common.h" diff --git a/components/sdmmc/sdmmc_io.c b/components/sdmmc/sdmmc_io.c index 841e999b8d..6c07016d10 100644 --- a/components/sdmmc/sdmmc_io.c +++ b/components/sdmmc/sdmmc_io.c @@ -17,6 +17,7 @@ #include #include "esp_private/sdmmc_common.h" +#include "freertos/FreeRTOS.h" #include "esp_attr.h" #include "esp_compiler.h" @@ -497,7 +498,7 @@ esp_err_t sdmmc_io_enable_int(sdmmc_card_t* card) return (*card->host.io_int_enable)(card->host.slot); } -esp_err_t sdmmc_io_wait_int(sdmmc_card_t* card, TickType_t timeout_ticks) +esp_err_t sdmmc_io_wait_int(sdmmc_card_t* card, uint32_t timeout_ticks) { if (card->host.io_int_wait == NULL) { return ESP_ERR_NOT_SUPPORTED; diff --git a/components/sdmmc/sdmmc_sd.c b/components/sdmmc/sdmmc_sd.c index 242eba25fa..4d2c1872b0 100644 --- a/components/sdmmc/sdmmc_sd.c +++ b/components/sdmmc/sdmmc_sd.c @@ -20,6 +20,7 @@ #include "esp_timer.h" #include "esp_cache.h" #include "esp_private/sdmmc_common.h" +#include "freertos/FreeRTOS.h" #define SDMMC_DELAY_NUMS_MAX 10 diff --git a/components/spi_flash/esp_flash_api.c b/components/spi_flash/esp_flash_api.c index 58248ae55c..b04ccf714f 100644 --- a/components/spi_flash/esp_flash_api.c +++ b/components/spi_flash/esp_flash_api.c @@ -24,6 +24,7 @@ #include "esp_check.h" #include "hal/efuse_hal.h" #include "soc/chip_revision.h" +#include "esp_cpu.h" #if CONFIG_IDF_TARGET_ESP32S2 #include "esp_crypto_lock.h" // for locking flash encryption peripheral diff --git a/docs/en/migration-guides/release-6.x/6.0/peripherals.rst b/docs/en/migration-guides/release-6.x/6.0/peripherals.rst index 6bad501165..e0560a2ff3 100644 --- a/docs/en/migration-guides/release-6.x/6.0/peripherals.rst +++ b/docs/en/migration-guides/release-6.x/6.0/peripherals.rst @@ -52,6 +52,11 @@ RTC Subsystem Control Low power modules usually share some common resources like interrupt number. To avoid conflicts, some private APIs are created in the ``esp_private/rtc_ctrl.h`` header file to manage these shared resources with ease. There used to be another header file ``driver/rtc_cntl.h`` for the same purpose, which is now removed. +Removal of FreeRTOS Dependencies from Driver Header Files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Starting from v6.0, to improve the portability of IDF drivers, all public driver header files no longer include operating-system–specific (FreeRTOS) headers. Therefore, application code that previously relied on this implicit inclusion must explicitly include the corresponding FreeRTOS headers when using v6.0 or later. + ADC --- diff --git a/docs/zh_CN/migration-guides/release-6.x/6.0/peripherals.rst b/docs/zh_CN/migration-guides/release-6.x/6.0/peripherals.rst index 0e7c934c91..15add3e49e 100644 --- a/docs/zh_CN/migration-guides/release-6.x/6.0/peripherals.rst +++ b/docs/zh_CN/migration-guides/release-6.x/6.0/peripherals.rst @@ -52,6 +52,11 @@ RTC 子系统控制 低功耗模块通常会共享一些资源,比如中断号。为避免资源冲突,私有头文件 ``esp_private/rtc_ctrl.h`` 提供了相关 API 方便管理这些共享资源。原先用于同样目的的头文件 ``driver/rtc_cntl.h`` 已被移除。 +驱动头文件移除 FreeRTOS 依赖 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +自 v6.0 起,为了增强 IDF 驱动的通用性,所有公开的驱动头文件不再包含具体操作系统(FreeRTOS)相关的头文件。因此,以前依赖这种隐式包含逻辑的应用代码,在 v6.0 之后需要显示添加对应的 FreeRTOS 头文件。 + ADC --- diff --git a/examples/bluetooth/ble_get_started/nimble/NimBLE_Connection/main/idf_component.yml b/examples/bluetooth/ble_get_started/nimble/NimBLE_Connection/main/idf_component.yml index 8723a2e11a..d57b77d2fd 100644 --- a/examples/bluetooth/ble_get_started/nimble/NimBLE_Connection/main/idf_component.yml +++ b/examples/bluetooth/ble_get_started/nimble/NimBLE_Connection/main/idf_component.yml @@ -1,2 +1,2 @@ dependencies: - espressif/led_strip: "^2.4.1" + espressif/led_strip: "^3.0.0" diff --git a/examples/bluetooth/ble_get_started/nimble/NimBLE_GATT_Server/main/idf_component.yml b/examples/bluetooth/ble_get_started/nimble/NimBLE_GATT_Server/main/idf_component.yml index 8723a2e11a..d57b77d2fd 100644 --- a/examples/bluetooth/ble_get_started/nimble/NimBLE_GATT_Server/main/idf_component.yml +++ b/examples/bluetooth/ble_get_started/nimble/NimBLE_GATT_Server/main/idf_component.yml @@ -1,2 +1,2 @@ dependencies: - espressif/led_strip: "^2.4.1" + espressif/led_strip: "^3.0.0" diff --git a/examples/bluetooth/ble_get_started/nimble/NimBLE_Security/main/idf_component.yml b/examples/bluetooth/ble_get_started/nimble/NimBLE_Security/main/idf_component.yml index 8723a2e11a..d57b77d2fd 100644 --- a/examples/bluetooth/ble_get_started/nimble/NimBLE_Security/main/idf_component.yml +++ b/examples/bluetooth/ble_get_started/nimble/NimBLE_Security/main/idf_component.yml @@ -1,2 +1,2 @@ dependencies: - espressif/led_strip: "^2.4.1" + espressif/led_strip: "^3.0.0" diff --git a/examples/lowpower/vbat/main/vbat_example_main.c b/examples/lowpower/vbat/main/vbat_example_main.c index 1623b23cb8..456ef7da7d 100644 --- a/examples/lowpower/vbat/main/vbat_example_main.c +++ b/examples/lowpower/vbat/main/vbat_example_main.c @@ -12,6 +12,7 @@ #include "esp_pm.h" #include "esp_rtc_time.h" #include "esp_sleep.h" +#include "freertos/FreeRTOS.h" void app_main(void) { diff --git a/examples/openthread/ot_common_components/ot_led/idf_component.yml b/examples/openthread/ot_common_components/ot_led/idf_component.yml index 8723a2e11a..d57b77d2fd 100644 --- a/examples/openthread/ot_common_components/ot_led/idf_component.yml +++ b/examples/openthread/ot_common_components/ot_led/idf_component.yml @@ -1,2 +1,2 @@ dependencies: - espressif/led_strip: "^2.4.1" + espressif/led_strip: "^3.0.0" diff --git a/examples/peripherals/sdio/slave/main/app_main.c b/examples/peripherals/sdio/slave/main/app_main.c index 607f3af21b..f2a08e1f2e 100644 --- a/examples/peripherals/sdio/slave/main/app_main.c +++ b/examples/peripherals/sdio/slave/main/app_main.c @@ -10,6 +10,7 @@ #include "esp_log.h" #include "sys/queue.h" #include "soc/soc.h" +#include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/ringbuf.h" #include "sdkconfig.h" @@ -38,12 +39,12 @@ - 0 is the register to hold tasks. Bits: - 0: the slave should reset. - 1: the slave should send interrupts. - - 2: the slave should write the shared registers acoording to the value in register 1. + - 2: the slave should write the shared registers according to the value in register 1. - 1 is the register to hold test value. - other registers will be written by the slave for testing. - FIFO: - The receving FIFO is size of 256 bytes. + The receiving FIFO is size of 256 bytes. When the host writes something to slave recv FIFO, the slave should return it as is to the sending FIFO. The host works as following process: @@ -99,7 +100,7 @@ static esp_err_t slave_reset(void) return ret; } - //Since the buffer will not be sent any more, we return them back to receving driver + //Since the buffer will not be sent any more, we return them back to receiving driver while (1) { sdio_slave_buf_handle_t handle; ret = sdio_slave_send_get_finished(&handle, 0); @@ -145,7 +146,7 @@ static esp_err_t task_write_reg(void) return ESP_OK; } -//we use the event callback (in ISR) in this example to get higer responding speed +//we use the event callback (in ISR) in this example to get higher responding speed //note you can't do delay in the ISR //``sdio_slave_wait_int`` is another way to handle interrupts static void event_cb(uint8_t pos) diff --git a/examples/storage/perf_benchmark/main/perf_benchmark_example_tests.c b/examples/storage/perf_benchmark/main/perf_benchmark_example_tests.c index 789e6ce305..c28bce81f2 100644 --- a/examples/storage/perf_benchmark/main/perf_benchmark_example_tests.c +++ b/examples/storage/perf_benchmark/main/perf_benchmark_example_tests.c @@ -27,7 +27,7 @@ #include "wear_levelling.h" #include "esp_log.h" #include "esp_check.h" - +#include "esp_heap_caps.h" #include "sdkconfig.h" #include "perf_benchmark_example_tests.h" diff --git a/tools/ci/check_public_headers.py b/tools/ci/check_public_headers.py index c47dd65e4a..c258f05db6 100644 --- a/tools/ci/check_public_headers.py +++ b/tools/ci/check_public_headers.py @@ -57,6 +57,11 @@ class HeaderFailedContainsStaticAssert(HeaderFailed): return 'Header uses _Static_assert or static_assert instead of ESP_STATIC_ASSERT' +class HeaderFailedForbiddenFreertosInclude(HeaderFailed): + def __str__(self) -> str: + return 'Header includes forbidden "freertos/*" dependency' + + # Creates a temp file and returns both output as a string and a file name # def exec_cmd_to_temp_file(what: list, suffix: str = '') -> tuple[int, str, str, str, str]: @@ -101,6 +106,18 @@ class PublicHeaderChecker: r'(soc|modem|hw_ver(?:\d+|_[A-Za-z0-9]+)/soc)/' r'[a-zA-Z0-9_]+\.h$' ) + self.freertos_forbidden_include = re.compile(r'(?m)^\s*#\s*include\s*"freertos/[^"]+"') + # Scope for enforcing freertos include rule: + # - components/esp_adc/** + # - components/esp_driver_*/** + # - components/esp_hw_support/** + # - components/sdmmc/** + # - components/ieee802154/** + # - components/esp_eth/** + # - components/esp_lcd/** + self.freertos_scope = re.compile( + r'^(components/(esp_adc|esp_hw_support|sdmmc|ieee802154|esp_eth|esp_lcd)/|components/esp_driver_[^/]+/)' + ) self.assembly_nocode = r'^\s*(\.file|\.text|\.ident|\.option|\.attribute|(\.section)?).*$' self.check_threads: list[Thread] = [] self.stdc = '--std=c99' @@ -109,6 +126,11 @@ class PublicHeaderChecker: self.job_queue: queue.Queue = queue.Queue() self.failed_queue: queue.Queue = queue.Queue() self.terminate = Event() + # Get IDF_PATH early to avoid dependency on method execution order + idf_path = os.getenv('IDF_PATH') + if idf_path is None: + raise RuntimeError("Environment variable 'IDF_PATH' wasn't set.") + self.idf_path = idf_path def __enter__(self) -> 'PublicHeaderChecker': for i in range(self.jobs): @@ -204,6 +226,18 @@ class PublicHeaderChecker: # we ignore the rc here, as the `-fpreprocessed` flag expects the file to have macros already expanded, # so we might get some errors here we use it only to remove comments (even if the command returns non-zero # code it produces the correct output) + # forbid direct inclusion of FreeRTOS headers via quotes (only in scoped components) + if re.search(self.freertos_forbidden_include, out): + # Determine if current header is inside the scoped component folders + rel_path_for_scope = os.path.normpath(header) + try: + # self.idf_path is set in list_public_headers + rel_path_for_scope = os.path.relpath(rel_path_for_scope, self.idf_path) + except Exception: + pass + if re.search(self.freertos_scope, rel_path_for_scope): + # Raise, let final summary print the failure; avoid noisy intermediate logs + raise HeaderFailedForbiddenFreertosInclude() if re.search(self.kconfig_macro, out): # enable defined #error if sdkconfig.h not included all_compilation_flags.append('-DIDF_CHECK_SDKCONFIG_INCLUDED') @@ -275,9 +309,7 @@ class PublicHeaderChecker: # Get compilation data from an example to list all public header files def list_public_headers(self, ignore_dirs: list, ignore_files: list | set, only_dir: str | None = None) -> None: - idf_path = os.getenv('IDF_PATH') - if idf_path is None: - raise RuntimeError("Environment variable 'IDF_PATH' wasn't set.") + idf_path = self.idf_path project_dir = os.path.join(idf_path, 'examples', 'get-started', 'blink') build_dir = tempfile.mkdtemp() sdkconfig = os.path.join(build_dir, 'sdkconfig') @@ -381,6 +413,8 @@ def check_all_headers() -> None: * Check if no definition is present in the offending header file 5) "Header contains _Static_assert or static_assert": Makes the use of _Static_assert or static_assert functions instead of using ESP_STATIC_ASSERT macro + 6) "Header includes forbidden \\"freertos/*\\" dependency": Using #include "freertos/..." inside + * public headers is not allowed Notes: * The script validates *all* header files (recursively) in public folders for all components. diff --git a/tools/ci/check_public_headers_exceptions.txt b/tools/ci/check_public_headers_exceptions.txt index fd36952dbe..2d510902fd 100644 --- a/tools/ci/check_public_headers_exceptions.txt +++ b/tools/ci/check_public_headers_exceptions.txt @@ -123,4 +123,7 @@ components/riscv/include/riscv/rvruntime-frames.h # should be private include, but 'private_include' is a subdir of public includes components/console/private_include/console_private.h -# Missing extern "C" +# Public driver headers contain FreeRTOS headers + +components/esp_driver_uart/include/driver/uart.h +components/esp_driver_sdmmc/include/esp_private/sd_host_private.h