@ -20,6 +20,8 @@ class CarInterface(CarInterfaceBase):
self . brake_pressed_prev = False
self . brake_pressed_prev = False
self . cruise_enabled_prev = False
self . cruise_enabled_prev = False
self . low_speed_alert = False
self . low_speed_alert = False
self . left_blinker_prev = False
self . right_blinker_prev = False
# *** init the major players ***
# *** init the major players ***
self . CS = CarState ( CP )
self . CS = CarState ( CP )
@ -113,78 +115,33 @@ class CarInterface(CarInterfaceBase):
self . cp . update_strings ( can_strings )
self . cp . update_strings ( can_strings )
self . cp_cam . update_strings ( can_strings )
self . cp_cam . update_strings ( can_strings )
self . CS . update ( self . cp , self . cp_cam )
ret = self . CS . update ( self . cp , self . cp_cam )
# create message
ret = car . CarState . new_message ( )
ret . canValid = self . cp . can_valid and self . cp_cam . can_valid
ret . canValid = self . cp . can_valid and self . cp_cam . can_valid
# speeds
# speeds
ret . vEgo = self . CS . v_ego
ret . yawRate = self . VM . yaw_rate ( ret . steeringAngle * CV . DEG_TO_RAD , ret . vEgo )
ret . vEgoRaw = self . CS . v_ego_raw
ret . aEgo = self . CS . a_ego
ret . yawRate = self . VM . yaw_rate ( self . CS . angle_steers * CV . DEG_TO_RAD , self . CS . v_ego )
ret . standstill = self . CS . standstill
ret . wheelSpeeds . fl = self . CS . v_wheel_fl
ret . wheelSpeeds . fr = self . CS . v_wheel_fr
ret . wheelSpeeds . rl = self . CS . v_wheel_rl
ret . wheelSpeeds . rr = self . CS . v_wheel_rr
# gear shifter
ret . gearShifter = self . CS . gear_shifter
# gas pedal
ret . gas = self . CS . pedal_gas
ret . gasPressed = self . CS . pedal_gas > 0
# brake pedal
ret . brake = self . CS . user_brake
ret . brakePressed = self . CS . brake_pressed
ret . brakeLights = self . CS . brake_lights
# steering wheel
ret . steeringAngle = self . CS . angle_steers
ret . steeringRate = self . CS . angle_steers_rate
ret . steeringTorque = self . CS . steer_torque_driver
ret . steeringPressed = self . CS . steer_override
ret . steeringRateLimited = self . CC . steer_rate_limited if self . CC is not None else False
ret . steeringRateLimited = self . CC . steer_rate_limited if self . CC is not None else False
# cruise state
ret . cruiseState . enabled = self . CS . pcm_acc_status # same as main_on
ret . cruiseState . speed = self . CS . v_cruise_pcm * CV . KPH_TO_MS
ret . cruiseState . available = self . CS . main_on
ret . cruiseState . speedOffset = 0.
ret . cruiseState . standstill = False
# TODO: button presses
# TODO: button presses
buttonEvents = [ ]
buttonEvents = [ ]
if self . CS . left_blinker_on != self . CS . prev_left_blinker_on :
if ret . leftBlinker != self . left_blinker_prev :
be = car . CarState . ButtonEvent . new_message ( )
be = car . CarState . ButtonEvent . new_message ( )
be . type = ButtonType . leftBlinker
be . type = ButtonType . leftBlinker
be . pressed = self . CS . left_blinker_on != 0
be . pressed = ret . leftBlinker != 0
buttonEvents . append ( be )
buttonEvents . append ( be )
if self . CS . right_blinker_on != self . CS . prev_right_blinker_on :
if ret . rightBlinker != self . right_blinker_prev :
be = car . CarState . ButtonEvent . new_message ( )
be = car . CarState . ButtonEvent . new_message ( )
be . type = ButtonType . rightBlinker
be . type = ButtonType . rightBlinker
be . pressed = self . CS . right_blinker_on != 0
be . pressed = ret . rightBlinker != 0
buttonEvents . append ( be )
buttonEvents . append ( be )
ret . buttonEvents = buttonEvents
ret . buttonEvents = buttonEvents
ret . leftBlinker = bool ( self . CS . left_blinker_on )
ret . rightBlinker = bool ( self . CS . right_blinker_on )
ret . doorOpen = not self . CS . door_all_closed
ret . seatbeltUnlatched = not self . CS . seatbelt
self . low_speed_alert = ( ret . vEgo < self . CP . minSteerSpeed )
self . low_speed_alert = ( ret . vEgo < self . CP . minSteerSpeed )
ret . genericToggle = self . CS . generic_toggle
#ret.lkasCounter = self.CS.lkas_counter
#ret.lkasCarModel = self.CS.lkas_car_model
# events
# events
events = [ ]
events = [ ]
if not ( ret . gearShifter in ( GearShifter . drive , GearShifter . low ) ) :
if not ( ret . gearShifter in ( GearShifter . drive , GearShifter . low ) ) :
@ -195,7 +152,7 @@ class CarInterface(CarInterfaceBase):
events . append ( create_event ( ' seatbeltNotLatched ' , [ ET . NO_ENTRY , ET . SOFT_DISABLE ] ) )
events . append ( create_event ( ' seatbeltNotLatched ' , [ ET . NO_ENTRY , ET . SOFT_DISABLE ] ) )
if self . CS . esp_disabled :
if self . CS . esp_disabled :
events . append ( create_event ( ' espDisabled ' , [ ET . NO_ENTRY , ET . SOFT_DISABLE ] ) )
events . append ( create_event ( ' espDisabled ' , [ ET . NO_ENTRY , ET . SOFT_DISABLE ] ) )
if not self . CS . main_on :
if not ret . cruiseState . available :
events . append ( create_event ( ' wrongCarMode ' , [ ET . NO_ENTRY , ET . USER_DISABLE ] ) )
events . append ( create_event ( ' wrongCarMode ' , [ ET . NO_ENTRY , ET . USER_DISABLE ] ) )
if ret . gearShifter == GearShifter . reverse :
if ret . gearShifter == GearShifter . reverse :
events . append ( create_event ( ' reverseGear ' , [ ET . NO_ENTRY , ET . IMMEDIATE_DISABLE ] ) )
events . append ( create_event ( ' reverseGear ' , [ ET . NO_ENTRY , ET . IMMEDIATE_DISABLE ] ) )
@ -220,8 +177,13 @@ class CarInterface(CarInterfaceBase):
self . gas_pressed_prev = ret . gasPressed
self . gas_pressed_prev = ret . gasPressed
self . brake_pressed_prev = ret . brakePressed
self . brake_pressed_prev = ret . brakePressed
self . cruise_enabled_prev = ret . cruiseState . enabled
self . cruise_enabled_prev = ret . cruiseState . enabled
self . left_blinker_prev = ret . leftBlinker
self . right_blinker_prev = ret . rightBlinker
# copy back carState packet to CS
self . CS . out = ret . as_reader ( )
return ret . as_reader ( )
return self . CS . out
# pass in a car.CarControl
# pass in a car.CarControl
# to be called @ 100hz
# to be called @ 100hz