diff options
Diffstat (limited to 'src/drivers/Bma421.h')
| -rw-r--r-- | src/drivers/Bma421.h | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/drivers/Bma421.h b/src/drivers/Bma421.h index 1503acd..d753e8d 100644 --- a/src/drivers/Bma421.h +++ b/src/drivers/Bma421.h @@ -1,7 +1,11 @@ #pragma once #include <drivers/Bma421_C/bma4_defs.h> +#include <drivers/Bma421_C/bma423.h> namespace Pinetime { + namespace System { + class SystemTask; + } namespace Drivers { class TwiMaster; class Bma421 { @@ -30,17 +34,29 @@ namespace Pinetime { Values Process(); void ResetStepCounter(); - void RefreshTemperature(); - uint8_t temperature_last_read_value; - uint8_t temperature_last_result; - uint8_t temperature_read_counter; - void Read(uint8_t registerAddress, uint8_t* buffer, size_t size); void Write(uint8_t registerAddress, const uint8_t* data, size_t size); bool IsOk() const; DeviceTypes DeviceType() const; + void RefreshTemperature(); + uint8_t temperature_last_read_value = 0; + uint8_t temperature_last_result = 0; + uint8_t temperature_read_counter = 0; + + protected: + friend class Pinetime::System::SystemTask; + + inline int8_t getTemperature() { return temperature_last_read_value+23; } + + template <typename X, typename Y, typename Z> inline void ObtainAccel(X& x, Y& y, Z& z) { + struct bma4_accel data; + bma4_read_accel_xyz(&data, &bma); + // Modelled after Process(), x/y swapped + x = data.y; y = data.x; z = data.z; + } + private: void Reset(); |
