pandad_api_impl: add nogil to can_list_to_can_capnp (#34823)

add nogil to can_list_to_can_capnp
pull/34826/head
Dean Lee 2 months ago committed by GitHub
parent ce355250be
commit b98e10acc1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 12
      selfdrive/pandad/pandad_api_impl.pyx

@ -17,14 +17,17 @@ cdef extern from "opendbc/can/common.h":
vector[CanFrame] frames
cdef extern from "can_list_to_can_capnp.cc":
void can_list_to_can_capnp_cpp(const vector[CanFrame] &can_list, string &out, bool sendcan, bool valid)
void can_list_to_can_capnp_cpp(const vector[CanFrame] &can_list, string &out, bool sendcan, bool valid) nogil
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 CanFrame *f
cdef vector[CanFrame] can_list
cdef uint32_t cpp_can_msgs_len = len(can_msgs)
with nogil:
can_list.reserve(cpp_can_msgs_len)
can_list.reserve(len(can_msgs))
for can_msg in can_msgs:
f = &(can_list.emplace_back())
f.address = can_msg[0]
@ -32,7 +35,10 @@ def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True):
f.src = can_msg[2]
cdef string out
can_list_to_can_capnp_cpp(can_list, out, msgtype == 'sendcan', valid)
cdef bool is_sendcan = (msgtype == 'sendcan')
cdef bool is_valid = valid
with nogil:
can_list_to_can_capnp_cpp(can_list, out, is_sendcan, is_valid)
return out
def can_capnp_to_list(strings, msgtype='can'):

Loading…
Cancel
Save