#include "TemperatureThread.h" #include "libdiff.h" #include TemperatureThread::TemperatureThread(const string &cmd) : cmd(cmd) { } string Read(FILE *f) { char buffer[256]; string result = ""; while (fgets(buffer, sizeof(buffer), f) != nullptr) { result += buffer; } return result; } void TemperatureThread::Run() { while (true) { float temperature = 1.5; auto output = popen(cmd.c_str(), "r"); if (output == nullptr) return; string value = Read(output); pclose(output); temperature = atof(value.c_str()); LockMutex(register_mutex); registers[REGISTER_CUR_TEMP] = (int)(temperature * 100); registers[REGISTER_SECONDARY_TEMP] = (int)(temperature * 100); ReleaseMutex(register_mutex); sleep(2); } }