summaryrefslogtreecommitdiff
path: root/src/drivers/Bma421.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Bma421.h')
-rw-r--r--src/drivers/Bma421.h26
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();