This is an automated email from the ASF dual-hosted git repository.

janc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit 26a9a5263b526f9869b8057a99be0759d601c8b7
Author: Miguel Azevedo <miguella...@gmail.com>
AuthorDate: Thu Feb 27 19:28:47 2020 +0000

    adc_nrf52: Fix buffer size when initializing buffers.
---
 hw/drivers/adc/adc_nrf52/src/adc_nrf52.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/hw/drivers/adc/adc_nrf52/src/adc_nrf52.c 
b/hw/drivers/adc/adc_nrf52/src/adc_nrf52.c
index 44cb266..7b1398a 100644
--- a/hw/drivers/adc/adc_nrf52/src/adc_nrf52.c
+++ b/hw/drivers/adc/adc_nrf52/src/adc_nrf52.c
@@ -449,6 +449,7 @@ nrf52_adc_sample(struct adc_dev *dev)
     int cnum;
     int cnum_last = 0;
     int used_chans = 0;
+    int size;
 
     if (nrf_saadc_busy_check(NRF_SAADC)) {
         return OS_EBUSY;
@@ -478,8 +479,8 @@ nrf52_adc_sample(struct adc_dev *dev)
     }
 
     nrf_saadc_resolution_set(NRF_SAADC, g_drv_instance.resolution);
-    nrf_saadc_buffer_init(NRF_SAADC, g_drv_instance.primary_buf,
-                          g_drv_instance.primary_size);
+    size = g_drv_instance.primary_size / sizeof(nrf_saadc_value_t);
+    nrf_saadc_buffer_init(NRF_SAADC, g_drv_instance.primary_buf, size);
 
     nrf_saadc_event_clear(NRF_SAADC, NRF_SAADC_EVENT_END);
     nrf_saadc_event_clear(NRF_SAADC, NRF_SAADC_EVENT_CALIBRATEDONE);
@@ -592,9 +593,9 @@ nrf52_adc_size_buffer(struct adc_dev *dev, int chans, int 
samples)
 void
 nrf52_saadc_irq_handler(void)
 {
-    adc_event_type_t ev = ADC_EVENT_CALIBRATED;
     void *buf = NULL;
     int bufsize = 0;
+    int size;
 
     if (global_adc_dev == NULL || !global_adc_dev->ad_event_handler_func) {
         ++nrf52_saadc_stats.saadc_events_failed;
@@ -613,26 +614,25 @@ nrf52_saadc_irq_handler(void)
             g_drv_instance.secondary_buf = NULL;
             g_drv_instance.secondary_size = 0;
 
-            nrf_saadc_buffer_init(NRF_SAADC,
-                                  g_drv_instance.primary_buf,
-                                  g_drv_instance.primary_size);
+            size = g_drv_instance.primary_size / sizeof(nrf_saadc_value_t);
+            nrf_saadc_buffer_init(NRF_SAADC, g_drv_instance.primary_buf, size);
         } else {
             nrf_saadc_int_disable(NRF_SAADC, NRF_SAADC_INT_ALL);
             nrf_saadc_task_trigger(NRF_SAADC, NRF_SAADC_TASK_STOP);
             nrf_saadc_disable(NRF_SAADC);
         }
 
-
-        ev = ADC_EVENT_RESULT;
         global_adc_dev->ad_event_handler_func(global_adc_dev,
                                               
global_adc_dev->ad_event_handler_arg,
-                                              ev, buf, bufsize);
+                                              ADC_EVENT_RESULT,
+                                              buf, bufsize);
     } else if (nrf_saadc_event_check(NRF_SAADC, 
NRF_SAADC_EVENT_CALIBRATEDONE)) {
         nrf_saadc_event_clear(NRF_SAADC, NRF_SAADC_EVENT_CALIBRATEDONE);
 
         global_adc_dev->ad_event_handler_func(global_adc_dev,
                                               
global_adc_dev->ad_event_handler_arg,
-                                              ev, buf, bufsize);
+                                              ADC_EVENT_CALIBRATED,
+                                              buf, bufsize);
 
         nrf_saadc_task_trigger(NRF_SAADC, NRF_SAADC_TASK_STOP);
         nrf_saadc_task_trigger(NRF_SAADC, NRF_SAADC_TASK_START);

Reply via email to