8 #include "gtest/gtest.h"
33 ASSERT_NE(
nullptr, pResourceManager);
34 ASSERT_NE(
nullptr, pTHM1176);
35 ASSERT_EQ(
true, pTHM1176->IsOpen());
36 ASSERT_EQ(
true, pTHM1176->
Reset());
43 delete pResourceManager;
44 pResourceManager =
nullptr;
50 ASSERT_NE(pTHM1176,
nullptr);
51 ASSERT_EQ(
true, pTHM1176->
Reset());
74 ASSERT_EQ(
true, pTHM1176->
Initiate());
85 ASSERT_EQ(
true, pTHM1176->Write(
"FORM?") && pTHM1176->Read(l_Buffer));
86 EXPECT_EQ(
"ASCII\n", std::string(l_Buffer.
begin(), l_Buffer.
end()));
90 ASSERT_EQ(
true, pTHM1176->Write(
"FORM?") && pTHM1176->Read(l_Buffer));
91 EXPECT_EQ(
"INTEGER\n", std::string(l_Buffer.
begin(), l_Buffer.
end()));
95 ASSERT_EQ(
true, pTHM1176->Write(
"FORM?") && pTHM1176->Read(l_Buffer));
96 EXPECT_EQ(
"ASCII\n", std::string(l_Buffer.
begin(), l_Buffer.
end()));
100 ASSERT_EQ(
true, pTHM1176->Write(
"FORM?") && pTHM1176->Read(l_Buffer));
101 EXPECT_EQ(
"PACKED,2\n", std::string(l_Buffer.
begin(), l_Buffer.
end()));
105 ASSERT_EQ(
true, pTHM1176->Write(
"FORM?") && pTHM1176->Read(l_Buffer));
106 EXPECT_EQ(
"PACKED,1\n", std::string(l_Buffer.
begin(), l_Buffer.
end()));
115 ASSERT_EQ(
true, pTHM1176->GetFormat(l_Format) && l_Format ==
kComFormatAscii);
118 ASSERT_EQ(
true, pTHM1176->Write(
"FORM INTEGER"));
122 ASSERT_EQ(
true, pTHM1176->Write(
"FORM ASCII"));
123 ASSERT_EQ(
true, pTHM1176->GetFormat(l_Format) && l_Format ==
kComFormatAscii);
126 ASSERT_EQ(
true, pTHM1176->Write(
"FORM PACKED,2"));
130 ASSERT_EQ(
true, pTHM1176->Write(
"FORM PACKED,1"));
141 U64 l_TimestampInterval;
147 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
149 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(0, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
151 l_ErrorList = pTHM1176->CurrentErrorList();
152 EXPECT_EQ(3, l_ErrorList.size());
153 EXPECT_EQ(-222, l_ErrorList[0].Code);
154 EXPECT_EQ(-222, l_ErrorList[1].Code);
155 EXPECT_EQ(-222, l_ErrorList[2].Code);
157 EXPECT_EQ(0, l_Bx.size());
158 EXPECT_EQ(0, l_By.size());
159 EXPECT_EQ(0, l_Bz.size());
160 EXPECT_EQ(0, l_Temperature);
161 ASSERT_EQ(0, l_TimestampList.size());
164 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
166 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(0, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
168 l_ErrorList = pTHM1176->CurrentErrorList();
169 EXPECT_EQ(3, l_ErrorList.size());
170 EXPECT_EQ(-222, l_ErrorList[0].Code);
171 EXPECT_EQ(-222, l_ErrorList[1].Code);
172 EXPECT_EQ(-222, l_ErrorList[2].Code);
174 EXPECT_EQ(0, l_Bx.size());
175 EXPECT_EQ(0, l_By.size());
176 EXPECT_EQ(0, l_Bz.size());
177 EXPECT_EQ(0, l_Temperature);
178 ASSERT_EQ(0, l_TimestampList.size());
181 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
183 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(0, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
185 l_ErrorList = pTHM1176->CurrentErrorList();
186 EXPECT_EQ(3, l_ErrorList.size());
187 EXPECT_EQ(-222, l_ErrorList[0].Code);
188 EXPECT_EQ(-222, l_ErrorList[1].Code);
189 EXPECT_EQ(-222, l_ErrorList[2].Code);
191 EXPECT_EQ(0, l_Bx.size());
192 EXPECT_EQ(0, l_By.size());
193 EXPECT_EQ(0, l_Bz.size());
194 EXPECT_EQ(0, l_Temperature);
195 ASSERT_EQ(0, l_TimestampList.size());
198 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
200 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(0, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
202 l_ErrorList = pTHM1176->CurrentErrorList();
203 EXPECT_EQ(3, l_ErrorList.size());
204 EXPECT_EQ(-222, l_ErrorList[0].Code);
205 EXPECT_EQ(-222, l_ErrorList[1].Code);
206 EXPECT_EQ(-222, l_ErrorList[2].Code);
208 EXPECT_EQ(0, l_Bx.size());
209 EXPECT_EQ(0, l_By.size());
210 EXPECT_EQ(0, l_Bz.size());
211 EXPECT_EQ(0, l_Temperature);
212 ASSERT_EQ(0, l_TimestampList.size());
218 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
220 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
224 EXPECT_LT(0, l_Temperature);
228 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
233 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
235 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
239 EXPECT_LT(0, l_Temperature);
243 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
248 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
250 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
254 EXPECT_LT(0, l_Temperature);
258 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
263 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
265 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
269 EXPECT_LT(0, l_Temperature);
273 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
281 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
283 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS-1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
287 EXPECT_LT(0, l_Temperature);
291 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
296 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
298 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS-1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
302 EXPECT_LT(0, l_Temperature);
306 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
311 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
313 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS-1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
317 EXPECT_LT(0, l_Temperature);
321 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
326 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
328 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS-1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
332 EXPECT_LT(0, l_Temperature);
336 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
343 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
345 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS+1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
347 l_ErrorList = pTHM1176->CurrentErrorList();
348 EXPECT_EQ(3, l_ErrorList.size());
349 EXPECT_EQ(-222, l_ErrorList[0].Code);
350 EXPECT_EQ(-222, l_ErrorList[1].Code);
351 EXPECT_EQ(-222, l_ErrorList[2].Code);
353 EXPECT_EQ(0, l_Bx.size());
354 EXPECT_EQ(0, l_By.size());
355 EXPECT_EQ(0, l_Bz.size());
356 EXPECT_EQ(0, l_Temperature);
357 ASSERT_EQ(0, l_TimestampList.size());
360 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
362 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS+1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
364 l_ErrorList = pTHM1176->CurrentErrorList();
365 EXPECT_EQ(3, l_ErrorList.size());
366 EXPECT_EQ(-222, l_ErrorList[0].Code);
367 EXPECT_EQ(-222, l_ErrorList[1].Code);
368 EXPECT_EQ(-222, l_ErrorList[2].Code);
370 EXPECT_EQ(0, l_Bx.size());
371 EXPECT_EQ(0, l_By.size());
372 EXPECT_EQ(0, l_Bz.size());
373 EXPECT_EQ(0, l_Temperature);
374 ASSERT_EQ(0, l_TimestampList.size());
377 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
379 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS+1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
381 l_ErrorList = pTHM1176->CurrentErrorList();
382 EXPECT_EQ(3, l_ErrorList.size());
383 EXPECT_EQ(-222, l_ErrorList[0].Code);
384 EXPECT_EQ(-222, l_ErrorList[1].Code);
385 EXPECT_EQ(-222, l_ErrorList[2].Code);
387 EXPECT_EQ(0, l_Bx.size());
388 EXPECT_EQ(0, l_By.size());
389 EXPECT_EQ(0, l_Bz.size());
390 EXPECT_EQ(0, l_Temperature);
391 ASSERT_EQ(0, l_TimestampList.size());
394 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
396 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS+1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
398 l_ErrorList = pTHM1176->CurrentErrorList();
399 EXPECT_EQ(3, l_ErrorList.size());
400 EXPECT_EQ(-222, l_ErrorList[0].Code);
401 EXPECT_EQ(-222, l_ErrorList[1].Code);
402 EXPECT_EQ(-222, l_ErrorList[2].Code);
404 EXPECT_EQ(0, l_Bx.size());
405 EXPECT_EQ(0, l_By.size());
406 EXPECT_EQ(0, l_Bz.size());
407 EXPECT_EQ(0, l_Temperature);
408 ASSERT_EQ(0, l_TimestampList.size());
414 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
418 ASSERT_EQ(
true, pTHM1176->GetAllUnits(l_AllUnits));
419 ASSERT_LT(1, l_AllUnits.size());
421 ASSERT_EQ(
true, pTHM1176->ParmUnitsSet(l_AllUnits[0]));
422 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
427 ASSERT_EQ(
true, pTHM1176->ParmUnitsSet(l_AllUnits[1]));
428 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx1, l_By1, l_Bz1, l_Units, l_Temperature, l_TimestampList));
433 U32 l_Divisor, l_Divisor1;
434 ASSERT_EQ(
true, pTHM1176->GetDivisor(l_AllUnits[0], l_Divisor));
435 ASSERT_EQ(
true, pTHM1176->GetDivisor(l_AllUnits[1], l_Divisor1));
437 for (
auto l_pBx = l_Bx.begin(), l_pBx1 = l_Bx1.begin();
438 l_pBx < l_Bx.end() && l_pBx1 < l_Bx1.end();
440 EXPECT_FLOAT_EQ(*l_pBx * l_Divisor, *l_pBx1 * l_Divisor1);
441 for (
auto l_pBy = l_By.begin(), l_pBy1 = l_By1.begin();
442 l_pBy < l_By.end() && l_pBy1 < l_By1.end();
444 EXPECT_FLOAT_EQ(*l_pBy * l_Divisor, *l_pBy1 * l_Divisor1);
445 for (
auto l_pBz = l_Bz.begin(), l_pBz1 = l_Bz1.begin();
446 l_pBz < l_Bz.end() && l_pBz1 < l_Bz1.end();
448 EXPECT_FLOAT_EQ(*l_pBz * l_Divisor, *l_pBz1 * l_Divisor1);
454 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
456 ASSERT_EQ(
true, pTHM1176->ParmUseCalibrationSet(
false));
458 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
463 for (
auto l_pBx = l_Bx.begin(); l_pBx < l_Bx.end(); l_pBx++)
464 EXPECT_FLOAT_EQ(*l_pBx, std::round(*l_pBx));
465 for (
auto l_pBy = l_By.begin(); l_pBy < l_By.end(); l_pBy++)
466 EXPECT_FLOAT_EQ(*l_pBy, std::round(*l_pBy));
467 for (
auto l_pBz = l_Bz.begin(); l_pBz < l_Bz.end(); l_pBz++)
468 EXPECT_FLOAT_EQ(*l_pBz, std::round(*l_pBz));
471 ASSERT_EQ(
true, pTHM1176->ParmUseCalibrationSet(
false));
473 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx1, l_By1, l_Bz1, l_Units, l_Temperature, l_TimestampList));
478 for (
auto l_pBx = l_Bx.begin(), l_pBx1 = l_Bx1.begin();
479 l_pBx < l_Bx.end() && l_pBx1 < l_Bx1.end();
481 EXPECT_FLOAT_EQ(*l_pBx, *l_pBx1);
482 for (
auto l_pBy = l_By.begin(), l_pBy1 = l_By1.begin();
483 l_pBy < l_By.end() && l_pBy1 < l_By1.end();
485 EXPECT_FLOAT_EQ(*l_pBy, *l_pBy1);
486 for (
auto l_pBz = l_Bz.begin(), l_pBz1 = l_Bz1.begin();
487 l_pBz < l_Bz.end() && l_pBz1 < l_Bz1.end();
489 EXPECT_FLOAT_EQ(*l_pBz, *l_pBz1);
491 ASSERT_EQ(
true, pTHM1176->ParmUseCalibrationSet(
true));
497 ASSERT_EQ(
true, pTHM1176->ParmTriggerInputGet(l_TrigBounds));
502 ASSERT_EQ(
true, pTHM1176->ParmTriggerInputSet(l_Trig));
505 ASSERT_EQ(
true, pTHM1176->Initiate(
true));
509 std::this_thread::sleep_for(std::chrono::seconds(1));
512 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
514 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Trig.
Count, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
515 EXPECT_EQ(l_Trig.
Count, l_Bx.size());
516 EXPECT_EQ(l_Trig.
Count, l_By.size());
517 EXPECT_EQ(l_Trig.
Count, l_Bz.size());
518 EXPECT_LT(0, l_Temperature);
521 ASSERT_EQ(l_Trig.
Count, l_TimestampList.size());
522 for (
int i = 0; i < l_Trig.
Count - 1; i++)
524 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
525 EXPECT_EQ(l_TimestampInterval, l_Trig.
Period_s * 1E9);
529 std::this_thread::sleep_for(std::chrono::seconds(1));
532 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Trig.
Count, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList, &l_MeasurementConditions));
533 EXPECT_EQ(l_Trig.
Count, l_Bx.size());
534 EXPECT_EQ(l_Trig.
Count, l_By.size());
535 EXPECT_EQ(l_Trig.
Count, l_Bz.size());
536 EXPECT_LT(0, l_Temperature);
539 ASSERT_EQ(l_Trig.
Count, l_TimestampList.size());
540 for (
int i = 0; i < l_Trig.
Count - 1; i++)
542 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
543 EXPECT_EQ(l_TimestampInterval, l_Trig.
Period_s * 1E9);
556 EXPECT_DOUBLE_EQ(l_Period, l_Trig.
Period_s * 1E9);
559 l_ErrorList = pTHM1176->CurrentErrorList();
560 EXPECT_EQ(1, l_ErrorList.size());
561 EXPECT_EQ(204, l_ErrorList[0].Code);
573 ASSERT_EQ(
true, pTHM1176->ParmTriggerInputSet(l_Trig));
576 ASSERT_EQ(
true, pTHM1176->Initiate(
false));
579 std::vector<std::chrono::time_point<std::chrono::high_resolution_clock>> l_TriggerTimes;
582 ASSERT_EQ(
true, pTHM1176->SendBusTrigger());
585 l_TriggerTimes.push_back (std::chrono::high_resolution_clock::now());
588 std::time_t l_Now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
589 char l_DateTimeString[32];
590 std::strftime(l_DateTimeString, 31,
"%FT%T", std::localtime(&l_Now));
591 std::cout <<
"Send trigger " << i << std::string(l_DateTimeString) << std::endl;
598 pTHM1176->ClearErrorList();
600 std::this_thread::sleep_for(std::chrono::seconds(1));
604 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
606 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(
THM1176_NO_MEASUREMENTS, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
610 EXPECT_LT(0, l_Temperature);
616 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
617 F64 l_ExpectedTimestampInterval = std::chrono::duration_cast<std::chrono::nanoseconds>(l_TriggerTimes[i+1] - l_TriggerTimes[i]).count();
618 EXPECT_NEAR(
static_cast<F64>(l_TimestampInterval), l_ExpectedTimestampInterval, 1E7);
625 ASSERT_EQ(
true, pTHM1176->ConvertTimestamp(l_TimestampList[i], l_AbsolutTimestamp));
626 std::cout <<
"Timestamp: " << l_AbsolutTimestamp << std::endl;
630 l_ErrorList = pTHM1176->CurrentErrorList();
631 EXPECT_EQ(0, l_ErrorList.size());
642 U64 l_TimestampInterval;
650 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
652 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
654 l_ErrorList = pTHM1176->CurrentErrorList();
655 EXPECT_EQ(3, l_ErrorList.size());
656 EXPECT_EQ(-222, l_ErrorList[0].Code);
657 EXPECT_EQ(-222, l_ErrorList[1].Code);
658 EXPECT_EQ(-222, l_ErrorList[2].Code);
660 EXPECT_EQ(0, l_Bx.size());
661 EXPECT_EQ(0, l_By.size());
662 EXPECT_EQ(0, l_Bz.size());
663 EXPECT_EQ(0, l_Temperature);
664 ASSERT_EQ(0, l_TimestampList.size());
667 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
669 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
671 l_ErrorList = pTHM1176->CurrentErrorList();
672 EXPECT_EQ(3, l_ErrorList.size());
673 EXPECT_EQ(-222, l_ErrorList[0].Code);
674 EXPECT_EQ(-222, l_ErrorList[1].Code);
675 EXPECT_EQ(-222, l_ErrorList[2].Code);
677 EXPECT_EQ(0, l_Bx.size());
678 EXPECT_EQ(0, l_By.size());
679 EXPECT_EQ(0, l_Bz.size());
680 EXPECT_EQ(0, l_Temperature);
681 ASSERT_EQ(0, l_TimestampList.size());
684 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
686 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
688 l_ErrorList = pTHM1176->CurrentErrorList();
689 EXPECT_EQ(3, l_ErrorList.size());
690 EXPECT_EQ(-222, l_ErrorList[0].Code);
691 EXPECT_EQ(-222, l_ErrorList[1].Code);
692 EXPECT_EQ(-222, l_ErrorList[2].Code);
694 EXPECT_EQ(0, l_Bx.size());
695 EXPECT_EQ(0, l_By.size());
696 EXPECT_EQ(0, l_Bz.size());
697 EXPECT_EQ(0, l_Temperature);
698 ASSERT_EQ(0, l_TimestampList.size());
701 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
703 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
705 l_ErrorList = pTHM1176->CurrentErrorList();
706 EXPECT_EQ(3, l_ErrorList.size());
707 EXPECT_EQ(-222, l_ErrorList[0].Code);
708 EXPECT_EQ(-222, l_ErrorList[1].Code);
709 EXPECT_EQ(-222, l_ErrorList[2].Code);
711 EXPECT_EQ(0, l_Bx.size());
712 EXPECT_EQ(0, l_By.size());
713 EXPECT_EQ(0, l_Bz.size());
714 EXPECT_EQ(0, l_Temperature);
715 ASSERT_EQ(0, l_TimestampList.size());
723 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
725 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
727 EXPECT_EQ(0, l_By.size());
729 EXPECT_EQ(0, l_Temperature);
733 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
736 l_ErrorList = pTHM1176->CurrentErrorList();
737 ASSERT_EQ(1, l_ErrorList.size());
739 pTHM1176->ClearErrorList();
742 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
744 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
746 EXPECT_EQ(0, l_By.size());
748 EXPECT_EQ(0, l_Temperature);
752 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
755 l_ErrorList = pTHM1176->CurrentErrorList();
756 ASSERT_EQ(1, l_ErrorList.size());
758 pTHM1176->ClearErrorList();
761 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
763 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
765 EXPECT_EQ(0, l_By.size());
767 EXPECT_EQ(0, l_Temperature);
771 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
774 l_ErrorList = pTHM1176->CurrentErrorList();
775 ASSERT_EQ(1, l_ErrorList.size());
777 pTHM1176->ClearErrorList();
780 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
782 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
784 EXPECT_EQ(0, l_By.size());
786 EXPECT_EQ(0, l_Temperature);
790 l_TimestampInterval = l_TimestampList[i+1] - l_TimestampList[i];
793 l_ErrorList = pTHM1176->CurrentErrorList();
794 ASSERT_EQ(1, l_ErrorList.size());
796 pTHM1176->ClearErrorList();
804 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
806 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
807 EXPECT_EQ(0, l_Bx.size());
809 EXPECT_EQ(0, l_Bz.size());
810 EXPECT_LT(0, l_Temperature);
811 ASSERT_EQ(0, l_TimestampList.size());
812 l_ErrorList = pTHM1176->CurrentErrorList();
813 ASSERT_EQ(1, l_ErrorList.size());
815 pTHM1176->ClearErrorList();
818 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
820 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
821 EXPECT_EQ(0, l_Bx.size());
823 EXPECT_EQ(0, l_Bz.size());
824 EXPECT_LT(0, l_Temperature);
825 ASSERT_EQ(0, l_TimestampList.size());
826 l_ErrorList = pTHM1176->CurrentErrorList();
827 ASSERT_EQ(1, l_ErrorList.size());
829 pTHM1176->ClearErrorList();
832 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
834 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
835 EXPECT_EQ(0, l_Bx.size());
837 EXPECT_EQ(0, l_Bz.size());
838 EXPECT_LT(0, l_Temperature);
839 ASSERT_EQ(0, l_TimestampList.size());
840 l_ErrorList = pTHM1176->CurrentErrorList();
841 ASSERT_EQ(1, l_ErrorList.size());
843 pTHM1176->ClearErrorList();
846 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
848 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
849 EXPECT_EQ(0, l_Bx.size());
851 EXPECT_EQ(0, l_Bz.size());
852 EXPECT_LT(0, l_Temperature);
853 ASSERT_EQ(0, l_TimestampList.size());
854 l_ErrorList = pTHM1176->CurrentErrorList();
855 ASSERT_EQ(1, l_ErrorList.size());
857 pTHM1176->ClearErrorList();
864 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
866 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
868 l_ErrorList = pTHM1176->CurrentErrorList();
869 EXPECT_EQ(3, l_ErrorList.size());
870 EXPECT_EQ(-222, l_ErrorList[0].Code);
871 EXPECT_EQ(-222, l_ErrorList[1].Code);
872 EXPECT_EQ(-222, l_ErrorList[2].Code);
874 EXPECT_EQ(0, l_Bx.size());
875 EXPECT_EQ(0, l_By.size());
876 EXPECT_EQ(0, l_Bz.size());
877 EXPECT_EQ(0, l_Temperature);
878 ASSERT_EQ(0, l_TimestampList.size());
881 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
883 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
885 l_ErrorList = pTHM1176->CurrentErrorList();
886 EXPECT_EQ(3, l_ErrorList.size());
887 EXPECT_EQ(-222, l_ErrorList[0].Code);
888 EXPECT_EQ(-222, l_ErrorList[1].Code);
889 EXPECT_EQ(-222, l_ErrorList[2].Code);
891 EXPECT_EQ(0, l_Bx.size());
892 EXPECT_EQ(0, l_By.size());
893 EXPECT_EQ(0, l_Bz.size());
894 EXPECT_EQ(0, l_Temperature);
895 ASSERT_EQ(0, l_TimestampList.size());
898 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
900 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
902 l_ErrorList = pTHM1176->CurrentErrorList();
903 EXPECT_EQ(3, l_ErrorList.size());
904 EXPECT_EQ(-222, l_ErrorList[0].Code);
905 EXPECT_EQ(-222, l_ErrorList[1].Code);
906 EXPECT_EQ(-222, l_ErrorList[2].Code);
908 EXPECT_EQ(0, l_Bx.size());
909 EXPECT_EQ(0, l_By.size());
910 EXPECT_EQ(0, l_Bz.size());
911 EXPECT_EQ(0, l_Temperature);
912 ASSERT_EQ(0, l_TimestampList.size());
915 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
917 ASSERT_EQ(
false, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
919 l_ErrorList = pTHM1176->CurrentErrorList();
920 EXPECT_EQ(3, l_ErrorList.size());
921 EXPECT_EQ(-222, l_ErrorList[0].Code);
922 EXPECT_EQ(-222, l_ErrorList[1].Code);
923 EXPECT_EQ(-222, l_ErrorList[2].Code);
925 EXPECT_EQ(0, l_Bx.size());
926 EXPECT_EQ(0, l_By.size());
927 EXPECT_EQ(0, l_Bz.size());
928 EXPECT_EQ(0, l_Temperature);
929 ASSERT_EQ(0, l_TimestampList.size());
936 l_Bx.clear(); l_By.clear(); l_Bz.clear(); l_Temperature = 0; l_TimestampList.clear();
940 ASSERT_EQ(
true, pTHM1176->GetAllUnits(l_AllUnits));
941 ASSERT_LT(1, l_AllUnits.size());
943 ASSERT_EQ(
true, pTHM1176->ParmUnitsSet(l_AllUnits[0]));
944 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
949 ASSERT_EQ(
true, pTHM1176->ParmUnitsSet(l_AllUnits[1]));
950 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx1, l_By1, l_Bz1, l_Units, l_Temperature, l_TimestampList));
955 U32 l_Divisor, l_Divisor1;
956 ASSERT_EQ(
true, pTHM1176->GetDivisor(l_AllUnits[0], l_Divisor));
957 ASSERT_EQ(
true, pTHM1176->GetDivisor(l_AllUnits[1], l_Divisor1));
959 for (
auto l_pBx = l_Bx.begin(), l_pBx1 = l_Bx1.begin();
960 l_pBx < l_Bx.end() && l_pBx1 < l_Bx1.end();
962 EXPECT_FLOAT_EQ(*l_pBx * l_Divisor, *l_pBx1 * l_Divisor1);
963 for (
auto l_pBy = l_By.begin(), l_pBy1 = l_By1.begin();
964 l_pBy < l_By.end() && l_pBy1 < l_By1.end();
966 EXPECT_FLOAT_EQ(*l_pBy * l_Divisor, *l_pBy1 * l_Divisor1);
967 for (
auto l_pBz = l_Bz.begin(), l_pBz1 = l_Bz1.begin();
968 l_pBz < l_Bz.end() && l_pBz1 < l_Bz1.end();
970 EXPECT_FLOAT_EQ(*l_pBz * l_Divisor, *l_pBz1 * l_Divisor1);
981 U16 l_Temperature = 0;
989 l_Select = {
true,
false,
false,
false,
false, 1 };
990 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_BxRaw, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
991 EXPECT_EQ(1, l_BxRaw.size());
992 EXPECT_EQ(0, l_By.size());
993 EXPECT_EQ(0, l_Bz.size());
994 EXPECT_EQ(0, l_Temperature);
995 ASSERT_EQ(0, l_TimestampList.size());
996 l_ErrorList = pTHM1176->CurrentErrorList();
997 ASSERT_EQ(1, l_ErrorList.size());
999 pTHM1176->ClearErrorList();
1001 l_Select = {
false,
true,
false,
false,
false, 1 };
1002 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_ByRaw, l_Bz, l_Units, l_Temperature, l_TimestampList));
1003 EXPECT_EQ(0, l_Bx.size());
1004 EXPECT_EQ(1, l_ByRaw.size());
1005 EXPECT_EQ(0, l_Bz.size());
1006 EXPECT_EQ(0, l_Temperature);
1007 ASSERT_EQ(0, l_TimestampList.size());
1008 l_ErrorList = pTHM1176->CurrentErrorList();
1009 ASSERT_EQ(1, l_ErrorList.size());
1011 pTHM1176->ClearErrorList();
1013 l_Select = {
false,
false,
true,
false,
false, 1 };
1014 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(l_Select, l_Bx, l_By, l_BzRaw, l_Units, l_Temperature, l_TimestampList));
1015 EXPECT_EQ(0, l_Bx.size());
1016 EXPECT_EQ(0, l_By.size());
1017 EXPECT_EQ(1, l_BzRaw.size());
1018 EXPECT_EQ(0, l_Temperature);
1019 ASSERT_EQ(0, l_TimestampList.size());
1020 l_ErrorList = pTHM1176->CurrentErrorList();
1021 ASSERT_EQ(1, l_ErrorList.size());
1023 pTHM1176->ClearErrorList();
1027 ASSERT_EQ(
true, pTHM1176->GetRotationMatrix(l_Matrix));
1029 l_B << l_BxRaw[0], l_ByRaw[0], l_BzRaw[0];
1030 l_B = l_Matrix * l_B;
1033 l_Select = {
true,
true,
true,
false,
false, 1 };
1034 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
1035 EXPECT_EQ(1, l_Bx.size());
1036 EXPECT_EQ(1, l_By.size());
1037 EXPECT_EQ(1, l_Bz.size());
1038 EXPECT_LT(0, l_Temperature);
1039 ASSERT_EQ(1, l_TimestampList.size());
1040 l_ErrorList = pTHM1176->CurrentErrorList();
1041 ASSERT_EQ(0, l_ErrorList.size());
1044 EXPECT_FLOAT_EQ(l_B(0), l_Bx[0]);
1045 EXPECT_FLOAT_EQ(l_B(1), l_By[0]);
1046 EXPECT_FLOAT_EQ(l_B(2), l_Bz[0]);
1049 ASSERT_EQ(
true, pTHM1176->ParmUseCalibrationSet(
false));
1052 U16 l_Status = pTHM1176->Initiate();
1055 l_Select = {
true,
true,
true,
false,
false, 1 };
1056 ASSERT_EQ(
true, pTHM1176->MeasurementsGet(1, l_Bx, l_By, l_Bz, l_Units, l_Temperature, l_TimestampList));
1057 EXPECT_EQ(1, l_Bx.size());
1058 EXPECT_EQ(1, l_By.size());
1059 EXPECT_EQ(1, l_Bz.size());
1060 EXPECT_LT(0, l_Temperature);
1061 ASSERT_EQ(1, l_TimestampList.size());
1062 l_ErrorList = pTHM1176->CurrentErrorList();
1063 ASSERT_EQ(1, l_ErrorList.size());
1065 pTHM1176->ClearErrorList();