From 8991c21d3069d76a99a52dc318ade40360042b38 Mon Sep 17 00:00:00 2001 From: Kees Bakker <kees@sodaq.com> Date: Sun, 6 Jan 2019 19:43:40 +0100 Subject: [PATCH] drivers/pulse_counter: refactor the prototypes of read funcs This change makes it more clear that the dev is modified in some of the read functions. Only pulse_counter_read_without_reset gets a const pointer argument. Also, use pulse_counter_t pointers instead of void pointers where possible. --- drivers/include/pulse_counter.h | 10 +++++----- drivers/pulse_counter/pulse_counter.c | 12 ++++++------ drivers/pulse_counter/pulse_counter_saul.c | 8 ++++++-- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/include/pulse_counter.h b/drivers/include/pulse_counter.h index 70c0b9cc24..1707b18fff 100644 --- a/drivers/include/pulse_counter.h +++ b/drivers/include/pulse_counter.h @@ -61,11 +61,11 @@ int pulse_counter_init(pulse_counter_t *dev, const pulse_counter_params_t *param /** * @brief Read and reset pulse counter value * - * @param[in] dev device descriptor of sensor + * @param[out] dev device descriptor of sensor * * @return Accumulated pulse counts */ -int16_t pulse_counter_read_with_reset(const void *dev); +int16_t pulse_counter_read_with_reset(pulse_counter_t *dev); /** * @brief Read pulse counter value @@ -74,14 +74,14 @@ int16_t pulse_counter_read_with_reset(const void *dev); * * @return Accumulated pulse counts */ -int16_t pulse_counter_read_without_reset(const void *dev); +int16_t pulse_counter_read_without_reset(const pulse_counter_t *dev); /** * @brief Reset pulse counter value * - * @param[in] dev device descriptor of sensor + * @param[out] dev device descriptor of sensor */ -void pulse_counter_reset(const void *dev); +void pulse_counter_reset(pulse_counter_t *dev); #ifdef __cplusplus } diff --git a/drivers/pulse_counter/pulse_counter.c b/drivers/pulse_counter/pulse_counter.c index 0a8fc10d61..b83091173b 100644 --- a/drivers/pulse_counter/pulse_counter.c +++ b/drivers/pulse_counter/pulse_counter.c @@ -55,24 +55,24 @@ int pulse_counter_init(pulse_counter_t *dev, const pulse_counter_params_t *param } /* Return the accumulated pulse counts and reset the count to zero */ -int16_t pulse_counter_read_with_reset(const void *dev) +int16_t pulse_counter_read_with_reset(pulse_counter_t *dev) { int16_t pulse_count_output = 0; int16_t reset_value = 0; /* Use atomic operations to avoid messing with IRQ flags */ - __atomic_exchange(&(((pulse_counter_t *)dev)->pulse_count), &reset_value, &pulse_count_output, __ATOMIC_SEQ_CST); + __atomic_exchange(&(dev->pulse_count), &reset_value, &pulse_count_output, __ATOMIC_SEQ_CST); return pulse_count_output; } /* Return the accumulated pulse counts */ -int16_t pulse_counter_read_without_reset(const void *dev) +int16_t pulse_counter_read_without_reset(const pulse_counter_t *dev) { - return ((pulse_counter_t *)dev)->pulse_count; + return dev->pulse_count; } /* Reset the pulse count value to zero */ -void pulse_counter_reset(const void *dev) +void pulse_counter_reset(pulse_counter_t *dev) { - ((pulse_counter_t *)dev)->pulse_count = 0; + dev->pulse_count = 0; } diff --git a/drivers/pulse_counter/pulse_counter_saul.c b/drivers/pulse_counter/pulse_counter_saul.c index 9b04b3a7ba..fe7c736f09 100644 --- a/drivers/pulse_counter/pulse_counter_saul.c +++ b/drivers/pulse_counter/pulse_counter_saul.c @@ -25,7 +25,9 @@ static int read_pulse_counter(const void *dev, phydat_t *res) { - res->val[0] = pulse_counter_read_with_reset(dev); + /* Using non-const dev !! */ + pulse_counter_t *mydev = (pulse_counter_t *)dev; + res->val[0] = pulse_counter_read_with_reset(mydev); res->unit = UNIT_NONE; res->scale = 0; return 1; @@ -33,7 +35,9 @@ static int read_pulse_counter(const void *dev, phydat_t *res) static int write_pulse_counter(const void *dev, phydat_t *data) { - pulse_counter_reset(dev); + /* Using non-const dev !! */ + pulse_counter_t *mydev = (pulse_counter_t *)dev; + pulse_counter_reset(mydev); (void) data; return 1; } -- GitLab