@@ -77,14 +77,36 @@ Main::Main()
77
77
return ;
78
78
}
79
79
if (ambient_temperature_pins->size () != data::Sensors::kNumAmbientTemp ) {
80
- log_.error (" found %u temperature pins but %u were expected" ,
80
+ log_.error (" found %u ambient temperature pins but %u were expected" ,
81
81
static_cast <uint32_t >(ambient_temperature_pins->size ()),
82
82
static_cast <uint32_t >(data::Sensors::kNumAmbientTemp ));
83
83
sys_.stop ();
84
84
return ;
85
85
}
86
86
for (size_t i = 0 ; i < data::Sensors::kNumAmbientTemp ; ++i) {
87
- ambient_temperatures_.at (i) = std::make_unique<Temperature>(ambient_temperature_pins->at (i));
87
+ ambient_temperatures_.at (i)
88
+ = std::make_unique<AmbientTemperature>(ambient_temperature_pins->at (i));
89
+ }
90
+
91
+ const auto brakes_and_suspension_temperature_pins
92
+ = brakeSuspensionTemperaturePinsFromFile (log_, sys_.config_ .temperature_config_path );
93
+ if (!brakes_and_suspension_temperature_pins) {
94
+ log_.error (" failed to initialise brakes and suspension temperature sensor" );
95
+ sys_.stop ();
96
+ return ;
97
+ }
98
+
99
+ if (brakes_and_suspension_temperature_pins->size () != data::Sensors::kNumBrakeSuspensionTemp ) {
100
+ log_.error (" found %u brake/suspension temperature pins but %u were expected" ,
101
+ static_cast <uint32_t >(brakes_and_suspension_temperature_pins->size ()),
102
+ static_cast <uint32_t >(data::Sensors::kNumBrakeSuspensionTemp ));
103
+ sys_.stop ();
104
+ return ;
105
+ }
106
+
107
+ for (size_t i = 0 ; i < data::Sensors::kNumBrakeSuspensionTemp ; ++i) {
108
+ brakes_and_suspension_temperatures_.at (i) = std::make_unique<BrakesAndSuspensionTemperature>(
109
+ brakes_and_suspension_temperature_pins->at (i));
88
110
}
89
111
}
90
112
@@ -142,23 +164,25 @@ void Main::checkAmbientTemperature()
142
164
ambient_temperature_data.at (i).temperature = ambient_temperatures_[i]->getData ();
143
165
if ((ambient_temperature_data.at (i).temperature > 75
144
166
|| ambient_temperature_data.at (i).temperature < 1 )) {
145
- log_.info (" PCB temperature is getting a wee high...sorry Cheng " );
167
+ log_.info (" Ambient Temperature is higher than 75 degrees " );
146
168
auto sensors_data = data_.getSensorsData ();
147
169
sensors_data.module_status = data::ModuleStatus::kCriticalFailure ;
148
170
data_.setSensorsData (sensors_data);
149
171
}
150
172
}
151
173
}
152
174
153
- void Main::checkBrakeTemperature ()
175
+ void Main::checkBrakeAndSuspensionTemperature ()
154
176
{
155
- auto brakes_temperature_data = data_.getSensorsData ().brake_temperature_array ;
156
- for (size_t i = 0 ; i < data::Sensors::kNumBrakeTemp ; ++i) {
157
- brake_temperatures_[i]->run (); // not a thread
158
- brakes_temperature_data.at (i).temperature = brake_temperatures_[i]->getData ();
159
- if ((brakes_temperature_data.at (i).temperature > 75
160
- || brakes_temperature_data.at (i).temperature < 0 )) {
161
- log_.info (" PCB temperature is getting a wee high...sorry Cheng" );
177
+ auto brakes_and_suspension_temperature_data
178
+ = data_.getSensorsData ().brake_suspension_temperature_array ;
179
+ for (size_t i = 0 ; i < data::Sensors::kNumBrakeSuspensionTemp ; ++i) {
180
+ brakes_and_suspension_temperatures_[i]->run (); // not a thread
181
+ brakes_and_suspension_temperature_data.at (i).temperature
182
+ = brakes_and_suspension_temperatures_[i]->getData ();
183
+ if ((brakes_and_suspension_temperature_data.at (i).temperature > 85
184
+ || brakes_and_suspension_temperature_data.at (i).temperature < 0 )) {
185
+ log_.info (" A Brake or Suspension pcb is hotter than 85 degrees" );
162
186
auto sensors_data = data_.getSensorsData ();
163
187
sensors_data.module_status = data::ModuleStatus::kCriticalFailure ;
164
188
data_.setSensorsData (sensors_data);
@@ -272,8 +296,8 @@ std::optional<std::vector<uint8_t>> Main::ambientTemperaturePinsFromFile(utils::
272
296
return ambient_temperature_pins;
273
297
}
274
298
275
- std::optional<std::vector<uint8_t >> Main::brakeTemperaturePinsFromFile (utils::Logger &log,
276
- const std::string &path)
299
+ std::optional<std::vector<uint8_t >> Main::brakeSuspensionTemperaturePinsFromFile (
300
+ utils::Logger &log, const std::string &path)
277
301
{
278
302
std::ifstream input_stream (path);
279
303
if (!input_stream.is_open ()) {
@@ -292,21 +316,25 @@ std::optional<std::vector<uint8_t>> Main::brakeTemperaturePinsFromFile(utils::Lo
292
316
return std::nullopt;
293
317
}
294
318
auto config_object = document[" sensors" ].GetObject ();
295
- if (!config_object.HasMember (" temperature_pins" )) {
296
- log .error (" Missing required field 'sensors.temperature_pins' in configuration file at %s" ,
297
- path.c_str ());
319
+ if (!config_object.HasMember (" brakes_suspension_temperature_pins" )) {
320
+ log .error (
321
+ " Missing required field 'sensors.brakes_suspension_temperature_pins' in configuration file "
322
+ " at %s" ,
323
+ path.c_str ());
298
324
return std::nullopt;
299
325
}
300
- const auto brake_temperature_pin_array = config_object[" temperature_pins" ].GetArray ();
301
- if (brake_temperature_pin_array.Size () != data::Sensors::kNumAmbientTemp ) {
302
- log .error (" Found %d brake temperature pins but %d were expected in configuration file at %s" ,
303
- brake_temperature_pin_array.Size (), data::Sensors::kNumBrakeTemp , path.c_str ());
326
+ const auto brake_temperature_pin_array
327
+ = config_object[" brakes_suspension_temperature_pins" ].GetArray ();
328
+ if (brake_temperature_pin_array.Size () != data::Sensors::kNumBrakeSuspensionTemp ) {
329
+ log .error (
330
+ " Found %d brake/suspension temperature pins but %d were expected in configuration file at %s" ,
331
+ brake_temperature_pin_array.Size (), data::Sensors::kNumBrakeSuspensionTemp , path.c_str ());
304
332
}
305
333
std::vector<uint8_t > brake_temperature_pins;
306
334
for (const auto &brake_temperature_pin : brake_temperature_pin_array) {
307
335
const auto pin = brake_temperature_pin.GetUint ();
308
336
if (pin > UINT8_MAX) {
309
- log .error (" brake temperature pin value %u is too large" , pin);
337
+ log .error (" brake/suspension temperature pin value %u is too large" , pin);
310
338
return std::nullopt;
311
339
}
312
340
brake_temperature_pins.push_back (static_cast <uint8_t >(pin));
@@ -409,6 +437,7 @@ void Main::run()
409
437
410
438
while (sys_.isRunning ()) {
411
439
checkAmbientTemperature ();
440
+ checkBrakeAndSuspensionTemperature ();
412
441
checkAmbientPressure ();
413
442
checkBrakePressure ();
414
443
Thread::sleep (200 );
0 commit comments