boardd: no conflate on sendcan (#1645)

pull/1648/head
Willem Melching 2020-06-05 14:20:52 -07:00 committed by GitHub
parent 68531b071c
commit 19512315ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 5 deletions

View File

@ -588,17 +588,29 @@ void can_send(cereal::Event::Reader &event) {
void *can_send_thread(void *crap) {
LOGD("start send thread");
SubMaster sm({"sendcan"});
// drain sendcan to delete any stale messages from previous runs
sm.drain();
Context * context = Context::create();
SubSocket * subscriber = SubSocket::create(context, "sendcan");
assert(subscriber != NULL);
// run as fast as messages come in
while (!do_exit) {
if (sm.update(1000) > 0){
can_send(sm["sendcan"]);
Message * msg = subscriber->receive();
if (msg){
auto amsg = kj::heapArray<capnp::word>((msg->getSize() / sizeof(capnp::word)) + 1);
memcpy(amsg.begin(), msg->getData(), msg->getSize());
capnp::FlatArrayMessageReader cmsg(amsg);
cereal::Event::Reader event = cmsg.getRoot<cereal::Event>();
can_send(event);
delete msg;
}
}
delete subscriber;
delete context;
return NULL;
}