61 lines
976 B
C++
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
|
|
|