Line data Source code
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 : * Defined the PokitPro helper functions.
7 : */
8 :
9 : #include <qtpokit/pokitpro.h>
10 :
11 : #include <QCoreApplication>
12 : #include <QLoggingCategory>
13 :
14 : namespace PokitPro {
15 :
16 0 : static Q_LOGGING_CATEGORY(lc, "dokit.pokit.products.pro", QtInfoMsg); ///< Logging category for this file.
17 :
18 : namespace {
19 : class Private
20 : {
21 0 : Q_DECLARE_TR_FUNCTIONS(PokitPro)
22 : };
23 : }
24 :
25 : /*!
26 : * \cond internal
27 : * \enum CapacitanceRange
28 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
29 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
30 : * [dokit](https://github.com/pcolby/dokit) project.
31 : * \endcond
32 : */
33 :
34 : /// Returns \a range as a user-friendly string.
35 1170 : QString toString(const CapacitanceRange &range)
36 1262 : {
37 2432 : switch (range) {
38 582 : case CapacitanceRange::_100nF: return Private::tr("Up to 100nF");
39 485 : case CapacitanceRange::_10uF: return Private::tr("Up to 10μF");
40 880 : case CapacitanceRange::_1mF: return Private::tr("Up to 1mF");
41 485 : case CapacitanceRange::AutoRange: return Private::tr("Auto-range");
42 0 : default: return QString();
43 1262 : }
44 1262 : }
45 :
46 : /*!
47 : * Returns the maximum value for \a range in nanofarads, or 0 if \a range is not a known value for Pokit Pro devices.
48 : */
49 1125 : quint32 maxValue(const CapacitanceRange &range)
50 1300 : {
51 2425 : switch (range) {
52 520 : case CapacitanceRange::_100nF: return 100;
53 679 : case CapacitanceRange::_10uF: return 10'000;
54 364 : case CapacitanceRange::_1mF: return 1'000'000;
55 52 : case CapacitanceRange::AutoRange: return 1'000'000;
56 0 : default:
57 0 : qCWarning(lc).noquote() << Private::tr("Unknown CapacitanceRange value: %1").arg((int)range);
58 0 : return 0;
59 1300 : }
60 1300 : }
61 :
62 : /*!
63 : * \cond internal
64 : * \enum CurrentRange
65 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
66 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
67 : * [dokit](https://github.com/pcolby/dokit) project.
68 : * \endcond
69 : */
70 :
71 : /// Returns \a range as a user-friendly string.
72 2115 : QString toString(const CurrentRange &range)
73 2444 : {
74 4559 : switch (range) {
75 1164 : case CurrentRange::_500uA: return Private::tr("Up to 500μA");
76 485 : case CurrentRange::_2mA: return Private::tr("Up to 2mA");
77 485 : case CurrentRange::_10mA: return Private::tr("Up to 10mA");
78 485 : case CurrentRange::_125mA: return Private::tr("Up to 125mA");
79 485 : case CurrentRange::_300mA: return Private::tr("Up to 300mA");
80 485 : case CurrentRange::_3A: return Private::tr("Up to 3A");
81 485 : case CurrentRange::_10A: return Private::tr("Up to 10A");
82 485 : case CurrentRange::AutoRange: return Private::tr("Auto-range");
83 0 : default: return QString();
84 2444 : }
85 2444 : }
86 :
87 : /*!
88 : * Returns the maximum value for \a range in microamps, or 0 if \a range is not a known value for Pokit Pro devices.
89 : */
90 3690 : quint32 maxValue(const CurrentRange &range)
91 4264 : {
92 7954 : switch (range) {
93 1248 : case CurrentRange::_500uA: return 500;
94 1455 : case CurrentRange::_2mA: return 2'000;
95 1261 : case CurrentRange::_10mA: return 10'000;
96 1067 : case CurrentRange::_125mA: return 125'000;
97 776 : case CurrentRange::_300mA: return 300'000;
98 582 : case CurrentRange::_3A: return 3'000'000;
99 208 : case CurrentRange::_10A: return 10'000'000;
100 52 : case CurrentRange::AutoRange: return 10'000'000;
101 0 : default:
102 0 : qCWarning(lc).noquote() << Private::tr("Unknown CurrentRange value: %1").arg((int)range);
103 0 : return 0;
104 4264 : }
105 4264 : }
106 :
107 : /*!
108 : * \cond internal
109 : * \enum ResistanceRange
110 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
111 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
112 : * [dokit](https://github.com/pcolby/dokit) project.
113 : * \endcond
114 : */
115 :
116 : /// Returns \a range as a user-friendly string.
117 2835 : QString toString(const ResistanceRange &range)
118 3276 : {
119 6111 : switch (range) {
120 485 : case ResistanceRange::_30: return Private::tr("Up to 30Ω");
121 485 : case ResistanceRange::_75: return Private::tr("Up to 75Ω");
122 485 : case ResistanceRange::_400: return Private::tr("Up to 400Ω");
123 485 : case ResistanceRange::_5K: return Private::tr("Up to 5KΩ");
124 485 : case ResistanceRange::_10K: return Private::tr("Up to 10KΩ");
125 485 : case ResistanceRange::_15K: return Private::tr("Up to 15KΩ");
126 485 : case ResistanceRange::_40K: return Private::tr("Up to 40KΩ");
127 485 : case ResistanceRange::_500K: return Private::tr("Up to 500KΩ");
128 485 : case ResistanceRange::_700K: return Private::tr("Up to 700KΩ");
129 485 : case ResistanceRange::_1M: return Private::tr("Up to 1MΩ");
130 776 : case ResistanceRange::_3M: return Private::tr("Up to 3MΩ");
131 485 : case ResistanceRange::AutoRange: return Private::tr("Auto-range");
132 0 : default: return QString();
133 3276 : }
134 3276 : }
135 :
136 : /*!
137 : * Returns the maximum value for \a range in ohms, or 0 if \a range is not a known value for Pokit Pro devices.
138 : */
139 7470 : quint32 maxValue(const ResistanceRange &range)
140 8632 : {
141 16102 : switch (range) {
142 1300 : case ResistanceRange::_30: return 30;
143 2231 : case ResistanceRange::_75: return 75;
144 2037 : case ResistanceRange::_400: return 400;
145 1843 : case ResistanceRange::_5K: return 5'000;
146 1649 : case ResistanceRange::_10K: return 10'000;
147 1455 : case ResistanceRange::_15K: return 15'000;
148 1261 : case ResistanceRange::_40K: return 40'000;
149 1067 : case ResistanceRange::_500K: return 500'000;
150 776 : case ResistanceRange::_700K: return 700'000;
151 582 : case ResistanceRange::_1M: return 1'000'000;
152 364 : case ResistanceRange::_3M: return 3'000'000;
153 52 : case ResistanceRange::AutoRange: return 3'000'000;
154 0 : default:
155 0 : qCWarning(lc).noquote() << Private::tr("Unknown ResistanceRange value: %1").arg((int)range);
156 0 : return 0;
157 8632 : }
158 8632 : }
159 :
160 : /*!
161 : * \cond internal
162 : * \enum VoltageRange
163 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
164 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
165 : * [dokit](https://github.com/pcolby/dokit) project.
166 : * \endcond
167 : */
168 :
169 : /// Returns \a range as a user-friendly string.
170 2340 : QString toString(const VoltageRange &range)
171 2704 : {
172 5044 : switch (range) {
173 485 : case VoltageRange::_250mV: return Private::tr("Up to 250mV");
174 485 : case VoltageRange::_2V: return Private::tr("Up to 2V");
175 485 : case VoltageRange::_10V: return Private::tr("Up to 10V");
176 485 : case VoltageRange::_30V: return Private::tr("Up to 30V");
177 485 : case VoltageRange::_60V: return Private::tr("Up to 60V");
178 485 : case VoltageRange::_125V: return Private::tr("Up to 125V");
179 485 : case VoltageRange::_400V: return Private::tr("Up to 400V");
180 1164 : case VoltageRange::_600V: return Private::tr("Up to 600V");
181 485 : case VoltageRange::AutoRange: return Private::tr("Auto-range");
182 0 : default: return QString();
183 2704 : }
184 2704 : }
185 :
186 : /*!
187 : * Returns the maximum value for \a range in millivolts, or 0 if \a range is not a known value for Pokit Pro devices.
188 : */
189 4590 : quint32 maxValue(const VoltageRange &range)
190 5304 : {
191 9894 : switch (range) {
192 988 : case VoltageRange::_250mV: return 250;
193 1649 : case VoltageRange::_2V: return 2'000;
194 1455 : case VoltageRange::_10V: return 10'000;
195 1261 : case VoltageRange::_30V: return 30'000;
196 1067 : case VoltageRange::_60V: return 60'000;
197 873 : case VoltageRange::_125V: return 125'000;
198 582 : case VoltageRange::_400V: return 400'000;
199 572 : case VoltageRange::_600V: return 600'000;
200 52 : case VoltageRange::AutoRange: return 600'000;
201 0 : default:
202 0 : qCWarning(lc).noquote() << Private::tr("Unknown VoltageRange value: %1").arg((int)range);
203 0 : return 0;
204 5304 : }
205 5304 : }
206 :
207 : }
|