From d9bee400187fd67abf2bed0a4272cd8b131b73e3 Mon Sep 17 00:00:00 2001 From: joeycastillo Date: Wed, 9 Oct 2024 00:30:41 -0400 Subject: [PATCH] rearrange LIS2DW functions in data sheet order --- watch-library/shared/driver/lis2dw.c | 76 ++++++++++++++-------------- watch-library/shared/driver/lis2dw.h | 24 ++++----- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/watch-library/shared/driver/lis2dw.c b/watch-library/shared/driver/lis2dw.c index 6ea50e1..b392702 100644 --- a/watch-library/shared/driver/lis2dw.c +++ b/watch-library/shared/driver/lis2dw.c @@ -101,19 +101,6 @@ uint16_t lis2dw_get_temperature(void) { return watch_i2c_read16(LIS2DW_ADDRESS, LIS2DW_REG_OUT_TEMP_L); } -void lis2dw_set_range(lis2dw_range_t range) { - uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & ~(LIS2DW_RANGE_16_G << 4); - uint8_t bits = range << 4; - - watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6, val | bits); -} - -lis2dw_range_t lis2dw_get_range(void) { - uint8_t retval = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & (LIS2DW_RANGE_16_G << 4); - retval >>= 4; - return (lis2dw_range_t)retval; -} - void lis2dw_set_data_rate(lis2dw_data_rate_t dataRate) { uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & ~(0b1111 << 4); uint8_t bits = dataRate << 4; @@ -125,16 +112,26 @@ lis2dw_data_rate_t lis2dw_get_data_rate(void) { return watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) >> 4; } -void lis2dw_set_filter_type(lis2dw_filter_t bwfilter) { - uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & ~(LIS2DW_CTRL6_VAL_FDS_HIGH); - uint8_t bits = bwfilter << 3; - watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6, val | bits); +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_filter_t lis2dw_get_filter_type(void) { - uint8_t retval = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & (LIS2DW_CTRL6_VAL_FDS_HIGH); - retval >>= 3; - return (lis2dw_filter_t)retval; +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; + + watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1, val | bits); +} + +lis2dw_low_power_mode_t lis2dw_get_low_power_mode(void) { + return watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & 0b11; } void lis2dw_set_bandwidth_filtering(lis2dw_bandwidth_filtering_mode_t bwfilter) { @@ -149,26 +146,29 @@ lis2dw_bandwidth_filtering_mode_t lis2dw_get_bandwidth_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; +void lis2dw_set_range(lis2dw_range_t range) { + uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & ~(LIS2DW_RANGE_16_G << 4); + uint8_t bits = range << 4; - watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1, val | bits); + watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6, val | bits); } -lis2dw_mode_t lis2dw_get_mode(void) { - return (lis2dw_mode_t)(watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & 0b1100) >> 2; +lis2dw_range_t lis2dw_get_range(void) { + uint8_t retval = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & (LIS2DW_RANGE_16_G << 4); + retval >>= 4; + return (lis2dw_range_t)retval; } -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; - - watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1, val | bits); +void lis2dw_set_filter_type(lis2dw_filter_t bwfilter) { + uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & ~(LIS2DW_CTRL6_VAL_FDS_HIGH); + uint8_t bits = bwfilter << 3; + watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6, val | bits); } -lis2dw_low_power_mode_t lis2dw_get_low_power_mode(void) { - return watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & 0b11; +lis2dw_filter_t lis2dw_get_filter_type(void) { + uint8_t retval = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6) & (LIS2DW_CTRL6_VAL_FDS_HIGH); + retval >>= 3; + return (lis2dw_filter_t)retval; } void lis2dw_set_low_noise_mode(bool on) { @@ -182,14 +182,14 @@ bool lis2dw_get_low_noise_mode(void) { return (watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & LIS2DW_CTRL6_VAL_LOW_NOISE) != 0; } -inline void lis2dw_disable_fifo(void) { - watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_FIFO_CTRL, LIS2DW_FIFO_CTRL_MODE_OFF); -} - inline void lis2dw_enable_fifo(void) { watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_FIFO_CTRL, LIS2DW_FIFO_CTRL_MODE_COLLECT_AND_STOP | LIS2DW_FIFO_CTRL_FTH); } +inline void lis2dw_disable_fifo(void) { + watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_FIFO_CTRL, LIS2DW_FIFO_CTRL_MODE_OFF); +} + bool lis2dw_read_fifo(lis2dw_fifo_t *fifo_data) { uint8_t temp = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_FIFO_SAMPLE); bool overrun = !!(temp & LIS2DW_FIFO_SAMPLE_OVERRUN); diff --git a/watch-library/shared/driver/lis2dw.h b/watch-library/shared/driver/lis2dw.h index 29bb283..9815c2c 100644 --- a/watch-library/shared/driver/lis2dw.h +++ b/watch-library/shared/driver/lis2dw.h @@ -299,38 +299,38 @@ lis2dw_acceleration_measurement_t lis2dw_get_acceleration_measurement(lis2dw_rea uint16_t lis2dw_get_temperature(void); -void lis2dw_set_range(lis2dw_range_t range); - -lis2dw_range_t lis2dw_get_range(void); - void lis2dw_set_data_rate(lis2dw_data_rate_t dataRate); lis2dw_data_rate_t lis2dw_get_data_rate(void); -void lis2dw_set_filter_type(lis2dw_filter_t filter); +void lis2dw_set_mode(lis2dw_mode_t mode); -lis2dw_filter_t lis2dw_get_filter_type(void); +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); void lis2dw_set_bandwidth_filtering(lis2dw_bandwidth_filtering_mode_t bwfilter); lis2dw_bandwidth_filtering_mode_t lis2dw_get_bandwidth_filtering(void); -void lis2dw_set_mode(lis2dw_mode_t mode); +void lis2dw_set_range(lis2dw_range_t range); -lis2dw_mode_t lis2dw_get_mode(void); +lis2dw_range_t lis2dw_get_range(void); -void lis2dw_set_low_power_mode(lis2dw_low_power_mode_t mode); +void lis2dw_set_filter_type(lis2dw_filter_t filter); -lis2dw_low_power_mode_t lis2dw_get_low_power_mode(void); +lis2dw_filter_t lis2dw_get_filter_type(void); void lis2dw_set_low_noise_mode(bool on); bool lis2dw_get_low_noise_mode(void); -void lis2dw_disable_fifo(void); - void lis2dw_enable_fifo(void); +void lis2dw_disable_fifo(void); + bool lis2dw_read_fifo(lis2dw_fifo_t *fifo_data); void lis2dw_clear_fifo(void); -- 2.39.5