First integration of the motion sensor (bma 421) : step counting + wake on wrist rotation + app to see the value of the 3 axis in "real time".

This commit is contained in:
Jean-François Milants
2021-03-31 19:47:27 +02:00
parent 04fc33e2d4
commit 68bdaee1cc
27 changed files with 12344 additions and 26 deletions

43
src/drivers/Bma421.h Normal file
View File

@@ -0,0 +1,43 @@
#pragma once
#include <drivers/Bma421_C/bma4_defs.h>
namespace Pinetime {
namespace Drivers {
class TwiMaster;
class Bma421 {
public:
struct Values {
uint32_t steps;
int16_t x;
int16_t y;
int16_t z;
};
Bma421(TwiMaster& twiMaster, uint8_t twiAddress);
Bma421(const Bma421&) = delete;
Bma421& operator=(const Bma421&) = delete;
Bma421(Bma421&&) = delete;
Bma421& operator=(Bma421&&) = delete;
void Init();
void Reset();
Values Process();
void Read(uint8_t registerAddress, uint8_t *buffer, size_t size);
void Write(uint8_t registerAddress, const uint8_t *data, size_t size);
void OnIrq();
uint32_t GetNbInterrupts() const {return nbInterrupts;}
private:
TwiMaster& twiMaster;
uint8_t twiAddress;
struct bma4_dev bma;
struct bma4_accel_config accel_conf;
static constexpr uint8_t deviceAddress = 0x18;
uint32_t nbInterrupts = 0;
};
}
}