|
|
|
@ -1,4 +1,5 @@ |
|
|
|
|
from dataclasses import dataclass, field |
|
|
|
|
import copy |
|
|
|
|
from dataclasses import dataclass, field, replace |
|
|
|
|
from enum import Enum, IntFlag |
|
|
|
|
|
|
|
|
|
import panda.python.uds as uds |
|
|
|
@ -60,6 +61,8 @@ class Footnote(Enum): |
|
|
|
|
@dataclass |
|
|
|
|
class FordCarDocs(CarDocs): |
|
|
|
|
package: str = "Co-Pilot360 Assist+" |
|
|
|
|
hybrid: bool = False |
|
|
|
|
plug_in_hybrid: bool = False |
|
|
|
|
|
|
|
|
|
def init_make(self, CP: car.CarParams): |
|
|
|
|
harness = CarHarness.ford_q4 if CP.flags & FordFlags.CANFD else CarHarness.ford_q3 |
|
|
|
@ -73,6 +76,15 @@ class FordCarDocs(CarDocs): |
|
|
|
|
class FordPlatformConfig(PlatformConfig): |
|
|
|
|
dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', RADAR.DELPHI_MRR)) |
|
|
|
|
|
|
|
|
|
def init(self): |
|
|
|
|
for car_info in list(self.car_info): |
|
|
|
|
if car_info.hybrid: |
|
|
|
|
name = f"{car_info.make} {car_info.model} Hybrid {car_info.years}" |
|
|
|
|
self.car_info.append(replace(copy.deepcopy(car_info), name=name)) |
|
|
|
|
if car_info.plug_in_hybrid: |
|
|
|
|
name = f"{car_info.make} {car_info.model} Plug-in Hybrid {car_info.years}" |
|
|
|
|
self.car_info.append(replace(copy.deepcopy(car_info), name=name)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass |
|
|
|
|
class FordCANFDPlatformConfig(FordPlatformConfig): |
|
|
|
@ -92,31 +104,22 @@ class CAR(Platforms): |
|
|
|
|
ESCAPE_MK4 = FordPlatformConfig( |
|
|
|
|
"FORD ESCAPE 4TH GEN", |
|
|
|
|
[ |
|
|
|
|
FordCarDocs("Ford Escape 2020-22"), |
|
|
|
|
FordCarDocs("Ford Escape Hybrid 2020-22"), |
|
|
|
|
FordCarDocs("Ford Escape Plug-in Hybrid 2020-22"), |
|
|
|
|
FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering"), |
|
|
|
|
FordCarDocs("Ford Kuga Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), |
|
|
|
|
FordCarDocs("Ford Kuga Plug-in Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), |
|
|
|
|
FordCarDocs("Ford Escape 2020-22", hybrid=True, plug_in_hybrid=True), |
|
|
|
|
FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering", hybrid=True, plug_in_hybrid=True), |
|
|
|
|
], |
|
|
|
|
CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), |
|
|
|
|
) |
|
|
|
|
EXPLORER_MK6 = FordPlatformConfig( |
|
|
|
|
"FORD EXPLORER 6TH GEN", |
|
|
|
|
[ |
|
|
|
|
FordCarDocs("Ford Explorer 2020-23"), |
|
|
|
|
FordCarDocs("Ford Explorer Hybrid 2020-23"), # Limited and Platinum only |
|
|
|
|
FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus"), |
|
|
|
|
FordCarDocs("Lincoln Aviator Plug-in Hybrid 2020-23", "Co-Pilot360 Plus"), # Grand Touring only |
|
|
|
|
FordCarDocs("Ford Explorer 2020-23", hybrid=True), # Hybrid: Limited and Platinum only |
|
|
|
|
FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus", plug_in_hybrid=True), # Hybrid: Grand Touring only |
|
|
|
|
], |
|
|
|
|
CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), |
|
|
|
|
) |
|
|
|
|
F_150_MK14 = FordCANFDPlatformConfig( |
|
|
|
|
"FORD F-150 14TH GEN", |
|
|
|
|
[ |
|
|
|
|
FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0"), |
|
|
|
|
FordCarDocs("Ford F-150 Hybrid 2022-23", "Co-Pilot360 Active 2.0"), |
|
|
|
|
], |
|
|
|
|
[FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0", hybrid=True)], |
|
|
|
|
CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), |
|
|
|
|
) |
|
|
|
|
F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( |
|
|
|
@ -126,19 +129,14 @@ class CAR(Platforms): |
|
|
|
|
) |
|
|
|
|
FOCUS_MK4 = FordPlatformConfig( |
|
|
|
|
"FORD FOCUS 4TH GEN", |
|
|
|
|
[ |
|
|
|
|
FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), |
|
|
|
|
FordCarDocs("Ford Focus Hybrid 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), # mHEV only |
|
|
|
|
], |
|
|
|
|
[FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS], hybrid=True)], # mHEV only |
|
|
|
|
CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), |
|
|
|
|
) |
|
|
|
|
MAVERICK_MK1 = FordPlatformConfig( |
|
|
|
|
"FORD MAVERICK 1ST GEN", |
|
|
|
|
[ |
|
|
|
|
FordCarDocs("Ford Maverick 2022", "LARIAT Luxury"), |
|
|
|
|
FordCarDocs("Ford Maverick Hybrid 2022", "LARIAT Luxury"), |
|
|
|
|
FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist"), |
|
|
|
|
FordCarDocs("Ford Maverick Hybrid 2023-24", "Co-Pilot360 Assist"), |
|
|
|
|
FordCarDocs("Ford Maverick 2022", "LARIAT Luxury", hybrid=True), |
|
|
|
|
FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist", hybrid=True), |
|
|
|
|
], |
|
|
|
|
CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), |
|
|
|
|
) |
|
|
|
|