humireader/humireader.h

61 lines
976 B
C++

#ifndef __HUMIREADER_H__
#define __HUMIREADER_H__
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <functional>
struct HumiResult {
int sensorITemp;
int sensorATemp;
int sensorIRelHumi;
int sensorARelHumi;
bool winCouldBeOpened;
};
class HumiReader {
public:
explicit HumiReader(const std::string devPath);
~HumiReader();
//void setCallback(void (*cb)(const HumiResult&));
void setCallback(std::function<bool(const HumiResult&)> cb);
void run();
private:
int fd=-1;
bool cancelLoop;
std::string devPath;
//void (*cb)(const HumiResult&);
std::function<bool(const HumiResult&)> cb;
void closeDevice();
int setupDevice();
int parseLine(const char *buf);
bool hasIResult;
bool hasAResult;
HumiResult currentResult;
};
#endif