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 : QTPOKIT_BEGIN_NAMESPACE
15 :
16 : namespace PokitPro {
17 :
18 0 : static Q_LOGGING_CATEGORY(lc, "dokit.pokit.products.pro", QtInfoMsg); ///< Logging category for this file.
19 :
20 : namespace {
21 : class Private
22 : {
23 0 : Q_DECLARE_TR_FUNCTIONS(PokitPro)
24 : };
25 : }
26 :
27 : /*!
28 : * \cond internal
29 : * \enum CapacitanceRange
30 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
31 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
32 : * [dokit](https://github.com/pcolby/dokit) project.
33 : * \endcond
34 : */
35 :
36 : /// Returns \a range as a user-friendly string.
37 2080 : QString toString(const CapacitanceRange &range)
38 1360 : {
39 3440 : switch (range) {
40 816 : case CapacitanceRange::_100nF: return Private::tr("Up to 100nF");
41 680 : case CapacitanceRange::_10uF: return Private::tr("Up to 10μF");
42 1264 : case CapacitanceRange::_1mF: return Private::tr("Up to 1mF");
43 680 : case CapacitanceRange::AutoRange: return Private::tr("Auto-range");
44 0 : default: return QString();
45 1360 : }
46 1360 : }
47 :
48 : /*!
49 : * Returns the maximum value for \a range in nanofarads, or 0 if \a range is not a known value for Pokit Pro devices.
50 : */
51 2000 : quint32 maxValue(const CapacitanceRange &range)
52 1400 : {
53 3400 : switch (range) {
54 560 : case CapacitanceRange::_100nF: return 100;
55 952 : case CapacitanceRange::_10uF: return 10'000;
56 539 : case CapacitanceRange::_1mF: return 1'000'000;
57 77 : case CapacitanceRange::AutoRange: return 1'000'000;
58 0 : default:
59 0 : qCWarning(lc).noquote() << Private::tr("Unknown CapacitanceRange value: %1").arg((int)range);
60 0 : return 0;
61 1400 : }
62 1400 : }
63 :
64 : /*!
65 : * \cond internal
66 : * \enum CurrentRange
67 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
68 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
69 : * [dokit](https://github.com/pcolby/dokit) project.
70 : * \endcond
71 : */
72 :
73 : /// Returns \a range as a user-friendly string.
74 3760 : QString toString(const CurrentRange &range)
75 2632 : {
76 6392 : switch (range) {
77 1632 : case CurrentRange::_500uA: return Private::tr("Up to 500μA");
78 680 : case CurrentRange::_2mA: return Private::tr("Up to 2mA");
79 680 : case CurrentRange::_10mA: return Private::tr("Up to 10mA");
80 680 : case CurrentRange::_125mA: return Private::tr("Up to 125mA");
81 680 : case CurrentRange::_300mA: return Private::tr("Up to 300mA");
82 680 : case CurrentRange::_3A: return Private::tr("Up to 3A");
83 680 : case CurrentRange::_10A: return Private::tr("Up to 10A");
84 680 : case CurrentRange::AutoRange: return Private::tr("Auto-range");
85 0 : default: return QString();
86 2632 : }
87 2632 : }
88 :
89 : /*!
90 : * Returns the maximum value for \a range in microamps, or 0 if \a range is not a known value for Pokit Pro devices.
91 : */
92 6560 : quint32 maxValue(const CurrentRange &range)
93 4592 : {
94 11152 : switch (range) {
95 1344 : case CurrentRange::_500uA: return 500;
96 2040 : case CurrentRange::_2mA: return 2'000;
97 1768 : case CurrentRange::_10mA: return 10'000;
98 1496 : case CurrentRange::_125mA: return 125'000;
99 1088 : case CurrentRange::_300mA: return 300'000;
100 816 : case CurrentRange::_3A: return 3'000'000;
101 308 : case CurrentRange::_10A: return 10'000'000;
102 77 : case CurrentRange::AutoRange: return 10'000'000;
103 0 : default:
104 0 : qCWarning(lc).noquote() << Private::tr("Unknown CurrentRange value: %1").arg((int)range);
105 0 : return 0;
106 4592 : }
107 4592 : }
108 :
109 : /*!
110 : * \cond internal
111 : * \enum ResistanceRange
112 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
113 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
114 : * [dokit](https://github.com/pcolby/dokit) project.
115 : * \endcond
116 : */
117 :
118 : /// Returns \a range as a user-friendly string.
119 5040 : QString toString(const ResistanceRange &range)
120 3528 : {
121 8568 : switch (range) {
122 680 : case ResistanceRange::_30: return Private::tr("Up to 30Ω");
123 680 : case ResistanceRange::_75: return Private::tr("Up to 75Ω");
124 680 : case ResistanceRange::_400: return Private::tr("Up to 400Ω");
125 680 : case ResistanceRange::_5K: return Private::tr("Up to 5KΩ");
126 680 : case ResistanceRange::_10K: return Private::tr("Up to 10KΩ");
127 680 : case ResistanceRange::_15K: return Private::tr("Up to 15KΩ");
128 680 : case ResistanceRange::_40K: return Private::tr("Up to 40KΩ");
129 680 : case ResistanceRange::_500K: return Private::tr("Up to 500KΩ");
130 680 : case ResistanceRange::_700K: return Private::tr("Up to 700KΩ");
131 680 : case ResistanceRange::_1M: return Private::tr("Up to 1MΩ");
132 1088 : case ResistanceRange::_3M: return Private::tr("Up to 3MΩ");
133 680 : case ResistanceRange::AutoRange: return Private::tr("Auto-range");
134 0 : default: return QString();
135 3528 : }
136 3528 : }
137 :
138 : /*!
139 : * Returns the maximum value for \a range in ohms, or 0 if \a range is not a known value for Pokit Pro devices.
140 : */
141 13280 : quint32 maxValue(const ResistanceRange &range)
142 9296 : {
143 22576 : switch (range) {
144 1400 : case ResistanceRange::_30: return 30;
145 3128 : case ResistanceRange::_75: return 75;
146 2856 : case ResistanceRange::_400: return 400;
147 2584 : case ResistanceRange::_5K: return 5'000;
148 2312 : case ResistanceRange::_10K: return 10'000;
149 2040 : case ResistanceRange::_15K: return 15'000;
150 1768 : case ResistanceRange::_40K: return 40'000;
151 1496 : case ResistanceRange::_500K: return 500'000;
152 1088 : case ResistanceRange::_700K: return 700'000;
153 816 : case ResistanceRange::_1M: return 1'000'000;
154 539 : case ResistanceRange::_3M: return 3'000'000;
155 77 : case ResistanceRange::AutoRange: return 3'000'000;
156 0 : default:
157 0 : qCWarning(lc).noquote() << Private::tr("Unknown ResistanceRange value: %1").arg((int)range);
158 0 : return 0;
159 9296 : }
160 9296 : }
161 :
162 : /*!
163 : * \cond internal
164 : * \enum VoltageRange
165 : * \pokitApi These Pokit Pro enumeration values are as-yet undocumented by Pokit Innovations.
166 : * [\@pcolby](https://github.com/pcolby) reverse-engineered them as part of the
167 : * [dokit](https://github.com/pcolby/dokit) project.
168 : * \endcond
169 : */
170 :
171 : /// Returns \a range as a user-friendly string.
172 4160 : QString toString(const VoltageRange &range)
173 2912 : {
174 7072 : switch (range) {
175 680 : case VoltageRange::_250mV: return Private::tr("Up to 250mV");
176 680 : case VoltageRange::_2V: return Private::tr("Up to 2V");
177 680 : case VoltageRange::_10V: return Private::tr("Up to 10V");
178 680 : case VoltageRange::_30V: return Private::tr("Up to 30V");
179 680 : case VoltageRange::_60V: return Private::tr("Up to 60V");
180 680 : case VoltageRange::_125V: return Private::tr("Up to 125V");
181 680 : case VoltageRange::_400V: return Private::tr("Up to 400V");
182 1632 : case VoltageRange::_600V: return Private::tr("Up to 600V");
183 680 : case VoltageRange::AutoRange: return Private::tr("Auto-range");
184 0 : default: return QString();
185 2912 : }
186 2912 : }
187 :
188 : /*!
189 : * Returns the maximum value for \a range in millivolts, or 0 if \a range is not a known value for Pokit Pro devices.
190 : */
191 8160 : quint32 maxValue(const VoltageRange &range)
192 5712 : {
193 13872 : switch (range) {
194 1064 : case VoltageRange::_250mV: return 250;
195 2312 : case VoltageRange::_2V: return 2'000;
196 2040 : case VoltageRange::_10V: return 10'000;
197 1768 : case VoltageRange::_30V: return 30'000;
198 1496 : case VoltageRange::_60V: return 60'000;
199 1224 : case VoltageRange::_125V: return 125'000;
200 816 : case VoltageRange::_400V: return 400'000;
201 847 : case VoltageRange::_600V: return 600'000;
202 77 : case VoltageRange::AutoRange: return 600'000;
203 0 : default:
204 0 : qCWarning(lc).noquote() << Private::tr("Unknown VoltageRange value: %1").arg((int)range);
205 0 : return 0;
206 5712 : }
207 5712 : }
208 :
209 : }
210 :
211 : QTPOKIT_END_NAMESPACE
|