      else:
        self.angle_steers = cp.vl["STEER_ANGLE_SENSOR"]['STEER_ANGLE'] + cp.vl["STEER_ANGLE_SENSOR"]['STEER_FRACTION']
      self.angle_steers_rate = cp.vl["STEER_ANGLE_SENSOR"]['STEER_RATE']
      can_gear = int(cp.vl["GEAR_PACKET"]['GEAR'])
      self.gear_shifter = parse_gear_shifter(can_gear, self.shifter_values)
      if self.CP.carFingerprint == CAR.LEXUS_IS:
        self.main_on = cp.vl["DSU_CRUISE"]['MAIN_ON']
      else:
        self.main_on = cp.vl["PCM_CRUISE_2"]['MAIN_ON']
      self.left_blinker_on = cp.vl["STEERING_LEVERS"]['TURN_SIGNALS'] == 1
 
</s> remove     self.gear_shifter = parse_gear_shifter(can_gear_shifter, self.shifter_values)
 </s> add     self.gear_shifter = parse_gear_shifter(self.shifter_values.get(can_gear_shifter, None)) </s> remove   if can_gear == 0x1:
    return GearShifter.park
  elif can_gear == 0x2:
    return GearShifter.reverse
  elif can_gear == 0x3:
    return GearShifter.neutral
  elif can_gear == 0x4:
    return GearShifter.drive
  elif can_gear == 0x5:
    return GearShifter.low
  return GearShifter.unknown
 </s> add   return {0x1: GearShifter.park, 0x2: GearShifter.reverse, 0x3: GearShifter.neutral,
          0x4: GearShifter.drive, 0x5: GearShifter.low}.get(can_gear, GearShifter.unknown) </s> remove       ret.enableCamera = is_ecu_disconnected(fingerprint[rdr_bus], FINGERPRINTS, ECU_FINGERPRINT, candidate, ECU.CAM) or has_relay
 </s> add       ret.enableCamera = is_ecu_disconnected(fingerprint[rdr_bus], FINGERPRINTS, ECU_FINGERPRINT, candidate, Ecu.fwdCamera) or has_relay </s> remove       ret.enableCamera = is_ecu_disconnected(fingerprint[0], FINGERPRINTS, ECU_FINGERPRINT, candidate, ECU.CAM) or has_relay
 </s> add       ret.enableCamera = is_ecu_disconnected(fingerprint[0], FINGERPRINTS, ECU_FINGERPRINT, candidate, Ecu.fwdCamera) or has_relay </s> remove     ret.enableCamera = is_ecu_disconnected(fingerprint[0], FINGERPRINTS, ECU_FINGERPRINT, candidate, ECU.CAM) or \
 </s> add     ret.enableCamera = is_ecu_disconnected(fingerprint[0], FINGERPRINTS, ECU_FINGERPRINT, candidate, Ecu.fwdCamera) or \
    self.gear_shifter = parse_gear_shifter(self.shifter_values.get(can_gear, None))
      else:
        self.angle_steers = cp.vl["STEER_ANGLE_SENSOR"]['STEER_ANGLE'] + cp.vl["STEER_ANGLE_SENSOR"]['STEER_FRACTION']
      self.angle_steers_rate = cp.vl["STEER_ANGLE_SENSOR"]['STEER_RATE']
      can_gear = int(cp.vl["GEAR_PACKET"]['GEAR'])
    self.gear_shifter = parse_gear_shifter(self.shifter_values.get(can_gear, None))
      if self.CP.carFingerprint == CAR.LEXUS_IS:
        self.main_on = cp.vl["DSU_CRUISE"]['MAIN_ON']
      else:
        self.main_on = cp.vl["PCM_CRUISE_2"]['MAIN_ON']
      self.left_blinker_on = cp.vl["STEERING_LEVERS"]['TURN_SIGNALS'] == 1
keep keep keep keep replace keep keep keep keep keep
 Clean up ECU redundancy in selfdrive/car/* (#963)

* clean up ecu redundancy in selfdrive/car

* clean up gear parsing 
selfdrive/car/toyota/carstate.py