parent
612eb912e1
commit
a8f8e3eeae
1 changed files with 69 additions and 0 deletions
@ -0,0 +1,69 @@ |
|||||||
|
#!/usr/bin/env python3 |
||||||
|
from enum import Enum |
||||||
|
|
||||||
|
from selfdrive.car import CarInfo |
||||||
|
from selfdrive.car.car_helpers import interfaces |
||||||
|
from selfdrive.car.fingerprints import get_attr_from_cars, all_known_cars |
||||||
|
from selfdrive.config import Conversions as CV |
||||||
|
|
||||||
|
|
||||||
|
class Tier(Enum): |
||||||
|
GOLD = "Gold" |
||||||
|
SILVER = "Silver" |
||||||
|
BRONZE = "Bronze" |
||||||
|
|
||||||
|
|
||||||
|
class Car: |
||||||
|
def __init__(self, CP, car_info): |
||||||
|
self.CP = CP |
||||||
|
self.info = car_info |
||||||
|
self.make, self.model = self.info.name.split(' ', 1) |
||||||
|
|
||||||
|
@property |
||||||
|
def tier(self): |
||||||
|
if self.CP.openpilotLongitudinalControl: |
||||||
|
return Tier.GOLD |
||||||
|
return Tier.BRONZE |
||||||
|
|
||||||
|
@property |
||||||
|
def years(self): |
||||||
|
years = |
||||||
|
for year in self.info.years: |
||||||
|
|
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
min_alc = int(max(0, self.CP.minSteerSpeed) * CV.MS_TO_MPH) |
||||||
|
min_acc = int(max(0, self.CP.minEnableSpeed) * CV.MS_TO_MPH) |
||||||
|
acc = "openpilot" if self.CP.openpilotLongitudinalControl else "Stock" |
||||||
|
years = {} |
||||||
|
return f"| {self.make} | {self.model} | {self.info.package} | {acc} | {min_acc}mph | {min_alc}mph |" |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
print("# Supported Cars") |
||||||
|
|
||||||
|
print("Cars are sorted into three tiers:\n") |
||||||
|
print(" Gold - a full openpilot experience\n") |
||||||
|
print(" Silver - a pretty good, albeit limited experience\n") |
||||||
|
print(" Bronze - significantly limited\n") |
||||||
|
|
||||||
|
for t in Tier: |
||||||
|
print(f"## {t.value} Cars") |
||||||
|
print("| Make | Model (US Market Reference) | Supported Package | ACC | No ACC accel below | No ALC below |") |
||||||
|
print("| ----------| ------------------------------| ------------------| -----------------| -------------------| ------------------|") |
||||||
|
for fingerprint, car_info in sorted(get_attr_from_cars('CAR_INFO').items(), key=lambda x: x[0]): |
||||||
|
# print(car_info) |
||||||
|
CI, _, _ = interfaces[fingerprint] |
||||||
|
CP = CI.get_params(fingerprint) |
||||||
|
|
||||||
|
# Skip community supported |
||||||
|
if CP.dashcamOnly: |
||||||
|
continue |
||||||
|
|
||||||
|
if isinstance(car_info, CarInfo): |
||||||
|
car_info = (car_info,) |
||||||
|
|
||||||
|
for info in car_info: |
||||||
|
car = Car(CP, info) |
||||||
|
if car.tier == t: |
||||||
|
print(car) |
Loading…
Reference in new issue