Dokit
Native Qt library for Pokit devices
Loading...
Searching...
No Matches
multimeterservice.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2022-2023 Paul Colby <git@colby.id.au>
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4/*!
5 * \file
6 * Declares the MultimeterService class.
7 */
8
9#ifndef QTPOKIT_MULTIMETERSERVICE_H
10#define QTPOKIT_MULTIMETERSERVICE_H
11
13
14#include <QBluetoothAddress>
15#include <QBluetoothUuid>
16#include <QVersionNumber>
17
18QTPOKIT_BEGIN_NAMESPACE
19
20class MultimeterServicePrivate;
21
22class QTPOKIT_EXPORT MultimeterService : public AbstractPokitService
23{
24 Q_OBJECT
25
26public:
28
29 struct QTPOKIT_EXPORT CharacteristicUuids {
31 static const QBluetoothUuid reading;
32 };
33
34 enum class Mode : quint8 {
35 Idle = 0, ///< Make device idle.
36 DcVoltage = 1, ///< Measure DC voltage.
37 AcVoltage = 2, ///< Measure AC voltage.
38 DcCurrent = 3, ///< Measure DC current.
39 AcCurrent = 4, ///< Measure AC current.
40 Resistance = 5, ///< Measure resistance.
41 Diode = 6, ///< Measure diode.
42 Continuity = 7, ///< Measure continuity.
43 Temperature = 8, ///< Measure temperature.
44 Capacitance = 9, ///< Measure capacitance.
45 ExternalTemperature = 10, ///< Measure temperature via an external temperature probe.
46 };
47 static QString toString(const Mode &mode);
48
49 static QString toString(const PokitProduct product, const quint8 range, const Mode mode);
50 QString toString(const quint8 range, const Mode mode) const;
51 static QVariant maxValue(const PokitProduct product, const quint8 range, const Mode mode);
52 QVariant maxValue(const quint8 range, const Mode mode) const;
53
54 struct Settings {
55 Mode mode; ///< Desired operation mode.
56 quint8 range; ///< Desired range.
57 quint32 updateInterval; ///< Desired update interval in milliseconds.
58 };
59
60 enum class MeterStatus : quint8 {
61 AutoRangeOff = 0, ///< Auto-range is disabled (voltage, current and resistance modes only).
62 AutoRangeOn = 1, ///< Auto-range is enabled (voltage, current and resistance modes only).
63 NoContinuity = 0, ///< No continuity (continuity mode only).
64 Continuity = 1, ///< Continuity (continuity mode only).
65 Ok = 0, ///< Ok (temperature and diode modes only).
66 Error = 255 ///< Error (all modes).
67 };
68
69 struct Reading {
70 MeterStatus status; ///< Current multimeter status.
71 float value; ///< Last acquired value.
72 Mode mode; ///< Current operation mode.
73 quint8 range; ///< Current range.
74 };
75
76 MultimeterService(QLowEnergyController * const pokitDevice, QObject * parent = nullptr);
77 ~MultimeterService() override;
78
79 bool readCharacteristics() override;
80 bool readReadingCharacteristic();
81
82 // Settings characteristic (BLE write only).
83 bool setSettings(const Settings &settings);
84
85 // Reading characteristic (BLE read/notify).
86 Reading reading() const;
87 bool enableReadingNotifications();
88 bool disableReadingNotifications();
89
90signals:
93
94protected:
95 /// \cond internal
96 MultimeterService(MultimeterServicePrivate * const d, QObject * const parent);
97 /// \endcond
98
99private:
100 Q_DECLARE_PRIVATE(MultimeterService)
102 friend class TestMultimeterService;
103};
104
105QTPOKIT_END_NAMESPACE
106
107#endif // QTPOKIT_MULTIMETERSERVICE_H
Declares the AbstractPokitService class.
The AbstractPokitService class provides a common base for Pokit services classes.
Definition abstractpokitservice.h:25
virtual bool readCharacteristics()=0
Read all characteristics.
The MultimeterService class accesses the Multimeter service of Pokit devices.
Definition multimeterservice.h:23
MeterStatus
Values supported by the Status attribute of the Settings characteristic.
Definition multimeterservice.h:60
Mode
Values supported by the Mode attribute of the Settings and Reading characteristics.
Definition multimeterservice.h:34
static const QBluetoothUuid serviceUuid
UUID of the "Multimeter" service.
Definition multimeterservice.h:27
void readingRead(const MultimeterService::Reading &reading)
This signal is emitted when the Reading characteristic has been read successfully.
void settingsWritten()
This signal is emitted when the Settings characteristic has been written successfully.
PokitProduct
Pokit products known to, and supported by, the QtPokit library.
Definition pokitproducts.h:21
QTPOKIT_EXPORT QString toString(const PokitProduct product)
Returns product as user-friendly string.
Definition pokitproducts.cpp:26
Q_DISABLE_COPY(Class)
Characteristics available via the Multimeter service.
Definition multimeterservice.h:29
static const QBluetoothUuid reading
UUID of the Multimeter service's Reading characterstic.
Definition multimeterservice.h:31
static const QBluetoothUuid settings
UUID of the Multimeter service's Settings characterstic.
Definition multimeterservice.h:30
Attributes included in the Reading characterstic.
Definition multimeterservice.h:69
MeterStatus status
Current multimeter status.
Definition multimeterservice.h:70
Mode mode
Current operation mode.
Definition multimeterservice.h:72
float value
Last acquired value.
Definition multimeterservice.h:71
quint8 range
Current range.
Definition multimeterservice.h:73
Attributes included in the Settings characterstic.
Definition multimeterservice.h:54
quint32 updateInterval
Desired update interval in milliseconds.
Definition multimeterservice.h:57
quint8 range
Desired range.
Definition multimeterservice.h:56
Mode mode
Desired operation mode.
Definition multimeterservice.h:55