summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorMichele Bini <michele.bini@gmail.com>2022-03-27 10:11:34 (GMT)
committerMichele Bini <michele.bini@gmail.com>2022-03-27 10:11:34 (GMT)
commit4f81b59e2cd453c1a9422fb1f45d2cd27d52b2a3 (patch)
tree025c4a6cac1f059247ea5777c49ff56fd7bf2fb8 /src/drivers
parentc8694c78c6cc05ae09e862e7ecd09407c7a3c3b7 (diff)
Attempt to show temperature reading
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Bma421.cpp17
-rw-r--r--src/drivers/Bma421.h5
2 files changed, 19 insertions, 3 deletions
diff --git a/src/drivers/Bma421.cpp b/src/drivers/Bma421.cpp
index 2f60f42..c5d55cc 100644
--- a/src/drivers/Bma421.cpp
+++ b/src/drivers/Bma421.cpp
@@ -102,9 +102,7 @@ Bma421::Values Bma421::Process() {
uint32_t steps = 0;
bma423_step_counter_output(&steps, &bma);
- int32_t temperature;
- bma4_get_temperature(&temperature, BMA4_DEG, &bma);
- temperature = temperature / 1000;
+ RefreshTemperature();
uint8_t activity = 0;
bma423_activity_output(&activity, &bma);
@@ -112,6 +110,19 @@ Bma421::Values Bma421::Process() {
// X and Y axis are swapped because of the way the sensor is mounted in the PineTime
return {steps, data.y, data.x, data.z};
}
+
+void Bma421::RefreshTemperature() {
+ // uint8_t temperature_last_read_value;
+ // uint8_t temperature_last_result;
+ // uint8_t temperature_read_counter;
+ uint8_t data[BMA4_TEMP_DATA_SIZE] = { 0 };
+ temperature_last_result = bma4_read_regs(BMA4_TEMPERATURE_ADDR, data, BMA4_TEMP_DATA_SIZE, &bma);
+ if (temperature_last_result == BMA4_OK) {
+ temperature_last_read_value = data[BMA4_TEMP_BYTE];
+ temperature_read_counter++;
+ }
+}
+
bool Bma421::IsOk() const {
return isOk;
}
diff --git a/src/drivers/Bma421.h b/src/drivers/Bma421.h
index ace644b..1503acd 100644
--- a/src/drivers/Bma421.h
+++ b/src/drivers/Bma421.h
@@ -30,6 +30,11 @@ 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);