34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""
|
|
Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos
|
|
"""
|
|
from collections import namedtuple
|
|
|
|
from iqdbc.car import structs
|
|
from iqdbc.car.interfaces import CarStateBase
|
|
|
|
MAX_STEERING_ANGLE = 90.0
|
|
|
|
AolDataIQ = namedtuple("AolDataIQ",
|
|
["lka_icon_states", "lat_active"])
|
|
|
|
|
|
class AolCarController:
|
|
def __init__(self):
|
|
self.aol = AolDataIQ(False, False)
|
|
|
|
self.lka_icon_states = False
|
|
self.lat_active = False
|
|
|
|
def aol_status_update(self, CC: structs.CarControl, CC_IQ: structs.IQCarControl, CS: CarStateBase) -> AolDataIQ:
|
|
if CC_IQ.aol.available:
|
|
self.lka_icon_states = self.lat_active
|
|
self.lat_active = CC.latActive and abs(CS.out.steeringAngleDeg) < MAX_STEERING_ANGLE
|
|
else:
|
|
self.lka_icon_states = CC.enabled
|
|
self.lat_active = CC.latActive
|
|
|
|
return AolDataIQ(self.lka_icon_states, self.lat_active)
|
|
|
|
def update(self, CC: structs.CarControl, CC_IQ: structs.IQCarControl, CS: CarStateBase) -> None:
|
|
self.aol = self.aol_status_update(CC, CC_IQ, CS)
|