]> git.earman.xyz Git - sensor-watch.git/commitdiff
lis2dw: add low power / low noise mode
authorJoey Castillo <joeycastillo@utexas.edu>
Sun, 9 Jan 2022 17:25:56 +0000 (12:25 -0500)
committerJoey Castillo <joeycastillo@utexas.edu>
Sun, 9 Jan 2022 17:25:56 +0000 (12:25 -0500)
watch-library/driver/lis2dw.c
watch-library/driver/lis2dw.h

index 4e506a6dd354d2f3092d72724c8bbd81271c2306..6e1ac56d8213e492286d1c01cc54cb38d7649ee1 100644 (file)
@@ -115,3 +115,25 @@ void lis2dw_set_data_rate(lis2dw_data_rate_t dataRate) {
 lis2dw_data_rate_t lis2dw_get_data_rate(void) {
     return watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) >> 4;
 }
+
+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_low_noise_mode(bool on) {
+    uint8_t val = watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & ~(LIS2DW_CTRL6_VAL_LOW_NOISE);
+    uint8_t bits = on ? LIS2DW_CTRL6_VAL_LOW_NOISE : 0;
+
+    watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1, val | bits);
+}
+
+bool lis2dw_get_low_noise_mode(void) {
+    return (watch_i2c_read8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1) & LIS2DW_CTRL6_VAL_LOW_NOISE) != 0;
+}
index 7a0e0cbb394ccb70eb3ced2478ea4ae247df2f5e..22b4484f97d6628a645fe27dd8554cfbf5354cf7 100644 (file)
@@ -254,4 +254,12 @@ void lis2dw_set_data_rate(lis2dw_data_rate_t dataRate);
 
 lis2dw_data_rate_t lis2dw_get_data_rate(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_low_noise_mode(bool on);
+
+bool lis2dw_get_low_noise_mode(void);
+
 #endif // LIS2DW_H