Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b01775e

Browse filesBrowse files
authored
Fix ADC detach bus calibration handle error when not existing. (espressif#8932)
* Add check if adc calibration habdle exists before deleting * check also on adc continous detach
1 parent 57e8e50 commit b01775e
Copy full SHA for b01775e

File tree

Expand file treeCollapse file tree

1 file changed

+22
-19
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+22
-19
lines changed

‎cores/esp32/esp32-hal-adc.c

Copy file name to clipboardExpand all lines: cores/esp32/esp32-hal-adc.c
+22-19Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,19 @@ static bool adcDetachBus(void * pin){
6969
return false;
7070
}
7171
adc_handle[adc_unit].adc_oneshot_handle = NULL;
72+
if(adc_handle[adc_unit].adc_cali_handle != NULL){
7273
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
73-
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
74-
if(err != ESP_OK){
75-
return false;
76-
}
74+
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
75+
if(err != ESP_OK){
76+
return false;
77+
}
7778
#elif !defined(CONFIG_IDF_TARGET_ESP32H2)
78-
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
79-
if(err != ESP_OK){
80-
return false;
81-
}
79+
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
80+
if(err != ESP_OK){
81+
return false;
82+
}
8283
#endif
84+
}
8385
adc_handle[adc_unit].adc_cali_handle = NULL;
8486
}
8587
return true;
@@ -220,6 +222,7 @@ esp_err_t __analogInit(uint8_t pin, adc_channel_t channel, adc_unit_t adc_unit){
220222
return err;
221223
}
222224
}
225+
perimanSetBusDeinit(ESP32_BUS_TYPE_ADC_ONESHOT, adcDetachBus);
223226

224227
if(!perimanSetPinBus(pin, ESP32_BUS_TYPE_ADC_ONESHOT, (void *)(pin+1), adc_unit, channel)){
225228
adcDetachBus((void *)(pin+1));
@@ -236,7 +239,6 @@ esp_err_t __analogInit(uint8_t pin, adc_channel_t channel, adc_unit_t adc_unit){
236239
log_e("adc_oneshot_config_channel failed with error: %d", err);
237240
return err;
238241
}
239-
perimanSetBusDeinit(ESP32_BUS_TYPE_ADC_ONESHOT, adcDetachBus);
240242
return ESP_OK;
241243
}
242244

@@ -377,18 +379,19 @@ static bool adcContinuousDetachBus(void * adc_unit_number){
377379
return false;
378380
}
379381
adc_handle[adc_unit].adc_continuous_handle = NULL;
380-
381-
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
382-
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
383-
if(err != ESP_OK){
384-
return false;
385-
}
382+
if(adc_handle[adc_unit].adc_cali_handle != NULL){
383+
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
384+
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
385+
if(err != ESP_OK){
386+
return false;
387+
}
386388
#elif !defined(CONFIG_IDF_TARGET_ESP32H2)
387-
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
388-
if(err != ESP_OK){
389-
return false;
390-
}
389+
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
390+
if(err != ESP_OK){
391+
return false;
392+
}
391393
#endif
394+
}
392395
adc_handle[adc_unit].adc_cali_handle = NULL;
393396

394397
//set all used pins to INIT state

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.