Changelog

for the component espressif/ble_esl v1.1.0
## v1.1.0 - 2026.10.21

Bug Fixes:
- AP: after PAST `set_info`, CONFIGURING/UPDATING becomes SYNCHRONIZED only when the Tag drops the ACL with HCI 0x13. A supervision timeout, 0x3e, or a local disconnect goes to UNSYNCHRONIZED instead of being reported as sync success.
- AP: Update Complete arms its pending mark before the GATT write, because a kept-sync Tag may send HCI 0x13 while `write_by_handle()` is still blocked (ESLP UPD/BV-02, no second PAST). If that write returns an error and the teardown has not already committed SYNCHRONIZED, the mark is cleared. A later 0x13 is not treated as sync success.
- AP: `configure_tag()` returns `ESP_ERR_INVALID_SIZE` when the ATT MTU cannot carry the 24-byte key material, instead of blocking in the key write until timeout.
- AP: PAwR `DATA_REQ` submits only subevents that have a queued command. Idle slots are not sent to HCI.
- AP OTP: OTS is not auto-discovered on `DISC_COMPLETE`. `transfer_image()` discovers it on the Tag connection when needed. Disconnect clears OTS state only for the connection that was discovered, so a phone/NUS drop does not wipe the Tag.
- Tag: Update Complete during Updating terminates any stale periodic sync while retaining ACL, re-arms PAST reception on `SYNC_LOST`, and drops ACL only after the fresh sync receives a PAwR report or its bounded confirmation wait expires. Other already-synchronized paths use the same PAwR-or-timeout ACL teardown guard.
- Tag/AP example: the Update Complete transaction retains its recovery mark through the PAwR confirmation window, re-arms PAST after transfer or sync loss, suppresses connectable advertising while settling, and retries PAST with a bounded timeout instead of leaving the Tag in Updating indefinitely.
- Tag: link loss while associated, or after config writes but before Update Complete, enters Unsynchronized and keeps the materials. Incomplete config goes Unassociated. `SYNC_LOST` clears the Synchronized bit and returns an associated Tag to Unsynchronized.
- Tag: `esp_ble_eslp_restore_association()` publishes flags-only advertising (no ESL UUID) before entering Unsynchronized, so a rebooted Tag is not advertised as Unassociated.

Features:
- AP: `esp_ble_eslp_ap_keeps_sync_without_past()` reports an ACL that was opened while the Tag was already Synchronized.
- AP: `esp_ble_eslp_ap_set_ap_sync_key()` and `esp_ble_eslp_ap_restore_persisted()` reinstall the sync key and a tracked Tag after reboot.
- Tag: `esp_ble_eslp_restore_association()` / `esp_ble_eslp_export_association()` save and reload the association.
- Tag: `esp_ble_eslp_image_snapshot()`, `esp_ble_eslp_image_restore()`, and `esp_ble_eslp_image_invalidate_all()` copy, reload, and clear OTP image slots.

## v1.0.0 - 2026.07.28

Features:
- Tag role: GATT association, lifecycle ECP handling, optional PAST/PAwR synchronized state
- Tag role: Instantiate Device Information Service for vendor-specific opcode support
- Tag role: OTP Object Server for ESL image slots (`CONFIG_BLE_ESL_OTS_SUPPORT`)
- Tag role: Default Display / LED / Sensor ECP+PAwR handling with HW events and timed pending
- Tag role: Configuring link loss after config writes keeps materials and enters Unsynchronized
- Tag role: Service Reset optional hold callback via `esp_ble_eslp_register_service_needed_hold()`
- Tag role: `esp_ble_eslp_set_service_needed()`
- Shared ESL lifecycle state machine (`esp_eslp_state`) with Unsynchronized + 60-min timeouts
- AP role: Tag association helper, PAwR control, PAST set_info, subevent command queue
- AP role: OTP Object Client with `esp_ble_eslp_ap_transfer_image()` and Truncate write mode
- AP role: Remote Tag lifecycle tracking; Synchronized after decryptable PAwR response
- AP role: `esp_ble_eslp_ap_read_info()` for Display/Image/Sensor/LED/PnP
- AP role: Typed ECP/PAwR command helpers with 30 s ECP procedure timeout
- AP role: `esp_ble_eslp_ap_configure_tag()` requires an encrypted link
- EAD for Synchronized PAwR; AES-CCM Encrypted Data AD with AP Sync Key / Response Key
- Events on `BLE_ESLP_EVENTS` and `BLE_ESLP_AP_EVENTS`
- ESL Service: require `set_display_info` before `esp_ble_esl_init` when Display Info is enabled
- ESL Service: Absolute Time base and set timestamp protected by critical section