84 lines
1.9 KiB
C++
84 lines
1.9 KiB
C++
#pragma once
|
|
#include <ctime>
|
|
#include "Hardware.h"
|
|
#include "Identifier.h"
|
|
#include "Parameter.h"
|
|
#include <vector>
|
|
#include "Control.h"
|
|
#include "dll_macro.h"
|
|
class Visitor;
|
|
struct innerSensor;
|
|
class DLL_API SensorValue {
|
|
public:
|
|
SensorValue(float value, time_t time) {
|
|
this->value = value;
|
|
this->timestamp = time;
|
|
}
|
|
time_t getTimestamp() {
|
|
return timestamp;
|
|
}
|
|
bool operator==(const SensorValue& other) const {
|
|
return (this->value == other.value) && (this->timestamp == other.timestamp);
|
|
}
|
|
float getValue() {
|
|
return value;
|
|
}
|
|
private:
|
|
time_t timestamp;
|
|
float value;
|
|
};
|
|
enum class SensorType
|
|
{
|
|
Voltage, // V
|
|
Current, // A
|
|
Power, // W
|
|
Clock, // MHz
|
|
Temperature, // °C
|
|
Load, // %
|
|
Frequency, // Hz
|
|
Fan, // RPM
|
|
Flow, // L/h
|
|
Control, // %
|
|
Level, // %
|
|
Factor, // 1
|
|
Data, // GB = 2^30 Bytes
|
|
SmallData, // MB = 2^20 Bytes
|
|
Throughput, // B/s
|
|
TimeSpan, // Seconds
|
|
Energy, // milliwatt-hour (mWh)
|
|
Noise, // dBA
|
|
Conductivity, // µS/cm
|
|
Humidity, // %
|
|
ObjectIsNull
|
|
};
|
|
class DLL_API Sensor {
|
|
public:
|
|
Sensor(std::shared_ptr<innerSensor> inner);
|
|
~Sensor();
|
|
|
|
bool isNull() const;
|
|
bool operator==(const Sensor& other) const;
|
|
float getMax();//如果是null返回FLT_MIN即float最小值
|
|
float getMin();//如果是null返回FLT_MAX即float最大值
|
|
std::vector<SensorValue> getValues();
|
|
SensorType getType();
|
|
float getValue();
|
|
//需自行delete[]
|
|
char* getName();
|
|
std::vector<Parameter> getParameters();
|
|
time_t getTimeSpan();
|
|
void resetMin();
|
|
void resetMax();
|
|
void clearValues();
|
|
void Accept(Visitor* visitor);
|
|
void Traverse(Visitor* visitor);
|
|
Hardware getHardware();
|
|
Identifier getIdentifier();
|
|
bool isDefaultHidden();
|
|
int getIndex();
|
|
CsControl getControl();
|
|
private:
|
|
std::shared_ptr<innerSensor> inner;
|
|
};
|
|
|