Skip to content

Commit 0faeb63

Browse files
committed
Add set/get gyro/accelerometer rate API's, and map more BMI160 enums
1 parent 38f928f commit 0faeb63

File tree

2 files changed

+165
-5
lines changed

2 files changed

+165
-5
lines changed

libraries/CurieImu/src/CurieImu.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,26 @@ bool CurieImuClass::begin()
5757
return (CURIE_IMU_CHIP_ID == getDeviceID());
5858
}
5959

60+
int CurieImuClass::getGyroRate()
61+
{
62+
return BMI160Class::getGyroRate();
63+
}
64+
65+
void CurieImuClass::setGyroRate(int rate)
66+
{
67+
BMI160Class::setGyroRate(rate);
68+
}
69+
70+
int CurieImuClass::getAccelerometerRate()
71+
{
72+
return getAccelRate();
73+
}
74+
75+
void CurieImuClass::setAccelerometerRate(int rate)
76+
{
77+
setAccelRate(rate);
78+
}
79+
6080
int CurieImuClass::getGyroRange()
6181
{
6282
return getFullScaleGyroRange();

libraries/CurieImu/src/CurieImu.h

Lines changed: 145 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ typedef enum {
7474
* @see setAccelerometerRange()
7575
*/
7676
typedef enum {
77-
CURIE_IMU_ACCEL_RANGE_2G = BMI160_ACCEL_RANGE_2G,
78-
CURIE_IMU_ACCEL_RANGE_4G = BMI160_ACCEL_RANGE_4G,
79-
CURIE_IMU_ACCEL_RANGE_8G = BMI160_ACCEL_RANGE_8G,
77+
CURIE_IMU_ACCELEROMETER_RANGE_2G = BMI160_ACCEL_RANGE_2G,
78+
CURIE_IMU_ACCELEROMETER_RANGE_4G = BMI160_ACCEL_RANGE_4G,
79+
CURIE_IMU_ACCELEROMETER_RANGE_8G = BMI160_ACCEL_RANGE_8G,
8080
CURIE_IMU_ACCEL_RANGE_16G = BMI160_ACCEL_RANGE_16G
81-
} CurieIMUAccelRange;
81+
} CurieIMUAccelerometerRange;
8282

8383
/**
8484
* Gyroscope Sensitivity Range options
@@ -92,6 +92,36 @@ typedef enum {
9292
CURIE_IMU_GYRO_RANGE_125 = BMI160_GYRO_RANGE_125
9393
} CurieIMUGyroRange;
9494

95+
/**
96+
* Accelerometer Output Data Rate options
97+
* @see setAccelerometerRate()
98+
*/
99+
typedef enum {
100+
CURIE_IMU_ACCELEROMETER_RATE_25_2HZ = BMI160_ACCEL_RATE_25_2HZ,
101+
CURIE_IMU_ACCELEROMETER_RATE_25HZ = BMI160_ACCEL_RATE_25HZ,
102+
CURIE_IMU_ACCELEROMETER_RATE_50HZ = BMI160_ACCEL_RATE_50HZ,
103+
CURIE_IMU_ACCELEROMETER_RATE_100HZ = BMI160_ACCEL_RATE_100HZ,
104+
CURIE_IMU_ACCELEROMETER_RATE_200HZ = BMI160_ACCEL_RATE_200HZ,
105+
CURIE_IMU_ACCELEROMETER_RATE_400HZ = BMI160_ACCEL_RATE_400HZ,
106+
CURIE_IMU_ACCELEROMETER_RATE_800HZ = BMI160_ACCEL_RATE_800HZ,
107+
CURIE_IMU_ACCELEROMETER_RATE_1600HZ = BMI160_ACCEL_RATE_1600HZ
108+
} CurieIMUAccelRate;
109+
110+
/**
111+
* Gyroscope Output Data Rate options
112+
* @see setGyroRate()
113+
*/
114+
typedef enum {
115+
CURIE_IMU_GYRO_RATE_25HZ = BMI160_GYRO_RATE_25HZ,
116+
CURIE_IMU_GYRO_RATE_50HZ = BMI160_GYRO_RATE_50HZ,
117+
CURIE_IMU_GYRO_RATE_100HZ = BMI160_GYRO_RATE_100HZ,
118+
CURIE_IMU_GYRO_RATE_200HZ = BMI160_GYRO_RATE_200HZ,
119+
CURIE_IMU_GYRO_RATE_400HZ = BMI160_GYRO_RATE_400HZ,
120+
CURIE_IMU_GYRO_RATE_800HZ = BMI160_GYRO_RATE_800HZ,
121+
CURIE_IMU_GYRO_RATE_1600HZ = BMI160_GYRO_RATE_1600HZ,
122+
CURIE_IMU_GYRO_RATE_3200HZ = BMI160_GYRO_RATE_3200HZ
123+
} CurieIMUGyroRate;
124+
95125
/**
96126
* Step Detection Mode options
97127
* @see setStepDetectionMode()
@@ -100,9 +130,113 @@ typedef enum {
100130
CURIE_IMU_STEP_MODE_NORMAL = BMI160_STEP_MODE_NORMAL,
101131
CURIE_IMU_STEP_MODE_SENSITIVE = BMI160_STEP_MODE_SENSITIVE,
102132
CURIE_IMU_STEP_MODE_ROBUST = BMI160_STEP_MODE_ROBUST,
103-
CURIE_IMU_STEP_MODE_UNKNOWN = BMI160_STEP_MODE_UNKNOWN,
133+
CURIE_IMU_STEP_MODE_UNKNOWN = BMI160_STEP_MODE_UNKNOWN
104134
} CurieIMUStepMode;
105135

136+
/**
137+
* Tap Detection Shock Duration options
138+
* @see setDetectionThreshold(CURIE_IMU_TAP, ...)
139+
*/
140+
typedef enum {
141+
CURIE_IMU_TAP_SHOCK_DURATION_50MS = BMI160_TAP_SHOCK_DURATION_50MS,
142+
CURIE_IMU_TAP_SHOCK_DURATION_75MS = BMI160_TAP_SHOCK_DURATION_75MS
143+
} CurieIMUTapShockDuration;
144+
145+
/**
146+
* Tap Detection Quiet Duration options
147+
* @see setDetectionThreshold(CURIE_IMU_TAP_QUIET, ...)
148+
*/
149+
typedef enum {
150+
CURIE_IMU_TAP_QUIET_DURATION_30MS = BMI160_TAP_QUIET_DURATION_30MS,
151+
CURIE_IMU_TAP_QUIET_DURATION_20MS = BMI160_TAP_QUIET_DURATION_20MS
152+
} CurieIMUTapQuietDuration;
153+
154+
/**
155+
* Double-Tap Detection Duration options
156+
* @see setDetectionThreshold(CURIE_IMU_DOUBLE_TAP, ...)
157+
*/
158+
typedef enum {
159+
CURIE_IMU_DOUBLE_TAP_DURATION_50MS = BMI160_DOUBLE_TAP_DURATION_50MS,
160+
CURIE_IMU_DOUBLE_TAP_DURATION_100MS = BMI160_DOUBLE_TAP_DURATION_100MS,
161+
CURIE_IMU_DOUBLE_TAP_DURATION_150MS = BMI160_DOUBLE_TAP_DURATION_150MS,
162+
CURIE_IMU_DOUBLE_TAP_DURATION_200MS = BMI160_DOUBLE_TAP_DURATION_200MS,
163+
CURIE_IMU_DOUBLE_TAP_DURATION_250MS = BMI160_DOUBLE_TAP_DURATION_250MS,
164+
CURIE_IMU_DOUBLE_TAP_DURATION_375MS = BMI160_DOUBLE_TAP_DURATION_375MS,
165+
CURIE_IMU_DOUBLE_TAP_DURATION_500MS = BMI160_DOUBLE_TAP_DURATION_500MS,
166+
CURIE_IMU_DOUBLE_TAP_DURATION_700MS = BMI160_DOUBLE_TAP_DURATION_700MS
167+
} CurieIMUDoubleTapDuration;
168+
169+
/**
170+
* Zero-Motion Detection Duration options
171+
* @see setDetectionThreshold(CURIE_IMU_ZERO_MOTION, ...)
172+
*/
173+
typedef enum {
174+
CURIE_IMU_ZERO_MOTION_DURATION_1_28S = BMI160_ZERO_MOTION_DURATION_1_28S,
175+
CURIE_IMU_ZERO_MOTION_DURATION_2_56S = BMI160_ZERO_MOTION_DURATION_2_56S,
176+
CURIE_IMU_ZERO_MOTION_DURATION_3_84S = BMI160_ZERO_MOTION_DURATION_3_84S,
177+
CURIE_IMU_ZERO_MOTION_DURATION_5_12S = BMI160_ZERO_MOTION_DURATION_5_12S,
178+
CURIE_IMU_ZERO_MOTION_DURATION_6_40S = BMI160_ZERO_MOTION_DURATION_6_40S,
179+
CURIE_IMU_ZERO_MOTION_DURATION_7_68S = BMI160_ZERO_MOTION_DURATION_7_68S,
180+
CURIE_IMU_ZERO_MOTION_DURATION_8_96S = BMI160_ZERO_MOTION_DURATION_8_96S,
181+
CURIE_IMU_ZERO_MOTION_DURATION_10_24S = BMI160_ZERO_MOTION_DURATION_10_24S,
182+
CURIE_IMU_ZERO_MOTION_DURATION_11_52S = BMI160_ZERO_MOTION_DURATION_11_52S,
183+
CURIE_IMU_ZERO_MOTION_DURATION_12_80S = BMI160_ZERO_MOTION_DURATION_12_80S,
184+
CURIE_IMU_ZERO_MOTION_DURATION_14_08S = BMI160_ZERO_MOTION_DURATION_14_08S,
185+
CURIE_IMU_ZERO_MOTION_DURATION_15_36S = BMI160_ZERO_MOTION_DURATION_15_36S,
186+
CURIE_IMU_ZERO_MOTION_DURATION_16_64S = BMI160_ZERO_MOTION_DURATION_16_64S,
187+
CURIE_IMU_ZERO_MOTION_DURATION_17_92S = BMI160_ZERO_MOTION_DURATION_17_92S,
188+
CURIE_IMU_ZERO_MOTION_DURATION_19_20S = BMI160_ZERO_MOTION_DURATION_19_20S,
189+
CURIE_IMU_ZERO_MOTION_DURATION_20_48S = BMI160_ZERO_MOTION_DURATION_20_48S,
190+
CURIE_IMU_ZERO_MOTION_DURATION_25_60S = BMI160_ZERO_MOTION_DURATION_25_60S,
191+
CURIE_IMU_ZERO_MOTION_DURATION_30_72S = BMI160_ZERO_MOTION_DURATION_30_72S,
192+
CURIE_IMU_ZERO_MOTION_DURATION_35_84S = BMI160_ZERO_MOTION_DURATION_35_84S,
193+
CURIE_IMU_ZERO_MOTION_DURATION_40_96S = BMI160_ZERO_MOTION_DURATION_40_96S,
194+
CURIE_IMU_ZERO_MOTION_DURATION_46_08S = BMI160_ZERO_MOTION_DURATION_46_08S,
195+
CURIE_IMU_ZERO_MOTION_DURATION_51_20S = BMI160_ZERO_MOTION_DURATION_51_20S,
196+
CURIE_IMU_ZERO_MOTION_DURATION_56_32S = BMI160_ZERO_MOTION_DURATION_56_32S,
197+
CURIE_IMU_ZERO_MOTION_DURATION_61_44S = BMI160_ZERO_MOTION_DURATION_61_44S,
198+
CURIE_IMU_ZERO_MOTION_DURATION_66_56S = BMI160_ZERO_MOTION_DURATION_66_56S,
199+
CURIE_IMU_ZERO_MOTION_DURATION_71_68S = BMI160_ZERO_MOTION_DURATION_71_68S,
200+
CURIE_IMU_ZERO_MOTION_DURATION_76_80S = BMI160_ZERO_MOTION_DURATION_76_80S,
201+
CURIE_IMU_ZERO_MOTION_DURATION_81_92S = BMI160_ZERO_MOTION_DURATION_81_92S,
202+
CURIE_IMU_ZERO_MOTION_DURATION_87_04S = BMI160_ZERO_MOTION_DURATION_87_04S,
203+
CURIE_IMU_ZERO_MOTION_DURATION_92_16S = BMI160_ZERO_MOTION_DURATION_92_16S,
204+
CURIE_IMU_ZERO_MOTION_DURATION_97_28S = BMI160_ZERO_MOTION_DURATION_97_28S,
205+
CURIE_IMU_ZERO_MOTION_DURATION_102_40S = BMI160_ZERO_MOTION_DURATION_102_40S,
206+
CURIE_IMU_ZERO_MOTION_DURATION_112_64S = BMI160_ZERO_MOTION_DURATION_112_64S,
207+
CURIE_IMU_ZERO_MOTION_DURATION_122_88S = BMI160_ZERO_MOTION_DURATION_122_88S,
208+
CURIE_IMU_ZERO_MOTION_DURATION_133_12S = BMI160_ZERO_MOTION_DURATION_133_12S,
209+
CURIE_IMU_ZERO_MOTION_DURATION_143_36S = BMI160_ZERO_MOTION_DURATION_143_36S,
210+
CURIE_IMU_ZERO_MOTION_DURATION_153_60S = BMI160_ZERO_MOTION_DURATION_153_60S,
211+
CURIE_IMU_ZERO_MOTION_DURATION_163_84S = BMI160_ZERO_MOTION_DURATION_163_84S,
212+
CURIE_IMU_ZERO_MOTION_DURATION_174_08S = BMI160_ZERO_MOTION_DURATION_174_08S,
213+
CURIE_IMU_ZERO_MOTION_DURATION_184_32S = BMI160_ZERO_MOTION_DURATION_184_32S,
214+
CURIE_IMU_ZERO_MOTION_DURATION_194_56S = BMI160_ZERO_MOTION_DURATION_194_56S,
215+
CURIE_IMU_ZERO_MOTION_DURATION_204_80S = BMI160_ZERO_MOTION_DURATION_204_80S,
216+
CURIE_IMU_ZERO_MOTION_DURATION_215_04S = BMI160_ZERO_MOTION_DURATION_215_04S,
217+
CURIE_IMU_ZERO_MOTION_DURATION_225_28S = BMI160_ZERO_MOTION_DURATION_225_28S,
218+
CURIE_IMU_ZERO_MOTION_DURATION_235_52S = BMI160_ZERO_MOTION_DURATION_235_52S,
219+
CURIE_IMU_ZERO_MOTION_DURATION_245_76S = BMI160_ZERO_MOTION_DURATION_245_76S,
220+
CURIE_IMU_ZERO_MOTION_DURATION_256_00S = BMI160_ZERO_MOTION_DURATION_256_00S,
221+
CURIE_IMU_ZERO_MOTION_DURATION_266_24S = BMI160_ZERO_MOTION_DURATION_266_24S,
222+
CURIE_IMU_ZERO_MOTION_DURATION_276_48S = BMI160_ZERO_MOTION_DURATION_276_48S,
223+
CURIE_IMU_ZERO_MOTION_DURATION_286_72S = BMI160_ZERO_MOTION_DURATION_286_72S,
224+
CURIE_IMU_ZERO_MOTION_DURATION_296_96S = BMI160_ZERO_MOTION_DURATION_296_96S,
225+
CURIE_IMU_ZERO_MOTION_DURATION_307_20S = BMI160_ZERO_MOTION_DURATION_307_20S,
226+
CURIE_IMU_ZERO_MOTION_DURATION_317_44S = BMI160_ZERO_MOTION_DURATION_317_44S,
227+
CURIE_IMU_ZERO_MOTION_DURATION_327_68S = BMI160_ZERO_MOTION_DURATION_327_68S,
228+
CURIE_IMU_ZERO_MOTION_DURATION_337_92S = BMI160_ZERO_MOTION_DURATION_337_92S,
229+
CURIE_IMU_ZERO_MOTION_DURATION_348_16S = BMI160_ZERO_MOTION_DURATION_348_16S,
230+
CURIE_IMU_ZERO_MOTION_DURATION_358_40S = BMI160_ZERO_MOTION_DURATION_358_40S,
231+
CURIE_IMU_ZERO_MOTION_DURATION_368_64S = BMI160_ZERO_MOTION_DURATION_368_64S,
232+
CURIE_IMU_ZERO_MOTION_DURATION_378_88S = BMI160_ZERO_MOTION_DURATION_378_88S,
233+
CURIE_IMU_ZERO_MOTION_DURATION_389_12S = BMI160_ZERO_MOTION_DURATION_389_12S,
234+
CURIE_IMU_ZERO_MOTION_DURATION_399_36S = BMI160_ZERO_MOTION_DURATION_399_36S,
235+
CURIE_IMU_ZERO_MOTION_DURATION_409_60S = BMI160_ZERO_MOTION_DURATION_409_60S,
236+
CURIE_IMU_ZERO_MOTION_DURATION_419_84S = BMI160_ZERO_MOTION_DURATION_419_84S,
237+
CURIE_IMU_ZERO_MOTION_DURATION_430_08S = BMI160_ZERO_MOTION_DURATION_430_08S
238+
} CurieImuZeroMotionDuration;
239+
106240
/* Note that this CurieImuClass class inherits methods from the BMI160Class which
107241
* is defined in BMI160.h. BMI160Class provides methods for configuring and
108242
* accessing features of the BMI160 IMU device. This CurieImuClass extends that
@@ -119,6 +253,12 @@ class CurieImuClass : public BMI160Class {
119253
public:
120254
bool begin(void);
121255

256+
int getGyroRate();
257+
void setGyroRate(int rate);
258+
259+
int getAccelerometerRate();
260+
void setAccelerometerRate(int rate);
261+
122262
int getGyroRange();
123263
void setGyroRange(int range);
124264
int getAccelerometerRange();

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy