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