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_ */