Event addresses in esp_ble_iso / esp_ble_audio GAP events became LSB-first
on both hosts. Bluedroid code written for the old order still compiles and
fails silently at run time, so print a boxed NOTE after the app is built:
convert before esp_ble_gap_* / esp_ble_gattc_* (see example_addr_le_to_host()),
NimBLE unaffected.
- Kconfig: BT_ISO_NOTICE_ADDR_LSB_FIRST (default y) to turn it off.
pdMS_TO_TICKS() multiplied in TickType_t, so xTimeInMs * configTICK_RATE_HZ
wrapped at 32 bits. With CONFIG_FREERTOS_HZ=1000, any value above 4294967 ms
gave a wrong tick count, e.g. pdMS_TO_TICKS(4294968) returned 0.
Multiply in uint64_t, as upstream FreeRTOS-Kernel does since V11.0.0
(FreeRTOS/FreeRTOS-Kernel#866) and as the FreeRTOS-Kernel-SMP copy already
does.
Closes https://github.com/espressif/esp-idf/issues/19242
Wait for LF or CRLF after all five address patterns, allowing the optional
ANSI color reset emitted by IDF Monitor. This prevents partial reads from
capturing a truncated buffer address and causing a false hexdump timeout.
Build system v2 does not define the legacy component_compile_options() and
component_compile_definitions() functions, so a component that calls either
fails to configure with "Unknown CMake command". Add both to the compatibility
layer with the same behaviour as in tools/cmake/component.cmake.
Build system v2 collects Kconfig from every discovered component. The
bootloader is configured from the application's sdkconfig. The
application's SPIRAM options therefore reach the bootloader's
sdkconfig.h although the bootloader never links esp_psram. Shared
sources compiled for the bootloader then see application-only
configuration. Build system v1 never had esp_psram in the bootloader's
COMPONENTS list, so SPIRAM was unknown there.
Add esp_psram to the EXCLUDE_COMPONENTS build property in
components/bootloader/subproject/CMakeLists_v2.txt. The component is
not discovered and its Kconfig is not collected. SPIRAM is undefined in
the bootloader, as in build system v1.
Verified with components/esp_psram/test_apps/psram and hello_world with
CONFIG_SPIRAM=y on esp32c5. The application keeps its SPIRAM options.
The bootloader sdkconfig.h has none and esp_psram is not in the
bootloader's project_description.json.
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
Build system v1 has the EXCLUDE_COMPONENTS project variable. It removes
the listed names from the initial COMPONENTS list, see
spaces2list(EXCLUDE_COMPONENTS) in tools/cmake/project.cmake. Dependency
resolution adds such a component back when another component requires
it. Build system v2 had no equivalent. A v1 project that sets the
variable lost it when built with IDF_BUILD_V2=1.
Add the EXCLUDE_COMPONENTS build property. __init_component() returns
early for a component whose name is in the list. The component gets no
interface target. Its Kconfig files are not collected and its
project_include.cmake is not included. Every discovery path ends in
__init_component(), including managed components added through
idf_build_component(), so one check covers all sources. A component
that requires an excluded component fails with the existing error
"Failed to resolve component". The breaking changes page documents this
difference from build system v1.
The property is set before idf_project_init(). __init_components()
adds the names from the EXCLUDE_COMPONENTS environment or CMake
variable. This keeps idf.py -DEXCLUDE_COMPONENTS=<name> working, and
also a variable set after include(project.cmake) and before project(),
as in v1. idf_project_init() no longer warns that the EXCLUDE_COMPONENTS
variable is deprecated and ignored.
The v1 test test_exclude_components_not_passed now runs under v2 as
well.
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
Keep reading, modifying, and writing virtual eFuses under one UART guard.
Leave the stub running after the read, synchronize without resetting, and
avoid normal boots after auxiliary writes so the bootloader cannot
re-enable cleared virtual eFuse bits before the final application flash.
Remove the redundant esptool guard around normal flashing. Validate the
dump size and report read/write failures with operation and port context,
propagating the original exception without retries.
A component is evaluated with add_subdirectory() while the component
that requires it is still being evaluated. CMake gives the new directory
a copy of every variable and the directory properties visible at the
call. The dependency therefore saw the variables of the requiring
component, for example its srcs list, and appended to them.
Record the variables and the directory properties visible at the first
idf_component_include() call. Before a component is evaluated, a helper
function unsets every other variable. It also sets the directory
properties to the recorded values. The requiring component keeps its
own variables and properties.
This fixes two leaks in the current tree. esp_coex registered its
linker.lf through a leaked ldfragments variable in builds without
coexistence. esp_driver_cam received private include directories of
esp_cam_sensor.
The isolation can be disabled with IDF_COMPONENT_SCOPE_ISOLATION=NO.
COMPONENT_BUILD_DIR is now set for every component, next to
COMPONENT_DIR. The breaking-changes entry about recursive evaluation is
replaced with a Component Scope section in the design documentation. The
section also states that the isolation is not complete. The variables
visible when the record is made stay visible in every component, so a
component must still initialize the variables it sets.
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
The esp_tinyusb, esp_secure_cert_mgr and usb_device_uac managed components
read the BUILD_COMPONENTS build property, which Build system v2 does not
provide.