Files
defrost_v2/TemperatureThread.cpp

38 lines
820 B
C++

#include "TemperatureThread.h"
#include "libdiff.h"
#include <unistd.h>
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);
mainlog.LogString("TemperatureThread: received from command: " + value);
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);
}
}