AdaptiveBrightness/AdaptiveBrightness/sensor_driver.hpp

40 lines
1.0 KiB
C++

#pragma once
#include <string_view>
#include <utility>
#include <vector>
#include <QByteArray>
#include <QString>
class SensorDriver {
class Sensor {
public:
Sensor(const QString& serialPortName);
~Sensor();
std::pair<int, int> readRange() const;
std::vector<int> readValues() const;
private:
QString m_serialPortName;
std::pair<int, int> parseRangeResponse(const QByteArray& response) const;
};
public:
SensorDriver();
~SensorDriver();
std::vector<Sensor> enumerateSensors() const;
private:
static constexpr auto VERSION_CMD = std::string_view{"version"};
static constexpr auto RANGE_CMD = std::string_view{"range"};
static constexpr auto READ_CMD = std::string_view{"read csv"};
static bool getSensorCommandResponse(const QString& serialPortName, QByteArray command, QByteArray& response);
bool isValidSensor(const QString& serialPortName) const;
std::string parseVersionResponse(const QByteArray& response) const;
};