memset() and comments

This commit is contained in:
William Clark 2023-12-29 23:42:15 +00:00
parent 30508a8378
commit 365bb369bb
2 changed files with 13 additions and 28 deletions

View File

@ -47,16 +47,13 @@ int lis3dh_init(lis3dh_t *lis3dh) {
} }
} }
/* check WHO_AM_I to equal to 0x33 */
err |= lis3dh->dev.read(REG_WHO_AM_I, &result, 1); err |= lis3dh->dev.read(REG_WHO_AM_I, &result, 1);
if (result != 0x33) { if (result != 0x33) {
return 1; return 1;
} }
/* zero struct */ /* zero device struct */
lis3dh->acc.x = 0.0;
lis3dh->acc.y = 0.0;
lis3dh->acc.z = 0.0;
lis3dh->cfg.rate = 0; lis3dh->cfg.rate = 0;
lis3dh->cfg.range = 0; lis3dh->cfg.range = 0;
lis3dh->cfg.mode = 0; lis3dh->cfg.mode = 0;
@ -65,29 +62,13 @@ int lis3dh_init(lis3dh_t *lis3dh) {
lis3dh->cfg.fifo.trig = 0; lis3dh->cfg.fifo.trig = 0;
lis3dh->cfg.fifo.fth = 31; /* default watermark level. */ lis3dh->cfg.fifo.fth = 31; /* default watermark level. */
memset(&lis3dh->acc, 0, sizeof lis3dh->acc);
memset(&lis3dh->cfg.int1, 0, sizeof lis3dh->cfg.int1);
memset(&lis3dh->cfg.int2, 0, sizeof lis3dh->cfg.int2);
memset(&lis3dh->cfg.filter, 0, sizeof lis3dh->cfg.filter);
lis3dh->cfg.filter.mode = 0xFF; /* in use if neq 0xFF */ lis3dh->cfg.filter.mode = 0xFF; /* in use if neq 0xFF */
lis3dh->cfg.filter.cutoff = 0;
lis3dh->cfg.filter.fds = 1; /* bypass OFF by default */ lis3dh->cfg.filter.fds = 1; /* bypass OFF by default */
lis3dh->cfg.filter.click = 0;
lis3dh->cfg.filter.ia1 = 0;
lis3dh->cfg.filter.ia2 = 0;
lis3dh->cfg.int1.click = 0;
lis3dh->cfg.int1.ia1 = 0;
lis3dh->cfg.int1.ia2 = 0;
lis3dh->cfg.int1.drdy_zyxda = 0;
lis3dh->cfg.int1.drdy_321 = 0;
lis3dh->cfg.int1.wtm = 0;
lis3dh->cfg.int1.overrun = 0;
lis3dh->cfg.int1.latch = 0;
lis3dh->cfg.int2.click = 0;
lis3dh->cfg.int2.ia1 = 0;
lis3dh->cfg.int2.ia2 = 0;
lis3dh->cfg.int2.boot = 0;
lis3dh->cfg.int2.act = 0;
lis3dh->cfg.int2.polarity = 0;
lis3dh->cfg.int2.latch = 0;
err |= lis3dh_reset(lis3dh); err |= lis3dh_reset(lis3dh);

View File

@ -55,6 +55,7 @@
#define LIS3DH_FILTER_CUTOFF_1 0x03 /* lowest freq */ #define LIS3DH_FILTER_CUTOFF_1 0x03 /* lowest freq */
/* user provided functions, init and deinit can be set to NULL and won't be used */
struct lis3dh_device { struct lis3dh_device {
int (*init)(void); int (*init)(void);
int (*read)(uint8_t reg, uint8_t *dst, uint32_t size); int (*read)(uint8_t reg, uint8_t *dst, uint32_t size);
@ -63,6 +64,7 @@ struct lis3dh_device {
int (*deinit)(void); int (*deinit)(void);
}; };
/* config for INT2 trigger output */
struct lis3dh_int2_config { struct lis3dh_int2_config {
uint8_t click; /* CLICK interrupt */ uint8_t click; /* CLICK interrupt */
uint8_t ia1; /* IA1 interrupt */ uint8_t ia1; /* IA1 interrupt */
@ -73,6 +75,7 @@ struct lis3dh_int2_config {
uint8_t latch; /* latch interrupt until cleared */ uint8_t latch; /* latch interrupt until cleared */
}; };
/* config for INT1 trigger output */
struct lis3dh_int1_config { struct lis3dh_int1_config {
uint8_t click; /* CLICK interrupt */ uint8_t click; /* CLICK interrupt */
uint8_t ia1; /* IA1 interrupt */ uint8_t ia1; /* IA1 interrupt */
@ -84,6 +87,7 @@ struct lis3dh_int1_config {
uint8_t latch; /* latch interrupt until cleared */ uint8_t latch; /* latch interrupt until cleared */
}; };
/* config for high-pass filter */
struct lis3dh_filter_config { struct lis3dh_filter_config {
uint8_t mode; /* filter mode, reset behaviour */ uint8_t mode; /* filter mode, reset behaviour */
uint8_t cutoff; /* high-pass filter cutoff freq (~ ODR) */ uint8_t cutoff; /* high-pass filter cutoff freq (~ ODR) */
@ -93,6 +97,7 @@ struct lis3dh_filter_config {
uint8_t ia1; /* enable filter for AOI func on INT 1 */ uint8_t ia1; /* enable filter for AOI func on INT 1 */
}; };
/* config for FIFO */
struct lis3dh_fifo_config { struct lis3dh_fifo_config {
uint8_t fth; /* user-specified watermark level 0-32 */ uint8_t fth; /* user-specified watermark level 0-32 */
uint8_t trig; /* pin to trigger when watermark/overrun occurs */ uint8_t trig; /* pin to trigger when watermark/overrun occurs */
@ -109,6 +114,7 @@ struct lis3dh_config {
struct lis3dh_int2_config int2; struct lis3dh_int2_config int2;
}; };
/* data read not from FIFO is put here */
struct lis3dh_acceleration { struct lis3dh_acceleration {
float x; float x;
float y; float y;
@ -142,6 +148,4 @@ int lis3dh_clear_int1(lis3dh_t *lis3dh);
int lis3dh_clear_int2(lis3dh_t *lis3dh); int lis3dh_clear_int2(lis3dh_t *lis3dh);
int lis3dh_reference(lis3dh_t *lis3dh); int lis3dh_reference(lis3dh_t *lis3dh);
#endif #endif