CANParser: minor speedup (#560)

This commit is contained in:
Adeeb Shihadeh 2022-02-09 22:46:28 -08:00 committed by GitHub
parent 24538ceb04
commit f74f93629b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 10 deletions

View File

@ -24,24 +24,24 @@ cdef class CANParser:
map[string, uint32_t] msg_name_to_address
map[uint32_t, string] address_to_msg_name
vector[SignalValue] can_values
bool test_mode_enabled
cdef readonly:
string dbc_name
dict vl
bool can_valid
string dbc_name
int can_invalid_cnt
def __init__(self, dbc_name, signals, checks=None, bus=0, enforce_checks=True):
if checks is None:
checks = []
self.can_valid = True
self.dbc_name = dbc_name
self.dbc = dbc_lookup(dbc_name)
if not self.dbc:
raise RuntimeError(f"Can't find DBC: {dbc_name}")
self.vl = {}
self.vl = {}
self.can_valid = False
self.can_invalid_cnt = CAN_INVALID_CNT
cdef int i
@ -53,7 +53,7 @@ cdef class CANParser:
self.msg_name_to_address[name] = msg.address
self.address_to_msg_name[msg.address] = name
self.vl[msg.address] = {}
self.vl[name] = {}
self.vl[name] = self.vl[msg.address]
# Convert message names into addresses
for i in range(len(signals)):
@ -113,12 +113,8 @@ cdef class CANParser:
for cv in can_values:
# Cast char * directly to unicode
name = <unicode>self.address_to_msg_name[cv.address].c_str()
cv_name = <unicode>cv.name
self.vl[cv.address][cv_name] = cv.value
self.vl[name][cv_name] = cv.value
updated_val.insert(cv.address)
return updated_val

View File

@ -41,7 +41,7 @@ class TestCanParserPacker(unittest.TestCase):
idx = 0
for steer in range(-256, 255):
for active in [1, 0]:
for active in (1, 0):
values = {
"STEER_TORQUE": steer,
"STEER_TORQUE_REQUEST": active,
@ -56,6 +56,9 @@ class TestCanParserPacker(unittest.TestCase):
self.assertAlmostEqual(parser.vl["STEERING_CONTROL"]["STEER_TORQUE_REQUEST"], active)
self.assertAlmostEqual(parser.vl["STEERING_CONTROL"]["COUNTER"], idx % 4)
for sig in ("STEER_TORQUE", "STEER_TORQUE_REQUEST", "COUNTER", "CHECKSUM"):
self.assertEqual(parser.vl["STEERING_CONTROL"][sig], parser.vl[228][sig])
idx += 1
def test_scale_offset(self):