diff --git a/source/shoh/.cproject b/source/shoh/.cproject
index 1f9b41f..7436f16 100644
--- a/source/shoh/.cproject
+++ b/source/shoh/.cproject
@@ -55,6 +55,7 @@
+
@@ -88,6 +89,7 @@
+
@@ -109,6 +111,7 @@
+
@@ -208,6 +211,7 @@
+
@@ -238,6 +242,7 @@
+
@@ -260,6 +265,7 @@
+
diff --git a/source/shoh/src/peripherals/I2C.h b/source/shoh/src/peripherals/I2C.h
index 34a856b..6bf5016 100644
--- a/source/shoh/src/peripherals/I2C.h
+++ b/source/shoh/src/peripherals/I2C.h
@@ -14,9 +14,8 @@
struct I2C_config {
unsigned int device_number;
unsigned int speed;
- unsigned int clock_divider;
- unsigned int i2c_mode;
- I2C_config(unsigned int dn, unsigned int sp, unsigned int cd): device_number(dn), speed(sp), clock_divider(cd), i2c_mode(IOCON_SFI2C_EN) {};
+ unsigned int i2c_mode = IOCON_SFI2C_EN;
+// I2C_config(unsigned int dn, unsigned int sp, unsigned int cd): device_number(dn), speed(sp), i2c_mode(IOCON_SFI2C_EN) {};
};
class I2C {
diff --git a/source/shoh/src/threads/master/Master.cpp b/source/shoh/src/threads/master/Master.cpp
index a431323..040028a 100644
--- a/source/shoh/src/threads/master/Master.cpp
+++ b/source/shoh/src/threads/master/Master.cpp
@@ -13,6 +13,7 @@
#include "Manager.h"
#include "Logging.h"
#include "UserInterface.h"
+#include "Temperature.h"
#include "queue.h"
static const char* rotary_direction[] =
@@ -131,6 +132,9 @@ void thread_master(void* pvParams) {
manager->tm->createTask(thread_relay, "relay",
configMINIMAL_STACK_SIZE * 9,tskIDLE_PRIORITY + 1UL,
static_cast(manager));
+ manager->tm->createTask(thread_temperature, "temperature",
+ configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL,
+ static_cast(manager));
LOG_INFO("Master created tasks");
m.taskFunction();
}
diff --git a/source/shoh/src/threads/temperature/SensorTempTC74.cpp b/source/shoh/src/threads/temperature/SensorTempTC74.cpp
new file mode 100644
index 0000000..be4ee44
--- /dev/null
+++ b/source/shoh/src/threads/temperature/SensorTempTC74.cpp
@@ -0,0 +1,11 @@
+/*
+ * SensorTempTC74.cpp
+ *
+ * Created on: 16 May 2023
+ */
+
+#include "SensorTempTC74.h"
+
+SensorTempTC74::SensorTempTC74(I2C* pi2c) : _pi2c(pi2c) {}
+
+SensorTempTC74::~SensorTempTC74() {}
diff --git a/source/shoh/src/threads/temperature/SensorTempTC74.h b/source/shoh/src/threads/temperature/SensorTempTC74.h
new file mode 100644
index 0000000..c597b5b
--- /dev/null
+++ b/source/shoh/src/threads/temperature/SensorTempTC74.h
@@ -0,0 +1,21 @@
+/*
+ * SensorTempTC74.h
+ *
+ * Created on: 16 May 2023
+ */
+
+#ifndef THREADS_TEMPERATURE_SENSORTEMPTC74_H_
+#define THREADS_TEMPERATURE_SENSORTEMPTC74_H_
+
+#include "I2C.h"
+
+class SensorTempTC74 {
+public:
+ SensorTempTC74(I2C* pi2c);
+ virtual ~SensorTempTC74();
+ bool read();
+private:
+ I2C* _pi2c;
+};
+
+#endif /* THREADS_TEMPERATURE_SENSORTEMPTC74_H_ */
diff --git a/source/shoh/src/threads/temperature/Temperature.cpp b/source/shoh/src/threads/temperature/Temperature.cpp
new file mode 100644
index 0000000..3159962
--- /dev/null
+++ b/source/shoh/src/threads/temperature/Temperature.cpp
@@ -0,0 +1,32 @@
+/*
+ * Temperature.cpp
+ *
+ * Created on: 16 May 2023
+ */
+
+#include "Temperature.h"
+#include "SensorTempTC74.h"
+#include "Log.h"
+
+Temperature::Temperature(ThreadCommon::QueueManager* qm, I2C* pi2c) : _qm(qm), _pi2c(pi2c) {}
+
+Temperature::~Temperature() {}
+
+void Temperature::taskFunction()
+{
+ SensorTempTC74 ext_temp_sensor(this->_pi2c);
+ for (;;)
+ {
+
+ vTaskDelay(5000);
+ }
+}
+
+void thread_temperature(void* pvParams)
+{
+ ThreadCommon::CommonManagers * manager = static_cast(pvParams);
+ I2C_config conf{0x4a, 55000};
+ I2C i2c(conf);
+ Temperature t(manager->qm, &i2c);
+ t.taskFunction();
+}
diff --git a/source/shoh/src/threads/temperature/Temperature.h b/source/shoh/src/threads/temperature/Temperature.h
new file mode 100644
index 0000000..1fdbe7a
--- /dev/null
+++ b/source/shoh/src/threads/temperature/Temperature.h
@@ -0,0 +1,28 @@
+/*
+ * Temperature.h
+ *
+ * Created on: 16 May 2023
+ */
+
+#ifndef THREADS_TEMPERATURE_TEMPERATURE_H_
+#define THREADS_TEMPERATURE_TEMPERATURE_H_
+
+#include "FreeRTOS.h"
+#include "task.h"
+#include "ThreadCommon.h"
+#include "DigitalIoPin.h"
+#include "I2C.h"
+
+class Temperature {
+public:
+ Temperature(ThreadCommon::QueueManager* qm, I2C* pi2c);
+ virtual ~Temperature();
+ void taskFunction();
+private:
+ ThreadCommon::QueueManager* _qm;
+ I2C* _pi2c;
+};
+
+void thread_temperature(void* pvParams);
+
+#endif /* THREADS_TEMPERATURE_TEMPERATURE_H_ */