From ab553e44ac3375f357a460c61b3315561e366247 Mon Sep 17 00:00:00 2001
From: Moritz Perschke <moritz.perschke@uibk.ac.at>
Date: Fri, 29 Jul 2022 15:54:39 +0200
Subject: [PATCH] added basic implementation of abstract sensor class, scd30
 implementation of it and a file to define all pins

---
 client/client/include/forte_sensor.hpp | 13 +++++++++++++
 client/client/include/pinout.hpp       |  8 ++++++++
 client/client/lib/scd30/scd30.cpp      | 19 +++++++++++++++++++
 client/client/lib/scd30/scd30.hpp      | 16 ++++++++++++++++
 client/client/platformio.ini           |  2 ++
 5 files changed, 58 insertions(+)
 create mode 100644 client/client/include/forte_sensor.hpp
 create mode 100644 client/client/include/pinout.hpp
 create mode 100644 client/client/lib/scd30/scd30.cpp
 create mode 100644 client/client/lib/scd30/scd30.hpp

diff --git a/client/client/include/forte_sensor.hpp b/client/client/include/forte_sensor.hpp
new file mode 100644
index 0000000..8e030b9
--- /dev/null
+++ b/client/client/include/forte_sensor.hpp
@@ -0,0 +1,13 @@
+#ifndef _FORTE_SENSOR
+#define _FORTE_SENSOR
+
+class Forte_Sensor {
+    public:
+        virtual void* read_data() = 0;
+        virtual void setup() = 0;
+
+    private:
+
+};
+
+#endif
\ No newline at end of file
diff --git a/client/client/include/pinout.hpp b/client/client/include/pinout.hpp
new file mode 100644
index 0000000..9a9ad92
--- /dev/null
+++ b/client/client/include/pinout.hpp
@@ -0,0 +1,8 @@
+#ifndef _FORTE_PINOUT
+#define _FORTE_PINOUT
+
+// Pins for I2C
+#define I2C_SDA 18
+#define I2C_SCL 19
+
+#endif
\ No newline at end of file
diff --git a/client/client/lib/scd30/scd30.cpp b/client/client/lib/scd30/scd30.cpp
new file mode 100644
index 0000000..326de88
--- /dev/null
+++ b/client/client/lib/scd30/scd30.cpp
@@ -0,0 +1,19 @@
+#include "scd30.hpp"
+#include "Wire.h"
+#include <SparkFun_SCD30_Arduino_Library.h>
+
+void Forte_SCD30 :: setup(){
+    Wire.begin(I2C_SDA, I2C_SCL);
+    if(!airSensor.begin()){
+        // Sensor init went wrong
+        return;
+    }
+}
+
+float* Forte_SCD30 :: read_data(){
+    float data[3];
+    data[0] = airSensor.getCO2();
+    data[1] = airSensor.getTemperature();
+    data[2] = airSensor.getHumidity();
+    return data;
+}
\ No newline at end of file
diff --git a/client/client/lib/scd30/scd30.hpp b/client/client/lib/scd30/scd30.hpp
new file mode 100644
index 0000000..396e311
--- /dev/null
+++ b/client/client/lib/scd30/scd30.hpp
@@ -0,0 +1,16 @@
+#ifndef _SCD30
+#define _SCD30
+#include <forte_sensor.hpp>
+#include <pinout.hpp>
+#include <SparkFun_SCD30_Arduino_Library.h>
+
+class Forte_SCD30 : public Forte_Sensor{
+    public:
+        void setup();
+        float* read_data();
+
+    private:
+        SCD30 airSensor;
+};
+
+#endif
\ No newline at end of file
diff --git a/client/client/platformio.ini b/client/client/platformio.ini
index e36a50f..12980ea 100644
--- a/client/client/platformio.ini
+++ b/client/client/platformio.ini
@@ -12,3 +12,5 @@
 platform = espressif32
 board = esp32-c3-devkitm-1
 framework = arduino
+lib_deps = sparkfun/SparkFun SCD30 Arduino Library@^1.0.18
+    Wire
-- 
GitLab