diff --git a/Dockerfile.openpilot_base b/Dockerfile.openpilot_base
index ff947e5760..bca2ac4c66 100644
--- a/Dockerfile.openpilot_base
+++ b/Dockerfile.openpilot_base
@@ -8,7 +8,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
bzip2 \
ca-certificates \
capnproto \
- libcapnp-dev \
clang \
cmake \
cppcheck \
@@ -19,17 +18,18 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
iputils-ping \
libarchive-dev \
libbz2-dev \
+ libcapnp-dev \
libcurl4-openssl-dev \
libeigen3-dev \
libffi-dev \
- libglew-dev \
libgles2-mesa-dev \
+ libglew-dev \
libglib2.0-0 \
liblzma-dev \
libomp-dev \
libopencv-dev \
- libssl-dev \
libsqlite3-dev \
+ libssl-dev \
libsystemd-dev \
libusb-1.0-0-dev \
libzmq3-dev \
@@ -38,6 +38,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
ocl-icd-opencl-dev \
opencl-headers \
python-dev \
+ qml-module-qtquick2 \
qt5-default \
qtmultimedia5-dev \
qtwebengine5-dev \
diff --git a/README.md b/README.md
index bf106ddd98..01aa9576bd 100644
--- a/README.md
+++ b/README.md
@@ -97,7 +97,7 @@ Supported Cars
| Lexus | RX 2020-21 | All | openpilot | 0mph | 0mph |
| Lexus | RX Hybrid 2016-19 | All | Stock3| 0mph | 0mph |
| Lexus | RX Hybrid 2020 | All | openpilot | 0mph | 0mph |
-| Toyota | Avalon 2016-18, 2020-21 | TSS-P | Stock3| 20mph1 | 0mph |
+| Toyota | Avalon 2016-21 | TSS-P | Stock3| 20mph1 | 0mph |
| Toyota | Camry 2018-20 | All | Stock | 0mph4 | 0mph |
| Toyota | Camry 2021 | All | openpilot | 0mph | 0mph |
| Toyota | Camry Hybrid 2018-20 | All | Stock | 0mph4 | 0mph |
@@ -130,58 +130,63 @@ Supported Cars
Community Maintained Cars and Features
------
-| Make | Model (US Market Reference) | Supported Package | ACC | No ACC accel below | No ALC below |
-| ----------| ------------------------------| --------------------| -----------------| -------------------| -------------|
-| Audi | A3 2014, 2017 | Prestige / Adv.Tech | Stock | 0mph | 0mph |
-| Audi | A3 Sportback e-tron 2017-18 | Prestige / Adv.Tech | Stock | 0mph | 0mph |
-| Buick | Regal 20181 | Adaptive Cruise | openpilot | 0mph | 7mph |
-| Cadillac | ATS 20181 | Adaptive Cruise | openpilot | 0mph | 7mph |
-| Chevrolet | Malibu 20171 | Adaptive Cruise | openpilot | 0mph | 7mph |
-| Chevrolet | Volt 2017-181 | Adaptive Cruise | openpilot | 0mph | 7mph |
-| Chrysler | Pacifica 2017-18 | Adaptive Cruise | Stock | 0mph | 9mph |
-| Chrysler | Pacifica 2020 | Adaptive Cruise | Stock | 0mph | 39mph |
-| Chrysler | Pacifica Hybrid 2017-18 | Adaptive Cruise | Stock | 0mph | 9mph |
-| Chrysler | Pacifica Hybrid 2019-21 | Adaptive Cruise | Stock | 0mph | 39mph |
-| Genesis | G70 2018 | All | Stock | 0mph | 0mph |
-| Genesis | G80 2018 | All | Stock | 0mph | 0mph |
-| Genesis | G90 2018 | All | Stock | 0mph | 0mph |
-| GMC | Acadia 20181 | Adaptive Cruise | openpilot | 0mph | 7mph |
-| Holden | Astra 20171 | Adaptive Cruise | openpilot | 0mph | 7mph |
-| Hyundai | Elantra 2017-19 | SCC + LKAS | Stock | 19mph | 34mph |
-| Hyundai | Genesis 2015-16 | SCC + LKAS | Stock | 19mph | 37mph |
-| Hyundai | Ioniq Electric 2019 | SCC + LKAS | Stock | 0mph | 32mph |
-| Hyundai | Ioniq Electric 2020 | SCC + LKAS | Stock | 0mph | 0mph |
-| Hyundai | Kona 2020 | SCC + LKAS | Stock | 0mph | 0mph |
-| Hyundai | Kona EV 2019 | SCC + LKAS | Stock | 0mph | 0mph |
-| Hyundai | Santa Fe 2019-20 | All | Stock | 0mph | 0mph |
-| Hyundai | Sonata 2018-2019 | SCC + LKAS | Stock | 0mph | 0mph |
-| Hyundai | Veloster 2019 | SCC + LKAS | Stock | 5mph | 0mph |
-| Jeep | Grand Cherokee 2016-18 | Adaptive Cruise | Stock | 0mph | 9mph |
-| Jeep | Grand Cherokee 2019-20 | Adaptive Cruise | Stock | 0mph | 39mph |
-| Kia | Forte 2018-19, 2021 | SCC + LKAS | Stock | 0mph | 0mph |
-| Kia | Niro EV 2020 | SCC + LKAS | Stock | 0mph | 0mph |
-| Kia | Optima 2017 | SCC + LKAS | Stock | 0mph | 32mph |
-| Kia | Optima 2019 | SCC + LKAS | Stock | 0mph | 0mph |
-| Kia | Seltos 2021 | SCC + LKAS | Stock | 0mph | 0mph |
-| Kia | Sorento 2018 | SCC + LKAS | Stock | 0mph | 0mph |
-| Kia | Stinger 2018 | SCC + LKAS | Stock | 0mph | 0mph |
-| Kia | Ceed 2019 | SCC + LKAS | Stock | 0mph | 0mph |
-| Nissan | Altima 2020 | ProPILOT | Stock | 0mph | 0mph |
-| Nissan | Leaf 2018-20 | ProPILOT | Stock | 0mph | 0mph |
-| Nissan | Rogue 2018-19 | ProPILOT | Stock | 0mph | 0mph |
-| Nissan | X-Trail 2017 | ProPILOT | Stock | 0mph | 0mph |
-| SEAT | Ateca 2018 | Driver Assistance | Stock | 0mph | 0mph |
-| Škoda | Kodiaq 2018 | Driver Assistance | Stock | 0mph | 0mph |
-| Škoda | Scala 2020 | Driver Assistance | Stock | 0mph | 0mph |
-| Škoda | Superb 2018 | Driver Assistance | Stock | 0mph | 0mph |
-| Subaru | Ascent 2019 | EyeSight | Stock | 0mph | 0mph |
-| Subaru | Crosstrek 2018-19 | EyeSight | Stock | 0mph | 0mph |
-| Subaru | Forester 2019-20 | EyeSight | Stock | 0mph | 0mph |
-| Subaru | Impreza 2017-19 | EyeSight | Stock | 0mph | 0mph |
-| Volkswagen| Jetta 2018-21 | Driver Assistance | Stock | 0mph | 0mph |
-| Volkswagen| Passat 2016-172 | Driver Assistance | Stock | 0mph | 0mph |
-| Volkswagen| Golf 2015-19 | Driver Assistance | Stock | 0mph | 0mph |
-| Volkswagen| Tiguan 2020 | Driver Assistance | Stock | 0mph | 0mph |
+| Make | Model (US Market Reference) | Supported Package | ACC | No ACC accel below | No ALC below |
+| ----------| ------------------------------| ------------------| -----------------| -------------------| -------------|
+| Audi | A3 2014, 2017 | Prestige | Stock | 0mph | 0mph |
+| Audi | A3 Sportback e-tron 2017-18 | Prestige | Stock | 0mph | 0mph |
+| Buick | Regal 20181 | Adaptive Cruise | openpilot | 0mph | 7mph |
+| Cadillac | ATS 20181 | Adaptive Cruise | openpilot | 0mph | 7mph |
+| Chevrolet | Malibu 20171 | Adaptive Cruise | openpilot | 0mph | 7mph |
+| Chevrolet | Volt 2017-181 | Adaptive Cruise | openpilot | 0mph | 7mph |
+| Chrysler | Pacifica 2017-18 | Adaptive Cruise | Stock | 0mph | 9mph |
+| Chrysler | Pacifica 2020 | Adaptive Cruise | Stock | 0mph | 39mph |
+| Chrysler | Pacifica Hybrid 2017-18 | Adaptive Cruise | Stock | 0mph | 9mph |
+| Chrysler | Pacifica Hybrid 2019-21 | Adaptive Cruise | Stock | 0mph | 39mph |
+| Genesis | G70 2018 | All | Stock | 0mph | 0mph |
+| Genesis | G80 2018 | All | Stock | 0mph | 0mph |
+| Genesis | G90 2018 | All | Stock | 0mph | 0mph |
+| GMC | Acadia 20181 | Adaptive Cruise | openpilot | 0mph | 7mph |
+| Holden | Astra 20171 | Adaptive Cruise | openpilot | 0mph | 7mph |
+| Hyundai | Elantra 2017-19 | SCC + LKAS | Stock | 19mph | 34mph |
+| Hyundai | Genesis 2015-16 | SCC + LKAS | Stock | 19mph | 37mph |
+| Hyundai | Ioniq Electric 2019 | SCC + LKAS | Stock | 0mph | 32mph |
+| Hyundai | Ioniq Electric 2020 | SCC + LKAS | Stock | 0mph | 0mph |
+| Hyundai | Kona 2020 | SCC + LKAS | Stock | 0mph | 0mph |
+| Hyundai | Kona EV 2019 | SCC + LKAS | Stock | 0mph | 0mph |
+| Hyundai | Santa Fe 2019-20 | All | Stock | 0mph | 0mph |
+| Hyundai | Sonata 2018-2019 | SCC + LKAS | Stock | 0mph | 0mph |
+| Hyundai | Veloster 2019 | SCC + LKAS | Stock | 5mph | 0mph |
+| Jeep | Grand Cherokee 2016-18 | Adaptive Cruise | Stock | 0mph | 9mph |
+| Jeep | Grand Cherokee 2019-20 | Adaptive Cruise | Stock | 0mph | 39mph |
+| Kia | Forte 2018-2021 | SCC + LKAS | Stock | 0mph | 0mph |
+| Kia | Niro EV 2020 | SCC + LKAS | Stock | 0mph | 0mph |
+| Kia | Optima 2017 | SCC + LKAS | Stock | 0mph | 32mph |
+| Kia | Optima 2019 | SCC + LKAS | Stock | 0mph | 0mph |
+| Kia | Seltos 2021 | SCC + LKAS | Stock | 0mph | 0mph |
+| Kia | Sorento 2018 | SCC + LKAS | Stock | 0mph | 0mph |
+| Kia | Stinger 2018 | SCC + LKAS | Stock | 0mph | 0mph |
+| Kia | Ceed 2019 | SCC + LKAS | Stock | 0mph | 0mph |
+| Nissan | Altima 2020 | ProPILOT | Stock | 0mph | 0mph |
+| Nissan | Leaf 2018-20 | ProPILOT | Stock | 0mph | 0mph |
+| Nissan | Rogue 2018-19 | ProPILOT | Stock | 0mph | 0mph |
+| Nissan | X-Trail 2017 | ProPILOT | Stock | 0mph | 0mph |
+| SEAT | Ateca 2018 | Driver Assistance | Stock | 0mph | 0mph |
+| Škoda | Kodiaq 2018 | Driver Assistance | Stock | 0mph | 0mph |
+| Škoda | Scala 2020 | Driver Assistance | Stock | 0mph | 0mph |
+| Škoda | Superb 2018 | Driver Assistance | Stock | 0mph | 0mph |
+| Subaru | Ascent 2019 | EyeSight | Stock | 0mph | 0mph |
+| Subaru | Crosstrek 2018-19 | EyeSight | Stock | 0mph | 0mph |
+| Subaru | Forester 2019-20 | EyeSight | Stock | 0mph | 0mph |
+| Subaru | Impreza 2017-19 | EyeSight | Stock | 0mph | 0mph |
+| Volkswagen| e-Golf 2014, 2020 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Golf 2015-19 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Golf GTE 2016 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Golf GTI 2018-19 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Golf R 2016-19 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Golf SportsVan 2016 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Jetta 2018-21 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Passat 2016-172 | Driver Assistance | Stock | 0mph | 0mph |
+| Volkswagen| Tiguan 2020 | Driver Assistance | Stock | 0mph | 0mph |
1Requires an [OBD-II car harness](https://comma.ai/shop/products/comma-car-harness) and [community built ASCM harness](https://github.com/commaai/openpilot/wiki/GM#hardware). ***NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).***
2Only includes the MQB Passat sold outside of North America. The NMS Passat made in Chattanooga TN is not yet supported.
diff --git a/common/logging_extra.py b/common/logging_extra.py
index a80a5a0821..9471b44191 100644
--- a/common/logging_extra.py
+++ b/common/logging_extra.py
@@ -158,6 +158,8 @@ class SwagLogger(logging.Logger):
evt.update(kwargs)
if 'error' in kwargs:
self.error(evt)
+ if 'debug' in kwargs:
+ self.debug(evt)
else:
self.info(evt)
diff --git a/common/params_pxd.pxd b/common/params_pxd.pxd
index 9faa117cb3..14fcb311c3 100644
--- a/common/params_pxd.pxd
+++ b/common/params_pxd.pxd
@@ -12,5 +12,5 @@ cdef extern from "selfdrive/common/params.h":
Params(bool)
Params(string)
string get(string, bool) nogil
- int delete_db_value(string)
- int write_db_value(string, string)
+ int remove(string)
+ int put(string, string)
diff --git a/common/params_pyx.pyx b/common/params_pyx.pyx
index 499e6ea6e7..92b35302ca 100755
--- a/common/params_pyx.pyx
+++ b/common/params_pyx.pyx
@@ -36,6 +36,7 @@ keys = {
b"GitCommit": [TxType.PERSISTENT],
b"GitRemote": [TxType.PERSISTENT],
b"GithubSshKeys": [TxType.PERSISTENT],
+ b"GithubUsername": [TxType.PERSISTENT],
b"HardwareSerial": [TxType.PERSISTENT],
b"HasAcceptedTerms": [TxType.PERSISTENT],
b"HasCompletedSetup": [TxType.PERSISTENT],
@@ -156,11 +157,11 @@ cdef class Params:
if key not in keys:
raise UnknownKeyName(key)
- self.p.write_db_value(key, dat)
+ self.p.put(key, dat)
def delete(self, key):
key = ensure_bytes(key)
- self.p.delete_db_value(key)
+ self.p.remove(key)
def put_nonblocking(key, val, d=None):
diff --git a/release/build_release2.sh b/release/build_release2.sh
index f8555767fb..fe4936913f 100755
--- a/release/build_release2.sh
+++ b/release/build_release2.sh
@@ -42,7 +42,7 @@ git commit -m "openpilot v$VERSION"
# Build signed panda firmware
pushd panda/
-CERT=/tmp/pandaextra/certs/release RELEASE=1 scons
+CERT=/tmp/pandaextra/certs/release RELEASE=1 scons -u .
mv board/obj/panda.bin.signed /tmp/panda.bin.signed
popd
@@ -63,6 +63,7 @@ find . -name '*.pyc' -delete
find . -name '__pycache__' -delete
rm -rf panda/board panda/certs panda/crypto
rm -rf .sconsign.dblite Jenkinsfile release/
+rm models/supercombo.dlc
# Move back signed panda fw
mkdir -p panda/board/obj
diff --git a/release/files_common b/release/files_common
index 8536da8758..bcaa1cc43b 100644
--- a/release/files_common
+++ b/release/files_common
@@ -348,6 +348,7 @@ selfdrive/ui/qt/*.cc
selfdrive/ui/qt/*.hpp
selfdrive/ui/qt/offroad/*.cc
selfdrive/ui/qt/offroad/*.hpp
+selfdrive/ui/qt/offroad/*.qml
selfdrive/ui/qt/widgets/*.cc
selfdrive/ui/qt/widgets/*.hpp
selfdrive/ui/qt/spinner_aarch64
diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py
index 9529fdeec9..5191e3224b 100755
--- a/selfdrive/athena/athenad.py
+++ b/selfdrive/athena/athenad.py
@@ -82,6 +82,8 @@ def jsonrpc_handler(end_event):
send_queue.put_nowait(response.json)
elif "result" in data and "id" in data:
log_recv_queue.put_nowait(data)
+ else:
+ raise Exception("not a valid request or response")
except queue.Empty:
pass
except Exception as e:
diff --git a/selfdrive/athena/tests/test_athenad.py b/selfdrive/athena/tests/test_athenad.py
index 2e9e79b651..102ca063db 100755
--- a/selfdrive/athena/tests/test_athenad.py
+++ b/selfdrive/athena/tests/test_athenad.py
@@ -180,10 +180,15 @@ class TestAthenadMethods(unittest.TestCase):
thread.daemon = True
thread.start()
try:
+ # with params
athenad.recv_queue.put_nowait(json.dumps({"method": "echo", "params": ["hello"], "jsonrpc": "2.0", "id": 0}))
resp = athenad.send_queue.get(timeout=3)
self.assertDictEqual(json.loads(resp), {'result': 'hello', 'id': 0, 'jsonrpc': '2.0'})
-
+ # without params
+ athenad.recv_queue.put_nowait(json.dumps({"method": "getNetworkType", "jsonrpc": "2.0", "id": 0}))
+ resp = athenad.send_queue.get(timeout=3)
+ self.assertDictEqual(json.loads(resp), {'result': 1, 'id': 0, 'jsonrpc': '2.0'})
+ # log forwarding
athenad.recv_queue.put_nowait(json.dumps({'result': {'success': 1}, 'id': 0, 'jsonrpc': '2.0'}))
resp = athenad.log_recv_queue.get(timeout=3)
self.assertDictEqual(json.loads(resp), {'result': {'success': 1}, 'id': 0, 'jsonrpc': '2.0'})
diff --git a/selfdrive/boardd/boardd.cc b/selfdrive/boardd/boardd.cc
index a93e05d243..abf87208f5 100644
--- a/selfdrive/boardd/boardd.cc
+++ b/selfdrive/boardd/boardd.cc
@@ -71,12 +71,11 @@ void safety_setter_thread() {
return;
};
- std::vector value_vin = Params().read_db_bytes("CarVin");
+ std::string value_vin = Params().get("CarVin");
if (value_vin.size() > 0) {
// sanity check VIN format
assert(value_vin.size() == 17);
- std::string str_vin(value_vin.begin(), value_vin.end());
- LOGW("got CarVin %s", str_vin.c_str());
+ LOGW("got CarVin %s", value_vin.c_str());
break;
}
util::sleep_for(100);
@@ -85,7 +84,7 @@ void safety_setter_thread() {
// VIN query done, stop listening to OBDII
panda->set_safety_model(cereal::CarParams::SafetyModel::NO_OUTPUT);
- std::vector params;
+ std::string params;
LOGW("waiting for params to set safety model");
while (true) {
if (do_exit || !panda->connected){
@@ -93,7 +92,7 @@ void safety_setter_thread() {
return;
};
- params = Params().read_db_bytes("CarParams");
+ params = Params().get("CarParams");
if (params.size() > 0) break;
util::sleep_for(100);
}
@@ -133,7 +132,7 @@ bool usb_connect() {
}
if (auto fw_sig = tmp_panda->get_firmware_version(); fw_sig) {
- params.write_db_value("PandaFirmware", (const char *)fw_sig->data(), fw_sig->size());
+ params.put("PandaFirmware", (const char *)fw_sig->data(), fw_sig->size());
// Convert to hex for offroad
char fw_sig_hex_buf[16] = {0};
@@ -143,13 +142,13 @@ bool usb_connect() {
fw_sig_hex_buf[2*i+1] = NIBBLE_TO_HEX((uint8_t)fw_sig_buf[i] & 0xF);
}
- params.write_db_value("PandaFirmwareHex", fw_sig_hex_buf, 16);
+ params.put("PandaFirmwareHex", fw_sig_hex_buf, 16);
LOGW("fw signature: %.*s", 16, fw_sig_hex_buf);
} else { return false; }
// get panda serial
if (auto serial = tmp_panda->get_serial(); serial) {
- params.write_db_value("PandaDongleId", serial->c_str(), serial->length());
+ params.put("PandaDongleId", serial->c_str(), serial->length());
LOGW("panda serial: %s", serial->c_str());
} else { return false; }
@@ -161,13 +160,18 @@ bool usb_connect() {
#endif
if (tmp_panda->has_rtc){
+ setenv("TZ","UTC",1);
struct tm sys_time = get_time();
struct tm rtc_time = tmp_panda->get_rtc();
if (!time_valid(sys_time) && time_valid(rtc_time)) {
- LOGE("System time wrong, setting from RTC");
+ LOGE("System time wrong, setting from RTC. "
+ "System: %d-%02d-%02d %02d:%02d:%02d RTC: %d-%02d-%02d %02d:%02d:%02d",
+ sys_time.tm_year + 1900, sys_time.tm_mon + 1, sys_time.tm_mday,
+ sys_time.tm_hour, sys_time.tm_min, sys_time.tm_sec,
+ rtc_time.tm_year + 1900, rtc_time.tm_mon + 1, rtc_time.tm_mday,
+ rtc_time.tm_hour, rtc_time.tm_min, rtc_time.tm_sec);
- setenv("TZ","UTC",1);
const struct timeval tv = {mktime(&rtc_time), 0};
settimeofday(&tv, 0);
}
@@ -313,9 +317,9 @@ void panda_state_thread(bool spoofing_started) {
// clear VIN, CarParams, and set new safety on car start
if (ignition && !ignition_last) {
- int result = params.delete_db_value("CarVin");
+ int result = params.remove("CarVin");
assert((result == 0) || (result == ERR_NO_VALUE));
- result = params.delete_db_value("CarParams");
+ result = params.remove("CarParams");
assert((result == 0) || (result == ERR_NO_VALUE));
if (!safety_setter_thread_running) {
@@ -329,9 +333,23 @@ void panda_state_thread(bool spoofing_started) {
// Write to rtc once per minute when no ignition present
if ((panda->has_rtc) && !ignition && (no_ignition_cnt % 120 == 1)){
// Write time to RTC if it looks reasonable
+ setenv("TZ","UTC",1);
struct tm sys_time = get_time();
+
if (time_valid(sys_time)){
- panda->set_rtc(sys_time);
+ struct tm rtc_time = panda->get_rtc();
+ double seconds = difftime(mktime(&rtc_time), mktime(&sys_time));
+
+ if (std::abs(seconds) > 1.1) {
+ panda->set_rtc(sys_time);
+ LOGW("Updating panda RTC. dt = %.2f "
+ "System: %d-%02d-%02d %02d:%02d:%02d RTC: %d-%02d-%02d %02d:%02d:%02d",
+ seconds,
+ sys_time.tm_year + 1900, sys_time.tm_mon + 1, sys_time.tm_mday,
+ sys_time.tm_hour, sys_time.tm_min, sys_time.tm_sec,
+ rtc_time.tm_year + 1900, rtc_time.tm_mon + 1, rtc_time.tm_mday,
+ rtc_time.tm_hour, rtc_time.tm_min, rtc_time.tm_sec);
+ }
}
}
diff --git a/selfdrive/camerad/cameras/camera_common.cc b/selfdrive/camerad/cameras/camera_common.cc
index b431eecac0..c41d734895 100644
--- a/selfdrive/camerad/cameras/camera_common.cc
+++ b/selfdrive/camerad/cameras/camera_common.cc
@@ -352,7 +352,7 @@ void common_process_driver_camera(SubMaster *sm, PubMaster *pm, CameraState *c,
const CameraBuf *b = &c->buf;
static int x_min = 0, x_max = 0, y_min = 0, y_max = 0;
- static const bool is_rhd = Params().read_db_bool("IsRHD");
+ static const bool is_rhd = Params().getBool("IsRHD");
// auto exposure
if (cnt % 3 == 0) {
diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py
index f32106b10f..54fa98f4f4 100644
--- a/selfdrive/car/hyundai/values.py
+++ b/selfdrive/car/hyundai/values.py
@@ -380,6 +380,7 @@ FW_VERSIONS = {
(Ecu.fwdRadar, 0x7D0, None): [
b'\xf1\x00DEev SCC F-CUP 1.00 1.03 96400-Q4100 \xf1\xa01.03',
b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4000 \xf1\xa01.00',
+ b'\xf1\x8799110Q4500\xf1\000DEev SCC F-CUP 1.00 1.00 99110-Q4500 \xf1\xa01.00',
],
(Ecu.esp, 0x7D1, None): [
b'\xf1\xa01.06',
@@ -392,15 +393,25 @@ FW_VERSIONS = {
(Ecu.fwdCamera, 0x7C4, None): [
b'\xf1\x00DEE MFC AT USA LHD 1.00 1.03 95740-Q4000 180821',
b'\xf1\x00DEE MFC AT EUR LHD 1.00 1.00 99211-Q4000 191211',
+ b'\xf1\000DEE MFC AT EUR LHD 1.00 1.00 99211-Q4100 200706',
],
},
CAR.KIA_SELTOS: {
(Ecu.fwdRadar, 0x7d0, None): [b'\xf1\x8799110Q5100\xf1\000SP2_ SCC FHCUP 1.01 1.05 99110-Q5100 \xf1\xa01.05',],
- (Ecu.esp, 0x7d1, None): [b'\xf1\x8758910-Q5450\xf1\000SP ESC \t 101\031\t\005 58910-Q5450\xf1\xa01.01',],
- (Ecu.engine, 0x7e0, None): [b'\xf1\x81616D2051\000\000\000\000\000\000\000\000',],
+ (Ecu.esp, 0x7d1, None): [
+ b'\xf1\x8758910-Q5450\xf1\000SP ESC \a 101\031\t\005 58910-Q5450\xf1\xa01.01',
+ b'\xf1\x8758910-Q5450\xf1\000SP ESC \t 101\031\t\005 58910-Q5450\xf1\xa01.01',
+ ],
+ (Ecu.engine, 0x7e0, None): [
+ b'\xf1\x81616D2051\000\000\000\000\000\000\000\000',
+ b'\001TSP2KNL06F100J0K',
+ ],
(Ecu.eps, 0x7d4, None): [b'\xf1\000SP2 MDPS C 1.00 1.04 56300Q5200 ',],
(Ecu.fwdCamera, 0x7c4, None): [b'\xf1\000SP2 MFC AT USA LHD 1.00 1.04 99210-Q5000 191114',],
- (Ecu.transmission, 0x7e1, None): [b'\xf1\x87CZLUB49370612JF7h\xa8y\x87\x99\xa7hv\x99\x97fv\x88\x87x\x89x\x96O\xff\x88\xff\xff\xff.@\xf1\x816V2C2051\000\000\xf1\0006V2B0_C2\000\0006V2C2051\000\000CSP4N20NS3\000\000\000\000',],
+ (Ecu.transmission, 0x7e1, None): [
+ b'\xf1\x87CZLUB49370612JF7h\xa8y\x87\x99\xa7hv\x99\x97fv\x88\x87x\x89x\x96O\xff\x88\xff\xff\xff.@\xf1\x816V2C2051\000\000\xf1\0006V2B0_C2\000\0006V2C2051\000\000CSP4N20NS3\000\000\000\000',
+ b'\xf1\x87954A22D200\xf1\x81T01950A1 \xf1\000T0190XBL T01950A1 DSP2T16X4X950NS6\xd30\xa5\xb9',
+ ],
},
CAR.KIA_OPTIMA: {
(Ecu.fwdRadar, 0x7d0, None): [b'\xf1\x00JF__ SCC F-CUP 1.00 1.00 96400-D4110 '],
diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py
index 68ad598f52..5bf030d9c6 100644
--- a/selfdrive/car/toyota/values.py
+++ b/selfdrive/car/toyota/values.py
@@ -597,7 +597,7 @@ FW_VERSIONS = {
],
(Ecu.fwdCamera, 0x750, 0x6d): [
b'8646FF404000 ',
- b'8821FF406000 ',
+ b'8646FF406000 ',
b'8646FF407000 ',
],
},
@@ -1022,7 +1022,6 @@ FW_VERSIONS = {
b'\x02342N9000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00',
b'\x02342N9100\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00',
b'\x02342P0000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00',
- b'\x02342Q2000\x00\x00\x00\x00\x00\x00\x00\x0054213000\x00\x00\x00\x00\x00\x00\x00\x00',
],
(Ecu.eps, 0x7a1, None): [
b'8965B42103\x00\x00\x00\x00\x00\x00',
@@ -1127,6 +1126,7 @@ FW_VERSIONS = {
b'\x018966342W5000\x00\x00\x00\x00',
b'\x028966342W4001\x00\x00\x00\x00897CF1203001\x00\x00\x00\x00',
b'\x02896634A13001\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00',
+ b'\x02896634A13101\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00',
b'\x02896634A14001\x00\x00\x00\x00897CF1203001\x00\x00\x00\x00',
b'\x02896634A23001\x00\x00\x00\x00897CF1203001\x00\x00\x00\x00',
b'\x02896634A14001\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00',
diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py
index ba94a96bb6..fd62428117 100644
--- a/selfdrive/car/volkswagen/interface.py
+++ b/selfdrive/car/volkswagen/interface.py
@@ -57,10 +57,10 @@ class CarInterface(CarInterfaceBase):
# Per-chassis tuning values, override tuning defaults here if desired
- if candidate == CAR.GOLF:
- # Temporarily carry forward old tuning values while we test vehicle identification
- ret.mass = 1500 + STD_CARGO_KG
- ret.wheelbase = 2.64
+ if candidate == CAR.GOLF_MK7:
+ # Averages of all AU Golf variants
+ ret.mass = 1397 + STD_CARGO_KG
+ ret.wheelbase = 2.62
elif candidate == CAR.JETTA_MK7:
# Averages of all BU Jetta variants
diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py
index 828928de99..e44e8a321d 100644
--- a/selfdrive/car/volkswagen/values.py
+++ b/selfdrive/car/volkswagen/values.py
@@ -55,7 +55,7 @@ MQB_LDW_MESSAGES = {
# FW_VERSIONS for that existing CAR.
class CAR:
- GOLF = "VOLKSWAGEN GOLF" # Chassis 5G/AU/BA/BE, Mk7 VW Golf and variants
+ GOLF_MK7 = "VOLKSWAGEN GOLF 7TH GEN" # Chassis 5G/AU/BA/BE, Mk7 VW Golf and variants
JETTA_MK7 = "VOLKSWAGEN JETTA 7TH GEN" # Chassis BU, Mk7 Jetta
PASSAT_MK8 = "VOLKSWAGEN PASSAT 8TH GEN" # Chassis 3G, Mk8 Passat and variants
TIGUAN_MK2 = "VOLKSWAGEN TIGUAN 2ND GEN" # Chassis AD/BW, Mk2 VW Tiguan and variants
@@ -66,7 +66,7 @@ class CAR:
SKODA_SUPERB_MK3 = "SKODA SUPERB 3RD GEN" # Chassis 3V/NP, Mk3 Skoda Superb and variants
FINGERPRINTS = {
- CAR.GOLF: [{
+ CAR.GOLF_MK7: [{
64: 8, 134: 8, 159: 8, 173: 8, 178: 8, 253: 8, 257: 8, 260: 8, 262: 8, 264: 8, 278: 8, 279: 8, 283: 8, 286: 8, 288: 8, 289: 8, 290: 8, 294: 8, 299: 8, 302: 8, 346: 8, 385: 8, 418: 8, 427: 8, 668: 8, 679: 8, 681: 8, 695: 8, 779: 8, 780: 8, 783: 8, 792: 8, 795: 8, 804: 8, 806: 8, 807: 8, 808: 8, 809: 8, 870: 8, 896: 8, 897: 8, 898: 8, 901: 8, 917: 8, 919: 8, 927: 8, 949: 8, 958: 8, 960: 4, 981: 8, 987: 8, 988: 8, 991: 8, 997: 8, 1000: 8, 1019: 8, 1120: 8, 1122: 8, 1123: 8, 1124: 8, 1153: 8, 1162: 8, 1175: 8, 1312: 8, 1385: 8, 1413: 8, 1440: 5, 1514: 8, 1515: 8, 1520: 8, 1529: 8, 1600: 8, 1601: 8, 1603: 8, 1605: 8, 1624: 8, 1626: 8, 1629: 8, 1631: 8, 1646: 8, 1648: 8, 1712: 6, 1714: 8, 1716: 8, 1717: 8, 1719: 8, 1720: 8, 1721: 8
}],
CAR.JETTA_MK7: [{
@@ -98,21 +98,76 @@ FINGERPRINTS = {
IGNORED_FINGERPRINTS = [CAR.JETTA_MK7, CAR.PASSAT_MK8, CAR.TIGUAN_MK2, CAR.SEAT_ATECA_MK1, CAR.SKODA_KODIAQ_MK1, CAR.SKODA_SCALA_MK1, CAR.SKODA_SUPERB_MK3]
FW_VERSIONS = {
- CAR.GOLF: {
+ CAR.GOLF_MK7: {
(Ecu.engine, 0x7e0, None): [
+ b'\xf1\x8704E906016A \xf1\x897697',
+ b'\xf1\x8704E906016AD\xf1\x895758',
+ b'\xf1\x8704E906023AG\xf1\x891726',
+ b'\xf1\x8704E906023BN\xf1\x894518',
+ b'\xf1\x8704E906027GR\xf1\x892394',
+ b'\xf1\x8704L906026NF\xf1\x899528',
+ b'\xf1\x8704L906056HE\xf1\x893758',
+ b'\xf1\x870EA906016A \xf1\x898343',
+ b'\xf1\x870EA906016S \xf1\x897207',
+ b'\xf1\x875G0906259 \xf1\x890007',
+ b'\xf1\x875G0906259J \xf1\x890002',
+ b'\xf1\x875G0906259L \xf1\x890002',
+ b'\xf1\x875G0906259Q \xf1\x890002',
b'\xf1\x878V0906259P \xf1\x890001',
+ b'\xf1\x878V0906259Q \xf1\x890002',
],
(Ecu.transmission, 0x7e1, None): [
+ b'\xf1\x870CW300045 \xf1\x894531',
+ b'\xf1\x870D9300040S \xf1\x894311',
+ b'\xf1\x870CW300047D \xf1\x895261',
+ b'\xf1\x870D9300012 \xf1\x894913',
+ b'\xf1\x870CW300042F \xf1\x891604',
+ b'\xf1\x870DD300046F \xf1\x891601',
+ b'\xf1\x870D9300020S \xf1\x895201',
b'\xf1\x870GC300012A \xf1\x891403',
+ b'\xf1\x870GC300043T \xf1\x899999',
+ b'\xf1\x870GC300020G \xf1\x892404',
+ b'\xf1\x870GC300014B \xf1\x892405',
+ b'\xf1\x870DD300045K \xf1\x891120',
],
(Ecu.srs, 0x715, None): [
- b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13271212111312--071104171838103891131211',
+ b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\023271212111312--071104171838103891131211',
+ b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13272512111312--07110417182C102C91131211',
+ b'\xf1\x875Q0959655M \xf1\x890361\xf1\x82\0211413001112120041114115121611169112',
+ b'\xf1\x875Q0959655S \xf1\x890870\xf1\x82\02324230011211200621143171724112491132111',
+ b'\xf1\x875Q0959655S \xf1\x890870\xf1\x82\02315120011211200621143171717111791132111',
+ b'\xf1\x875Q0959655S \xf1\x890870\xf1\x82\x1315120011211200061104171717101791132111',
+ b'\xf1\x875Q0959655S \xf1\x890870\xf1\x82\02324230011211200061104171724102491132111',
+ b'\xf1\x875Q0959655AA\xf1\x890386\xf1\x82\0211413001113120053114317121C111C9113',
+ b'\xf1\x875Q0959655AA\xf1\x890386\xf1\x82\0211413001113120043114317121C111C9113',
+ b'\xf1\x875Q0959655AA\xf1\x890388\xf1\x82\0211413001113120053114317121C111C9113',
+ b'\xf1\x875Q0959655AA\xf1\x890388\xf1\x82\0211413001113120043114417121411149113',
+ b'\xf1\x875Q0959655BH\xf1\x890336\xf1\x82\02314160011123300314211012230229333463100',
],
(Ecu.eps, 0x712, None): [
+ b'\xf1\x873Q0909144F \xf1\x895043\xf1\x82\00561A01612A0',
+ b'\xf1\x873Q0909144H \xf1\x895061\xf1\x82\00566A0J612A1',
b'\xf1\x873Q0909144L \xf1\x895081\xf1\x82\x0571A0JA15A1',
+ b'\xf1\x873Q0909144M \xf1\x895082\xf1\x82\00571A0JA16A1',
+ b'\xf1\x875Q0909143K \xf1\x892033\xf1\x820519A9040203',
+ b'\xf1\x875Q0909144L \xf1\x891021\xf1\x82\00522A00402A0',
+ b'\xf1\x875Q0909144P \xf1\x891043\xf1\x82\00511A00403A0',
+ b'\xf1\x875Q0909144S \xf1\x891063\xf1\x82\00516A07A02A1',
+ b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\00521A00441A1',
+ b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\x0521A00641A1',
+ b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\00521A00642A1',
+ b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\00521A07B05A1',
+ b'\xf1\x875QN909144A \xf1\x895081\xf1\x82\x0571A01A17A1',
],
(Ecu.fwdRadar, 0x757, None): [
+ b'\xf1\x875Q0907572A \xf1\x890141\xf1\x82\00101',
+ b'\xf1\x875Q0907572B \xf1\x890200\xf1\x82\00101',
+ b'\xf1\x875Q0907572C \xf1\x890210\xf1\x82\00101',
+ b'\xf1\x875Q0907572D \xf1\x890304\xf1\x82\00101',
+ b'\xf1\x875Q0907572F \xf1\x890400\xf1\x82\00101',
+ b'\xf1\x875Q0907572H \xf1\x890620',
b'\xf1\x875Q0907572J \xf1\x890654',
+ b'\xf1\x875Q0907572P \xf1\x890682',
],
},
CAR.JETTA_MK7: {
@@ -281,7 +336,7 @@ FW_VERSIONS = {
}
DBC = {
- CAR.GOLF: dbc_dict('vw_mqb_2010', None),
+ CAR.GOLF_MK7: dbc_dict('vw_mqb_2010', None),
CAR.JETTA_MK7: dbc_dict('vw_mqb_2010', None),
CAR.PASSAT_MK8: dbc_dict('vw_mqb_2010', None),
CAR.TIGUAN_MK2: dbc_dict('vw_mqb_2010', None),
diff --git a/selfdrive/common/params.cc b/selfdrive/common/params.cc
index 930f3f0df2..1bb719874c 100644
--- a/selfdrive/common/params.cc
+++ b/selfdrive/common/params.cc
@@ -11,9 +11,6 @@
#include
#include
-#include