RUI3 (RAK Unified Interface 3) - RAK4631
rak1904.h
Go to the documentation of this file.
1 #ifndef __RAK_1904_H__
2 #define __RAK_1904_H_
3 
4 #include "Wire.h"
5 #include "wiring_time.h"
6 
7 // values for commInterface
8 #define I2C_MODE 0
9 
10 // Return values
11 typedef enum {
18  // ...
20 
21 class rak1904Core {
22  public:
23  rak1904Core(uint8_t);
24  rak1904Core(uint8_t, uint8_t);
25  ~rak1904Core() = default;
26 
27  uint8_t getAddress();
28 
30 
31  RAK1904_status readRegisterRegion(uint8_t *, uint8_t, uint8_t);
32 
33  RAK1904_status readRegister(uint8_t *, uint8_t);
34 
35  RAK1904_status readRegisterInt16(int16_t *, uint8_t offset);
36 
37  RAK1904_status writeRegister(uint8_t, uint8_t);
38 
39  private:
40  uint8_t commInterface;
41  uint8_t I2CAddress;
42 };
43 
45  public:
46  // ADC and Temperature settings
47  uint8_t adcEnabled;
48  uint8_t tempEnabled;
49 
50  // Accelerometer settings
51  uint16_t accelSampleRate; // Hz. Can be:
52  // 0,1,10,25,50,100,200,400,1600,5000
53  // Hz
54  uint8_t accelRange; // Max G force readable. Can be: 2, 4, 8,
55  //
56  // 16
57 
58  uint8_t xAccelEnabled;
59  uint8_t yAccelEnabled;
60  uint8_t zAccelEnabled;
61 
62  // Fifo settings
63  uint8_t fifoEnabled;
64  uint8_t fifoMode; // can be 0x0,0x1,0x2,0x3
65  uint8_t fifoThreshold;
66 };
67 
68 class rak1904:public rak1904Core {
69  public:
70 #ifdef RAK5010_EVB
71 
75 #endif
76 
85  bool init(void);
86 
95  bool update(void);
96 
105  float x(void);
106 
115  float y(void);
116 
125  float z(void);
133 #ifdef RAK5010_EVB
134  rak1904(uint8_t busType = I2C_MODE, uint8_t inputArg = 0x19);
135 #else
136  rak1904(uint8_t busType = I2C_MODE, uint8_t inputArg = 0x18);
137 #endif
138 
139  private:
140  float bufX;
141  float bufY;
142  float bufZ;
143 
144  // IMU setting
145  rak1904Setting settings;
146 
147  // Error checking
148  uint16_t allOnesCounter;
149  uint16_t nonSuccessCounter;
150 
151  RAK1904_status begin(void);
152  void applySettings(void);
153 
154  // Returns the raw bits from the sensor cast as 16-bit signed integers
155  int16_t readRawAccelX(void);
156  int16_t readRawAccelY(void);
157  int16_t readRawAccelZ(void);
158 
159  // Returns the values as floats. Inside, this calls readRaw___();
160  float readFloatAccelX(void);
161  float readFloatAccelY(void);
162  float readFloatAccelZ(void);
163 
164  float calcAccel(int16_t);
165 
166 
167 };
168 
169 #endif // end RAK1904
Definition: rak1904.h:68
RAK1904_status readRegisterInt16(int16_t *, uint8_t offset)
Definition: rak1904.h:21
uint8_t tempEnabled
Definition: rak1904.h:48
#define I2C_MODE
Definition: rak1904.h:8
RAK1904_status beginCore(void)
uint16_t accelSampleRate
Definition: rak1904.h:51
uint8_t accelRange
Definition: rak1904.h:54
RAK1904_status readRegisterRegion(uint8_t *, uint8_t, uint8_t)
Definition: rak1904.h:15
uint8_t fifoEnabled
Definition: rak1904.h:63
uint8_t fifoMode
Definition: rak1904.h:64
uint8_t xAccelEnabled
Definition: rak1904.h:58
Definition: rak1904.h:16
uint8_t adcEnabled
Definition: rak1904.h:47
RAK1904_status writeRegister(uint8_t, uint8_t)
Definition: rak1904.h:44
uint8_t getAddress()
Definition: rak1904.h:13
uint8_t fifoThreshold
Definition: rak1904.h:65
Definition: rak1904.h:14
Definition: rak1904.h:17
uint8_t yAccelEnabled
Definition: rak1904.h:59
Definition: rak1904.h:12
~rak1904Core()=default
uint8_t zAccelEnabled
Definition: rak1904.h:60
RAK1904_status
Definition: rak1904.h:11
RAK1904_status readRegister(uint8_t *, uint8_t)
rak1904Core(uint8_t)