summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoey Castillo <joeycastillo@utexas.edu>2022-02-19 14:22:23 -0500
committerJoey Castillo <joeycastillo@utexas.edu>2022-02-19 14:22:23 -0500
commit54f1873785e218c72c131623ecc93df1f71e08f7 (patch)
treef08b1d5487dc07c22a8bff22a98964113917318a
parent09f79f782faaf2383fb7eeb1845701675a4439c8 (diff)
downloadSensor-Watch-54f1873785e218c72c131623ecc93df1f71e08f7.tar.gz
Sensor-Watch-54f1873785e218c72c131623ecc93df1f71e08f7.tar.bz2
Sensor-Watch-54f1873785e218c72c131623ecc93df1f71e08f7.zip
documentation and such
-rw-r--r--movement/watch_faces/sensor/accelerometer_data_acquisition_face.c2
-rw-r--r--movement/watch_faces/sensor/accelerometer_data_acquisition_face.h26
-rw-r--r--watch-library/shared/driver/lis2dw.c10
3 files changed, 24 insertions, 14 deletions
diff --git a/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c b/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c
index ea50ad27..cf441031 100644
--- a/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c
+++ b/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <string.h>
#include "accelerometer_data_acquisition_face.h"
+#include "lis2dw.h"
static const char activity_types[][3] = {
"ID", // Idle
@@ -61,7 +62,6 @@ void accelerometer_data_acquisition_face_setup(movement_settings_t *settings, ui
state->beep_with_countdown = true;
state->countdown_length = 10;
}
- // Do any pin or peripheral setup here; this will be called whenever the watch wakes from deep sleep.
}
void accelerometer_data_acquisition_face_activate(movement_settings_t *settings, void *context) {
diff --git a/movement/watch_faces/sensor/accelerometer_data_acquisition_face.h b/movement/watch_faces/sensor/accelerometer_data_acquisition_face.h
index b3fdbbd7..e29b9909 100644
--- a/movement/watch_faces/sensor/accelerometer_data_acquisition_face.h
+++ b/movement/watch_faces/sensor/accelerometer_data_acquisition_face.h
@@ -35,28 +35,28 @@
typedef union {
struct {
union {
- int16_t record_type : 2;
- int16_t range : 2;
- int16_t temperature : 12;
+ int16_t record_type : 2; // see above, helps us identify record types when reading back
+ int16_t range : 2; // accelerometer range (see lis2dw_range_t)
+ int16_t temperature : 12; // raw value from the temperature sensor
} info;
- int8_t char1 : 8;
- int8_t char2 : 8;
- int32_t timestamp : 32;
+ int8_t char1 : 8; // First character of the activity type
+ int8_t char2 : 8; // Second character of the activity type
+ int32_t timestamp : 32; // UNIX timestamp for the measurement
} header;
struct {
union {
- int16_t mode : 2;
- int16_t accel : 14;
+ int16_t record_type : 2; // duplicate; this is the same field as info above
+ int16_t accel : 14; // X acceleration value, raw
} x;
union {
- int16_t lpmode : 2;
- int16_t accel : 14;
+ int16_t lpmode : 2; // low power mode (see lis2dw_low_power_mode_t)
+ int16_t accel : 14; // Y acceleration value, raw
} y;
union {
- int16_t filter : 2;
- int16_t accel : 14;
+ int16_t filter : 2; // bandwidth filtering selection (see lis2dw_bandwidth_filtering_mode_t)
+ int16_t accel : 14; // Z acceleration value, raw
} z;
- int32_t counter : 16;
+ int32_t counter : 16; // number of seconds since timestamp in header
} data;
uint64_t value;
} accelerometer_data_acquisition_record_t;
diff --git a/watch-library/shared/driver/lis2dw.c b/watch-library/shared/driver/lis2dw.c
index 0b788fca..744a686b 100644
--- a/watch-library/shared/driver/lis2dw.c
+++ b/watch-library/shared/driver/lis2dw.c
@@ -34,6 +34,16 @@ bool lis2dw_begin(void) {
// Enable block data update (output registers not updated until MSB and LSB have been read) and address autoincrement
watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL2, LIS2DW_CTRL2_VAL_BDU | LIS2DW_CTRL2_VAL_IF_ADD_INC);
+ // Parameters at startup:
+ // * Data rate 0 (powered down)
+ // * Low power mode enabled
+ // * LP mode 1 (12-bit)
+ // * Bandwidth filtering ODR/2
+ // * Low pass filter path
+ // * ±2g range
+ // * Low noise mode off
+ // * FIFO disabled
+
return true;
}