From d8edf6dd4e2658ef9321eca744cdf6dae5d3c1bb Mon Sep 17 00:00:00 2001 From: Kees Bakker <kees@sodaq.com> Date: Sun, 6 Jan 2019 16:56:17 +0100 Subject: [PATCH] drivers/lsm6dsl: eliminate and correct casts Converting phydat_t* to lsm6dsl_3d_data_t* is not correct, but it happened to just work because the first struct member of phydat_t will be used. Furthermore, casting &res[0] to int16_t* is wrong. Again, it just happened to work. --- drivers/lsm6dsl/lsm6dsl_saul.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/lsm6dsl/lsm6dsl_saul.c b/drivers/lsm6dsl/lsm6dsl_saul.c index 0894cc1964..a1476e9b07 100644 --- a/drivers/lsm6dsl/lsm6dsl_saul.c +++ b/drivers/lsm6dsl/lsm6dsl_saul.c @@ -25,7 +25,7 @@ static int read_acc(const void *dev, phydat_t *res) { - int ret = lsm6dsl_read_acc((const lsm6dsl_t *)dev, (lsm6dsl_3d_data_t *)res); + int ret = lsm6dsl_read_acc((const lsm6dsl_t *)dev, (lsm6dsl_3d_data_t *)res->val); if (ret < 0) { return -ECANCELED; } @@ -38,7 +38,7 @@ static int read_acc(const void *dev, phydat_t *res) static int read_gyro(const void *dev, phydat_t *res) { - int ret = lsm6dsl_read_gyro((const lsm6dsl_t *)dev, (lsm6dsl_3d_data_t *)res); + int ret = lsm6dsl_read_gyro((const lsm6dsl_t *)dev, (lsm6dsl_3d_data_t *)res->val); if (ret < 0) { return -ECANCELED; } @@ -51,7 +51,7 @@ static int read_gyro(const void *dev, phydat_t *res) static int read_temp(const void *dev, phydat_t *res) { - if (lsm6dsl_read_temp((const lsm6dsl_t *)dev, (int16_t *)&res[0]) < 0) { + if (lsm6dsl_read_temp((const lsm6dsl_t *)dev, &res->val[0]) < 0) { return -ECANCELED; } res->scale = -2; -- GitLab