1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
use crate::telemetry::lib::get_adc_result;
use eps_api::EpsResult;
use rust_i2c::Command;
const TELEM_CMD: u8 = 0x10;
make_telemetry!(
VoltageFeedingBcr4 => {vec![0xE1, 0x40], |d| (0.032_233_143 * d) + 0.022_840_592},
CurrentBcr4Sa4a => {vec![0xE1, 0x44], |d| (0.977_821_782 * d) - 3.020_660_066},
CurrentBcr4Sa4b => {vec![0xE1, 0x45], |d| (0.982_567_819 * d) + 0.388_437_306},
ArrayTempSa4a => {vec![0xE1, 0x48], |d| (0.356_573_44 * d) - 273.884_02},
ArrayTempSa4b => {vec![0xE1, 0x49], |d| (0.356_573_44 * d) - 273.884_02},
SunDetectorSa4a => {vec![0xE1, 0x4C], |d| d},
SunDetectorSa4b => {vec![0xE1, 0x4D], |d| d},
VoltageFeedingBcr5 => {vec![0xE1, 0x50], |d| (0.032_515_932 * d) - 0.085_250_182},
CurrentBcr5Sa5a => {vec![0xE1, 0x54], |d| (0.977_821_782 * d) - 1.065_016_502},
CurrentBcr5Sa5b => {vec![0xE1, 0x55], |d| (0.980_922_045 * d) - 2.734_752_724},
ArrayTempSa5a => {vec![0xE1, 0x58], |d| (0.356_573_44 * d) - 273.884_02},
ArrayTempSa5b => {vec![0xE1, 0x59], |d| (0.356_573_44 * d) - 273.884_02},
SunDetectorSa5a => {vec![0xE1, 0x5C], |d| d},
SunDetectorSa5b => {vec![0xE1, 0x5D], |d| d},
VoltageFeedingBcr6 => {vec![0xE1, 0x60], |d| (0.032_338_203 * d) + 0.063_747_86},
CurrentBcr6Sa6a => {vec![0xE1, 0x64], |d| (0.967_231_18 * d) - 4.607_992_112},
CurrentBcr6Sa6b => {vec![0xE1, 0x65], |d| (0.985_693_552 * d) - 10.183_288_41},
ArrayTempSa6a => {vec![0xE1, 0x68], |d| (0.356_573_44 * d) - 273.884_02},
ArrayTempSa6b => {vec![0xE1, 0x69], |d| (0.356_573_44 * d) - 273.884_02},
SunDetectorSa6a => {vec![0xE1, 0x6C], |d| d},
SunDetectorSa6b => {vec![0xE1, 0x6D], |d| d},
VoltageFeedingBcr7 => {vec![0xE1, 0x70], |d| (0.032_110_025 * d) + 0.035_328_493},
CurrentBcr7Sa7a => {vec![0xE1, 0x74], |d| (0.984_719_536 * d) - 4.746_679_562},
CurrentBcr7Sa7b => {vec![0xE1, 0x75], |d| (0.972_638_482 * d) - 3.537_251_86},
ArrayTempSa7a => {vec![0xE1, 0x78], |d| (0.356_573_44 * d) - 273.884_02},
ArrayTempSa7b => {vec![0xE1, 0x79], |d| (0.356_573_44 * d) - 273.884_02},
SunDetectorSa7a => {vec![0xE1, 0x7C], |d| d},
SunDetectorSa7b => {vec![0xE1, 0x7D], |d| d},
VoltageFeedingBcr8 => {vec![0xE1, 0x80], |d| (0.032_396_988 * d) - 0.081_490_692},
CurrentBcr8Sa8a => {vec![0xE1, 0x84], |d| (0.977_621_05 * d) - 8.569_171_301},
CurrentBcr8Sa8b => {vec![0xE1, 0x85], |d| (0.987_950_139 * d) - 4.917_313_019},
ArrayTempSa8a => {vec![0xE1, 0x88], |d| (0.356_573_44 * d) - 273.884_02},
ArrayTempSa8b => {vec![0xE1, 0x89], |d| (0.356_573_44 * d) - 273.884_02},
SunDetectorSa8a => {vec![0xE1, 0x8C], |d| d},
SunDetectorSa8b => {vec![0xE1, 0x8D], |d| d},
VoltageFeedingBcr9 => {vec![0xE1, 0x90], |d| (0.032_258_137 * d) + 0.020_293_952},
CurrentBcr9Sa9a => {vec![0xE1, 0x94], |d| (0.964_867_436 * d) - 3.896_088_456},
CurrentBcr9Sa9b => {vec![0xE1, 0x95], |d| (0.991_113_02 * d) - 10.112_293_11},
ArrayTempSa9a => {vec![0xE1, 0x98], |d| (0.356_573_44 * d) - 273.884_02},
ArrayTempSa9b => {vec![0xE1, 0x99], |d| (0.356_573_44 * d) - 273.884_02},
SunDetectorSa9a => {vec![0xE1, 0x9C], |d| d},
SunDetectorSa9b => {vec![0xE1, 0x9D], |d| d},
BoardTemperature => {vec![0xE3, 0x88], |d| (0.356_573_44 * d) - 273.884_02},
);