cmts and more structs

pull/33208/head
Shane Smiskol 10 months ago
parent a6c4a327c1
commit e5efda90df
  1. 70
      selfdrive/car/structs.py

@ -41,10 +41,12 @@ class StrEnum(_StrEnum):
class CarState: class CarState:
# events: list[CarEvent] = auto_field() # events: list[CarEvent] = auto_field()
# CAN health
canValid: bool = auto_field() # invalid counter/checksums canValid: bool = auto_field() # invalid counter/checksums
canTimeout: bool = auto_field() # CAN bus dropped out canTimeout: bool = auto_field() # CAN bus dropped out
canErrorCounter: int = auto_field() canErrorCounter: int = auto_field()
# car speed
vEgo: float = auto_field() # best estimate of speed vEgo: float = auto_field() # best estimate of speed
aEgo: float = auto_field() # best estimate of acceleration aEgo: float = auto_field() # best estimate of acceleration
vEgoRaw: float = auto_field() # unfiltered speed from CAN sensors vEgoRaw: float = auto_field() # unfiltered speed from CAN sensors
@ -52,19 +54,22 @@ class CarState:
yawRate: float = auto_field() # best estimate of yaw rate yawRate: float = auto_field() # best estimate of yaw rate
standstill: bool = auto_field() standstill: bool = auto_field()
# wheelSpeeds: WheelSpeeds = auto_field() wheelSpeeds: 'CarState.WheelSpeeds' = field(default_factory=lambda: CarState.WheelSpeeds())
# gas pedal, 0.0-1.0
gas: float = auto_field() # this is user pedal only gas: float = auto_field() # this is user pedal only
gasPressed: bool = auto_field() # this is user pedal only gasPressed: bool = auto_field() # this is user pedal only
engineRpm: float = auto_field() engineRpm: float = auto_field()
# brake pedal, 0.0-1.0
brake: float = auto_field() # this is user pedal only brake: float = auto_field() # this is user pedal only
brakePressed: bool = auto_field() # this is user pedal only brakePressed: bool = auto_field() # this is user pedal only
regenBraking: bool = auto_field() # this is user pedal only regenBraking: bool = auto_field() # this is user pedal only
parkingBrake: bool = auto_field() parkingBrake: bool = auto_field()
brakeHoldActive: bool = auto_field() brakeHoldActive: bool = auto_field()
# steering wheel
steeringAngleDeg: float = auto_field() steeringAngleDeg: float = auto_field()
steeringAngleOffsetDeg: float = auto_field() # Offset betweens sensors in case there multiple steeringAngleOffsetDeg: float = auto_field() # Offset betweens sensors in case there multiple
steeringRateDeg: float = auto_field() steeringRateDeg: float = auto_field()
@ -80,28 +85,85 @@ class CarState:
carFaultedNonCritical: bool = auto_field() # some ECU is faulted, but car remains controllable carFaultedNonCritical: bool = auto_field() # some ECU is faulted, but car remains controllable
espActive: bool = auto_field() espActive: bool = auto_field()
# cruiseState: CruiseState = auto_field() # cruise state
cruiseState: 'CarState.CruiseState' = field(default_factory=lambda: CarState.CruiseState())
# gearShifter: GearShifter = auto_field() # gear
gearShifter: 'CarState.GearShifter' = field(default_factory=lambda: CarState.GearShifter.unknown)
# buttonEvents: list[ButtonEvent] = auto_field() # button presses
buttonEvents: list['CarState.ButtonEvent'] = auto_field()
leftBlinker: bool = auto_field() leftBlinker: bool = auto_field()
rightBlinker: bool = auto_field() rightBlinker: bool = auto_field()
genericToggle: bool = auto_field() genericToggle: bool = auto_field()
# lock info
doorOpen: bool = auto_field() doorOpen: bool = auto_field()
seatbeltUnlatched: bool = auto_field() seatbeltUnlatched: bool = auto_field()
# clutch (manual transmission only)
clutchPressed: bool = auto_field() clutchPressed: bool = auto_field()
# blindspot sensors
leftBlindspot: bool = auto_field() # Is there something blocking the left lane change leftBlindspot: bool = auto_field() # Is there something blocking the left lane change
rightBlindspot: bool = auto_field() # Is there something blocking the right lane change rightBlindspot: bool = auto_field() # Is there something blocking the right lane change
fuelGauge: float = auto_field() # battery or fuel tank level from 0.0 to 1.0 fuelGauge: float = auto_field() # battery or fuel tank level from 0.0 to 1.0
charging: bool = auto_field() charging: bool = auto_field()
# process meta
cumLagMs: float = auto_field() cumLagMs: float = auto_field()
@auto_dataclass
class WheelSpeeds:
# optional wheel speeds
fl: float = auto_field()
fr: float = auto_field()
rl: float = auto_field()
rr: float = auto_field()
@auto_dataclass
class CruiseState:
enabled: bool = auto_field()
speed: float = auto_field()
speedCluster: float = auto_field() # Set speed as shown on instrument cluster
available: bool = auto_field()
speedOffset: float = auto_field()
standstill: bool = auto_field()
nonAdaptive: bool = auto_field()
class GearShifter(StrEnum):
unknown = auto()
park = auto()
drive = auto()
neutral = auto()
reverse = auto()
sport = auto()
low = auto()
brake = auto()
eco = auto()
manumatic = auto()
# send on change
@auto_dataclass
class ButtonEvent:
pressed: bool = auto_field()
type: 'CarState.ButtonEvent.Type' = field(default_factory=lambda: CarState.ButtonEvent.Type.unknown)
class Type(StrEnum):
unknown = auto()
leftBlinker = auto()
rightBlinker = auto()
accelCruise = auto()
decelCruise = auto()
cancel = auto()
altButton1 = auto()
altButton2 = auto()
altButton3 = auto()
setCruise = auto()
resumeCruise = auto()
gapAdjustCruise = auto()
@auto_dataclass @auto_dataclass
class RadarData: class RadarData:

Loading…
Cancel
Save