save Reader to local variable to avoid repeating validate the pointer (#1717)

pull/1747/head
Dean Lee 2020-06-20 02:37:31 +08:00 committed by GitHub
parent d0254e6097
commit fa0b47e6f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 5 deletions

View File

@ -531,13 +531,15 @@ void can_send(cereal::Event::Reader &event) {
//Older than 1 second. Dont send.
return;
}
int msg_count = event.getSendcan().size();
auto can_data_list = event.getSendcan();
int msg_count = can_data_list.size();
uint32_t *send = (uint32_t*)malloc(msg_count*0x10);
memset(send, 0, msg_count*0x10);
for (int i = 0; i < msg_count; i++) {
auto cmsg = event.getSendcan()[i];
auto cmsg = can_data_list[i];
if (cmsg.getAddress() >= 0x800) {
// extended
send[i*4] = (cmsg.getAddress() << 3) | 5;
@ -545,9 +547,10 @@ void can_send(cereal::Event::Reader &event) {
// normal
send[i*4] = (cmsg.getAddress() << 21) | 1;
}
assert(cmsg.getDat().size() <= 8);
send[i*4+1] = cmsg.getDat().size() | (cmsg.getSrc() << 4);
memcpy(&send[i*4+2], cmsg.getDat().begin(), cmsg.getDat().size());
auto can_data = cmsg.getDat();
assert(can_data.size() <= 8);
send[i*4+1] = can_data.size() | (cmsg.getSrc() << 4);
memcpy(&send[i*4+2], can_data.begin(), can_data.size());
}
// send to board