diff --git a/boards.txt b/boards.txt index fafec87916e..c5addf570f4 100644 --- a/boards.txt +++ b/boards.txt @@ -502,6 +502,10 @@ esp32p4.menu.PartitionScheme.app5M_little24M_32MB.upload.maximum_size=4718592 esp32p4.menu.PartitionScheme.app13M_data7M_32MB=32M Flash (13MB APP/6.75MB SPIFFS) esp32p4.menu.PartitionScheme.app13M_data7M_32MB.build.partitions=default_32MB esp32p4.menu.PartitionScheme.app13M_data7M_32MB.upload.maximum_size=13107200 +esp32p4.menu.PartitionScheme.esp_sr_16=ESP SR 16M (3MB APP/7MB SPIFFS/2.9MB MODEL) +esp32p4.menu.PartitionScheme.esp_sr_16.upload.maximum_size=3145728 +esp32p4.menu.PartitionScheme.esp_sr_16.upload.extra_flags=0xD10000 {build.path}/srmodels.bin +esp32p4.menu.PartitionScheme.esp_sr_16.build.partitions=esp_sr_16 esp32p4.menu.PartitionScheme.custom=Custom esp32p4.menu.PartitionScheme.custom.build.partitions= esp32p4.menu.PartitionScheme.custom.upload.maximum_size=16777216 diff --git a/libraries/ESP_SR/examples/Basic/Basic.ino b/libraries/ESP_SR/examples/Basic/Basic.ino index 30aab69d79b..c8a16b1bc92 100644 --- a/libraries/ESP_SR/examples/Basic/Basic.ino +++ b/libraries/ESP_SR/examples/Basic/Basic.ino @@ -9,6 +9,17 @@ #define LIGHT_PIN 40 #define FAN_PIN 41 +/** + * The input format: + * M to represent the microphone channel + * R to represent the playback reference channel + * N to represent an unknown or unused channel + * + * For example, input_format="MMNR" indicates that the input data consists of four channels, + * which are the microphone channel, the microphone channel, an unused channel, and the playback channel + */ +#define SR_INPUT_FORMAT "MM" + I2SClass i2s; // Generated using the following command: @@ -69,7 +80,7 @@ void setup() { i2s.begin(I2S_MODE_STD, 16000, I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO); ESP_SR.onEvent(onSrEvent); - ESP_SR.begin(i2s, sr_commands, sizeof(sr_commands) / sizeof(sr_cmd_t), SR_CHANNELS_STEREO, SR_MODE_WAKEWORD); + ESP_SR.begin(i2s, sr_commands, sizeof(sr_commands) / sizeof(sr_cmd_t), SR_CHANNELS_STEREO, SR_MODE_WAKEWORD, SR_INPUT_FORMAT); } void loop() {} diff --git a/libraries/ESP_SR/examples/Basic/ci.json b/libraries/ESP_SR/examples/Basic/ci.json index ec0e969a7d0..ed7699a7857 100644 --- a/libraries/ESP_SR/examples/Basic/ci.json +++ b/libraries/ESP_SR/examples/Basic/ci.json @@ -2,6 +2,9 @@ "fqbn": { "esp32s3": [ "espressif:esp32:esp32s3:USBMode=default,PartitionScheme=esp_sr_16,FlashSize=16M,FlashMode=dio" + ], + "esp32p4": [ + "espressif:esp32:esp32p4:USBMode=default,PartitionScheme=esp_sr_16,FlashSize=16M,FlashMode=qio" ] }, "requires": [ @@ -12,7 +15,6 @@ "esp32c3": false, "esp32c6": false, "esp32h2": false, - "esp32p4": false, "esp32s2": false, "esp32c5": false } diff --git a/libraries/ESP_SR/src/ESP_SR.cpp b/libraries/ESP_SR/src/ESP_SR.cpp index 8d90c0fff11..31cf85efd37 100644 --- a/libraries/ESP_SR/src/ESP_SR.cpp +++ b/libraries/ESP_SR/src/ESP_SR.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ #include "sdkconfig.h" -#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_USE_WAKENET || CONFIG_USE_MULTINET) +#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_MODEL_IN_FLASH || CONFIG_MODEL_IN_SDCARD) #include "ESP_SR.h" static esp_err_t on_sr_fill(void *arg, void *out, size_t len, size_t *bytes_read, uint32_t timeout_ms) { @@ -25,9 +25,9 @@ void ESP_SR_Class::onEvent(sr_cb event_cb) { cb = event_cb; } -bool ESP_SR_Class::begin(I2SClass &_i2s, const sr_cmd_t *sr_commands, size_t sr_commands_len, sr_channels_t rx_chan, sr_mode_t mode) { +bool ESP_SR_Class::begin(I2SClass &_i2s, const sr_cmd_t *sr_commands, size_t sr_commands_len, sr_channels_t rx_chan, sr_mode_t mode, const char *input_format) { i2s = &_i2s; - esp_err_t err = sr_start(on_sr_fill, this, rx_chan, mode, sr_commands, sr_commands_len, on_sr_event, this); + esp_err_t err = sr_start(on_sr_fill, this, rx_chan, mode, input_format, sr_commands, sr_commands_len, on_sr_event, this); return (err == ESP_OK); } diff --git a/libraries/ESP_SR/src/ESP_SR.h b/libraries/ESP_SR/src/ESP_SR.h index 13fe22a4b12..05393504cb9 100644 --- a/libraries/ESP_SR/src/ESP_SR.h +++ b/libraries/ESP_SR/src/ESP_SR.h @@ -6,7 +6,7 @@ #pragma once #include "sdkconfig.h" -#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_USE_WAKENET || CONFIG_USE_MULTINET) +#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_MODEL_IN_FLASH || CONFIG_MODEL_IN_SDCARD) #include "ESP_I2S.h" #include "esp32-hal-sr.h" @@ -23,7 +23,19 @@ class ESP_SR_Class { ~ESP_SR_Class(); void onEvent(sr_cb cb); - bool begin(I2SClass &i2s, const sr_cmd_t *sr_commands, size_t sr_commands_len, sr_channels_t rx_chan = SR_CHANNELS_STEREO, sr_mode_t mode = SR_MODE_WAKEWORD); + /** + * The input format: + * M to represent the microphone channel + * R to represent the playback reference channel + * N to represent an unknown or unused channel + * + * For example, input_format="MMNR" indicates that the input data consists of four channels, + * which are the microphone channel, the microphone channel, an unused channel, and the playback channel + */ + bool begin( + I2SClass &i2s, const sr_cmd_t *sr_commands, size_t sr_commands_len, sr_channels_t rx_chan = SR_CHANNELS_STEREO, sr_mode_t mode = SR_MODE_WAKEWORD, + const char *input_format = "MN" + ); bool end(void); bool setMode(sr_mode_t mode); bool pause(void); diff --git a/libraries/ESP_SR/src/esp32-hal-sr.c b/libraries/ESP_SR/src/esp32-hal-sr.c index 80295d41f5a..1ae96d616eb 100644 --- a/libraries/ESP_SR/src/esp32-hal-sr.c +++ b/libraries/ESP_SR/src/esp32-hal-sr.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ #include "sdkconfig.h" -#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_USE_WAKENET || CONFIG_USE_MULTINET) +#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_MODEL_IN_FLASH || CONFIG_MODEL_IN_SDCARD) #if !defined(ARDUINO_PARTITION_esp_sr_32) && !defined(ARDUINO_PARTITION_esp_sr_16) && !defined(ARDUINO_PARTITION_esp_sr_8) #warning Compatible partition must be selected for ESP_SR to work @@ -313,7 +313,8 @@ esp_err_t sr_set_mode(sr_mode_t mode) { } esp_err_t sr_start( - sr_fill_cb fill_cb, void *fill_cb_arg, sr_channels_t rx_chan, sr_mode_t mode, const sr_cmd_t sr_commands[], size_t cmd_number, sr_event_cb cb, void *cb_arg + sr_fill_cb fill_cb, void *fill_cb_arg, sr_channels_t rx_chan, sr_mode_t mode, const char *input_format, const sr_cmd_t sr_commands[], size_t cmd_number, + sr_event_cb cb, void *cb_arg ) { esp_err_t ret = ESP_OK; ESP_RETURN_ON_FALSE(NULL == g_sr_data, ESP_ERR_INVALID_STATE, "SR already running"); @@ -340,12 +341,11 @@ esp_err_t sr_start( models = esp_srmodel_init("model"); // Load WakeWord Detection - g_sr_data->afe_handle = (esp_afe_sr_iface_t *)&ESP_AFE_SR_HANDLE; - afe_config_t afe_config = AFE_CONFIG_DEFAULT(); - afe_config.wakenet_model_name = esp_srmodel_filter(models, ESP_WN_PREFIX, "hiesp"); - afe_config.aec_init = false; + afe_config_t *afe_config = afe_config_init(input_format, models, AFE_TYPE_SR, AFE_MODE_LOW_COST); + g_sr_data->afe_handle = esp_afe_handle_from_config(afe_config); log_d("load wakenet '%s'", afe_config.wakenet_model_name); - g_sr_data->afe_data = g_sr_data->afe_handle->create_from_config(&afe_config); + g_sr_data->afe_data = g_sr_data->afe_handle->create_from_config(afe_config); + afe_config_free(afe_config); // Load Custom Command Detection char *mn_name = esp_srmodel_filter(models, ESP_MN_PREFIX, ESP_MN_ENGLISH); diff --git a/libraries/ESP_SR/src/esp32-hal-sr.h b/libraries/ESP_SR/src/esp32-hal-sr.h index 6bdd9e89a44..ac3df3f07ac 100644 --- a/libraries/ESP_SR/src/esp32-hal-sr.h +++ b/libraries/ESP_SR/src/esp32-hal-sr.h @@ -6,7 +6,7 @@ #pragma once #include "sdkconfig.h" -#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_USE_WAKENET || CONFIG_USE_MULTINET) +#if (CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4) && (CONFIG_MODEL_IN_FLASH || CONFIG_MODEL_IN_SDCARD) #include "driver/i2s_types.h" #include "esp_err.h" @@ -49,7 +49,8 @@ typedef void (*sr_event_cb)(void *arg, sr_event_t event, int command_id, int phr typedef esp_err_t (*sr_fill_cb)(void *arg, void *out, size_t len, size_t *bytes_read, uint32_t timeout_ms); esp_err_t sr_start( - sr_fill_cb fill_cb, void *fill_cb_arg, sr_channels_t rx_chan, sr_mode_t mode, const sr_cmd_t *sr_commands, size_t cmd_number, sr_event_cb cb, void *cb_arg + sr_fill_cb fill_cb, void *fill_cb_arg, sr_channels_t rx_chan, sr_mode_t mode, const char *input_format, const sr_cmd_t *sr_commands, size_t cmd_number, + sr_event_cb cb, void *cb_arg ); esp_err_t sr_stop(void); esp_err_t sr_pause(void); diff --git a/libraries/Zigbee/src/ep/ZigbeePressureSensor.h b/libraries/Zigbee/src/ep/ZigbeePressureSensor.h index 1edf5d40872..cd38a24d4a0 100644 --- a/libraries/Zigbee/src/ep/ZigbeePressureSensor.h +++ b/libraries/Zigbee/src/ep/ZigbeePressureSensor.h @@ -38,8 +38,8 @@ .pressure_meas_cfg = \ { \ .measured_value = ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_VALUE_DEFAULT_VALUE, \ - .min_value = ESP_ZB_ZCL_PATTR_RESSURE_MEASUREMENT_MIN_VALUE_DEFAULT_VALUE, \ - .max_value = ESP_ZB_ZCL_PATTR_RESSURE_MEASUREMENT_MAX_VALUE_DEFAULT_VALUE, \ + .min_value = ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_MIN_VALUE_DEFAULT_VALUE, \ + .max_value = ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_MAX_VALUE_DEFAULT_VALUE, \ }, \ } // clang-format on diff --git a/package/package_esp32_index.template.json b/package/package_esp32_index.template.json index 4b97fec827f..be8f5941875 100644 --- a/package/package_esp32_index.template.json +++ b/package/package_esp32_index.template.json @@ -51,7 +51,7 @@ { "packager": "esp32", "name": "esp32-arduino-libs", - "version": "idf-release_v5.5-b66b5448-v1" + "version": "idf-release_v5.5-129cd0d2-v2" }, { "packager": "esp32", @@ -76,7 +76,7 @@ { "packager": "esp32", "name": "openocd-esp32", - "version": "v0.12.0-esp32-20250422" + "version": "v0.12.0-esp32-20250707" }, { "packager": "esp32", @@ -104,63 +104,63 @@ "tools": [ { "name": "esp32-arduino-libs", - "version": "idf-release_v5.5-b66b5448-v1", + "version": "idf-release_v5.5-129cd0d2-v2", "systems": [ { "host": "i686-mingw32", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" }, { "host": "x86_64-mingw32", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" }, { "host": "arm64-apple-darwin", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" }, { "host": "x86_64-apple-darwin", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" }, { "host": "x86_64-pc-linux-gnu", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" }, { "host": "i686-pc-linux-gnu", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" }, { "host": "aarch64-linux-gnu", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" }, { "host": "arm-linux-gnueabihf", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-b66b5448-v1.zip", - "checksum": "SHA-256:a871d945c6bfb685ecff5e30ad759f280c841ea143071466b2e611bd1800f18f", - "size": "430471837" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-129cd0d2-v2.zip", + "checksum": "SHA-256:9dcd284f75bb486ebcd1c86ec8a8baa7080b1e7163f63d2b3bbdbddd118eb903", + "size": "444179819" } ] }, @@ -414,56 +414,56 @@ }, { "name": "openocd-esp32", - "version": "v0.12.0-esp32-20250422", + "version": "v0.12.0-esp32-20250707", "systems": [ { "host": "x86_64-pc-linux-gnu", - "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250422/openocd-esp32-linux-amd64-0.12.0-esp32-20250422.tar.gz", - "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20250422.tar.gz", - "checksum": "SHA-256:eb1fa9b21c65b45a2200af6dcc2914e32335d37b6dbbd181778dcc0dc025e70a", - "size": "2445546" + "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250707/openocd-esp32-linux-amd64-0.12.0-esp32-20250707.tar.gz", + "archiveFileName": "openocd-esp32-linux-amd64-0.12.0-esp32-20250707.tar.gz", + "checksum": "SHA-256:766293bd7a08900d3536f87a0a7ade960f07266f16e4147f95ca5ce4e15d4c5d", + "size": "2489724" }, { "host": "aarch64-linux-gnu", - "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250422/openocd-esp32-linux-arm64-0.12.0-esp32-20250422.tar.gz", - "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20250422.tar.gz", - "checksum": "SHA-256:f70334a9b12a75b4d943e09fa5db30973037c39dbb54d6fa9f1a7118228b3d1c", - "size": "2330926" + "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250707/openocd-esp32-linux-arm64-0.12.0-esp32-20250707.tar.gz", + "archiveFileName": "openocd-esp32-linux-arm64-0.12.0-esp32-20250707.tar.gz", + "checksum": "SHA-256:34b6883c372444b49950893b2fc0101aefd10d404a88ef72c97e80199f8544d3", + "size": "2371243" }, { "host": "arm-linux-gnueabihf", - "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250422/openocd-esp32-linux-armel-0.12.0-esp32-20250422.tar.gz", - "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20250422.tar.gz", - "checksum": "SHA-256:4ac34d6fd1af86aeda87c8318732f8d691c300c285c7fd2f5037c432c63fbbb3", - "size": "2470732" + "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250707/openocd-esp32-linux-armel-0.12.0-esp32-20250707.tar.gz", + "archiveFileName": "openocd-esp32-linux-armel-0.12.0-esp32-20250707.tar.gz", + "checksum": "SHA-256:fd48492cf3ee16577c661fdccc14c349d34a9ab93aac5039ddf72332d4f4b70b", + "size": "2517680" }, { "host": "x86_64-apple-darwin", - "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250422/openocd-esp32-macos-0.12.0-esp32-20250422.tar.gz", - "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20250422.tar.gz", - "checksum": "SHA-256:9186a7a06304c6d9201cbce4ee3c7099b393bf8d329cda17a68874f92308f6ce", - "size": "2548730" + "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250707/openocd-esp32-macos-0.12.0-esp32-20250707.tar.gz", + "archiveFileName": "openocd-esp32-macos-0.12.0-esp32-20250707.tar.gz", + "checksum": "SHA-256:6267be53892a76d535938a1b044b685adc7d292f090447e8a3e3d0f0996474d1", + "size": "2585348" }, { "host": "arm64-apple-darwin", - "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250422/openocd-esp32-macos-arm64-0.12.0-esp32-20250422.tar.gz", - "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20250422.tar.gz", - "checksum": "SHA-256:2cc39318d52f393233ff1f777871aebe5b97b3fbad29556a238489263401b774", - "size": "2593819" + "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250707/openocd-esp32-macos-arm64-0.12.0-esp32-20250707.tar.gz", + "archiveFileName": "openocd-esp32-macos-arm64-0.12.0-esp32-20250707.tar.gz", + "checksum": "SHA-256:150e938ac48a6ee031ddbc8b31043bc7f2073ab2ee4896b658918d35899673c3", + "size": "2628741" }, { "host": "i686-mingw32", - "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250422/openocd-esp32-win32-0.12.0-esp32-20250422.zip", - "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20250422.zip", - "checksum": "SHA-256:ecb4f8533fa9098d10000f5f7e8b8eaa8591015b824b481078ddb2b37e7aa6f2", - "size": "2988859" + "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250707/openocd-esp32-win32-0.12.0-esp32-20250707.zip", + "archiveFileName": "openocd-esp32-win32-0.12.0-esp32-20250707.zip", + "checksum": "SHA-256:666274b04af7f36b430b6d063006051c37b8635b5175735ad5af07a1fbc6f486", + "size": "3034680" }, { "host": "x86_64-mingw32", - "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250422/openocd-esp32-win64-0.12.0-esp32-20250422.zip", - "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20250422.zip", - "checksum": "SHA-256:e9eae8e1a8d0e030cd81dcb08394a9137cb7338a6211dfabcdbdfb37b58c5a23", - "size": "2988858" + "url": "https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20250707/openocd-esp32-win64-0.12.0-esp32-20250707.zip", + "archiveFileName": "openocd-esp32-win64-0.12.0-esp32-20250707.zip", + "checksum": "SHA-256:5186ba3f7ee29fb6ab68a4ed7bb417211bad76ecdcdf9280a9187ebfd549a3c1", + "size": "3034680" } ] },