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)