Files
hardwaremoniter/hardware_monitor_wrapper/native/include/Sensor.h
2025-06-08 17:40:21 +08:00

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;
};