Skip to content

Commit d47a7bd

Browse files
authored
Merge branch 'master' into feat/esp32c61
2 parents 205aadc + 7a3c8e0 commit d47a7bd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+813
-237
lines changed

.github/scripts/tests_run.sh

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,23 @@ function run_test {
111111

112112
rm "$sketchdir"/diagram.json 2>/dev/null || true
113113

114+
local wifi_args=""
115+
if [ -n "$wifi_ssid" ]; then
116+
wifi_args="--wifi-ssid \"$wifi_ssid\""
117+
fi
118+
if [ -n "$wifi_password" ]; then
119+
wifi_args="$wifi_args --wifi-password \"$wifi_password\""
120+
fi
121+
114122
result=0
115-
printf "\033[95mpytest -s \"%s/test_%s.py\" --build-dir \"%s\" --junit-xml=\"%s\" -o junit_suite_name=%s_%s_%s_%s%s %s\033[0m\n" "$sketchdir" "$sketchname" "$build_dir" "$report_file" "$test_type" "$platform" "$target" "$sketchname" "$i" "${extra_args[*]@Q}"
116-
bash -c "set +e; pytest -s \"$sketchdir/test_$sketchname.py\" --build-dir \"$build_dir\" --junit-xml=\"$report_file\" -o junit_suite_name=${test_type}_${platform}_${target}_${sketchname}${i} ${extra_args[*]@Q}; exit \$?" || result=$?
123+
printf "\033[95mpytest -s \"%s/test_%s.py\" --build-dir \"%s\" --junit-xml=\"%s\" -o junit_suite_name=%s_%s_%s_%s%s %s %s\033[0m\n" "$sketchdir" "$sketchname" "$build_dir" "$report_file" "$test_type" "$platform" "$target" "$sketchname" "$i" "${extra_args[*]@Q}" "$wifi_args"
124+
bash -c "set +e; pytest -s \"$sketchdir/test_$sketchname.py\" --build-dir \"$build_dir\" --junit-xml=\"$report_file\" -o junit_suite_name=${test_type}_${platform}_${target}_${sketchname}${i} ${extra_args[*]@Q} $wifi_args; exit \$?" || result=$?
117125
printf "\n"
118126
if [ $result -ne 0 ]; then
119127
result=0
120128
printf "\033[95mRetrying test: %s -- Config: %s\033[0m\n" "$sketchname" "$i"
121-
printf "\033[95mpytest -s \"%s/test_%s.py\" --build-dir \"%s\" --junit-xml=\"%s\" -o junit_suite_name=%s_%s_%s_%s%s %s\033[0m\n" "$sketchdir" "$sketchname" "$build_dir" "$report_file" "$test_type" "$platform" "$target" "$sketchname" "$i" "${extra_args[*]@Q}"
122-
bash -c "set +e; pytest -s \"$sketchdir/test_$sketchname.py\" --build-dir \"$build_dir\" --junit-xml=\"$report_file\" -o junit_suite_name=${test_type}_${platform}_${target}_${sketchname}${i} ${extra_args[*]@Q}; exit \$?" || result=$?
129+
printf "\033[95mpytest -s \"%s/test_%s.py\" --build-dir \"%s\" --junit-xml=\"%s\" -o junit_suite_name=%s_%s_%s_%s%s %s %s\033[0m\n" "$sketchdir" "$sketchname" "$build_dir" "$report_file" "$test_type" "$platform" "$target" "$sketchname" "$i" "${extra_args[*]@Q}" "$wifi_args"
130+
bash -c "set +e; pytest -s \"$sketchdir/test_$sketchname.py\" --build-dir \"$build_dir\" --junit-xml=\"$report_file\" -o junit_suite_name=${test_type}_${platform}_${target}_${sketchname}${i} ${extra_args[*]@Q} $wifi_args; exit \$?" || result=$?
123131
printf "\n"
124132
if [ $result -ne 0 ]; then
125133
printf "\033[91mFailed test: %s -- Config: %s\033[0m\n\n" "$sketchname" "$i"
@@ -137,6 +145,8 @@ platform="hardware"
137145
chunk_run=0
138146
options=0
139147
erase=0
148+
wifi_ssid=""
149+
wifi_password=""
140150

141151
while [ -n "$1" ]; do
142152
case $1 in
@@ -188,6 +198,14 @@ while [ -n "$1" ]; do
188198
shift
189199
test_type=$1
190200
;;
201+
-wifi-ssid )
202+
shift
203+
wifi_ssid=$1
204+
;;
205+
-wifi-password )
206+
shift
207+
wifi_password=$1
208+
;;
191209
* )
192210
break
193211
;;

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
mkdir -p ${{ github.workspace }}/hosted
6969
7070
# Copy hosted binaries to proper directory without overwriting existing files
71-
cp -n ${{ github.workspace }}/hosted-latest/*.bin ${{ github.workspace }}/hosted/
71+
cp --update=none ${{ github.workspace }}/hosted-latest/*.bin ${{ github.workspace }}/hosted/
7272
7373
# Commit the changes
7474
git config user.name "github-actions[bot]"

.github/workflows/tests_hw_wokwi.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,14 @@ jobs:
361361
download_artifacts: 'true'
362362
download_artifacts_on_failure: 'true'
363363
download_path: './gitlab-artifacts'
364-
variables: '{"TEST_TYPES":"${{ steps.prepare-variables.outputs.test_types }}","TEST_CHIPS":"${{ steps.prepare-variables.outputs.test_chips }}","PIPELINE_ID":"${{ env.id }}","BINARIES_RUN_ID":"${{ github.event.workflow_run.id }}","GITHUB_REPOSITORY":"${{ github.repository }}"}'
364+
variables: >-
365+
{
366+
"TEST_TYPES":"${{ steps.prepare-variables.outputs.test_types }}",
367+
"TEST_CHIPS":"${{ steps.prepare-variables.outputs.test_chips }}",
368+
"PIPELINE_ID":"${{ env.id }}",
369+
"BINARIES_RUN_ID":"${{ github.event.workflow_run.id }}",
370+
"GITHUB_REPOSITORY":"${{ github.repository }}"
371+
}
365372
366373
- name: Process Downloaded Artifacts
367374
if: ${{ always() && steps.check-tests.outputs.enabled == 'true' }}
@@ -536,8 +543,11 @@ jobs:
536543
if: ${{ steps.check-tests.outputs.enabled == 'true' }}
537544
env:
538545
WOKWI_CLI_TOKEN: ${{ secrets.WOKWI_CLI_TOKEN }}
546+
WOKWI_WIFI_SSID: "Wokwi-GUEST"
547+
# The Wokwi Wi-Fi does not have a password, so we use an empty string
548+
WOKWI_WIFI_PASSWORD: ""
539549
run: |
540-
bash .github/scripts/tests_run.sh -c -type ${{ matrix.type }} -t ${{ matrix.chip }} -i 0 -m 1 -W
550+
bash .github/scripts/tests_run.sh -c -type "${{ matrix.type }}" -t "${{ matrix.chip }}" -i 0 -m 1 -W -wifi-ssid "${{ env.WOKWI_WIFI_SSID }}" -wifi-password "${{ env.WOKWI_WIFI_PASSWORD }}"
541551
542552
- name: Upload ${{ matrix.chip }} ${{ matrix.type }} Wokwi results as cache
543553
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3

.gitlab/workflows/hw_test_template.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ hw-test-template:
5050
[ -z "$d" ] && continue;
5151
sketch=$(basename "$d");
5252
echo Running $sketch in $d;
53-
bash .github/scripts/tests_run.sh -t $TEST_CHIP -s $sketch -e || rc=$?;
53+
bash .github/scripts/tests_run.sh -t "$TEST_CHIP" -s "$sketch" -e -wifi-ssid "$RUNNER_WIFI_SSID" -wifi-password "$RUNNER_WIFI_PASSWORD" || rc=$?;
5454
done <<< "$TEST_LIST"; exit $rc
5555
5656
artifacts:

boards.txt

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ menu.EraseFlash=Erase All Flash Before Sketch Upload
1919
menu.JTAGAdapter=JTAG Adapter
2020
menu.ZigbeeMode=Zigbee Mode
2121
menu.PinNumbers=Pin Numbering
22+
menu.ChipVariant=Chip Variant
2223

2324
# Custom options
2425
menu.Revision=Board Revision
@@ -398,6 +399,7 @@ esp32p4.build.target=esp
398399
esp32p4.build.mcu=esp32p4
399400
esp32p4.build.core=esp32
400401
esp32p4.build.variant=esp32p4
402+
esp32p4.build.chip_variant=esp32p4_es
401403
esp32p4.build.board=ESP32P4_DEV
402404
esp32p4.build.bootloader_addr=0x2000
403405

@@ -414,6 +416,13 @@ esp32p4.build.boot=qio
414416
esp32p4.build.partitions=default
415417
esp32p4.build.defines=
416418

419+
esp32p4.menu.ChipVariant.prev3=Before v3.00
420+
esp32p4.menu.ChipVariant.prev3.build.chip_variant=esp32p4_es
421+
esp32p4.menu.ChipVariant.prev3.build.f_cpu=360000000L
422+
esp32p4.menu.ChipVariant.postv3=v3.00 or newer
423+
esp32p4.menu.ChipVariant.postv3.build.chip_variant=esp32p4
424+
esp32p4.menu.ChipVariant.postv3.build.f_cpu=400000000L
425+
417426
## IDE 2.0 Seems to not update the value
418427
esp32p4.menu.JTAGAdapter.default=Disabled
419428
esp32p4.menu.JTAGAdapter.default.build.copy_jtag_files=0
@@ -512,12 +521,6 @@ esp32p4.menu.PartitionScheme.custom=Custom
512521
esp32p4.menu.PartitionScheme.custom.build.partitions=
513522
esp32p4.menu.PartitionScheme.custom.upload.maximum_size=16777216
514523

515-
## From https://docs.espressif.com/projects/esp-idf/en/latest/esp32p4/api-reference/kconfig.html#config-esp-default-cpu-freq-mhz
516-
esp32p4.menu.CPUFreq.360=360MHz
517-
esp32p4.menu.CPUFreq.360.build.f_cpu=360000000L
518-
esp32p4.menu.CPUFreq.40=40MHz
519-
esp32p4.menu.CPUFreq.40.build.f_cpu=40000000L
520-
521524
esp32p4.menu.FlashMode.qio=QIO
522525
esp32p4.menu.FlashMode.qio.build.flash_mode=dio
523526
esp32p4.menu.FlashMode.qio.build.boot=qio
@@ -43106,10 +43109,10 @@ waveshare_esp32_s3_zero.menu.USBMode.hwcdc.build.usb_mode=1
4310643109
waveshare_esp32_s3_zero.menu.USBMode.default=USB-OTG (TinyUSB)
4310743110
waveshare_esp32_s3_zero.menu.USBMode.default.build.usb_mode=0
4310843111

43109-
waveshare_esp32_s3_zero.menu.CDCOnBoot.default=Disabled
43110-
waveshare_esp32_s3_zero.menu.CDCOnBoot.default.build.cdc_on_boot=0
43111-
waveshare_esp32_s3_zero.menu.CDCOnBoot.cdc=Enabled
43112-
waveshare_esp32_s3_zero.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
43112+
waveshare_esp32_s3_zero.menu.CDCOnBoot.default=Enabled
43113+
waveshare_esp32_s3_zero.menu.CDCOnBoot.default.build.cdc_on_boot=1
43114+
waveshare_esp32_s3_zero.menu.CDCOnBoot.cdc=Disabled
43115+
waveshare_esp32_s3_zero.menu.CDCOnBoot.cdc.build.cdc_on_boot=0
4311343116

4311443117
waveshare_esp32_s3_zero.menu.MSCOnBoot.default=Disabled
4311543118
waveshare_esp32_s3_zero.menu.MSCOnBoot.default.build.msc_on_boot=0

cores/esp32/esp32-hal-adc.c

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,35 @@
2121
#include "esp_adc/adc_continuous.h"
2222
#include "esp_adc/adc_cali_scheme.h"
2323

24+
#if CONFIG_IDF_TARGET_ESP32P4 && CONFIG_ESP32P4_REV_MIN_FULL >= 300
25+
// NOTE: These weak definitions allow successful linkage if the real efuse calibration functions are missing.
26+
// This is a workaround for the ESP32P4 rev 3.0+, which is missing efuse calibration functions in the IDF.
27+
__attribute__((weak)) uint32_t esp_efuse_rtc_calib_get_ver(void) {
28+
return 0;
29+
}
30+
31+
__attribute__((weak)) uint32_t esp_efuse_rtc_calib_get_init_code(uint32_t atten, uint32_t *code) {
32+
if (code) {
33+
*code = 0;
34+
}
35+
return 0; // 0 means success in ESP-IDF conventions
36+
}
37+
38+
__attribute__((weak)) uint32_t esp_efuse_rtc_calib_get_chan_compens(uint32_t atten, uint32_t *comp) {
39+
if (comp) {
40+
*comp = 0;
41+
}
42+
return 0;
43+
}
44+
45+
__attribute__((weak)) uint32_t esp_efuse_rtc_calib_get_cal_voltage(uint32_t atten, uint32_t *voltage) {
46+
if (voltage) {
47+
*voltage = 0;
48+
}
49+
return 0;
50+
}
51+
#endif
52+
2453
// ESP32-C2 does not define those two for some reason
2554
#ifndef SOC_ADC_DIGI_RESULT_BYTES
2655
#define SOC_ADC_DIGI_RESULT_BYTES (4)
@@ -75,11 +104,14 @@ static bool adcDetachBus(void *pin) {
75104
if (err != ESP_OK) {
76105
return false;
77106
}
78-
#elif (!defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32P4))
107+
#elif ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
79108
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
80109
if (err != ESP_OK) {
81110
return false;
82111
}
112+
#else
113+
log_e("ADC Calibration scheme is not supported!");
114+
return false;
83115
#endif
84116
}
85117
adc_handle[adc_unit].adc_cali_handle = NULL;
@@ -127,7 +159,7 @@ esp_err_t __analogChannelConfig(adc_bitwidth_t width, adc_attenuation_t atten, i
127159
log_e("adc_cali_create_scheme_curve_fitting failed with error: %d", err);
128160
return err;
129161
}
130-
#elif (!defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32P4)) //ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
162+
#elif ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
131163
log_d("Deleting ADC_UNIT_%d line cali handle", adc_unit);
132164
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
133165
if (err != ESP_OK) {
@@ -145,6 +177,9 @@ esp_err_t __analogChannelConfig(adc_bitwidth_t width, adc_attenuation_t atten, i
145177
log_e("adc_cali_create_scheme_line_fitting failed with error: %d", err);
146178
return err;
147179
}
180+
#else
181+
log_e("ADC Calibration scheme is not supported!");
182+
return ESP_ERR_NOT_SUPPORTED;
148183
#endif
149184
}
150185
}
@@ -310,13 +345,16 @@ uint32_t __analogReadMilliVolts(uint8_t pin) {
310345
.bitwidth = __analogWidth,
311346
};
312347
err = adc_cali_create_scheme_curve_fitting(&cali_config, &adc_handle[adc_unit].adc_cali_handle);
313-
#elif (!defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32P4)) //ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
348+
#elif ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
314349
adc_cali_line_fitting_config_t cali_config = {
315350
.unit_id = adc_unit,
316351
.bitwidth = __analogWidth,
317352
.atten = __analogAttenuation,
318353
};
319354
err = adc_cali_create_scheme_line_fitting(&cali_config, &adc_handle[adc_unit].adc_cali_handle);
355+
#else
356+
log_e("ADC Calibration scheme is not supported!");
357+
return value;
320358
#endif
321359
if (err != ESP_OK) {
322360
log_e("adc_cali_create_scheme_x failed!");
@@ -360,7 +398,7 @@ static uint8_t __adcContinuousAtten = ADC_11db;
360398
static uint8_t __adcContinuousWidth = SOC_ADC_DIGI_MAX_BITWIDTH;
361399

362400
static uint8_t used_adc_channels = 0;
363-
adc_continuous_data_t *adc_result = NULL;
401+
adc_continuous_result_t *adc_result = NULL;
364402

365403
static bool adcContinuousDetachBus(void *adc_unit_number) {
366404
adc_unit_t adc_unit = (adc_unit_t)adc_unit_number - 1;
@@ -379,11 +417,14 @@ static bool adcContinuousDetachBus(void *adc_unit_number) {
379417
if (err != ESP_OK) {
380418
return false;
381419
}
382-
#elif (!defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32P4))
420+
#elif ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
383421
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
384422
if (err != ESP_OK) {
385423
return false;
386424
}
425+
#else
426+
log_e("ADC Calibration scheme is not supported!");
427+
return false;
387428
#endif
388429
}
389430
adc_handle[adc_unit].adc_cali_handle = NULL;
@@ -536,7 +577,7 @@ bool analogContinuous(const uint8_t pins[], size_t pins_count, uint32_t conversi
536577
}
537578

538579
//Allocate and prepare result structure for adc readings
539-
adc_result = malloc(pins_count * sizeof(adc_continuous_data_t));
580+
adc_result = malloc(pins_count * sizeof(adc_continuous_result_t));
540581
for (int k = 0; k < pins_count; k++) {
541582
adc_result[k].pin = pins[k];
542583
adc_result[k].channel = channel[k];
@@ -552,13 +593,16 @@ bool analogContinuous(const uint8_t pins[], size_t pins_count, uint32_t conversi
552593
.bitwidth = __adcContinuousWidth,
553594
};
554595
err = adc_cali_create_scheme_curve_fitting(&cali_config, &adc_handle[adc_unit].adc_cali_handle);
555-
#elif (!defined(CONFIG_IDF_TARGET_ESP32H2) && !defined(CONFIG_IDF_TARGET_ESP32P4)) //ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
596+
#elif ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
556597
adc_cali_line_fitting_config_t cali_config = {
557598
.unit_id = adc_unit,
558599
.bitwidth = __adcContinuousWidth,
559600
.atten = __adcContinuousAtten,
560601
};
561602
err = adc_cali_create_scheme_line_fitting(&cali_config, &adc_handle[adc_unit].adc_cali_handle);
603+
#else
604+
log_e("ADC Calibration scheme is not supported!");
605+
return false;
562606
#endif
563607
if (err != ESP_OK) {
564608
log_e("adc_cali_create_scheme_x failed!");
@@ -577,7 +621,7 @@ bool analogContinuous(const uint8_t pins[], size_t pins_count, uint32_t conversi
577621
return true;
578622
}
579623

580-
bool analogContinuousRead(adc_continuous_data_t **buffer, uint32_t timeout_ms) {
624+
bool analogContinuousRead(adc_continuous_result_t **buffer, uint32_t timeout_ms) {
581625
if (adc_handle[ADC_UNIT_1].adc_continuous_handle != NULL) {
582626
uint32_t bytes_read = 0;
583627
uint32_t read_raw[used_adc_channels];

cores/esp32/esp32-hal-adc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ typedef struct {
8686
uint8_t channel; /*!<ADC channel */
8787
int avg_read_raw; /*!<ADC average raw data */
8888
int avg_read_mvolts; /*!<ADC average voltage in mV */
89-
} adc_continuous_data_t;
89+
} adc_continuous_result_t;
9090

9191
/*
9292
* Setup ADC continuous peripheral
@@ -96,7 +96,7 @@ bool analogContinuous(const uint8_t pins[], size_t pins_count, uint32_t conversi
9696
/*
9797
* Read ADC continuous conversion data
9898
* */
99-
bool analogContinuousRead(adc_continuous_data_t **buffer, uint32_t timeout_ms);
99+
bool analogContinuousRead(adc_continuous_result_t **buffer, uint32_t timeout_ms);
100100

101101
/*
102102
* Start ADC continuous conversions

cores/esp32/esp32-hal-hosted.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "esp32-hal-hosted.h"
1919
#include "esp32-hal-log.h"
20+
#include "pins_arduino.h"
2021

2122
#include "esp_hosted.h"
2223
#include "esp_hosted_transport_config.h"

docs/en/api/adc.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ ADC Continuous mode is an API designed for performing analog conversions on mult
162162
with the feature of receiving a callback upon completion of these conversions to access the results.
163163

164164
This API allows you to specify the desired number of conversions per pin within a single cycle, along with its corresponding sampling rate.
165-
The outcome of the ``analogContinuousRead`` function is an array of ``adc_continuous_data_t`` structures.
165+
The outcome of the ``analogContinuousRead`` function is an array of ``adc_continuous_result_t`` structures.
166166
These structures hold both the raw average value and the average value in millivolts for each pin.
167167

168168
analogContinuous
@@ -186,7 +186,7 @@ If ``false`` is returned, error occurs and ADC continuous was not configured.
186186
analogContinuousRead
187187
^^^^^^^^^^^^^^^^^^^^
188188

189-
This function is used to read ADC continuous data to the result buffer. The result buffer is an array of ``adc_continuous_data_t``.
189+
This function is used to read ADC continuous data to the result buffer. The result buffer is an array of ``adc_continuous_result_t``.
190190

191191
.. code-block:: arduino
192192
@@ -195,13 +195,13 @@ This function is used to read ADC continuous data to the result buffer. The resu
195195
uint8_t channel; /*!<ADC channel */
196196
int avg_read_raw; /*!<ADC average raw data */
197197
int avg_read_mvolts; /*!<ADC average voltage in mV */
198-
} adc_continuous_data_t;
198+
} adc_continuous_result_t;
199199
200200
.. code-block:: arduino
201201
202-
bool analogContinuousRead(adc_continuous_data_t ** buffer, uint32_t timeout_ms);
202+
bool analogContinuousRead(adc_continuous_result_t ** buffer, uint32_t timeout_ms);
203203
204-
* ``buffer`` conversion result buffer to read from ADC in adc_continuous_data_t format.
204+
* ``buffer`` conversion result buffer to read from ADC in adc_continuous_result_t format.
205205
* ``timeout_ms`` time to wait for data in milliseconds.
206206

207207
This function will return ``true`` if reading is successful and ``buffer`` is filled with data.

idf_component.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ dependencies:
9696
rules:
9797
- if: "target not in [esp32c2, esp32p4]"
9898
espressif/cbor:
99-
version: "0.6.0~1"
99+
version: "0.6.1~4"
100100
rules:
101101
- if: "target not in [esp32c2, esp32p4]"
102102
espressif/qrcode:

0 commit comments

Comments
 (0)