40 lines
1.0 KiB
C++
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;
|
|
};
|