Skip to content

Commit ac13000

Browse files
committed
Revert "update to new opendbc API (#32009)"
This reverts commit 0dddc97.
1 parent 0dddc97 commit ac13000

13 files changed

+17
-86
lines changed

selfdrive/car/interfaces.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX
1919
from openpilot.selfdrive.controls.lib.events import Events
2020
from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel
21-
from openpilot.selfdrive.pandad import can_capnp_to_list
2221

2322
ButtonType = car.CarState.ButtonEvent.Type
2423
GearShifter = car.CarState.GearShifter
@@ -232,10 +231,9 @@ def _update(self, c: car.CarControl) -> car.CarState:
232231

233232
def update(self, c: car.CarControl, can_strings: list[bytes]) -> car.CarState:
234233
# parse can
235-
can_list = can_capnp_to_list(can_strings)
236234
for cp in self.can_parsers:
237235
if cp is not None:
238-
cp.update_strings(can_list)
236+
cp.update_strings(can_strings)
239237

240238
# get CarState
241239
ret = self._update(c)

selfdrive/car/tests/test_car_interfaces.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from openpilot.selfdrive.controls.lib.latcontrol_pid import LatControlPID
1616
from openpilot.selfdrive.controls.lib.latcontrol_torque import LatControlTorque
1717
from openpilot.selfdrive.controls.lib.longcontrol import LongControl
18-
from openpilot.selfdrive.pandad import can_capnp_to_list
1918
from openpilot.selfdrive.test.fuzzy_generation import DrawType, FuzzyGenerator
2019

2120
ALL_ECUS = {ecu for ecus in FW_VERSIONS.values() for ecu in ecus.keys()}
@@ -129,7 +128,7 @@ def test_car_interfaces(self, car_name, data):
129128

130129
# Test radar fault
131130
if not car_params.radarUnavailable and radar_interface.rcp is not None:
132-
cans = can_capnp_to_list([messaging.new_message('can', 1).to_bytes() for _ in range(5)])
131+
cans = [messaging.new_message('can', 1).to_bytes() for _ in range(5)]
133132
rr = radar_interface.update(cans)
134133
assert rr is None or len(rr.errors) > 0
135134

selfdrive/car/tests/test_models.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute
2020
from openpilot.selfdrive.car.values import Platform
2121
from openpilot.selfdrive.car.card import Car
22-
from openpilot.selfdrive.pandad import can_capnp_to_list
2322
from openpilot.selfdrive.test.helpers import read_segment_list
2423
from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT
2524
from openpilot.tools.lib.logreader import LogReader, internal_source, openpilotci_source
@@ -238,7 +237,7 @@ def test_radar_interface(self):
238237
# start parsing CAN messages after we've left ELM mode and can expect CAN traffic
239238
error_cnt = 0
240239
for i, msg in enumerate(self.can_msgs[self.elm_frame:]):
241-
rr = RI.update(can_capnp_to_list((msg.as_builder().to_bytes(),)))
240+
rr = RI.update((msg.as_builder().to_bytes(),))
242241
if rr is not None and i > 50:
243242
error_cnt += car.RadarData.Error.canError in rr.errors
244243
self.assertEqual(error_cnt, 0)

selfdrive/controls/lib/longitudinal_mpc_lib/SConscript

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Import('env', 'envCython', 'arch', 'msgq_python', 'common_python', 'opendbc_python', 'pandad_python', 'np_version')
1+
Import('env', 'envCython', 'arch', 'msgq_python', 'common_python', 'opendbc_python', 'np_version')
22

33
gen = "c_generated_code"
44

@@ -66,7 +66,7 @@ lenv.Clean(generated_files, Dir(gen))
6666
generated_long = lenv.Command(generated_files,
6767
source_list,
6868
f"cd {Dir('.').abspath} && python3 long_mpc.py")
69-
lenv.Depends(generated_long, [msgq_python, common_python, opendbc_python, pandad_python])
69+
lenv.Depends(generated_long, [msgq_python, common_python, opendbc_python])
7070

7171
lenv["CFLAGS"].append("-DACADOS_WITH_QPOASES")
7272
lenv["CXXFLAGS"].append("-DACADOS_WITH_QPOASES")

selfdrive/controls/radard.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from openpilot.common.params import Params
1111
from openpilot.common.realtime import DT_CTRL, Ratekeeper, Priority, config_realtime_process
1212
from openpilot.common.swaglog import cloudlog
13+
1314
from openpilot.common.simple_kalman import KF1D
14-
from openpilot.selfdrive.pandad import can_capnp_to_list
1515

1616

1717
# Default lead acceleration decay set to 50% at 1s
@@ -307,7 +307,7 @@ def main():
307307

308308
while 1:
309309
can_strings = messaging.drain_sock_raw(can_sock, wait_for_one=True)
310-
rr = RI.update(can_capnp_to_list(can_strings))
310+
rr = RI.update(can_strings)
311311
sm.update(0)
312312
if rr is None:
313313
continue

selfdrive/debug/check_can_parser_performance.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from cereal import car
77
from openpilot.selfdrive.car.tests.routes import CarTestRoute
88
from openpilot.selfdrive.car.tests.test_models import TestCarModelBase
9-
from openpilot.selfdrive.pandad import can_capnp_to_list
109
from openpilot.tools.plotjuggler.juggle import DEMO_ROUTE
1110

1211
N_RUNS = 10
@@ -26,13 +25,12 @@ class CarModelTestCase(TestCarModelBase):
2625
CC = car.CarControl.new_message()
2726
ets = []
2827
for _ in tqdm(range(N_RUNS)):
29-
msgs = [m.as_builder().to_bytes() for m in tm.can_msgs]
28+
msgs = [(m.as_builder().to_bytes(),) for m in tm.can_msgs]
3029
start_t = time.process_time_ns()
3130
for msg in msgs:
32-
can_list = can_capnp_to_list([msg])
3331
for cp in tm.CI.can_parsers:
3432
if cp is not None:
35-
cp.update_strings(can_list)
33+
cp.update_strings(msg)
3634
ets.append((time.process_time_ns() - start_t) * 1e-6)
3735

3836
print(f'{len(tm.can_msgs)} CAN packets, {N_RUNS} runs')

selfdrive/pandad/SConscript

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ panda = env.Library('panda', ['panda.cc', 'panda_comms.cc', 'spi.cc'])
66
env.Program('pandad', ['main.cc', 'pandad.cc'], LIBS=[panda] + libs)
77
env.Library('libcan_list_to_can_capnp', ['can_list_to_can_capnp.cc'])
88

9-
pandad_python = envCython.Program('pandad_api_impl.so', 'pandad_api_impl.pyx', LIBS=["can_list_to_can_capnp", 'capnp', 'kj'] + envCython["LIBS"])
10-
Export('pandad_python')
11-
9+
envCython.Program('pandad_api_impl.so', 'pandad_api_impl.pyx', LIBS=["can_list_to_can_capnp", 'capnp', 'kj'] + envCython["LIBS"])
1210
if GetOption('extras'):
1311
env.Program('tests/test_pandad_usbprotocol', ['tests/test_pandad_usbprotocol.cc'], LIBS=[panda] + libs)

selfdrive/pandad/__init__.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Cython, now uses scons to build
2-
from openpilot.selfdrive.pandad.pandad_api_impl import can_list_to_can_capnp, can_capnp_to_list
2+
from openpilot.selfdrive.pandad.pandad_api_impl import can_list_to_can_capnp
33
assert can_list_to_can_capnp
4-
assert can_capnp_to_list
54

65
def can_capnp_to_can_list(can, src_filter=None):
76
ret = []
+2-33
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
#include "cereal/messaging/messaging.h"
22
#include "selfdrive/pandad/panda.h"
3-
#include "opendbc/can/common.h"
43

5-
void can_list_to_can_capnp_cpp(const std::vector<can_frame> &can_list, std::string &out, bool sendcan, bool valid) {
4+
void can_list_to_can_capnp_cpp(const std::vector<can_frame> &can_list, std::string &out, bool sendCan, bool valid) {
65
MessageBuilder msg;
76
auto event = msg.initEvent(valid);
87

9-
auto canData = sendcan ? event.initSendcan(can_list.size()) : event.initCan(can_list.size());
8+
auto canData = sendCan ? event.initSendcan(can_list.size()) : event.initCan(can_list.size());
109
int j = 0;
1110
for (auto it = can_list.begin(); it != can_list.end(); it++, j++) {
1211
auto c = canData[j];
@@ -19,33 +18,3 @@ void can_list_to_can_capnp_cpp(const std::vector<can_frame> &can_list, std::stri
1918
kj::ArrayOutputStream output_stream(kj::ArrayPtr<capnp::byte>((unsigned char *)out.data(), msg_size));
2019
capnp::writeMessage(output_stream, msg);
2120
}
22-
23-
// Converts a vector of Cap'n Proto serialized can strings into a vector of CanData structures.
24-
void can_capnp_to_can_list_cpp(const std::vector<std::string> &strings, std::vector<CanData> &can_list, bool sendcan) {
25-
AlignedBuffer aligned_buf;
26-
can_list.reserve(strings.size());
27-
28-
for (const auto &str : strings) {
29-
// extract the messages
30-
capnp::FlatArrayMessageReader reader(aligned_buf.align(str.data(), str.size()));
31-
cereal::Event::Reader event = reader.getRoot<cereal::Event>();
32-
33-
auto frames = sendcan ? event.getSendcan() : event.getCan();
34-
35-
// Add new CanData entry
36-
CanData &can_data = can_list.emplace_back();
37-
can_data.nanos = event.getLogMonoTime();
38-
can_data.frames.reserve(frames.size());
39-
40-
// Populate CAN frames
41-
for (const auto &frame : frames) {
42-
CanFrame &can_frame = can_data.frames.emplace_back();
43-
can_frame.src = frame.getSrc();
44-
can_frame.address = frame.getAddress();
45-
46-
// Copy CAN data
47-
auto dat = frame.getDat();
48-
can_frame.dat.assign(dat.begin(), dat.end());
49-
}
50-
}
51-
}

selfdrive/pandad/pandad_api_impl.pyx

+1-28
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,17 @@
11
# distutils: language = c++
22
# cython: language_level=3
3-
from cython.operator cimport dereference as deref, preincrement as preinc
43
from libcpp.vector cimport vector
54
from libcpp.string cimport string
65
from libcpp cimport bool
7-
from libc.stdint cimport uint8_t, uint32_t, uint64_t
86

97
cdef extern from "panda.h":
108
cdef struct can_frame:
119
long address
1210
string dat
1311
long src
1412

15-
cdef extern from "opendbc/can/common.h":
16-
cdef struct CanFrame:
17-
long src
18-
uint32_t address
19-
vector[uint8_t] dat
20-
21-
cdef struct CanData:
22-
uint64_t nanos
23-
vector[CanFrame] frames
24-
2513
cdef extern from "can_list_to_can_capnp.cc":
26-
void can_list_to_can_capnp_cpp(const vector[can_frame] &can_list, string &out, bool sendcan, bool valid)
27-
void can_capnp_to_can_list_cpp(const vector[string] &strings, vector[CanData] &can_data, bool sendcan)
14+
void can_list_to_can_capnp_cpp(const vector[can_frame] &can_list, string &out, bool sendCan, bool valid)
2815

2916
def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True):
3017
cdef can_frame *f
@@ -40,17 +27,3 @@ def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True):
4027
cdef string out
4128
can_list_to_can_capnp_cpp(can_list, out, msgtype == 'sendcan', valid)
4229
return out
43-
44-
def can_capnp_to_list(strings, msgtype='can'):
45-
cdef vector[CanData] data
46-
can_capnp_to_can_list_cpp(strings, data, msgtype == 'sendcan')
47-
48-
result = []
49-
cdef CanData *d
50-
cdef vector[CanData].iterator it = data.begin()
51-
while it != data.end():
52-
d = &deref(it)
53-
frames = [[f.address, (<char *>&f.dat[0])[:f.dat.size()], f.src] for f in d.frames]
54-
result.append([d.nanos, frames])
55-
preinc(it)
56-
return result

tools/car_porting/examples/subaru_long_accel.ipynb

+1-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"from opendbc.can.parser import CANParser\n",
2525
"\n",
2626
"from openpilot.selfdrive.car.subaru.values import DBC\n",
27-
"from openpilot.selfdrive.pandad import can_capnp_to_list\n",
2827
"from openpilot.tools.lib.logreader import LogReader\n",
2928
"\n",
3029
"\"\"\"\n",
@@ -51,7 +50,7 @@
5150
"\n",
5251
" for msg in lr:\n",
5352
" if msg.which() == \"can\":\n",
54-
" cp.update_strings(can_capnp_to_list([msg.as_builder().to_bytes()]))\n",
53+
" cp.update_strings([msg.as_builder().to_bytes()])\n",
5554
" es_distance_history.append(copy.copy(cp.vl[\"ES_Distance\"]))\n",
5655
" es_brake_history.append(copy.copy(cp.vl[\"ES_Brake\"]))\n",
5756
" es_status_history.append(copy.copy(cp.vl[\"ES_Status\"]))\n",

tools/car_porting/examples/subaru_steer_temp_fault.ipynb

+1-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"from opendbc.can.parser import CANParser\n",
2828
"\n",
2929
"from openpilot.selfdrive.car.subaru.values import CanBus, DBC\n",
30-
"from openpilot.selfdrive.pandad import can_capnp_to_list\n",
3130
"from openpilot.tools.lib.logreader import LogReader\n",
3231
"\n",
3332
"\"\"\"\n",
@@ -51,7 +50,7 @@
5150
" examples = []\n",
5251
"\n",
5352
" for msg in can_msgs:\n",
54-
" cp.update_strings(can_capnp_to_list([msg.as_builder().to_bytes()]))\n",
53+
" cp.update_strings([msg.as_builder().to_bytes()])\n",
5554
" steering_torque_history.append(copy.copy(cp.vl[\"Steering_Torque\"]))\n",
5655
"\n",
5756
" steer_warning_last = False\n",

0 commit comments

Comments
 (0)