VW: Move car specs to PlatformConfig (#31567)

* subaru platform config

* forester wrong dbc

* spacing

* subaru car specs

* someday!

* more red diff

* all brands can be done like this

* but this should be done first and thats subaru specific

* that seems very low but we shouldn't change it here

* as long as it subclasses str its fine

* well that sucked

* cleanup and follow refactor

* diff reduction

* oops

* fix

* force fingerprint

* Revert "force fingerprint"

This reverts commit 600fbcd7d5.

* space

* Fix specs

* this one too

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
old-commit-hash: da540eac13
pull/32199/head
Jason Young 1 year ago committed by GitHub
parent a09300385b
commit 5cb007daf3
  1. 6
      selfdrive/car/__init__.py
  2. 2
      selfdrive/car/interfaces.py
  3. 120
      selfdrive/car/volkswagen/interface.py
  4. 336
      selfdrive/car/volkswagen/values.py

@ -1,6 +1,6 @@
# functions common among cars # functions common among cars
from collections import namedtuple from collections import namedtuple
from dataclasses import dataclass from dataclasses import dataclass, field
from enum import ReprEnum from enum import ReprEnum
import capnp import capnp
@ -246,11 +246,13 @@ class CanSignalRateCalculator:
CarInfos = CarInfo | list[CarInfo] CarInfos = CarInfo | list[CarInfo]
@dataclass @dataclass(kw_only=True)
class CarSpecs: class CarSpecs:
mass: float mass: float
wheelbase: float wheelbase: float
steerRatio: float steerRatio: float
minSteerSpeed: float = field(default=0.)
minEnableSpeed: float = field(default=-1.)
@dataclass(order=True) @dataclass(order=True)

@ -118,6 +118,8 @@ class CarInterfaceBase(ABC):
ret.mass = platform_config.specs.mass ret.mass = platform_config.specs.mass
ret.wheelbase = platform_config.specs.wheelbase ret.wheelbase = platform_config.specs.wheelbase
ret.steerRatio = platform_config.specs.steerRatio ret.steerRatio = platform_config.specs.steerRatio
ret.minEnableSpeed = platform_config.specs.minEnableSpeed
ret.minSteerSpeed = platform_config.specs.minSteerSpeed
ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs) ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs)

@ -1,9 +1,8 @@
from cereal import car from cereal import car
from panda import Panda from panda import Panda
from openpilot.common.conversions import Conversions as CV
from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car import get_safety_config
from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.interfaces import CarInterfaceBase
from openpilot.selfdrive.car.volkswagen.values import CAR, PQ_CARS, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags from openpilot.selfdrive.car.volkswagen.values import PQ_CARS, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags
ButtonType = car.CarState.ButtonEvent.Type ButtonType = car.CarState.ButtonEvent.Type
EventName = car.CarEvent.EventName EventName = car.CarEvent.EventName
@ -72,7 +71,6 @@ class CarInterface(CarInterfaceBase):
# Global lateral tuning defaults, can be overridden per-vehicle # Global lateral tuning defaults, can be overridden per-vehicle
ret.steerRatio = 15.6 # Let the params learner figure this out
ret.steerLimitTimer = 0.4 ret.steerLimitTimer = 0.4
if candidate in PQ_CARS: if candidate in PQ_CARS:
ret.steerActuatorDelay = 0.2 ret.steerActuatorDelay = 0.2
@ -105,122 +103,6 @@ class CarInterface(CarInterfaceBase):
# Per-chassis tuning values, override tuning defaults here if desired # Per-chassis tuning values, override tuning defaults here if desired
if candidate == CAR.ARTEON_MK1:
ret.mass = 1733
ret.wheelbase = 2.84
elif candidate == CAR.ATLAS_MK1:
ret.mass = 2011
ret.wheelbase = 2.98
elif candidate == CAR.CRAFTER_MK2:
ret.mass = 2100
ret.wheelbase = 3.64 # SWB, LWB is 4.49, TBD how to detect difference
ret.minSteerSpeed = 50 * CV.KPH_TO_MS
elif candidate == CAR.GOLF_MK7:
ret.mass = 1397
ret.wheelbase = 2.62
elif candidate == CAR.JETTA_MK7:
ret.mass = 1328
ret.wheelbase = 2.71
elif candidate == CAR.PASSAT_MK8:
ret.mass = 1551
ret.wheelbase = 2.79
elif candidate == CAR.PASSAT_NMS:
ret.mass = 1503
ret.wheelbase = 2.80
ret.minEnableSpeed = 20 * CV.KPH_TO_MS # ACC "basic", no FtS
ret.minSteerSpeed = 50 * CV.KPH_TO_MS
elif candidate == CAR.POLO_MK6:
ret.mass = 1230
ret.wheelbase = 2.55
elif candidate == CAR.SHARAN_MK2:
ret.mass = 1639
ret.wheelbase = 2.92
ret.minSteerSpeed = 50 * CV.KPH_TO_MS
elif candidate == CAR.TAOS_MK1:
ret.mass = 1498
ret.wheelbase = 2.69
elif candidate == CAR.TCROSS_MK1:
ret.mass = 1150
ret.wheelbase = 2.60
elif candidate == CAR.TIGUAN_MK2:
ret.mass = 1715
ret.wheelbase = 2.74
elif candidate == CAR.TOURAN_MK2:
ret.mass = 1516
ret.wheelbase = 2.79
elif candidate == CAR.TRANSPORTER_T61:
ret.mass = 1926
ret.wheelbase = 3.00 # SWB, LWB is 3.40, TBD how to detect difference
ret.minSteerSpeed = 14.0
elif candidate == CAR.TROC_MK1:
ret.mass = 1413
ret.wheelbase = 2.63
elif candidate == CAR.AUDI_A3_MK3:
ret.mass = 1335
ret.wheelbase = 2.61
elif candidate == CAR.AUDI_Q2_MK1:
ret.mass = 1205
ret.wheelbase = 2.61
elif candidate == CAR.AUDI_Q3_MK2:
ret.mass = 1623
ret.wheelbase = 2.68
elif candidate == CAR.SEAT_ATECA_MK1:
ret.mass = 1900
ret.wheelbase = 2.64
elif candidate == CAR.SEAT_LEON_MK3:
ret.mass = 1227
ret.wheelbase = 2.64
elif candidate == CAR.SKODA_FABIA_MK4:
ret.mass = 1266
ret.wheelbase = 2.56
elif candidate == CAR.SKODA_KAMIQ_MK1:
ret.mass = 1265
ret.wheelbase = 2.66
elif candidate == CAR.SKODA_KAROQ_MK1:
ret.mass = 1278
ret.wheelbase = 2.66
elif candidate == CAR.SKODA_KODIAQ_MK1:
ret.mass = 1569
ret.wheelbase = 2.79
elif candidate == CAR.SKODA_OCTAVIA_MK3:
ret.mass = 1388
ret.wheelbase = 2.68
elif candidate == CAR.SKODA_SCALA_MK1:
ret.mass = 1192
ret.wheelbase = 2.65
elif candidate == CAR.SKODA_SUPERB_MK3:
ret.mass = 1505
ret.wheelbase = 2.84
else:
raise ValueError(f"unsupported car {candidate}")
ret.autoResumeSng = ret.minEnableSpeed == -1 ret.autoResumeSng = ret.minEnableSpeed == -1
ret.centerToFront = ret.wheelbase * 0.45 ret.centerToFront = ret.wheelbase * 0.45
return ret return ret

@ -1,11 +1,12 @@
from collections import defaultdict, namedtuple from collections import namedtuple
from dataclasses import dataclass, field from dataclasses import dataclass, field
from enum import Enum, IntFlag, StrEnum from enum import Enum, IntFlag
from cereal import car from cereal import car
from panda.python import uds from panda.python import uds
from opendbc.can.can_define import CANDefine from opendbc.can.can_define import CANDefine
from openpilot.selfdrive.car import dbc_dict from openpilot.common.conversions import Conversions as CV
from openpilot.selfdrive.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms
from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \
Device Device
from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16
@ -111,49 +112,17 @@ class CANBUS:
class VolkswagenFlags(IntFlag): class VolkswagenFlags(IntFlag):
STOCK_HCA_PRESENT = 1 STOCK_HCA_PRESENT = 1
@dataclass
class VolkswagenMQBPlatformConfig(PlatformConfig):
dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_mqb_2010', None))
# Check the 7th and 8th characters of the VIN before adding a new CAR. If the @dataclass
# chassis code is already listed below, don't add a new CAR, just add to the class VolkswagenPQPlatformConfig(PlatformConfig):
# FW_VERSIONS for that existing CAR. dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None))
# Exception: SEAT Leon and SEAT Ateca share a chassis code
class CAR(StrEnum):
ARTEON_MK1 = "VOLKSWAGEN ARTEON 1ST GEN" # Chassis AN, Mk1 VW Arteon and variants
ATLAS_MK1 = "VOLKSWAGEN ATLAS 1ST GEN" # Chassis CA, Mk1 VW Atlas and Atlas Cross Sport
CRAFTER_MK2 = "VOLKSWAGEN CRAFTER 2ND GEN" # Chassis SY/SZ, Mk2 VW Crafter, VW Grand California, MAN TGE
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 VW Jetta
PASSAT_MK8 = "VOLKSWAGEN PASSAT 8TH GEN" # Chassis 3G, Mk8 VW Passat and variants
PASSAT_NMS = "VOLKSWAGEN PASSAT NMS" # Chassis A3, North America/China/Mideast NMS Passat, incl. facelift
POLO_MK6 = "VOLKSWAGEN POLO 6TH GEN" # Chassis AW, Mk6 VW Polo
SHARAN_MK2 = "VOLKSWAGEN SHARAN 2ND GEN" # Chassis 7N, Mk2 Volkswagen Sharan and SEAT Alhambra
TAOS_MK1 = "VOLKSWAGEN TAOS 1ST GEN" # Chassis B2, Mk1 VW Taos and Tharu
TCROSS_MK1 = "VOLKSWAGEN T-CROSS 1ST GEN" # Chassis C1, Mk1 VW T-Cross SWB and LWB variants
TIGUAN_MK2 = "VOLKSWAGEN TIGUAN 2ND GEN" # Chassis AD/BW, Mk2 VW Tiguan and variants
TOURAN_MK2 = "VOLKSWAGEN TOURAN 2ND GEN" # Chassis 1T, Mk2 VW Touran and variants
TRANSPORTER_T61 = "VOLKSWAGEN TRANSPORTER T6.1" # Chassis 7H/7L, T6-facelift Transporter/Multivan/Caravelle/California
TROC_MK1 = "VOLKSWAGEN T-ROC 1ST GEN" # Chassis A1, Mk1 VW T-Roc and variants
AUDI_A3_MK3 = "AUDI A3 3RD GEN" # Chassis 8V/FF, Mk3 Audi A3 and variants
AUDI_Q2_MK1 = "AUDI Q2 1ST GEN" # Chassis GA, Mk1 Audi Q2 (RoW) and Q2L (China only)
AUDI_Q3_MK2 = "AUDI Q3 2ND GEN" # Chassis 8U/F3/FS, Mk2 Audi Q3 and variants
SEAT_ATECA_MK1 = "SEAT ATECA 1ST GEN" # Chassis 5F, Mk1 SEAT Ateca and CUPRA Ateca
SEAT_LEON_MK3 = "SEAT LEON 3RD GEN" # Chassis 5F, Mk3 SEAT Leon and variants
SKODA_FABIA_MK4 = "SKODA FABIA 4TH GEN" # Chassis PJ, Mk4 Skoda Fabia
SKODA_KAMIQ_MK1 = "SKODA KAMIQ 1ST GEN" # Chassis NW, Mk1 Skoda Kamiq
SKODA_KAROQ_MK1 = "SKODA KAROQ 1ST GEN" # Chassis NU, Mk1 Skoda Karoq
SKODA_KODIAQ_MK1 = "SKODA KODIAQ 1ST GEN" # Chassis NS, Mk1 Skoda Kodiaq
SKODA_SCALA_MK1 = "SKODA SCALA 1ST GEN" # Chassis NW, Mk1 Skoda Scala and Skoda Kamiq
SKODA_SUPERB_MK3 = "SKODA SUPERB 3RD GEN" # Chassis 3V/NP, Mk3 Skoda Superb and variants
SKODA_OCTAVIA_MK3 = "SKODA OCTAVIA 3RD GEN" # Chassis NE, Mk3 Skoda Octavia and variants
PQ_CARS = {CAR.PASSAT_NMS, CAR.SHARAN_MK2}
DBC: dict[str, dict[str, str]] = defaultdict(lambda: dbc_dict("vw_mqb_2010", None))
for car_type in PQ_CARS:
DBC[car_type] = dbc_dict("vw_golf_mk4", None)
@dataclass(kw_only=True)
class VolkswagenCarSpecs(CarSpecs):
steerRatio: float = field(default=15.6)
class Footnote(Enum): class Footnote(Enum):
KAMIQ = CarFootnote( KAMIQ = CarFootnote(
@ -189,90 +158,202 @@ class VWCarInfo(CarInfo):
if CP.carFingerprint in (CAR.CRAFTER_MK2, CAR.TRANSPORTER_T61): if CP.carFingerprint in (CAR.CRAFTER_MK2, CAR.TRANSPORTER_T61):
self.car_parts = CarParts([Device.threex_angled_mount, CarHarness.j533]) self.car_parts = CarParts([Device.threex_angled_mount, CarHarness.j533])
# Check the 7th and 8th characters of the VIN before adding a new CAR. If the
# chassis code is already listed below, don't add a new CAR, just add to the
# FW_VERSIONS for that existing CAR.
# Exception: SEAT Leon and SEAT Ateca share a chassis code
CAR_INFO: dict[str, VWCarInfo | list[VWCarInfo]] = { class CAR(Platforms):
CAR.ARTEON_MK1: [ ARTEON_MK1 = VolkswagenMQBPlatformConfig(
VWCarInfo("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), "VOLKSWAGEN ARTEON 1ST GEN", # Chassis AN
VWCarInfo("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), [
VWCarInfo("Volkswagen Arteon eHybrid 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), VWCarInfo("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"),
VWCarInfo("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"), VWCarInfo("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"),
], VWCarInfo("Volkswagen Arteon eHybrid 2020-23", video_link="https://youtu.be/FAomFKPFlDA"),
CAR.ATLAS_MK1: [ VWCarInfo("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"),
VWCarInfo("Volkswagen Atlas 2018-23"), ],
VWCarInfo("Volkswagen Atlas Cross Sport 2020-22"), specs=VolkswagenCarSpecs(mass=1733, wheelbase=2.84),
VWCarInfo("Volkswagen Teramont 2018-22"), )
VWCarInfo("Volkswagen Teramont Cross Sport 2021-22"), ATLAS_MK1 = VolkswagenMQBPlatformConfig(
VWCarInfo("Volkswagen Teramont X 2021-22"), "VOLKSWAGEN ATLAS 1ST GEN", # Chassis CA
], [
CAR.CRAFTER_MK2: [ VWCarInfo("Volkswagen Atlas 2018-23"),
VWCarInfo("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), VWCarInfo("Volkswagen Atlas Cross Sport 2020-22"),
VWCarInfo("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), VWCarInfo("Volkswagen Teramont 2018-22"),
VWCarInfo("Volkswagen Grand California 2019-23", video_link="https://youtu.be/4100gLeabmo"), VWCarInfo("Volkswagen Teramont Cross Sport 2021-22"),
VWCarInfo("MAN TGE 2017-23", video_link="https://youtu.be/4100gLeabmo"), VWCarInfo("Volkswagen Teramont X 2021-22"),
VWCarInfo("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"), ],
], specs=VolkswagenCarSpecs(mass=2011, wheelbase=2.98),
CAR.GOLF_MK7: [ )
VWCarInfo("Volkswagen e-Golf 2014-20"), CRAFTER_MK2 = VolkswagenMQBPlatformConfig(
VWCarInfo("Volkswagen Golf 2015-20", auto_resume=False), "VOLKSWAGEN CRAFTER 2ND GEN", # Chassis SY/SZ
VWCarInfo("Volkswagen Golf Alltrack 2015-19", auto_resume=False), [
VWCarInfo("Volkswagen Golf GTD 2015-20"), VWCarInfo("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"),
VWCarInfo("Volkswagen Golf GTE 2015-20"), VWCarInfo("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"),
VWCarInfo("Volkswagen Golf GTI 2015-21", auto_resume=False), VWCarInfo("Volkswagen Grand California 2019-23", video_link="https://youtu.be/4100gLeabmo"),
VWCarInfo("Volkswagen Golf R 2015-19"), VWCarInfo("MAN TGE 2017-23", video_link="https://youtu.be/4100gLeabmo"),
VWCarInfo("Volkswagen Golf SportsVan 2015-20"), VWCarInfo("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"),
], ],
CAR.JETTA_MK7: [ specs=VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS),
VWCarInfo("Volkswagen Jetta 2018-24"), )
VWCarInfo("Volkswagen Jetta GLI 2021-24"), GOLF_MK7 = VolkswagenMQBPlatformConfig(
], "VOLKSWAGEN GOLF 7TH GEN", # Chassis 5G/AU/BA/BE
CAR.PASSAT_MK8: [ [
VWCarInfo("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), VWCarInfo("Volkswagen e-Golf 2014-20"),
VWCarInfo("Volkswagen Passat Alltrack 2015-22"), VWCarInfo("Volkswagen Golf 2015-20", auto_resume=False),
VWCarInfo("Volkswagen Passat GTE 2015-22"), VWCarInfo("Volkswagen Golf Alltrack 2015-19", auto_resume=False),
], VWCarInfo("Volkswagen Golf GTD 2015-20"),
CAR.PASSAT_NMS: VWCarInfo("Volkswagen Passat NMS 2017-22"), VWCarInfo("Volkswagen Golf GTE 2015-20"),
CAR.POLO_MK6: [ VWCarInfo("Volkswagen Golf GTI 2015-21", auto_resume=False),
VWCarInfo("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), VWCarInfo("Volkswagen Golf R 2015-19"),
VWCarInfo("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), VWCarInfo("Volkswagen Golf SportsVan 2015-20"),
], ],
CAR.SHARAN_MK2: [ specs=VolkswagenCarSpecs(mass=1397, wheelbase=2.62),
VWCarInfo("Volkswagen Sharan 2018-22"), )
VWCarInfo("SEAT Alhambra 2018-20"), JETTA_MK7 = VolkswagenMQBPlatformConfig(
], "VOLKSWAGEN JETTA 7TH GEN", # Chassis BU
CAR.TAOS_MK1: VWCarInfo("Volkswagen Taos 2022-23"), [
CAR.TCROSS_MK1: VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0]), VWCarInfo("Volkswagen Jetta 2018-24"),
CAR.TIGUAN_MK2: [ VWCarInfo("Volkswagen Jetta GLI 2021-24"),
VWCarInfo("Volkswagen Tiguan 2018-24"), ],
VWCarInfo("Volkswagen Tiguan eHybrid 2021-23"), specs=VolkswagenCarSpecs(mass=1328, wheelbase=2.71),
], )
CAR.TOURAN_MK2: VWCarInfo("Volkswagen Touran 2016-23"), PASSAT_MK8 = VolkswagenMQBPlatformConfig(
CAR.TRANSPORTER_T61: [ "VOLKSWAGEN PASSAT 8TH GEN", # Chassis 3G
VWCarInfo("Volkswagen Caravelle 2020"), [
VWCarInfo("Volkswagen California 2021-23"), VWCarInfo("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]),
], VWCarInfo("Volkswagen Passat Alltrack 2015-22"),
CAR.TROC_MK1: VWCarInfo("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0]), VWCarInfo("Volkswagen Passat GTE 2015-22"),
CAR.AUDI_A3_MK3: [ ],
VWCarInfo("Audi A3 2014-19"), specs=VolkswagenCarSpecs(mass=1551, wheelbase=2.79),
VWCarInfo("Audi A3 Sportback e-tron 2017-18"), )
VWCarInfo("Audi RS3 2018"), PASSAT_NMS = VolkswagenPQPlatformConfig(
VWCarInfo("Audi S3 2015-17"), "VOLKSWAGEN PASSAT NMS", # Chassis A3
], VWCarInfo("Volkswagen Passat NMS 2017-22"),
CAR.AUDI_Q2_MK1: VWCarInfo("Audi Q2 2018"), specs=VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS),
CAR.AUDI_Q3_MK2: VWCarInfo("Audi Q3 2019-23"), )
CAR.SEAT_ATECA_MK1: VWCarInfo("SEAT Ateca 2018"), POLO_MK6 = VolkswagenMQBPlatformConfig(
CAR.SEAT_LEON_MK3: VWCarInfo("SEAT Leon 2014-20"), "VOLKSWAGEN POLO 6TH GEN", # Chassis AW
CAR.SKODA_FABIA_MK4: VWCarInfo("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0]), [
CAR.SKODA_KAMIQ_MK1: VWCarInfo("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]), VWCarInfo("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]),
CAR.SKODA_KAROQ_MK1: VWCarInfo("Škoda Karoq 2019-23"), VWCarInfo("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]),
CAR.SKODA_KODIAQ_MK1: VWCarInfo("Škoda Kodiaq 2017-23"), ],
CAR.SKODA_SCALA_MK1: VWCarInfo("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]), specs=VolkswagenCarSpecs(mass=1230, wheelbase=2.55),
CAR.SKODA_SUPERB_MK3: VWCarInfo("Škoda Superb 2015-22"), )
CAR.SKODA_OCTAVIA_MK3: [ SHARAN_MK2 = VolkswagenPQPlatformConfig(
VWCarInfo("Škoda Octavia 2015-19"), "VOLKSWAGEN SHARAN 2ND GEN", # Chassis 7N
VWCarInfo("Škoda Octavia RS 2016"), [
], VWCarInfo("Volkswagen Sharan 2018-22"),
} VWCarInfo("SEAT Alhambra 2018-20"),
],
specs=VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS),
)
TAOS_MK1 = VolkswagenMQBPlatformConfig(
"VOLKSWAGEN TAOS 1ST GEN", # Chassis B2
VWCarInfo("Volkswagen Taos 2022-23"),
specs=VolkswagenCarSpecs(mass=1498, wheelbase=2.69),
)
TCROSS_MK1 = VolkswagenMQBPlatformConfig(
"VOLKSWAGEN T-CROSS 1ST GEN", # Chassis C1
car_info=VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0]),
specs=VolkswagenCarSpecs(mass=1150, wheelbase=2.60),
)
TIGUAN_MK2 = VolkswagenMQBPlatformConfig(
"VOLKSWAGEN TIGUAN 2ND GEN", # Chassis AD/BW
[
VWCarInfo("Volkswagen Tiguan 2018-24"),
VWCarInfo("Volkswagen Tiguan eHybrid 2021-23"),
],
specs=VolkswagenCarSpecs(mass=1715, wheelbase=2.74),
)
TOURAN_MK2 = VolkswagenMQBPlatformConfig(
"VOLKSWAGEN TOURAN 2ND GEN", # Chassis 1T
VWCarInfo("Volkswagen Touran 2016-23"),
specs=VolkswagenCarSpecs(mass=1516, wheelbase=2.79),
)
TRANSPORTER_T61 = VolkswagenMQBPlatformConfig(
"VOLKSWAGEN TRANSPORTER T6.1", # Chassis 7H/7L
[
VWCarInfo("Volkswagen Caravelle 2020"),
VWCarInfo("Volkswagen California 2021-23"),
],
specs=VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0),
)
TROC_MK1 = VolkswagenMQBPlatformConfig(
"VOLKSWAGEN T-ROC 1ST GEN", # Chassis A1
VWCarInfo("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0]),
specs=VolkswagenCarSpecs(mass=1413, wheelbase=2.63),
)
AUDI_A3_MK3 = VolkswagenMQBPlatformConfig(
"AUDI A3 3RD GEN", # Chassis 8V/FF
[
VWCarInfo("Audi A3 2014-19"),
VWCarInfo("Audi A3 Sportback e-tron 2017-18"),
VWCarInfo("Audi RS3 2018"),
VWCarInfo("Audi S3 2015-17"),
],
specs=VolkswagenCarSpecs(mass=1335, wheelbase=2.61),
)
AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig(
"AUDI Q2 1ST GEN", # Chassis GA
VWCarInfo("Audi Q2 2018"),
specs=VolkswagenCarSpecs(mass=1205, wheelbase=2.61),
)
AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig(
"AUDI Q3 2ND GEN", # Chassis 8U/F3/FS
VWCarInfo("Audi Q3 2019-23"),
specs=VolkswagenCarSpecs(mass=1623, wheelbase=2.68),
)
SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig(
"SEAT ATECA 1ST GEN", # Chassis 5F
VWCarInfo("SEAT Ateca 2018"),
specs=VolkswagenCarSpecs(mass=1900, wheelbase=2.64),
)
SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig(
"SEAT LEON 3RD GEN", # Chassis 5F
VWCarInfo("SEAT Leon 2014-20"),
specs=VolkswagenCarSpecs(mass=1227, wheelbase=2.64),
)
SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig(
"SKODA FABIA 4TH GEN", # Chassis PJ
VWCarInfo("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0]),
specs=VolkswagenCarSpecs(mass=1266, wheelbase=2.56),
)
SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig(
"SKODA KAMIQ 1ST GEN", # Chassis NW
VWCarInfo("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]),
specs=VolkswagenCarSpecs(mass=1265, wheelbase=2.66),
)
SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig(
"SKODA KAROQ 1ST GEN", # Chassis NU
VWCarInfo("Škoda Karoq 2019-23"),
specs=VolkswagenCarSpecs(mass=1278, wheelbase=2.66),
)
SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig(
"SKODA KODIAQ 1ST GEN", # Chassis NS
VWCarInfo("Škoda Kodiaq 2017-23"),
specs=VolkswagenCarSpecs(mass=1569, wheelbase=2.79),
)
SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig(
"SKODA OCTAVIA 3RD GEN", # Chassis NE
[
VWCarInfo("Škoda Octavia 2015-19"),
VWCarInfo("Škoda Octavia RS 2016"),
],
specs=VolkswagenCarSpecs(mass=1388, wheelbase=2.68),
)
SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig(
"SKODA SCALA 1ST GEN", # Chassis NW
VWCarInfo("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]),
specs=VolkswagenCarSpecs(mass=1192, wheelbase=2.65),
)
SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig(
"SKODA SUPERB 3RD GEN", # Chassis 3V/NP
VWCarInfo("Škoda Superb 2015-22"),
specs=VolkswagenCarSpecs(mass=1505, wheelbase=2.84),
)
PQ_CARS = {CAR.PASSAT_NMS, CAR.SHARAN_MK2}
# All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars # All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars
# with a manual trans won't return transmission firmware, but all other cars will. # with a manual trans won't return transmission firmware, but all other cars will.
@ -313,3 +394,6 @@ FW_QUERY_CONFIG = FwQueryConfig(
), ),
]], ]],
) )
CAR_INFO = CAR.create_carinfo_map()
DBC = CAR.create_dbc_map()

Loading…
Cancel
Save