Populate health.faults from panda health packet
parent
fcb75d7d09
commit
f718ceafd5
2
cereal
2
cereal
|
@ -1 +1 @@
|
|||
Subproject commit 975a633b863ae35263b2171bbcb2c5074a8f28ca
|
||||
Subproject commit c8e5db830d30e5ea0d0abef0479d9c48cfd24504
|
|
@ -29,6 +29,7 @@
|
|||
#include "messaging.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
|
||||
// double the FIFO size
|
||||
#define RECV_SIZE (0x1000)
|
||||
|
@ -514,6 +515,18 @@ void can_health(PubSocket *publisher) {
|
|||
healthData.setFaultStatus(cereal::HealthData::FaultStatus(health.fault_status));
|
||||
healthData.setPowerSaveEnabled((bool)(health.power_save_enabled));
|
||||
|
||||
// Convert faults bitset to capnp list
|
||||
std::bitset<32> fault_bits(health.faults);
|
||||
auto faults = healthData.initFaults(fault_bits.count());
|
||||
|
||||
size_t i = 0;
|
||||
for (size_t f = size_t(cereal::HealthData::FaultType::RELAY_MALFUNCTION);
|
||||
f <= size_t(cereal::HealthData::FaultType::REGISTER_DIVERGENT); f++){
|
||||
if (fault_bits.test(f)) {
|
||||
faults.set(i, cereal::HealthData::FaultType(f));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// send to health
|
||||
auto words = capnp::messageToFlatArray(msg);
|
||||
auto bytes = words.asBytes();
|
||||
|
|
Loading…
Reference in New Issue