""" Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos """ from enum import StrEnum from opendbc.car import Bus, structs from opendbc.can.parser import CANParser from opendbc.iqpilot.car.honda.values_ext import HondaFlagsIQ class CarStateExt: def __init__(self, CP, CP_IQ): self.CP = CP self.CP_IQ = CP_IQ def update(self, ret: structs.CarState, can_parsers: dict[StrEnum, CANParser]) -> None: cp = can_parsers[Bus.pt] cp_cam = can_parsers[Bus.cam] if self.CP_IQ.flags & HondaFlagsIQ.NIDEC_HYBRID: ret.accFaulted = bool(cp.vl["HYBRID_BRAKE_ERROR"]["BRAKE_ERROR_1"] or cp.vl["HYBRID_BRAKE_ERROR"]["BRAKE_ERROR_2"]) ret.stockAeb = bool(cp_cam.vl["BRAKE_COMMAND"]["AEB_REQ_1"] and cp_cam.vl["BRAKE_COMMAND"]["COMPUTER_BRAKE_HYBRID"] > 1e-5) if self.CP_IQ.flags & HondaFlagsIQ.HYBRID_ALT_BRAKEHOLD: ret.brakeHoldActive = cp.vl["BRAKE_HOLD_HYBRID_ALT"]["BRAKE_HOLD_ACTIVE"] == 1 if self.CP_IQ.enableGasInterceptor and "GAS_SENSOR" in cp.vl: # Same threshold as panda, equivalent to 1e-5 with previous DBC scaling gas = (cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS"] + cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS2"]) // 2 ret.gasPressed = gas > 492