From 1d2d1ce6bcbfd912f5de9b0c539a34fdfdaf9acc Mon Sep 17 00:00:00 2001 From: rkcf Date: Tue, 21 Feb 2023 05:40:34 -0600 Subject: [PATCH] Refactor: move adc cleanup steps to seperate function and made adc handles global Refs: #4 --- src/main/esp32_eurorack_generic.c | 40 +++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/esp32_eurorack_generic.c b/src/main/esp32_eurorack_generic.c index e2fdb89..84ff232 100644 --- a/src/main/esp32_eurorack_generic.c +++ b/src/main/esp32_eurorack_generic.c @@ -16,33 +16,41 @@ /* ADC channels */ static adc_channel_t channel[4] = {ADC_CHANNEL_3, ADC_CHANNEL_5, ADC_CHANNEL_8, ADC_CHANNEL_9}; +/* ADC handles */ +static adc_continuous_handle_t adc_handle; +static adc_cali_handle_t adc_cali_handle; + static const char *TAG = "EERG"; +/* Deinitializes ADC handles */ +static void adc_cleanup(void) +{ + ESP_LOGI(TAG, "Cleaning up ADC"); + ESP_ERROR_CHECK(adc_continuous_stop(adc_handle)); + ESP_ERROR_CHECK(adc_continuous_deinit(adc_handle)); + ESP_ERROR_CHECK(adc_cali_delete_scheme_curve_fitting(adc_cali_handle)); +} + /* Initializes calibration driver of internal 12bit ADC */ -static void adc_cali_init(adc_cali_handle_t *handle) +static void adc_cali_init(void) { ESP_LOGI(TAG, "Initializing ADC calibration driver"); - adc_cali_handle_t cali_handle; /* Create and apply calibration driver configuration */ adc_cali_curve_fitting_config_t cali_config = { .unit_id = ADC_UNIT_1, .atten = ADC_ATTEN_DB_0, .bitwidth = ADC_BITWIDTH_DEFAULT }; - ESP_ERROR_CHECK(adc_cali_create_scheme_curve_fitting(&cali_config, &cali_handle)); - - /* Update caller's handle */ - *handle = cali_handle; + ESP_ERROR_CHECK(adc_cali_create_scheme_curve_fitting(&cali_config, &adc_cali_handle)); } /* Initializes internal 12bit ADC */ -static void adc_cont_init(adc_continuous_handle_t *handle) +static void adc_cont_init(void) { ESP_LOGI(TAG, "Initializing ADC continuous mode driver"); /* Create continuous mode driver handle */ - adc_continuous_handle_t adc_handle = NULL; adc_continuous_handle_cfg_t adc_handle_config = { .max_store_buf_size = 1024, .conv_frame_size = 100 @@ -67,26 +75,18 @@ static void adc_cont_init(adc_continuous_handle_t *handle) } adc_config.adc_pattern = adc_pattern; ESP_ERROR_CHECK(adc_continuous_config(adc_handle, & adc_config)); - - /* Update caller's handle */ - *handle = adc_handle; } void app_main(void) { /* Initialize internal ADC */ - adc_cali_handle_t adc_cali_handle = NULL; - adc_continuous_handle_t adc_handle = NULL; /* Initialize calibration driver */ - adc_cali_init(&adc_cali_handle); + adc_cali_init(); /* Initialize continuous driver */ - adc_cont_init(&adc_handle); - + adc_cont_init(); /* Start the continuous driver */ ESP_ERROR_CHECK(adc_continuous_start(adc_handle)); - /* Cleanup adc */ - ESP_ERROR_CHECK(adc_continuous_stop(adc_handle)); - ESP_ERROR_CHECK(adc_continuous_deinit(adc_handle)); - ESP_ERROR_CHECK(adc_cali_delete_scheme_curve_fitting(adc_cali_handle)); + /* Cleanup ADC */ + adc_cleanup(); }