Moved measuring into separate thread (thus decreasing response to registers change)
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
#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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user