1+ #include " BrakeRotorTemp.h"
2+
3+ #include " hytech.h"
4+
5+ BrakeTempData_s BrakeRotorTemp::getBrakeRotorTempData () const {
6+ return _temp_data;
7+ }
8+
9+ void BrakeRotorTemp::receiveBrakeRotorTempData (const CAN_message_t &msg) {
10+ switch (msg.id ) {
11+ case FL_BRAKE_ROTOR_TEMP_CH1_CH4_CANID:
12+ {
13+ // unpack the msg
14+ FL_BRAKE_ROTOR_TEMP_CH1_CH4_t unpacked_msg;
15+ Unpack_FL_BRAKE_ROTOR_TEMP_CH1_CH4_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
16+
17+ // copy data over to interface data
18+ std::get<0 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_1_ro_fromS (unpacked_msg.brake_temp_channel_1_ro );
19+ std::get<1 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_2_ro_fromS (unpacked_msg.brake_temp_channel_2_ro );
20+ std::get<2 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_3_ro_fromS (unpacked_msg.brake_temp_channel_3_ro );
21+ std::get<3 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_4_ro_fromS (unpacked_msg.brake_temp_channel_4_ro );
22+
23+ // update FL outputs
24+ _updateCalculatedValues (false );
25+ break ;
26+ }
27+
28+ case FL_BRAKE_ROTOR_TEMP_CH5_CH8_CANID:
29+ {
30+ // unpack the msg
31+ FL_BRAKE_ROTOR_TEMP_CH5_CH8_t unpacked_msg;
32+ Unpack_FL_BRAKE_ROTOR_TEMP_CH5_CH8_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
33+
34+ // copy data over to interface data
35+ std::get<4 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_5_ro_fromS (unpacked_msg.brake_temp_channel_5_ro );
36+ std::get<5 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_6_ro_fromS (unpacked_msg.brake_temp_channel_6_ro );
37+ std::get<6 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_7_ro_fromS (unpacked_msg.brake_temp_channel_7_ro );
38+ std::get<7 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_8_ro_fromS (unpacked_msg.brake_temp_channel_8_ro );
39+
40+ // update FL outputs
41+ _updateCalculatedValues (false );
42+ break ;
43+ }
44+
45+ case FL_BRAKE_ROTOR_TEMP_CH9_CH12_CANID:
46+ {
47+ // unpack the msg
48+ FL_BRAKE_ROTOR_TEMP_CH9_CH12_t unpacked_msg;
49+ Unpack_FL_BRAKE_ROTOR_TEMP_CH9_CH12_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
50+
51+ // copy data over to interface data
52+ std::get<8 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_9_ro_fromS (unpacked_msg.brake_temp_channel_9_ro );
53+ std::get<9 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_10_ro_fromS (unpacked_msg.brake_temp_channel_10_ro );
54+ std::get<10 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_11_ro_fromS (unpacked_msg.brake_temp_channel_11_ro );
55+ std::get<11 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_12_ro_fromS (unpacked_msg.brake_temp_channel_12_ro );
56+
57+ // update FL outputs
58+ _updateCalculatedValues (false );
59+ break ;
60+ }
61+
62+ case FL_BRAKE_ROTOR_TEMP_CH13_CH16_CANID:
63+ {
64+ // unpack the msg
65+ FL_BRAKE_ROTOR_TEMP_CH13_CH16_t unpacked_msg;
66+ Unpack_FL_BRAKE_ROTOR_TEMP_CH13_CH16_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
67+
68+ // copy data over to interface data
69+ std::get<12 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_13_ro_fromS (unpacked_msg.brake_temp_channel_13_ro );
70+ std::get<13 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_14_ro_fromS (unpacked_msg.brake_temp_channel_14_ro );
71+ std::get<14 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_15_ro_fromS (unpacked_msg.brake_temp_channel_15_ro );
72+ std::get<15 >(_temp_data.fl_sensor .channel_data ) = HYTECH_brake_temp_channel_16_ro_fromS (unpacked_msg.brake_temp_channel_16_ro );
73+
74+ // update FL outputs
75+ _updateCalculatedValues (false );
76+ break ;
77+ }
78+
79+ case FR_BRAKE_ROTOR_TEMP_CH1_CH4_CANID:
80+ {
81+ // unpack the msg
82+ FR_BRAKE_ROTOR_TEMP_CH1_CH4_t unpacked_msg;
83+ Unpack_FR_BRAKE_ROTOR_TEMP_CH1_CH4_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
84+
85+ // copy data over to interface data
86+ std::get<0 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_1_ro_fromS (unpacked_msg.brake_temp_channel_1_ro );
87+ std::get<1 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_2_ro_fromS (unpacked_msg.brake_temp_channel_2_ro );
88+ std::get<2 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_3_ro_fromS (unpacked_msg.brake_temp_channel_3_ro );
89+ std::get<3 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_4_ro_fromS (unpacked_msg.brake_temp_channel_4_ro );
90+
91+ // update FR outputs
92+ _updateCalculatedValues (true );
93+ break ;
94+ }
95+
96+ case FR_BRAKE_ROTOR_TEMP_CH5_CH8_CANID:
97+ {
98+ // unpack the msg
99+ FR_BRAKE_ROTOR_TEMP_CH5_CH8_t unpacked_msg;
100+ Unpack_FR_BRAKE_ROTOR_TEMP_CH5_CH8_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
101+
102+ // copy data over to interface data
103+ std::get<4 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_5_ro_fromS (unpacked_msg.brake_temp_channel_5_ro );
104+ std::get<5 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_6_ro_fromS (unpacked_msg.brake_temp_channel_6_ro );
105+ std::get<6 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_7_ro_fromS (unpacked_msg.brake_temp_channel_7_ro );
106+ std::get<7 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_8_ro_fromS (unpacked_msg.brake_temp_channel_8_ro );
107+
108+ // update FR outputs
109+ _updateCalculatedValues (true );
110+ break ;
111+ }
112+
113+ case FR_BRAKE_ROTOR_TEMP_CH9_CH12_CANID:
114+ {
115+ // unpack the msg
116+ FR_BRAKE_ROTOR_TEMP_CH9_CH12_t unpacked_msg;
117+ Unpack_FR_BRAKE_ROTOR_TEMP_CH9_CH12_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
118+
119+ // copy data over to interface data
120+ std::get<8 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_9_ro_fromS (unpacked_msg.brake_temp_channel_9_ro );
121+ std::get<9 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_10_ro_fromS (unpacked_msg.brake_temp_channel_10_ro );
122+ std::get<10 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_11_ro_fromS (unpacked_msg.brake_temp_channel_11_ro );
123+ std::get<11 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_12_ro_fromS (unpacked_msg.brake_temp_channel_12_ro );
124+
125+ // update FR outputs
126+ _updateCalculatedValues (true );
127+ break ;
128+ }
129+
130+ case FR_BRAKE_ROTOR_TEMP_CH13_CH16_CANID:
131+ {
132+ // unpack the msg
133+ FR_BRAKE_ROTOR_TEMP_CH13_CH16_t unpacked_msg;
134+ Unpack_FR_BRAKE_ROTOR_TEMP_CH13_CH16_hytech (&unpacked_msg, msg.buf , msg.len ); // NOLINT array decay to pointer
135+
136+ // copy data over to interface data
137+ std::get<12 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_13_ro_fromS (unpacked_msg.brake_temp_channel_13_ro );
138+ std::get<13 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_14_ro_fromS (unpacked_msg.brake_temp_channel_14_ro );
139+ std::get<14 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_15_ro_fromS (unpacked_msg.brake_temp_channel_15_ro );
140+ std::get<15 >(_temp_data.fr_sensor .channel_data ) = HYTECH_brake_temp_channel_16_ro_fromS (unpacked_msg.brake_temp_channel_16_ro );
141+
142+ // update FR outputs
143+ _updateCalculatedValues (true );
144+ break ;
145+ }
146+
147+ default :
148+ break ;
149+ }
150+ }
151+
152+ /* *
153+ * Helper method to update the calculated values of max and avg temps for each sensor after new data is
154+ * received. Will only update for the specified sensor.
155+ * @param sensor corresponds to which sensor was updated. FL = 0, FR = 1
156+ */
157+ void BrakeRotorTemp::_updateCalculatedValues (bool FR) {
158+ if (FR) { // check if FR needs to be updated
159+ auto begin_iterator = _temp_data.fr_sensor .channel_data .begin ();
160+ auto end_iterator = _temp_data.fr_sensor .channel_data .end ();
161+
162+ // update maximum value
163+ _temp_data.fr_sensor .max_temp = *std::max_element (begin_iterator, end_iterator);
164+
165+ // update avg value
166+ float sum = std::accumulate (begin_iterator, end_iterator, 0 .0f ); // find sum
167+ _temp_data.fr_sensor .avg_temp = sum / static_cast <float >(BrakeRotorTempDefaultParams::channels_within_brake_temp_sensor);
168+ } else { // otherwise update FL
169+ auto begin_iterator = _temp_data.fl_sensor .channel_data .begin ();
170+ auto end_iterator = _temp_data.fl_sensor .channel_data .end ();
171+
172+ // update maximum value
173+ _temp_data.fl_sensor .max_temp = *std::max_element (begin_iterator, end_iterator);
174+
175+ // update avg value
176+ float sum = std::accumulate (begin_iterator, end_iterator, 0 .0f ); // find sum
177+ _temp_data.fl_sensor .avg_temp = sum / static_cast <float >(BrakeRotorTempDefaultParams::channels_within_brake_temp_sensor);
178+ }
179+ }
0 commit comments