diff --git a/selfdrive/pandad/pandad_api_impl.pyx b/selfdrive/pandad/pandad_api_impl.pyx index 7bc3b6c2d9b612..163fb5f7ead1f8 100644 --- a/selfdrive/pandad/pandad_api_impl.pyx +++ b/selfdrive/pandad/pandad_api_impl.pyx @@ -28,16 +28,17 @@ cdef extern from "can_list_to_can_capnp.cc": void can_capnp_to_can_list_cpp(const vector[string] &strings, vector[CanData] &can_data, bool sendcan) def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True): + cdef can_frame *f cdef vector[can_frame] can_list - can_list.reserve(len(can_msgs)) - cdef can_frame f + can_list.reserve(len(can_msgs)) for can_msg in can_msgs: + f = &(can_list.emplace_back()) f.address = can_msg[0] f.busTime = can_msg[1] f.dat = can_msg[2] f.src = can_msg[3] - can_list.push_back(f) + cdef string out can_list_to_can_capnp_cpp(can_list, out, msgtype == 'sendcan', valid) return out @@ -45,9 +46,10 @@ def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True): def can_capnp_to_list(strings, sendcan=False): cdef vector[CanData] data can_capnp_to_can_list_cpp(strings, data, sendcan) + result = [] - cdef vector[CanData].iterator it = data.begin() cdef CanData *d + cdef vector[CanData].iterator it = data.begin() while it != data.end(): d = &deref(it) frames = [[f.address, 0, (&f.dat[0])[:f.dat.size()], f.src] for f in d.frames]