ICM42670 Portable Driver
Public API reference for the ICM-42670-P IMU driver
Loading...
Searching...
No Matches
ICM42670_apex.h
Go to the documentation of this file.
1
10#ifndef ICM42670_APEX_H
11#define ICM42670_APEX_H
12
13#include "ICM42670_driver.h"
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
22typedef enum {
23 ICM42670_APEX_ACTIVITY_UNKNOWN = 0U,
24 ICM42670_APEX_ACTIVITY_WALK = 1U,
25 ICM42670_APEX_ACTIVITY_RUN = 2U,
27
31typedef struct {
34
45
49typedef struct {
50 uint8_t wait_time_s;
52
56typedef struct {
57 uint16_t threshold_mg;
58 uint8_t sample_count;
60
64typedef struct {
65 uint16_t min_distance_cm;
66 uint16_t max_distance_cm;
67 uint16_t debounce_ms;
69
73typedef struct {
74 uint8_t detected;
77
81typedef struct {
82 uint16_t x_threshold_mg;
83 uint16_t y_threshold_mg;
84 uint16_t z_threshold_mg;
86
90typedef struct {
91 uint8_t x_detected;
92 uint8_t y_detected;
93 uint8_t z_detected;
95
102
117
128
137 const ICM42670_PedoConfig_t *pedo_config);
138
146
156 ICM42670_PedoData_t *pedo_data);
157
168 const ICM42670_TiltConfig_t *tilt_config);
169
177
186 uint8_t *tilt_detected);
187
198 const ICM42670_LowGConfig_t *low_g_config);
199
207
216 uint8_t *low_g_detected);
217
227 const ICM42670_FreeFallConfig_t *free_fall_config);
228
236
245 ICM42670_FreeFallData_t *free_fall_data);
246
257 const ICM42670_Config *config,
258 const ICM42670_WakeOnMotionConfig_t *wake_on_motion_config);
259
267
276 ICM42670_WakeOnMotionData_t *wake_on_motion_data);
277
287 const ICM42670_Config *config,
288 const ICM42670_SignificantMotionConfig_t *significant_motion_config);
289
297
306 uint8_t *significant_motion_detected);
307
319 ICM42670_ApexData_t *apex_data);
320
321#ifdef __cplusplus
322}
323#endif
324
325#endif /* ICM42670_APEX_H */
ICM42670_Status_t ICM42670_Read_Tilt(const ICM42670_Config *config, uint8_t *tilt_detected)
Read and clear the tilt event flag.
Definition ICM42670_apex.c:318
ICM42670_Status_t ICM42670_Disable_Low_G(const ICM42670_Config *config)
Disable low-g detection.
Definition ICM42670_apex.c:367
ICM42670_Status_t ICM42670_Disable_Significant_Motion(const ICM42670_Config *config)
Disable significant-motion detection.
Definition ICM42670_apex.c:558
ICM42670_Status_t ICM42670_Disable_Wake_On_Motion(const ICM42670_Config *config)
Disable wake-on-motion detection.
Definition ICM42670_apex.c:505
ICM42670_Status_t ICM42670_Read_Pedo(const ICM42670_Config *config, ICM42670_PedoData_t *pedo_data)
Read pedometer data and read-clear step status flags.
Definition ICM42670_apex.c:245
ICM42670_Status_t ICM42670_Read_Significant_Motion(const ICM42670_Config *config, uint8_t *significant_motion_detected)
Read and clear the significant-motion event flag.
Definition ICM42670_apex.c:564
ICM42670_Status_t ICM42670_Enable_Significant_Motion(const ICM42670_Config *config, const ICM42670_SignificantMotionConfig_t *significant_motion_config)
Significant Motion Detector detects significant motion based on accelerometer data.
Definition ICM42670_apex.c:533
ICM42670_Status_t ICM42670_Init_Apex(const ICM42670_Config *config)
Initialize the APEX DMP block before enabling tilt/pedometer features.
Definition ICM42670_apex.c:150
ICM42670_Status_t ICM42670_Disable_Pedo(const ICM42670_Config *config)
Disable pedometer reporting.
Definition ICM42670_apex.c:240
ICM42670_Status_t ICM42670_Enable_Free_Fall(const ICM42670_Config *config, const ICM42670_FreeFallConfig_t *free_fall_config)
Freefall detection triggers an interrupt when device freefall is detected and outputs freefall durati...
Definition ICM42670_apex.c:390
ICM42670_Status_t ICM42670_Read_Apex(const ICM42670_Config *config, ICM42670_ApexData_t *apex_data)
Read a combined APEX data snapshot.
Definition ICM42670_apex.c:582
ICM42670_Status_t ICM42670_Read_Low_G(const ICM42670_Config *config, uint8_t *low_g_detected)
Read and clear the low-g event flag.
Definition ICM42670_apex.c:372
ICM42670_Status_t ICM42670_Read_Free_Fall(const ICM42670_Config *config, ICM42670_FreeFallData_t *free_fall_data)
Read freefall data and read-clear the freefall event flag.
Definition ICM42670_apex.c:444
ICM42670_ApexActivity_t
Pedometer activity classification.
Definition ICM42670_apex.h:22
ICM42670_Status_t ICM42670_Disable_Tilt(const ICM42670_Config *config)
Disable tilt detection.
Definition ICM42670_apex.c:313
ICM42670_Status_t ICM42670_Disable_Free_Fall(const ICM42670_Config *config)
Disable freefall detection.
Definition ICM42670_apex.c:439
ICM42670_Status_t ICM42670_Enable_Wake_On_Motion(const ICM42670_Config *config, const ICM42670_WakeOnMotionConfig_t *wake_on_motion_config)
Wake on Motion detects motion when accelerometer samples exceed a programmable threshold....
Definition ICM42670_apex.c:471
ICM42670_Status_t ICM42670_Read_Wake_On_Motion(const ICM42670_Config *config, ICM42670_WakeOnMotionData_t *wake_on_motion_data)
Read and clear wake-on-motion axis flags.
Definition ICM42670_apex.c:509
ICM42670_Status_t ICM42670_Enable_Pedo(const ICM42670_Config *config, const ICM42670_PedoConfig_t *pedo_config)
Pedometer tracks step count and issues a step detect interrupt.
Definition ICM42670_apex.c:208
ICM42670_Status_t ICM42670_Enable_Low_G(const ICM42670_Config *config, const ICM42670_LowGConfig_t *low_g_config)
Low-g detection triggers an interrupt when the absolute value of the accelerometer combined axis fall...
Definition ICM42670_apex.c:337
ICM42670_Status_t ICM42670_Enable_Tilt(const ICM42670_Config *config, const ICM42670_TiltConfig_t *tilt_config)
Tilt detection issues an interrupt when the tilt angle exceeds 35 degrees for more than a programmabl...
Definition ICM42670_apex.c:288
Core ICM-42670-P configuration and sensor read API.
ICM42670_Status_t
Return codes used by the ICM-42670-P driver.
Definition ICM42670_driver.h:23
Combined APEX snapshot data.
Definition ICM42670_apex.h:109
uint8_t significant_motion_detected
Definition ICM42670_apex.h:115
ICM42670_WakeOnMotionData_t wake_on_motion
Definition ICM42670_apex.h:112
uint8_t tilt_detected
Definition ICM42670_apex.h:113
ICM42670_PedoData_t pedo
Definition ICM42670_apex.h:110
ICM42670_FreeFallData_t free_fall
Definition ICM42670_apex.h:111
uint8_t low_g_detected
Definition ICM42670_apex.h:114
Platform-independent driver configuration.
Definition ICM42670_driver.h:172
Freefall detection configuration.
Definition ICM42670_apex.h:64
uint16_t debounce_ms
Definition ICM42670_apex.h:67
uint16_t max_distance_cm
Definition ICM42670_apex.h:66
uint16_t min_distance_cm
Definition ICM42670_apex.h:65
Freefall output data.
Definition ICM42670_apex.h:73
uint16_t duration_samples
Definition ICM42670_apex.h:75
uint8_t detected
Definition ICM42670_apex.h:74
Low-g detection configuration.
Definition ICM42670_apex.h:56
uint8_t sample_count
Definition ICM42670_apex.h:58
uint16_t threshold_mg
Definition ICM42670_apex.h:57
Pedometer configuration.
Definition ICM42670_apex.h:31
uint8_t slow_walk_enable
Definition ICM42670_apex.h:32
Pedometer output data.
Definition ICM42670_apex.h:38
uint8_t overflow
Definition ICM42670_apex.h:43
uint8_t step_detected
Definition ICM42670_apex.h:42
uint16_t step_count
Definition ICM42670_apex.h:39
uint8_t cadence_raw
Definition ICM42670_apex.h:40
ICM42670_ApexActivity_t activity
Definition ICM42670_apex.h:41
Significant-motion sensitivity configuration.
Definition ICM42670_apex.h:99
uint8_t sensitivity_level
Definition ICM42670_apex.h:100
Tilt detection configuration.
Definition ICM42670_apex.h:49
uint8_t wait_time_s
Definition ICM42670_apex.h:50
Wake-on-motion threshold configuration.
Definition ICM42670_apex.h:81
uint16_t z_threshold_mg
Definition ICM42670_apex.h:84
uint16_t y_threshold_mg
Definition ICM42670_apex.h:83
uint16_t x_threshold_mg
Definition ICM42670_apex.h:82
Wake-on-motion output flags.
Definition ICM42670_apex.h:90
uint8_t x_detected
Definition ICM42670_apex.h:91
uint8_t y_detected
Definition ICM42670_apex.h:92
uint8_t z_detected
Definition ICM42670_apex.h:93