Populate health.faults from panda health packet

This commit is contained in:
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

Submodule cereal updated: 975a633b86...c8e5db830d

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