-
Notifications
You must be signed in to change notification settings - Fork 0
/
MicroMag.h
64 lines (51 loc) · 1.51 KB
/
MicroMag.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
#ifndef _MICROMAG_H
#define _MICROMAG_H
#include "SPI.h"
#define MM_PERIOD_32 0
#define MM_PERIOD_64 1
#define MM_PERIOD_128 2
#define MM_PERIOD_256 3
#define MM_PERIOD_512 4
#define MM_PERIOD_1024 5
#define MM_PERIOD_2048 6
#define MM_PERIOD_4096 7
class MicroMag
{
public:
enum modelTypes {
twoAxisModel = 2,
threeAxisModel = 3,
};
enum returnValues {
errorNoError = 0,
errorBadAxis = 1,
errorBadPeriod = 2,
errorTimeout = 3,
};
MicroMag(uint8_t ssPin, uint8_t drdyPin, uint8_t resetPin, uint8_t axes);
// Convenient helper functions to create the MicroMag object
inline static MicroMag MicroMag2(uint8_t ssPin, uint8_t drdyPin,
uint8_t resetPin) {
return MicroMag(ssPin, drdyPin, resetPin, twoAxisModel);
}
inline static MicroMag MicroMag3(uint8_t ssPin, uint8_t drdyPin,
uint8_t resetPin) {
return MicroMag(ssPin, drdyPin, resetPin, threeAxisModel);
}
MicroMag(const MicroMag& mm);
uint8_t begin(void) const;
uint8_t convert(uint8_t axis, uint8_t period) const;
int16_t getResult(void) const;
uint8_t read(uint8_t axis, uint8_t period, int16_t& result,
uint16_t timeout_us = 0) const;
uint8_t readHighPrec(uint8_t axis, int32_t& result,
uint16_t timeout_us = 0) const;
private:
uint8_t _axes; // 2 = MicroMag2, 3 = MicroMag3
uint8_t _ssPin;
uint8_t _drdyPin; // Use 0xff to indicate DRDY not wired up
uint8_t _resetPin;
// Do not allow default constructor; declare but do not define.
MicroMag(void);
};
#endif