Populate health.faults from panda health packet

pull/1371/head
Willem Melching 2020-04-09 13:42:33 -07:00
parent fcb75d7d09
commit f718ceafd5
2 changed files with 14 additions and 1 deletions

2
cereal

@ -1 +1 @@
Subproject commit 975a633b863ae35263b2171bbcb2c5074a8f28ca
Subproject commit c8e5db830d30e5ea0d0abef0479d9c48cfd24504

View File

@ -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();