From f578fd2854a3effa1364d5dd6af7962cf20a25b9 Mon Sep 17 00:00:00 2001 From: RedHawk Date: Wed, 17 May 2023 11:31:39 +0300 Subject: [PATCH] temperature: Base for temperature thread --- source/shoh/.cproject | 6 ++++ source/shoh/src/peripherals/I2C.h | 5 ++- source/shoh/src/threads/master/Master.cpp | 4 +++ .../threads/temperature/SensorTempTC74.cpp | 11 +++++++ .../src/threads/temperature/SensorTempTC74.h | 21 ++++++++++++ .../src/threads/temperature/Temperature.cpp | 32 +++++++++++++++++++ .../src/threads/temperature/Temperature.h | 28 ++++++++++++++++ 7 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 source/shoh/src/threads/temperature/SensorTempTC74.cpp create mode 100644 source/shoh/src/threads/temperature/SensorTempTC74.h create mode 100644 source/shoh/src/threads/temperature/Temperature.cpp create mode 100644 source/shoh/src/threads/temperature/Temperature.h 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 @@ + @@ -208,6 +211,7 @@ + @@ -238,6 +242,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_ */