THM1176InstrumentDriver  1.0
C++ API for Metrolab THM1176
CTHM1176BasicsTest.cpp
Go to the documentation of this file.
1 // Copyright (c) 2020 Metrolab Technology S.A., Geneva, Switzerland (www.metrolab.com)
2 // See the included file LICENSE.txt for the licensing conditions.
3 
7 
8 #include "gtest/gtest.h"
9 #include "THM1176TestUtilities.h"
10 #include "THM1176TypeConversions.h"
11 
12 using namespace MTL::Instrument;
13 using namespace MTL::Instrument::THM1176Types;
14 
16 class CTHM1176BasicsTest : public ::testing::Test
17 {
18 };
19 
22 {
23  EXPECT_EQ(true, TestTHM1176Types());
24 }
25 
28 {
29  // Set up the objects.
30  CFluxList l_Object1;
31  l_Object1.push_back(1.);
32  l_Object1.push_back(2.);
33  l_Object1.push_back(3.);
34  CFluxList l_Object2 = l_Object1;
35 
36  // Test equality.
37  EXPECT_EQ(true, l_Object1 == l_Object2);
38  EXPECT_EQ(false, l_Object1 != l_Object2);
39 
40  // Test inequality: different number of elements.
41  l_Object2.pop_back();
42  EXPECT_EQ(false, l_Object1 == l_Object2);
43  EXPECT_EQ(true, l_Object1 != l_Object2);
44 
45  // Test inequality: one element different.
46  l_Object2 = l_Object1;
47  l_Object2[2] = 4.;
48  EXPECT_EQ(false, l_Object1 == l_Object2);
49  EXPECT_EQ(true, l_Object1 != l_Object2);
50 
51  // Test clear.
52  l_Object2.clear();
53  EXPECT_EQ(0, l_Object2.size());
54 }
55 
58 {
59  // Set up the objects.
60  CUnitsList l_Object1;
61  l_Object1.push_back(kT);
62  l_Object1.push_back(kmT);
63  l_Object1.push_back(kuT);
64  CUnitsList l_Object2 = l_Object1;
65 
66  // Test equality.
67  EXPECT_EQ(true, l_Object1 == l_Object2);
68  EXPECT_EQ(false, l_Object1 != l_Object2);
69 
70  // Test inequality: different number of elements.
71  l_Object2.pop_back();
72  EXPECT_EQ(false, l_Object1 == l_Object2);
73  EXPECT_EQ(true, l_Object1 != l_Object2);
74 
75  // Test inequality: one element different.
76  l_Object2 = l_Object1;
77  l_Object2[2] = knT;
78  EXPECT_EQ(false, l_Object1 == l_Object2);
79  EXPECT_EQ(true, l_Object1 != l_Object2);
80 
81  // Test clear.
82  l_Object2.clear();
83  EXPECT_EQ(0, l_Object2.size());
84 }
85 
88 {
89  // Set up the objects.
90  CDivisorList l_Object1;
91  l_Object1.push_back(1);
92  l_Object1.push_back(2);
93  l_Object1.push_back(3);
94  CDivisorList l_Object2 = l_Object1;
95 
96  // Test equality.
97  EXPECT_EQ(true, l_Object1 == l_Object2);
98  EXPECT_EQ(false, l_Object1 != l_Object2);
99 
100  // Test inequality: different number of elements.
101  l_Object2.pop_back();
102  EXPECT_EQ(false, l_Object1 == l_Object2);
103  EXPECT_EQ(true, l_Object1 != l_Object2);
104 
105  // Test inequality: one element different.
106  l_Object2 = l_Object1;
107  l_Object2[2] = 4;
108  EXPECT_EQ(false, l_Object1 == l_Object2);
109  EXPECT_EQ(true, l_Object1 != l_Object2);
110 
111  // Test clear.
112  l_Object2.clear();
113  EXPECT_EQ(0, l_Object2.size());
114 }
115 
118 {
119  // Set up the objects.
120  sError l_Error;
121  CErrorList l_Object1;
122  l_Error = { 1, "a", "A" };
123  l_Object1.push_back(l_Error);
124  l_Error = { 1, "b", "B" };
125  l_Object1.push_back(l_Error);
126  l_Error = { 1, "c", "C" };
127  l_Object1.push_back(l_Error);
128  CErrorList l_Object2 = l_Object1;
129 
130  // Test equality.
131  EXPECT_EQ(true, l_Object1 == l_Object2);
132  EXPECT_EQ(false, l_Object1 != l_Object2);
133 
134  // Test inequality: different number of elements.
135  l_Object2.pop_back();
136  EXPECT_EQ(false, l_Object1 == l_Object2);
137  EXPECT_EQ(true, l_Object1 != l_Object2);
138 
139  // Test inequality: one element different.
140  l_Error = { 1, "d", "D" };
141  l_Object1.push_back(l_Error);
142  EXPECT_EQ(false, l_Object1 == l_Object2);
143  EXPECT_EQ(true, l_Object1 != l_Object2);
144 
145  // Test clear.
146  l_Object2.clear();
147  EXPECT_EQ(0, l_Object2.size());
148 }
149 
152 {
153  // Set up the objects.
154  sIdentifier l_Object1 = { "A", "B", 1, {2, 3}, {4, 5}, {6, 7}};
155  sIdentifier l_Object2 = l_Object1;
156 
157  // Test equality.
158  EXPECT_EQ(true, l_Object1 == l_Object2);
159  EXPECT_EQ(false, l_Object1 != l_Object2);
160 
161  // Test inequality: different Manufacturer.
162  l_Object2 = l_Object1;
163  l_Object2.Manufacturer = "C";
164  EXPECT_EQ(false, l_Object1 == l_Object2);
165  EXPECT_EQ(true, l_Object1 != l_Object2);
166 
167  // Test inequality: different Model.
168  l_Object2 = l_Object1;
169  l_Object2.Model = "C";
170  EXPECT_EQ(false, l_Object1 == l_Object2);
171  EXPECT_EQ(true, l_Object1 != l_Object2);
172 
173  // Test inequality: different SerialNumber.
174  l_Object2 = l_Object1;
175  l_Object2.SerialNumber = 8;
176  EXPECT_EQ(false, l_Object1 == l_Object2);
177  EXPECT_EQ(true, l_Object1 != l_Object2);
178 
179  // Test inequality: different ElectronicsVersion.Major.
180  l_Object2 = l_Object1;
181  l_Object2.ElectronicsVersion.Major = 9;
182  EXPECT_EQ(false, l_Object1 == l_Object2);
183  EXPECT_EQ(true, l_Object1 != l_Object2);
184 
185  // Test inequality: different ElectronicsVersion.Minor.
186  l_Object2 = l_Object1;
187  l_Object2.ElectronicsVersion.Minor = 10;
188  EXPECT_EQ(false, l_Object1 == l_Object2);
189  EXPECT_EQ(true, l_Object1 != l_Object2);
190 
191  // Test inequality: different ProbeVersion.Major.
192  l_Object2 = l_Object1;
193  l_Object2.ProbeVersion.Major = 11;
194  EXPECT_EQ(false, l_Object1 == l_Object2);
195  EXPECT_EQ(true, l_Object1 != l_Object2);
196 
197  // Test inequality: different ProbeVersion.Minor.
198  l_Object2 = l_Object1;
199  l_Object2.ProbeVersion.Minor = 12;
200  EXPECT_EQ(false, l_Object1 == l_Object2);
201  EXPECT_EQ(true, l_Object1 != l_Object2);
202 
203  // Test inequality: different FirmwareVersion.Major.
204  l_Object2 = l_Object1;
205  l_Object2.FirmwareVersion.Major = 13;
206  EXPECT_EQ(false, l_Object1 == l_Object2);
207  EXPECT_EQ(true, l_Object1 != l_Object2);
208 
209  // Test inequality: different FirmwareVersion.Minor.
210  l_Object2 = l_Object1;
211  l_Object2.FirmwareVersion.Minor = 14;
212  EXPECT_EQ(false, l_Object1 == l_Object2);
213  EXPECT_EQ(true, l_Object1 != l_Object2);
214 
215  // Test clear.
216  l_Object1 = { "", "", 0, {0, 0}, {0, 0}, {0, 0}};
217  l_Object2.clear();
218  EXPECT_EQ(true, l_Object1 == l_Object2);
219 }
220 
222 TEST_F(CTHM1176BasicsTest, sAveraging_uParm)
223 {
224  // Set up the objects.
225  sAveraging<uParm> l_Object1 = { 1 };
226  sAveraging<uParm> l_Object2 = l_Object1;
227 
228  // Test equality.
229  EXPECT_EQ(true, l_Object1 == l_Object2);
230  EXPECT_EQ(false, l_Object1 != l_Object2);
231 
232  // Test inequality: different NoPoints.
233  l_Object2 = l_Object1;
234  l_Object2.NoPoints = 2;
235  EXPECT_EQ(false, l_Object1 == l_Object2);
236  EXPECT_EQ(true, l_Object1 != l_Object2);
237 
238  // Test clear.
239  l_Object1 = { 0 };
240  l_Object2.clear();
241  EXPECT_EQ(true, l_Object1 == l_Object2);
242 }
243 
245 TEST_F(CTHM1176BasicsTest, sAveraging_sBoundedParm)
246 {
247  // Set up the objects.
248  sAveraging<sBoundedParm> l_Object1 = { { 1, 2, 3, 4} };
249  sAveraging<sBoundedParm> l_Object2 = l_Object1;
250 
251  // Test equality.
252  EXPECT_EQ(true, l_Object1 == l_Object2);
253  EXPECT_EQ(false, l_Object1 != l_Object2);
254 
255  // Test inequality: different NoPoints.Val.
256  l_Object2 = l_Object1;
257  l_Object2.NoPoints.Val = 5;
258  EXPECT_EQ(false, l_Object1 == l_Object2);
259  EXPECT_EQ(true, l_Object1 != l_Object2);
260 
261  // Test inequality: different NoPoints.Min.
262  l_Object2 = l_Object1;
263  l_Object2.NoPoints.Min = 6;
264  EXPECT_EQ(false, l_Object1 == l_Object2);
265  EXPECT_EQ(true, l_Object1 != l_Object2);
266 
267  // Test inequality: different NoPoints.Max.
268  l_Object2 = l_Object1;
269  l_Object2.NoPoints.Max = 7;
270  EXPECT_EQ(false, l_Object1 == l_Object2);
271  EXPECT_EQ(true, l_Object1 != l_Object2);
272 
273  // Test inequality: different NoPoints.Def.
274  l_Object2 = l_Object1;
275  l_Object2.NoPoints.Def = 8;
276  EXPECT_EQ(false, l_Object1 == l_Object2);
277  EXPECT_EQ(true, l_Object1 != l_Object2);
278 
279  // Test clear.
280  l_Object1 = { { 0, 0, 0, 0 } };
281  l_Object2.clear();
282  EXPECT_EQ(true, l_Object1 == l_Object2);
283 }
284 
286 TEST_F(CTHM1176BasicsTest, sInputTrigger_uParm)
287 {
288  // Set up the objects.
289  sInputTrigger<uParm> l_Object1 = { kInputTrigSrcImmediate, 1., 2 };
290  sInputTrigger<uParm> l_Object2 = l_Object1;
291 
292  // Test equality.
293  EXPECT_EQ(true, l_Object1 == l_Object2);
294  EXPECT_EQ(false, l_Object1 != l_Object2);
295 
296  // Test inequality: different Source.
297  l_Object2 = l_Object1;
298  l_Object2.Source = kInputTrigSrcTimer;
299  EXPECT_EQ(false, l_Object1 == l_Object2);
300  EXPECT_EQ(true, l_Object1 != l_Object2);
301 
302  // Test inequality: different Period_s.
303  l_Object2 = l_Object1;
304  l_Object2.Period_s = 3.;
305  EXPECT_EQ(false, l_Object1 == l_Object2);
306  EXPECT_EQ(true, l_Object1 != l_Object2);
307 
308  // Test inequality: different Count.
309  l_Object2 = l_Object1;
310  l_Object2.Count = 4;
311  EXPECT_EQ(false, l_Object1 == l_Object2);
312  EXPECT_EQ(true, l_Object1 != l_Object2);
313 
314  // Test clear.
315  l_Object1 = { kInputTrigSrcImmediate, 0., 0 };
316  l_Object2.clear();
317  EXPECT_EQ(true, l_Object1 == l_Object2);
318 }
319 
321 TEST_F(CTHM1176BasicsTest, sInputTrigger_sBoundedParm)
322 {
323  // Set up the objects.
324  sInputTrigger<sBoundedParm> l_Object1 = { kInputTrigSrcImmediate, { 1., 2., 3., 4.}, {5, 6, 7, 8 } };
325  sInputTrigger<sBoundedParm> l_Object2 = l_Object1;
326 
327  // Test equality.
328  EXPECT_EQ(true, l_Object1 == l_Object2);
329  EXPECT_EQ(false, l_Object1 != l_Object2);
330 
331  // Test inequality: different Source.
332  l_Object2 = l_Object1;
333  l_Object2.Source = kInputTrigSrcTimer;
334  EXPECT_EQ(false, l_Object1 == l_Object2);
335  EXPECT_EQ(true, l_Object1 != l_Object2);
336 
337  // Test inequality: different Period_s.Val.
338  l_Object2 = l_Object1;
339  l_Object2.Period_s.Val = 9.;
340  EXPECT_EQ(false, l_Object1 == l_Object2);
341  EXPECT_EQ(true, l_Object1 != l_Object2);
342 
343  // Test inequality: different Period_s.Min.
344  l_Object2 = l_Object1;
345  l_Object2.Period_s.Min = 10.;
346  EXPECT_EQ(false, l_Object1 == l_Object2);
347  EXPECT_EQ(true, l_Object1 != l_Object2);
348 
349  // Test inequality: different Period_s.Max.
350  l_Object2 = l_Object1;
351  l_Object2.Period_s.Max = 11.;
352  EXPECT_EQ(false, l_Object1 == l_Object2);
353  EXPECT_EQ(true, l_Object1 != l_Object2);
354 
355  // Test inequality: different Period_s.Def.
356  l_Object2 = l_Object1;
357  l_Object2.Period_s.Def = 12.;
358  EXPECT_EQ(false, l_Object1 == l_Object2);
359  EXPECT_EQ(true, l_Object1 != l_Object2);
360 
361  // Test inequality: different Count.Val.
362  l_Object2 = l_Object1;
363  l_Object2.Count.Val = 13;
364  EXPECT_EQ(false, l_Object1 == l_Object2);
365  EXPECT_EQ(true, l_Object1 != l_Object2);
366 
367  // Test inequality: different Count.Min.
368  l_Object2 = l_Object1;
369  l_Object2.Count.Min = 14;
370  EXPECT_EQ(false, l_Object1 == l_Object2);
371  EXPECT_EQ(true, l_Object1 != l_Object2);
372 
373  // Test inequality: different Count.Max.
374  l_Object2 = l_Object1;
375  l_Object2.Count.Max = 15;
376  EXPECT_EQ(false, l_Object1 == l_Object2);
377  EXPECT_EQ(true, l_Object1 != l_Object2);
378 
379  // Test inequality: different Count.Def.
380  l_Object2 = l_Object1;
381  l_Object2.Count.Def = 16;
382  EXPECT_EQ(false, l_Object1 == l_Object2);
383  EXPECT_EQ(true, l_Object1 != l_Object2);
384 
385  // Test clear.
386  l_Object1 = { kInputTrigSrcImmediate, { 0., 0., 0., 0. }, { 0, 0, 0, 0 } };
387  l_Object2.clear();
388  EXPECT_EQ(true, l_Object1 == l_Object2);
389 }
390 
393 {
394  // Set up the objects.
395  sRange<uParm> l_Object1 = { true, 1. };
396  sRange<uParm> l_Object2 = l_Object1;
397 
398  // Test equality.
399  EXPECT_EQ(true, l_Object1 == l_Object2);
400  EXPECT_EQ(false, l_Object1 != l_Object2);
401 
402  // Test inequality: different Auto.
403  l_Object2 = l_Object1;
404  l_Object2.Auto = false;
405  EXPECT_EQ(false, l_Object1 == l_Object2);
406  EXPECT_EQ(true, l_Object1 != l_Object2);
407 
408  // Test inequality: different Range.
409  l_Object2 = l_Object1;
410  l_Object2.Range = 2.;
411  EXPECT_EQ(false, l_Object1 == l_Object2);
412  EXPECT_EQ(true, l_Object1 != l_Object2);
413 
414  // Test clear.
415  l_Object1 = { false, 0. };
416  l_Object2.clear();
417  EXPECT_EQ(true, l_Object1 == l_Object2);
418 }
419 
421 TEST_F(CTHM1176BasicsTest, sRange_sBoundedParm)
422 {
423  // Set up the objects.
424  sRange<sBoundedParm> l_Object1 = { true, { 1., 2., 3., 4.} };
425  sRange<sBoundedParm> l_Object2 = l_Object1;
426 
427  // Test equality.
428  EXPECT_EQ(true, l_Object1 == l_Object2);
429  EXPECT_EQ(false, l_Object1 != l_Object2);
430 
431  // Test inequality: different Auto.
432  l_Object2 = l_Object1;
433  l_Object2.Auto = false;
434  EXPECT_EQ(false, l_Object1 == l_Object2);
435  EXPECT_EQ(true, l_Object1 != l_Object2);
436 
437  // Test inequality: different Range.Val.
438  l_Object2 = l_Object1;
439  l_Object2.Range.Val = 5.;
440  EXPECT_EQ(false, l_Object1 == l_Object2);
441  EXPECT_EQ(true, l_Object1 != l_Object2);
442 
443  // Test inequality: different Range.Min.
444  l_Object2 = l_Object1;
445  l_Object2.Range.Min = 6.;
446  EXPECT_EQ(false, l_Object1 == l_Object2);
447  EXPECT_EQ(true, l_Object1 != l_Object2);
448 
449  // Test inequality: different Range.Max.
450  l_Object2 = l_Object1;
451  l_Object2.Range.Max = 7.;
452  EXPECT_EQ(false, l_Object1 == l_Object2);
453  EXPECT_EQ(true, l_Object1 != l_Object2);
454 
455  // Test inequality: different Range.Def.
456  l_Object2 = l_Object1;
457  l_Object2.Range.Def = 8.;
458  EXPECT_EQ(false, l_Object1 == l_Object2);
459  EXPECT_EQ(true, l_Object1 != l_Object2);
460 
461  // Test clear.
462  l_Object1 = { false, { 0., 0., 0., 0. } };
463  l_Object2.clear();
464  EXPECT_EQ(true, l_Object1 == l_Object2);
465 }
466 
469 {
470  // Set up the objects.
471  sFile l_Object1 = { 1, "A", "B" };
472  sFile l_Object2 = l_Object1;
473 
474  // Test equality.
475  EXPECT_EQ(true, l_Object1 == l_Object2);
476  EXPECT_EQ(false, l_Object1 != l_Object2);
477 
478  // Test inequality: different Path.
479  l_Object2 = l_Object1;
480  l_Object2.Path = "C";
481  EXPECT_EQ(false, l_Object1 == l_Object2);
482  EXPECT_EQ(true, l_Object1 != l_Object2);
483 
484  // Test inequality: different Type.
485  l_Object2 = l_Object1;
486  l_Object2.Type = "D";
487  EXPECT_EQ(false, l_Object1 == l_Object2);
488  EXPECT_EQ(true, l_Object1 != l_Object2);
489 
490  // Test inequality: different Size.
491  l_Object2 = l_Object1;
492  l_Object2.Size = 2;
493  EXPECT_EQ(false, l_Object1 == l_Object2);
494  EXPECT_EQ(true, l_Object1 != l_Object2);
495 
496  // Test clear.
497  l_Object1 = { 0, "", "" };
498  l_Object2.clear();
499  EXPECT_EQ(true, l_Object1 == l_Object2);
500 }
501 
504 {
505  // Set up the objects.
506  CAbsoluteTimestamp l_Object1(1, 2);
507  CAbsoluteTimestamp l_Object2 = l_Object1;
508  CAbsoluteTimestamp l_Object3;
509 
510  // Test accessors.
511  EXPECT_EQ(l_Object1.seconds(), 1);
512  EXPECT_EQ(l_Object1.nanoseconds(), 2);
513 
514  // Test equality.
515  EXPECT_EQ(true, l_Object1 == l_Object2);
516  EXPECT_EQ(false, l_Object1 != l_Object2);
517 
518  // Test modulo operation in constructor.
519  l_Object2 = CAbsoluteTimestamp(0, 1000000002);
520  EXPECT_EQ(true, l_Object1 == l_Object2);
521  EXPECT_EQ(false, l_Object1 != l_Object2);
522 
523  // Test inequality: different s.
524  l_Object2 = CAbsoluteTimestamp(3, 2);
525  EXPECT_EQ(false, l_Object1 == l_Object2);
526  EXPECT_EQ(true, l_Object1 != l_Object2);
527 
528  // Test inequality: different ns.
529  l_Object2 = CAbsoluteTimestamp(1, 4);
530  EXPECT_EQ(false, l_Object1 == l_Object2);
531  EXPECT_EQ(true, l_Object1 != l_Object2);
532 
533  // Test addition: normal.
534  l_Object2 = CAbsoluteTimestamp(3, 4);
535  l_Object3 = l_Object1 + l_Object2;
536  EXPECT_EQ(l_Object3.seconds(), 4);
537  EXPECT_EQ(l_Object3.nanoseconds(), 6);
538 
539  // Test addition: with carry.
540  l_Object2 = CAbsoluteTimestamp(3, 999999999);
541  l_Object3 = l_Object1 + l_Object2;
542  EXPECT_EQ(l_Object3.seconds(), 5);
543  EXPECT_EQ(l_Object3.nanoseconds(), 1);
544 
545  // Test subtraction: normal.
546  l_Object2 = CAbsoluteTimestamp(3, 4);
547  l_Object3 = l_Object2 - l_Object1;
548  EXPECT_EQ(l_Object3.seconds(), 2);
549  EXPECT_EQ(l_Object3.nanoseconds(), 2);
550 
551  // Test subtraction: with carry.
552  l_Object2 = CAbsoluteTimestamp(3, 1);
553  l_Object3 = l_Object2 - l_Object1;
554  EXPECT_EQ(l_Object3.seconds(), 1);
555  EXPECT_EQ(l_Object3.nanoseconds(), 999999999);
556 }
557 
560 {
561  // Set up the objects.
562  sArbitraryMeasurements l_Object1 = { false, false, false, false, false, 100 };
563  sArbitraryMeasurements l_Object2 = l_Object1;
564 
565  // Test equality.
566  EXPECT_EQ(true, l_Object1 == l_Object2);
567  EXPECT_EQ(false, l_Object1 != l_Object2);
568 
569  // Test inequality: different Bx.
570  l_Object2 = l_Object1;
571  l_Object2.Bx = true;
572  EXPECT_EQ(false, l_Object1 == l_Object2);
573  EXPECT_EQ(true, l_Object1 != l_Object2);
574 
575  // Test inequality: different By.
576  l_Object2 = l_Object1;
577  l_Object2.By = true;
578  EXPECT_EQ(false, l_Object1 == l_Object2);
579  EXPECT_EQ(true, l_Object1 != l_Object2);
580 
581  // Test inequality: different Bz.
582  l_Object2 = l_Object1;
583  l_Object2.Bz = true;
584  EXPECT_EQ(false, l_Object1 == l_Object2);
585  EXPECT_EQ(true, l_Object1 != l_Object2);
586 
587  // Test inequality: different Temperature.
588  l_Object2 = l_Object1;
589  l_Object2.Temperature = true;
590  EXPECT_EQ(false, l_Object1 == l_Object2);
591  EXPECT_EQ(true, l_Object1 != l_Object2);
592 
593  // Test inequality: different Timestamp.
594  l_Object2 = l_Object1;
595  l_Object2.Timestamp = true;
596  EXPECT_EQ(false, l_Object1 == l_Object2);
597  EXPECT_EQ(true, l_Object1 != l_Object2);
598 
599  // Test inequality: different NoMeasurements.
600  l_Object2 = l_Object1;
601  l_Object2.NoMeasurements = 200;
602  EXPECT_EQ(false, l_Object1 == l_Object2);
603  EXPECT_EQ(true, l_Object1 != l_Object2);
604 
605  // Test clear.
606  l_Object1 = { true, true, true, true, true, 1 };
607  l_Object2.clear();
608  EXPECT_EQ(true, l_Object1 == l_Object2);
609 }
MTL::Instrument::THM1176Types::sFile::Type
std::string Type
File type ("ASCII" or "BINARY").
Definition: THM1176Types.h:496
MTL::Instrument::THM1176Types::sRange::Range
ParmType< tFlux > Range
Measurement range, if auto-ranging is not enabled.
Definition: THM1176Types.h:460
THM1176TestUtilities.h
Utility functions used to test THM1176 API.
MTL::Instrument::THM1176Types::sInputTrigger::Period_s
ParmType< F64 > Period_s
Trigger period, for timed trigger.
Definition: THM1176Types.h:407
MTL::Instrument::THM1176Types::kuT
@ kuT
Micro-Tesla.
Definition: THM1176Types.h:185
MTL::Instrument::THM1176Types::sArbitraryMeasurements
Specify the measurement data to be returned.
Definition: THM1176Types.h:572
MTL::Instrument::THM1176Types::sAveraging::clear
void clear(void)
Clear to default (zero).
Definition: THM1176Types.h:376
MTL::Instrument::THM1176Types::sRange< uParm >
MTL::Instrument::THM1176Types::sFile::Path
std::string Path
File path.
Definition: THM1176Types.h:495
CTHM1176BasicsTest
Test THM1176 API: Type conversions and THM1176 classes.
Definition: CTHM1176BasicsTest.cpp:17
MTL::Instrument::THM1176Types::sArbitraryMeasurements::clear
void clear()
Clear to default values.
Definition: THM1176Types.cpp:483
MTL::Instrument::THM1176Types::sArbitraryMeasurements::NoMeasurements
U32 NoMeasurements
Return this number of measurements.
Definition: THM1176Types.h:578
MTL::Instrument::THM1176Types::CDivisorList
List of divisors, one per measurement unit.
Definition: THM1176Types.h:203
MTL::Instrument::THM1176Types::sIdentifier::FirmwareVersion
struct sVersion FirmwareVersion
Version numbers of firmware.
Definition: THM1176Types.h:342
MTL::Instrument::THM1176Types::sFile::clear
void clear()
Clear to default values.
Definition: THM1176Types.cpp:306
MTL::Instrument::THM1176Types::knT
@ knT
Nano-Tesla.
Definition: THM1176Types.h:186
MTL::Instrument::THM1176Types::sIdentifier
Instrument's identification string - parsed version.
Definition: THM1176Types.h:336
MTL::Instrument::THM1176Types::sRange::Auto
bool Auto
Auto-ranging enabled.
Definition: THM1176Types.h:459
MTL::Instrument::THM1176Types::sVersion::Minor
U8 Minor
Minor version number.
Definition: THM1176Types.h:316
MTL::Instrument::THM1176Types::sRange::clear
void clear(void)
Clear to default values.
Definition: THM1176Types.h:469
MTL::Instrument::THM1176Types::sInputTrigger::Count
ParmType< U16 > Count
Trigger count: take this many measurements before sending results.
Definition: THM1176Types.h:408
MTL::Instrument
Definition: THM1176.h:75
MTL::Instrument::THM1176Types
Definition: THM1176TypeConversions.h:20
MTL::Instrument::THM1176Types::sArbitraryMeasurements::Bz
bool Bz
Return the flux density Z-component.
Definition: THM1176Types.h:575
MTL::Instrument::THM1176Types::sAveraging< uParm >
MTL::Instrument::THM1176Types::kmT
@ kmT
Milli-Tesla.
Definition: THM1176Types.h:184
MTL::Instrument::THM1176Types::TestTHM1176Types
bool TestTHM1176Types()
Test the conversion routines.
Definition: THM1176TypeConversions.cpp:88
MTL::Instrument::THM1176Types::kInputTrigSrcImmediate
@ kInputTrigSrcImmediate
Immediate trigger: start measurement immediately after previous one completes.
Definition: THM1176Types.h:397
MTL::Instrument::THM1176Types::CAbsoluteTimestamp::nanoseconds
U64 nanoseconds(void) const
Fetch the number of nanoseconds.
Definition: THM1176Types.cpp:365
MTL::Instrument::THM1176Types::sIdentifier::Manufacturer
std::string Manufacturer
Manufacturer name ("Metrolab Technology SA")
Definition: THM1176Types.h:337
MTL::Instrument::THM1176Types::sArbitraryMeasurements::Timestamp
bool Timestamp
Return the timestamp.
Definition: THM1176Types.h:577
MTL::Instrument::THM1176Types::CAbsoluteTimestamp
Timestamp for a measurement.
Definition: THM1176Types.h:530
MTL::Instrument::THM1176Types::sIdentifier::Model
std::string Model
Model name (e.g. "THM1176-MF")
Definition: THM1176Types.h:338
TEST_F
TEST_F(CTHM1176BasicsTest, TestTHM1176Types)
Definition: CTHM1176BasicsTest.cpp:21
MTL::Instrument::THM1176Types::sInputTrigger::clear
void clear(void)
Clear to default.
Definition: THM1176Types.h:418
MTL::Instrument::THM1176Types::sVersion::Major
U8 Major
Major version number.
Definition: THM1176Types.h:315
MTL::Instrument::THM1176Types::kT
@ kT
Tesla.
Definition: THM1176Types.h:183
MTL::Instrument::THM1176Types::sInputTrigger< uParm >
MTL::Instrument::THM1176Types::CUnitsList
List of measurement units.
Definition: THM1176Types.h:194
MTL::Instrument::THM1176Types::CFluxList
List of flux density values.
Definition: THM1176Types.h:170
MTL::Instrument::THM1176Types::sError
Error returned by the instrument.
Definition: THM1176Types.h:214
MTL::Instrument::THM1176Types::sArbitraryMeasurements::Temperature
bool Temperature
Return the sensor temperature.
Definition: THM1176Types.h:576
MTL::Instrument::THM1176Types::CErrorList
List of errors returned by the instrument.
Definition: THM1176Types.h:232
MTL::Instrument::THM1176Types::sInputTrigger::Source
eInputTriggerSource Source
Trigger source.
Definition: THM1176Types.h:406
MTL::Instrument::THM1176Types::sIdentifier::ElectronicsVersion
struct sVersion ElectronicsVersion
Version numbers of electronics.
Definition: THM1176Types.h:340
MTL::Instrument::THM1176Types::sArbitraryMeasurements::Bx
bool Bx
Return the flux density X-component.
Definition: THM1176Types.h:573
MTL::Instrument::THM1176Types::sFile::Size
size_t Size
File size, in bytes.
Definition: THM1176Types.h:494
MTL::Instrument::THM1176Types::sFile
Directory entry in the instrument's file system.
Definition: THM1176Types.h:493
MTL::Instrument::THM1176Types::sAveraging::NoPoints
ParmType< U16 > NoPoints
Number of points in block average.
Definition: THM1176Types.h:368
MTL::Instrument::THM1176Types::sIdentifier::clear
void clear(void)
Clear to default.
Definition: THM1176Types.cpp:198
THM1176TypeConversions.h
Type conversion routines for C++ API for Metrolab THM1176/TFM1186.
MTL::Instrument::THM1176Types::CAbsoluteTimestamp::seconds
std::time_t seconds(void) const
Fetch the number of seconds.
Definition: THM1176Types.cpp:361
MTL::Instrument::THM1176Types::sIdentifier::ProbeVersion
struct sVersion ProbeVersion
Version numbers of probe.
Definition: THM1176Types.h:341
MTL::Instrument::THM1176Types::sArbitraryMeasurements::By
bool By
Return the flux density Y-component.
Definition: THM1176Types.h:574
MTL::Instrument::THM1176Types::sIdentifier::SerialNumber
U32 SerialNumber
Serial number.
Definition: THM1176Types.h:339
MTL::Instrument::THM1176Types::kInputTrigSrcTimer
@ kInputTrigSrcTimer
Timed trigger: start measurement at regular intervals.
Definition: THM1176Types.h:398