STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
test_sensor_self_test.cpp
Go to the documentation of this file.
1
#include <unity.h>
2
3
#include "STAR_ADS126X.h"
4
#include "
SensorSelfTest.h
"
5
6
int32_t
g_mock_adc_value
= 0;
7
bool
g_mock_adc_checksum
=
true
;
8
9
ADS126X
mock_adc
;
10
uint8_t
dummy_pin
= 0;
11
12
void
setUp
() {
13
g_mock_adc_value
= 0;
14
g_mock_adc_checksum
=
true
;
15
}
16
17
void
tearDown
() {
18
}
19
20
// ===========================================================================
21
// ADC Self-Test Logic Verification
22
// ===========================================================================
23
24
void
test_adc_tdac_pass
() {
25
// Expected is 214748364 with tolerance 2147484.
26
g_mock_adc_value
=
SensorSelfTest::ADC_TDAC_EXPECTED_CODE
;
27
g_mock_adc_checksum
=
true
;
28
29
auto
result
=
SensorSelfTest::run_adc_self_test
(
mock_adc
,
dummy_pin
, 0, 0);
30
TEST_ASSERT_TRUE(
result
.passed);
31
TEST_ASSERT_TRUE(
result
.checksum_valid);
32
TEST_ASSERT_EQUAL(
SensorSelfTest::ADC_TDAC_EXPECTED_CODE
,
result
.code);
33
}
34
35
void
test_adc_tdac_fail_out_of_tolerance
() {
36
g_mock_adc_value
=
SensorSelfTest::ADC_TDAC_EXPECTED_CODE
+
37
SensorSelfTest::ADC_TDAC_TOLERANCE
+ 10;
38
g_mock_adc_checksum
=
true
;
39
40
auto
result
=
SensorSelfTest::run_adc_self_test
(
mock_adc
,
dummy_pin
, 0, 0);
41
TEST_ASSERT_FALSE(
result
.passed);
42
TEST_ASSERT_TRUE(
result
.checksum_valid);
43
}
44
45
void
test_adc_tdac_fail_checksum
() {
46
g_mock_adc_value
=
SensorSelfTest::ADC_TDAC_EXPECTED_CODE
;
47
g_mock_adc_checksum
=
false
;
48
49
auto
result
=
SensorSelfTest::run_adc_self_test
(
mock_adc
,
dummy_pin
, 0, 0);
50
TEST_ASSERT_FALSE(
result
.passed);
51
TEST_ASSERT_FALSE(
result
.checksum_valid);
52
}
53
54
// ===========================================================================
55
// Sensor Bias Continuity Logic Verification
56
// ===========================================================================
57
58
void
test_sensor_bias_connected
() {
59
// Value must be < 40% FS (858993459)
60
g_mock_adc_value
= 500000000;
61
g_mock_adc_checksum
=
true
;
62
63
auto
result
=
64
SensorSelfTest::read_sensor_bias
(
mock_adc
,
dummy_pin
, 0, 0, 1);
65
TEST_ASSERT_EQUAL((
int
)
SensorSelfTest::BiasResult::CONNECTED
,
66
(
int
)
result
.result);
67
TEST_ASSERT_TRUE(
result
.checksum_valid);
68
}
69
70
void
test_sensor_bias_ambiguous
() {
71
// Value between 40% and 60% FS
72
g_mock_adc_value
= 1000000000;
73
g_mock_adc_checksum
=
true
;
74
75
auto
result
=
76
SensorSelfTest::read_sensor_bias
(
mock_adc
,
dummy_pin
, 0, 0, 1);
77
TEST_ASSERT_EQUAL((
int
)
SensorSelfTest::BiasResult::AMBIGUOUS
,
78
(
int
)
result
.result);
79
TEST_ASSERT_TRUE(
result
.checksum_valid);
80
}
81
82
void
test_sensor_bias_disconnected
() {
83
// Value >= 60% FS (1288490188)
84
g_mock_adc_value
= 1300000000;
85
g_mock_adc_checksum
=
true
;
86
87
auto
result
=
88
SensorSelfTest::read_sensor_bias
(
mock_adc
,
dummy_pin
, 0, 0, 1);
89
TEST_ASSERT_EQUAL((
int
)
SensorSelfTest::BiasResult::DISCONNECTED
,
90
(
int
)
result
.result);
91
TEST_ASSERT_TRUE(
result
.checksum_valid);
92
}
93
94
void
test_sensor_bias_checksum_fails
() {
95
g_mock_adc_value
= 0;
96
g_mock_adc_checksum
=
false
;
97
98
auto
result
=
99
SensorSelfTest::read_sensor_bias
(
mock_adc
,
dummy_pin
, 0, 0, 1);
100
TEST_ASSERT_EQUAL((
int
)
SensorSelfTest::BiasResult::AMBIGUOUS
,
101
(
int
)
result
.result);
102
TEST_ASSERT_FALSE(
result
.checksum_valid);
103
}
104
105
int
main
(
int
argc,
char
** argv) {
106
UNITY_BEGIN();
107
108
RUN_TEST(
test_adc_tdac_pass
);
109
RUN_TEST(
test_adc_tdac_fail_out_of_tolerance
);
110
RUN_TEST(
test_adc_tdac_fail_checksum
);
111
112
RUN_TEST(
test_sensor_bias_connected
);
113
RUN_TEST(
test_sensor_bias_ambiguous
);
114
RUN_TEST(
test_sensor_bias_disconnected
);
115
RUN_TEST(
test_sensor_bias_checksum_fails
);
116
117
return
UNITY_END();
118
}
g_mock_adc_value
int32_t g_mock_adc_value
Definition
test_sensor_self_test.cpp:6
g_mock_adc_checksum
bool g_mock_adc_checksum
Definition
test_sensor_self_test.cpp:7
SensorSelfTest.h
ADS126X
Definition
STAR_ADS126X.h:25
result
json_pointer result
Definition
json.hpp:14064
SensorSelfTest::read_sensor_bias
BiasReadResult read_sensor_bias(ADS126X &adc, uint8_t drdy_pin, uint8_t adc_channel, uint8_t aincom, uint8_t settle_cycles=5)
Read one connector with sensor bias already active.
Definition
SensorSelfTest.h:128
SensorSelfTest::ADC_TDAC_EXPECTED_CODE
constexpr int32_t ADC_TDAC_EXPECTED_CODE
Definition
SensorSelfTest.h:13
SensorSelfTest::ADC_TDAC_TOLERANCE
constexpr int32_t ADC_TDAC_TOLERANCE
Definition
SensorSelfTest.h:14
SensorSelfTest::run_adc_self_test
AdcSelfTestResult run_adc_self_test(ADS126X &adc, uint8_t drdy_pin, uint8_t original_ref_neg, uint8_t original_ref_pos)
Definition
SensorSelfTest.h:54
SensorSelfTest::BiasResult::AMBIGUOUS
@ AMBIGUOUS
Definition
SensorSelfTest.h:37
SensorSelfTest::BiasResult::DISCONNECTED
@ DISCONNECTED
Definition
SensorSelfTest.h:38
SensorSelfTest::BiasResult::CONNECTED
@ CONNECTED
Definition
SensorSelfTest.h:36
main
int main()
Definition
test_abort_ordering.cpp:67
test_sensor_bias_disconnected
void test_sensor_bias_disconnected()
Definition
test_sensor_self_test.cpp:82
test_adc_tdac_pass
void test_adc_tdac_pass()
Definition
test_sensor_self_test.cpp:24
mock_adc
ADS126X mock_adc
Definition
test_sensor_self_test.cpp:9
dummy_pin
uint8_t dummy_pin
Definition
test_sensor_self_test.cpp:10
setUp
void setUp()
Definition
test_sensor_self_test.cpp:12
test_sensor_bias_connected
void test_sensor_bias_connected()
Definition
test_sensor_self_test.cpp:58
tearDown
void tearDown()
Definition
test_sensor_self_test.cpp:17
test_adc_tdac_fail_checksum
void test_adc_tdac_fail_checksum()
Definition
test_sensor_self_test.cpp:45
test_sensor_bias_ambiguous
void test_sensor_bias_ambiguous()
Definition
test_sensor_self_test.cpp:70
test_adc_tdac_fail_out_of_tolerance
void test_adc_tdac_fail_out_of_tolerance()
Definition
test_sensor_self_test.cpp:35
test_sensor_bias_checksum_fails
void test_sensor_bias_checksum_fails()
Definition
test_sensor_self_test.cpp:94
firmware
Hotfire_Code
Hotfire_Tests
test
test_sensor_self_test
test_sensor_self_test.cpp
Generated by
1.15.0