From 3392f73d360c46d2bd79eec2c530a78d9657cf8c Mon Sep 17 00:00:00 2001 From: Joey Castillo Date: Sat, 19 Feb 2022 13:11:47 -0500 Subject: lis2dw: add support for high performance mode --- watch-library/shared/driver/lis2dw.c | 11 +++++++++++ watch-library/shared/driver/lis2dw.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/watch-library/shared/driver/lis2dw.c b/watch-library/shared/driver/lis2dw.c index 1b1ecf11..318ea2e8 100644 --- a/watch-library/shared/driver/lis2dw.c +++ b/watch-library/shared/driver/lis2dw.c @@ -139,6 +139,17 @@ lis2dw_bandwidth_filtering_mode_t lis2dw_get_filtering(void) { return (lis2dw_bandwidth_filtering_mode_t)retval; } +void lis2dw_set_mode(lis2dw_mode_t mode) { + uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & ~(0b1100); + uint8_t bits = (mode << 2) & 0b1100; + + watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1, val | bits); +} + +lis2dw_mode_t lis2dw_get_mode(void) { + return (lis2dw_mode_t)(watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & 0b1100) >> 2; +} + void lis2dw_set_low_power_mode(lis2dw_low_power_mode_t mode) { uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & ~(0b11); uint8_t bits = mode & 0b11; diff --git a/watch-library/shared/driver/lis2dw.h b/watch-library/shared/driver/lis2dw.h index 83b0cfb1..ac5de929 100644 --- a/watch-library/shared/driver/lis2dw.h +++ b/watch-library/shared/driver/lis2dw.h @@ -291,6 +291,10 @@ void lis2dw_set_bandwidth_filtering(lis2dw_bandwidth_filtering_mode_t bwfilter); lis2dw_bandwidth_filtering_mode_t lis2dw_get_filtering(void); +void lis2dw_set_mode(lis2dw_mode_t mode); + +lis2dw_mode_t lis2dw_get_mode(void); + void lis2dw_set_low_power_mode(lis2dw_low_power_mode_t mode); lis2dw_low_power_mode_t lis2dw_get_low_power_mode(void); -- cgit v1.2.3