-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBMI055.h
138 lines (117 loc) · 3.81 KB
/
BMI055.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
///-------------------------------------------------------------------------------------------------
/// @file POC\BMI055.h.
///
/// @brief Declares the bmi 055 class
#pragma once
#include "I2CComponent.h"
#include <queue>
#include "Vector3d.h"
using namespace std;
///-------------------------------------------------------------------------------------------------
/// @class BMI055IMU
///
/// @brief A bmi 055 imu.
///
/// @author Benjamin
/// @date 28.09.2020
class BMI055IMU :
public I2CComponent
{
private:
unsigned int bandwidth_hz;
queue<unsigned char> avgBufferHealth;
public:
BMI055IMU(BasicPOCModule* pocModule, list<Component*>& componentList, unsigned int bandwidth_hz = 400);
void init();
void selfTest();
void getAccelerationData(queue<int>& accelerationX, queue<int>& accelerationY, queue<int>& accelerationZ);
char getTemperature();
float getAvgBufferHealth() const;
unsigned int getBandwidth_hz() const;
};
///-------------------------------------------------------------------------------------------------
/// @class BMI055Gyro
///
/// @brief A bmi 055 gyro.
///
/// @author Benjamin
/// @date 28.09.2020
class BMI055Gyro :
public I2CComponent {
private:
/// @brief The bandwidth Hz
unsigned int bandwidth_hz;
/// @brief The average buffer health
queue<unsigned char> avgBufferHealth;
/// @brief The rotation rate offset s
Vector3d<double> rotationRateOffset_s;
public:
///-------------------------------------------------------------------------------------------------
/// @fn BMI055Gyro::BMI055Gyro(BasicPOCModule* pocModule, list<Component*>& moduleList, unsigned int bandwidth_hz = 400);
///
/// @brief Constructor
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param [in,out] pocModule If non-null, the poc module.
/// @param [in,out] moduleList [in,out] If non-null, list of modules.
/// @param bandwidth_hz (Optional) The bandwidth Hz.
BMI055Gyro(BasicPOCModule* pocModule, list<Component*>& moduleList, unsigned int bandwidth_hz = 400);
///-------------------------------------------------------------------------------------------------
/// @fn void BMI055Gyro::init();
///
/// @brief Initializes this object
///
/// @author Benjamin
/// @date 28.09.2020
void init();
///-------------------------------------------------------------------------------------------------
/// @fn void BMI055Gyro::selfTest();
///
/// @brief Tests self
///
/// @author Benjamin
/// @date 28.09.2020
void selfTest();
///-------------------------------------------------------------------------------------------------
/// @fn void BMI055Gyro::getRotationRateData(queue<Vector3d<double>>& q);
///
/// @brief Gets rotation rate data
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param [in,out] q A queue<Vector3d<double>> to process.
void getRotationRateData(queue<Vector3d<double>>& q);
///-------------------------------------------------------------------------------------------------
/// @fn float BMI055Gyro::getAvgBufferHealth() const;
///
/// @brief Gets average buffer health
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @returns The average buffer health.
float getAvgBufferHealth() const;
///-------------------------------------------------------------------------------------------------
/// @fn Vector3d<double> BMI055Gyro::getRotationOffset() const;
///
/// @brief Gets rotation offset
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @returns The rotation offset.
Vector3d<double> getRotationOffset() const;
///-------------------------------------------------------------------------------------------------
/// @fn unsigned int BMI055Gyro::getBandwidth_hz() const;
///
/// @brief Gets bandwidth Hz
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @returns The bandwidth Hz.
unsigned int getBandwidth_hz() const;
};