38 lines
828 B
C++
38 lines
828 B
C++
/*
|
|
* BMA223.hpp
|
|
*
|
|
* Created on: 18 Sep. 2020
|
|
* Author: Ralim
|
|
*/
|
|
|
|
#ifndef CORE_DRIVERS_BMA223_HPP_
|
|
#define CORE_DRIVERS_BMA223_HPP_
|
|
#include "BMA223_defines.h"
|
|
#include "BSP.h"
|
|
#include "I2C_Wrapper.hpp"
|
|
|
|
class BMA223 {
|
|
public:
|
|
static bool detect();
|
|
static bool initalize();
|
|
// 1 = rh, 2,=lh, 8=flat
|
|
static Orientation getOrientation() {
|
|
uint8_t val = FRToSI2C::I2C_RegisterRead(BMA223_ADDRESS, BMA223_INT_STATUS_3);
|
|
val >>= 4; // we dont need high values
|
|
val &= 0b11;
|
|
if (val & 0b10) {
|
|
return ORIENTATION_FLAT;
|
|
} else {
|
|
return static_cast<Orientation>(!val);
|
|
}
|
|
// 0 = rhs
|
|
// 1 =lhs
|
|
// 2 & 3 == ignore
|
|
}
|
|
static void getAxisReadings(int16_t &x, int16_t &y, int16_t &z);
|
|
|
|
private:
|
|
};
|
|
|
|
#endif /* CORE_DRIVERS_BMA223_HPP_ */
|