4#include "metercommand.h"
8#include <QJsonDocument>
93 const quint32 interval = parseNumber<std::milli>(value,
QLatin1String(
"s"), 500);
95 errors.
append(
tr(
"Invalid interval value: %1").arg(value));
122 qCInfo(lc).noquote() <<
tr(
"Ignoring range value: %1").
arg(value);
125 errors.
append(
tr(
"Invalid range value: %1").arg(value));
133 const quint32 samples = parseNumber<std::ratio<1>>(value,
QLatin1String(
"S"));
135 errors.
append(
tr(
"Invalid samples value: %1").
arg(value));
170 qCInfo(lc).noquote() <<
tr(
"Measuring %1, with range %2, every %L3ms.").
arg(
195 qCDebug(lc).noquote() <<
tr(
"Settings written; starting meter readings...");
209 }
else switch (reading.
mode) {
219 ?
tr(
"Auto Range On") :
tr(
"Auto Range Off");
223 ?
tr(
"Continuity") :
tr(
"No continuity");
233 switch (reading.
mode) {
252 std::cout << qUtf8Printable(
tr(
"mode,value,unit,status,range\n"));
256 .
arg(reading.
value, 0,
'f').
arg(unit, status, range)
277 std::cout << qUtf8Printable(
tr(
"Value: %1 %2\n").arg(reading.
value,0,
'f').
arg(unit));
278 std::cout << qUtf8Printable(
tr(
"Status: %1 (0x%2)\n").arg(status)
280 std::cout << qUtf8Printable(
tr(
"Range: %1 (0x%2)\n").arg(range)
virtual QStringList supportedOptions(const QCommandLineParser &parser) const
Returns a list of CLI option names supported by this command.
OutputFormat format
Selected output format.
@ Text
Plain unstructured text.
@ Csv
RFC 4180 compliant CSV text.
@ Json
RFC 8259 compliant JSON text.
virtual QStringList processOptions(const QCommandLineParser &parser)
Processes the relevant options from the command line parser.
static QString escapeCsvField(const QString &field)
Returns an RFC 4180 compliant version of field.
virtual QStringList requiredOptions(const QCommandLineParser &parser) const
Returns a list of CLI option names required by this command.
The AbstractPokitService class provides a common base for Pokit services classes.
std::optional< PokitProduct > pokitProduct() const
Returns the Pokit product this service is attached to.
The AbstractCommand class extends AbstractCommand to add a PokitDevice instance.
static quint8 minResistanceRange(const PokitProduct product, const quint32 maxValue)
Returns the product's lowest resistance range that can measure at least up to maxValue (Ω),...
PokitDevice * device
Pokit Bluetooth device (if any) this command inerracts with.
static quint8 minCapacitanceRange(const PokitProduct product, const quint32 maxValue)
Returns the product's lowest capacitance range that can measure at least up to maxValue (nF),...
virtual void serviceDetailsDiscovered()
Handles service detail discovery events.
static quint8 minVoltageRange(const PokitProduct product, const quint32 maxValue)
t Returns the product's lowest voltage range that can measure at least up to maxValue (mV),...
static quint8 minCurrentRange(const PokitProduct product, const quint32 maxValue)
Returns the product's lowest current range that can measure at least up to maxValue (µA),...
void disconnect(int exitCode=EXIT_SUCCESS)
Disconnects the underlying Pokit device, and sets exitCode to be return to the OS once the disconnect...
QStringList requiredOptions(const QCommandLineParser &parser) const override
Returns a list of CLI option names required by this command.
quint32 rangeOptionValue
The parsed value of range option, if one was supplied.
MultimeterService::Settings settings
< Settings for the Pokit device's multimeter mode.
bool showCsvHeader
Whether or not to show a header as the first line of CSV output.
void outputReading(const MultimeterService::Reading &reading)
Outputs meter reading in the selected ouput format.
QStringList processOptions(const QCommandLineParser &parser) override
Processes the relevant options from the command line parser.
void settingsWritten()
Invoked when the multimeter settings have been written, to begin reading the meter values.
QStringList supportedOptions(const QCommandLineParser &parser) const override
Returns a list of CLI option names supported by this command.
quint8(* minRangeFunc)(const PokitProduct product, const quint32 maxValue)
Pointer to function for converting rangeOptionValue to a Pokit device's range enumerator.
AbstractPokitService * getService() override
Returns a Pokit service object for the derived command class.
void serviceDetailsDiscovered() override
Handles service detail discovery events.
MeterCommand(QObject *const parent=nullptr)
Construct a new MeterCommand object with parent.
int samplesToGo
Number of samples to read, if specified on the CLI.
MultimeterService * service
Bluetooth service this command interracts with.
bool enableReadingNotifications()
Enables client-side notifications of meter readings.
@ AutoRangeOn
Auto-range is enabled (voltage, current and resistance modes only).
@ Error
Error (all modes).
@ Continuity
Continuity (continuity mode only).
@ DcVoltage
Measure DC voltage.
@ Capacitance
Measure capacitance.
@ AcCurrent
Measure AC current.
@ ExternalTemperature
Measure temperature via an external temperature probe.
@ Resistance
Measure resistance.
@ AcVoltage
Measure AC voltage.
@ Temperature
Measure temperature.
@ DcCurrent
Measure DC current.
@ Continuity
Measure continuity.
static QString toString(const Mode &mode)
Returns mode as a user-friendly string.
void readingRead(const MultimeterService::Reading &reading)
This signal is emitted when the Reading characteristic has been read successfully.
bool setSettings(const Settings &settings)
Configures the Pokit device's multimeter mode.
void settingsWritten()
This signal is emitted when the Settings characteristic has been written successfully.
MultimeterService * multimeter()
Returns a pointer to MultimeterService instance that uses this device's controller for access.
Declares the PokitDevice class.
std::string toStdString() const const
bool isSet(const QString &name) const const
QString value(const QString &optionName) const const
QByteArray toJson() const const
void append(const T &value)
bool isEmpty() const const
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString tr(const char *sourceText, const char *disambiguation, int n)
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
int compare(const QString &other, Qt::CaseSensitivity cs) const const
QString fromLatin1(const char *str, int size)
QString fromUtf8(const char *str, int size)
QString & insert(int position, QChar ch)
bool isNull() const const
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const const
QString toLower() const const
QString trimmed() const const
Attributes included in the Reading characterstic.
MeterStatus status
Current multimeter status.
Mode mode
Current operation mode.
float value
Last acquired value.
quint8 range
Current range.
quint32 updateInterval
Desired update interval in milliseconds.
quint8 range
Desired range.
Mode mode
Desired operation mode.