* MHP30 move to I2C Bit Banging * Fixup Accelerometer drivers so all can use I2CBB * No STM32 I2C driver anymore * TS100 on I2CBB * Miniware on BB * Fixup S60 build * format format
44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
/*
|
|
* BMA223.hpp
|
|
*
|
|
* Created on: 18 Sep. 2020
|
|
* Author: Ralim
|
|
*/
|
|
|
|
#ifndef CORE_DRIVERS_SC7A20_HPP_
|
|
#define CORE_DRIVERS_SC7A20_HPP_
|
|
#include "BSP.h"
|
|
#include "I2C_Wrapper.hpp"
|
|
#include "SC7A20_defines.h"
|
|
#include "accelerometers_common.h"
|
|
|
|
class SC7A20 {
|
|
public:
|
|
static bool detect();
|
|
static bool initalize();
|
|
// 1 = rh, 2,=lh, 8=flat
|
|
static Orientation getOrientation() {
|
|
uint8_t val = ((ACCEL_I2C_CLASS::I2C_RegisterRead(isInImitationMode ? SC7A20_ADDRESS2 : SC7A20_ADDRESS, SC7A20_INT2_SOURCE) >> 2) - 1);
|
|
if (val == 1) {
|
|
#ifdef SC7_ORI_FLIP
|
|
return Orientation::ORIENTATION_RIGHT_HAND;
|
|
#else
|
|
return Orientation::ORIENTATION_LEFT_HAND;
|
|
#endif
|
|
} else if (val == 4 || val == 0) {
|
|
#ifdef SC7_ORI_FLIP
|
|
return Orientation::ORIENTATION_LEFT_HAND;
|
|
#else
|
|
return Orientation::ORIENTATION_RIGHT_HAND;
|
|
#endif
|
|
} else
|
|
return Orientation::ORIENTATION_FLAT;
|
|
}
|
|
static void getAxisReadings(int16_t &x, int16_t &y, int16_t &z);
|
|
|
|
private:
|
|
static bool isInImitationMode;
|
|
};
|
|
|
|
#endif /* CORE_DRIVERS_BMA223_HPP_ */
|