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);