From 92597b36bbabedbc91972bcdbf362d988710e022 Mon Sep 17 00:00:00 2001 From: Bernd Giesecke Date: Mon, 17 Dec 2018 11:14:23 +0800 Subject: [PATCH] Sensor values mix up when using multiple sensors When using 2 (or more) sensors on the same device the sensor values read from the sensors can get mixed up. The struct sense is defined as a global and is reused from multiple instances of the MAX30105 class. Solution: Declare sense as class private: --- src/MAX30105.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/MAX30105.h b/src/MAX30105.h index 73a99c5..0dcace7 100644 --- a/src/MAX30105.h +++ b/src/MAX30105.h @@ -140,4 +140,17 @@ class MAX30105 { void readRevisionID(); void bitMask(uint8_t reg, uint8_t mask, uint8_t thing); + + #define STORAGE_SIZE 4 //Each long is 4 bytes so limit this to fit on your micro + typedef struct Record + { + uint32_t red[STORAGE_SIZE]; + uint32_t IR[STORAGE_SIZE]; + uint32_t green[STORAGE_SIZE]; + byte head; + byte tail; + } sense_struct; //This is our circular buffer of readings from the sensor + + sense_struct sense; + };