Dokit
Internal development documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Pages
pokitmeter.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2022-2025 Paul Colby <git@colby.id.au>
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4/*!
5 * \file
6 * Declares the PokitMeter namespace.
7 */
8
10
11#include <QCoreApplication>
12#include <QLoggingCategory>
13
15
16namespace PokitMeter {
17
18static Q_LOGGING_CATEGORY(lc, "dokit.pokit.products.meter", QtInfoMsg); ///< Logging category for this file.
19
20namespace {
21 class Private
22 {
23 Q_DECLARE_TR_FUNCTIONS(PokitMeter)
24 };
25}
26
27/// Returns \a range as a user-friendly string.
29{
30 switch (range) {
31 case CurrentRange::_10mA: return Private::tr("Up to 10mA");
32 case CurrentRange::_30mA: return Private::tr("Up to 30mA");
33 case CurrentRange::_150mA: return Private::tr("Up to 150mA");
34 case CurrentRange::_300mA: return Private::tr("Up to 300mA");
35 case CurrentRange::_2A: return Private::tr("Up to 2A");
36 case CurrentRange::AutoRange: return Private::tr("Auto-range");
37 default: return QString();
38 }
39}
40
41/*!
42 * Returns the maximum value for \a range in microamps, or 0 if \a range is not a known value for Pokit Meter devices.
43 */
44quint32 maxValue(const CurrentRange &range)
45{
46 switch (range) {
47 case CurrentRange::_10mA: return 10'000;
48 case CurrentRange::_30mA: return 30'000;
49 case CurrentRange::_150mA: return 150'000;
50 case CurrentRange::_300mA: return 300'000;
51 case CurrentRange::_2A: return 2'000'000;
52 case CurrentRange::AutoRange: return 2'000'000;
53 default:
54 qCWarning(lc).noquote() << Private::tr("Unknown CurrentRange value: %1").arg((int)range);
55 return 0;
56 }
57}
58
59/// Returns \a range as a user-friendly string.
61{
62 switch (range) {
63 case ResistanceRange::_160: return Private::tr("Up to 160Ω");
64 case ResistanceRange::_330: return Private::tr("Up to 330Ω");
65 case ResistanceRange::_890: return Private::tr("Up to 890Ω");
66 case ResistanceRange::_1K5: return Private::tr("Up to 1.5KΩ");
67 case ResistanceRange::_10K: return Private::tr("Up to 10KΩ");
68 case ResistanceRange::_100K: return Private::tr("Up to 100KΩ");
69 case ResistanceRange::_470K: return Private::tr("Up to 470KΩ");
70 case ResistanceRange::_1M: return Private::tr("Up to 1MΩ");
71 case ResistanceRange::AutoRange: return Private::tr("Auto-range");
72 default: return QString();
73 }
74}
75
76/*!
77 * Returns the maximum value for \a range in ohms, or 0 if \a range is not a known value for Pokit Meter devices.
78 */
79quint32 maxValue(const ResistanceRange &range)
80{
81 switch (range) {
82 case ResistanceRange::_160: return 160;
83 case ResistanceRange::_330: return 330;
84 case ResistanceRange::_890: return 890;
85 case ResistanceRange::_1K5: return 1'500;
86 case ResistanceRange::_10K: return 10'000;
87 case ResistanceRange::_100K: return 100'000;
88 case ResistanceRange::_470K: return 470'000;
89 case ResistanceRange::_1M: return 1'000'000;
90 case ResistanceRange::AutoRange: return 1'000'000;
91 default:
92 qCWarning(lc).noquote() << Private::tr("Unknown ResistanceRange value: %1").arg((int)range);
93 return 0;
94 }
95}
96
97/// Returns \a range as a user-friendly string.
99{
100 switch (range) {
101 case VoltageRange::_300mV: return Private::tr("Up to 300mV");
102 case VoltageRange::_2V: return Private::tr("Up to 2V");
103 case VoltageRange::_6V: return Private::tr("Up to 6V");
104 case VoltageRange::_12V: return Private::tr("Up to 12V");
105 case VoltageRange::_30V: return Private::tr("Up to 30V");
106 case VoltageRange::_60V: return Private::tr("Up to 60V");
107 case VoltageRange::AutoRange: return Private::tr("Auto-range");
108 default: return QString();
109 }
110}
111
112/*!
113 * Returns the maximum value for \a range in millivolts, or 0 if \a range is not a known value for Pokit Meter devices.
114 */
115quint32 maxValue(const VoltageRange &range)
116{
117 switch (range) {
118 case VoltageRange::_300mV: return 300;
119 case VoltageRange::_2V: return 2'000;
120 case VoltageRange::_6V: return 6'000;
121 case VoltageRange::_12V: return 12'000;
122 case VoltageRange::_30V: return 30'000;
123 case VoltageRange::_60V: return 60'000;
124 case VoltageRange::AutoRange: return 60'000;
125 default:
126 qCWarning(lc).noquote() << Private::tr("Unknown VoltageRange value: %1").arg((int)range);
127 return 0;
128 }
129}
130
131}
132
Encapsulates convenience functions for working with current ranges.
Encapsulates details specific to Pokit Meter devices.
Definition pokitmeter.h:17
QTPOKIT_EXPORT QString toString(const CurrentRange &range)
Returns range as a user-friendly string.
@ _60V
Up to 60V DC (42V AC).
Definition pokitmeter.h:53
static Q_LOGGING_CATEGORY(lc, "dokit.pokit.products.meter", QtInfoMsg)
Logging category for this file.
QTPOKIT_EXPORT quint32 maxValue(const CurrentRange &range)
Returns the maximum value for range in microamps, or 0 if range is not a known value for Pokit Meter ...
Encapsulates convenience functions for working with resistance ranges.
Encapsulates convenience functions for working with voltage ranges.
Declares the PokitMeter namespace.
#define QTPOKIT_BEGIN_NAMESPACE
Macro for starting the QtPokit library's top-most namespace (if one is defined).
#define QTPOKIT_END_NAMESPACE
Macro for ending the QtPokit library's top-most namespace (if one is defined).