diff --git a/drivers/include/pulse_counter.h b/drivers/include/pulse_counter.h index 70c0b9cc24cf9428c9bed6dfd25c06a7f6ac7c38..1707b18fff91fe4ce8dde03773ab4f6bc7579910 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 0a8fc10d612cd6ab68586f7ac39073855f80526b..b83091173b7a3e08ecba0e22523828587be1a509 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 9b04b3a7ba2bb6352aae692401e5dcb3c26d29db..fe7c736f099bdbfd801cfdf4c191d707414da830 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; }