You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2019/09/23 14:03:31 UTC
[mynewt-core] 02/02: sensors: Fix endian problem in ms58xx drivers
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 7fa937509aabcc33db9e94caac8b1b1f862c5421
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Mon Sep 23 13:10:07 2019 +0200
sensors: Fix endian problem in ms58xx drivers
In ms5840_read_eeprom() and ms5837_read_eeprom() functions
code assumed that big endian data coming from sensor needs
to be converted to little endian format which may not be the
case on big endian platforms.
---
hw/drivers/sensors/ms5837/src/ms5837.c | 3 +--
hw/drivers/sensors/ms5840/src/ms5840.c | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/drivers/sensors/ms5837/src/ms5837.c b/hw/drivers/sensors/ms5837/src/ms5837.c
index 8772f18..6d2b93c 100644
--- a/hw/drivers/sensors/ms5837/src/ms5837.c
+++ b/hw/drivers/sensors/ms5837/src/ms5837.c
@@ -445,8 +445,7 @@ ms5837_read_eeprom(struct sensor_itf *itf, uint16_t *coeff)
goto err;
}
- payload[idx] = (((payload[idx] & 0xFF00) >> 8)|
- ((payload[idx] & 0x00FF) << 8));
+ payload[idx] = be16toh(payload[idx]);
}
rc = ms5837_crc_check(payload, (payload[MS5837_IDX_CRC] & 0xF000) >> 12);
diff --git a/hw/drivers/sensors/ms5840/src/ms5840.c b/hw/drivers/sensors/ms5840/src/ms5840.c
index a348caf..214052f 100644
--- a/hw/drivers/sensors/ms5840/src/ms5840.c
+++ b/hw/drivers/sensors/ms5840/src/ms5840.c
@@ -432,8 +432,7 @@ ms5840_read_eeprom(struct sensor_itf *itf, uint16_t *coeff)
goto err;
}
- payload[idx] = (((payload[idx] & 0xFF00) >> 8)|
- ((payload[idx] & 0x00FF) << 8));
+ payload[idx] = be16toh(payload[idx]);
}
rc = ms5840_crc_check(payload, (payload[MS5840_IDX_CRC] & 0xF000) >> 12);