38 lines
820 B
C++
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);
|
|
}
|
|
} |