Skip to content

Commit 9a5006e

Browse files
committed
Remove problematic calloc
1 parent 93fade2 commit 9a5006e

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

ports/esp32s2/common-hal/analogio/AnalogIn.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434

3535
#include "shared-bindings/microcontroller/Pin.h"
3636

37+
#include <string.h>
38+
3739
#define DEFAULT_VREF 1100
3840
#define NO_OF_SAMPLES 64
3941
#define ATTENUATION ADC_ATTEN_DB_11
@@ -66,11 +68,14 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
6668
adc1_config_channel_atten((adc1_channel_t)self->pin->adc_channel, ATTENUATION);
6769
} else if (self->pin->adc_index == ADC_UNIT_2) {
6870
adc2_config_channel_atten((adc2_channel_t)self->pin->adc_channel, ATTENUATION);
71+
} else {
72+
mp_raise_ValueError(translate("Invalid Pin"));
6973
}
7074

7175
// Automatically select calibration process depending on status of efuse
72-
esp_adc_cal_characteristics_t *adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));
73-
esp_adc_cal_characterize(self->pin->adc_index, ATTENUATION, DATA_WIDTH, DEFAULT_VREF, adc_chars);
76+
esp_adc_cal_characteristics_t adc_chars;
77+
memset(&adc_chars, 0, sizeof(adc_chars));
78+
esp_adc_cal_characterize(self->pin->adc_index, ATTENUATION, DATA_WIDTH, DEFAULT_VREF, &adc_chars);
7479

7580
uint32_t adc_reading = 0;
7681
//Multisampling
@@ -89,7 +94,7 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
8994
adc_reading /= NO_OF_SAMPLES;
9095

9196
// This corrects non-linear regions of the ADC range with a LUT, so it's a better reading than raw
92-
uint32_t voltage = esp_adc_cal_raw_to_voltage(adc_reading, adc_chars);
97+
uint32_t voltage = esp_adc_cal_raw_to_voltage(adc_reading, &adc_chars);
9398
return voltage * ((1 << 16) - 1)/3300;
9499
}
95100

0 commit comments

Comments
 (0)