mirror of
https://gitlvb.teallvbs.xyz/IQ.Lvbs/IQ.Pilot.git
synced 2026-09-13 01:03:43 +08:00
IQ.Pilot Release Commit @ 4b0cfbe
This commit is contained in:
@@ -116,7 +116,7 @@
|
||||
},
|
||||
"python/iqpilot_private/navassist/__init__.cpython-312-aarch64-linux-gnu.so": {
|
||||
"mode": 493,
|
||||
"sha256": "d07a56d54a8dfd8dd66b0a58a709cd13585de455b7eeecbb50616792757193e1",
|
||||
"sha256": "2ff824301dba9858009c5896a1539a702e7d83a5bfa401ced739afe56d6a6663",
|
||||
"size": 67640
|
||||
},
|
||||
"python/iqpilot_private/navassist/__init__.py": {
|
||||
@@ -126,32 +126,32 @@
|
||||
},
|
||||
"python/iqpilot_private/navassist/appsetup.cpython-312-aarch64-linux-gnu.so": {
|
||||
"mode": 493,
|
||||
"sha256": "d7ba6546b659c439dfd747ee80419117493db6bdfee5305965428896aa75e720",
|
||||
"size": 135328
|
||||
"sha256": "2f37ea823cbdd13183539d343853df77c74c63f10a45c1d0d2dfa6dd504a5e05",
|
||||
"size": 135392
|
||||
},
|
||||
"python/iqpilot_private/navassist/assets.cpython-312-aarch64-linux-gnu.so": {
|
||||
"mode": 493,
|
||||
"sha256": "45f9529ee808c55bd2e8965a6c72e5050dd8d12f47fd71e996a5aad161aa2e6b",
|
||||
"sha256": "d2d9637b01968c656d35a583b238030b13de1d0a942d1a4ba2c5895c25701399",
|
||||
"size": 201704
|
||||
},
|
||||
"python/iqpilot_private/navassist/container.cpython-312-aarch64-linux-gnu.so": {
|
||||
"mode": 493,
|
||||
"sha256": "16d2d214e9d4a793ead2b623fade799cf842e739b25cf74ab5ed60cb7c26f2f3",
|
||||
"sha256": "f5bca5aa39d29ae40e289bb4381b4e0e1596ae5203adc501aada8f0223ca5a21",
|
||||
"size": 134016
|
||||
},
|
||||
"python/iqpilot_private/navassist/daemon.cpython-312-aarch64-linux-gnu.so": {
|
||||
"mode": 493,
|
||||
"sha256": "f2d8fd727cb6002c174ea47ccd2945977143e5abe6d188732217474bcbd931bc",
|
||||
"size": 203048
|
||||
"sha256": "97c8ff983b101ae0f6f034f9a041cd410f7cdd656f6baf6067c1acb669767e74",
|
||||
"size": 203224
|
||||
},
|
||||
"python/iqpilot_private/navassist/guard.cpython-312-aarch64-linux-gnu.so": {
|
||||
"mode": 493,
|
||||
"sha256": "2aed237187dcfa009ebbd5f0f6beab7a5da4d89cd3b4e37968a2bb62f7fc6468",
|
||||
"sha256": "d264372e8f219533da1f9bdc0e5793e6c10c42937012138c304e9f8ed6751763",
|
||||
"size": 68240
|
||||
},
|
||||
"python/iqpilot_private/navassist/paths.cpython-312-aarch64-linux-gnu.so": {
|
||||
"mode": 493,
|
||||
"sha256": "0e63117bb686de08c73176138cc3851cbdadf491774b04e752995c059dcd281a",
|
||||
"sha256": "7bec3818357726584894cb137b4c6a07c811a8178d8aaf6e3ee77597273728bc",
|
||||
"size": 69656
|
||||
},
|
||||
"runtime": {
|
||||
@@ -163,12 +163,12 @@
|
||||
}
|
||||
},
|
||||
"signatures": {
|
||||
"python/iqpilot_private/navassist/__init__.cpython-312-aarch64-linux-gnu.so": "grzvl6Szgy0DhX0A2RHxMH+EZYP4GDUwRwrXCI278zqBo9A+xdZPxBSQ0FIxoDzMZVrAfrK5yOADYYyF1gFkDQ==",
|
||||
"python/iqpilot_private/navassist/appsetup.cpython-312-aarch64-linux-gnu.so": "e4WP9/AodSGn0e1aCmUfLvDCA36Z3lyLQXTAXeuMpFamR2uu7SRYCKBoW7gIMtrqZvNi3DNeDfmPaWdITSlDDA==",
|
||||
"python/iqpilot_private/navassist/assets.cpython-312-aarch64-linux-gnu.so": "K9jDY0eQxqtE7RKPmnnjJhOYogK4mkUXxucZmkY+K798BWThYxT+Q0q2D50eW9vc33fKH0lk4+L4w4P/qkTzDA==",
|
||||
"python/iqpilot_private/navassist/container.cpython-312-aarch64-linux-gnu.so": "qE6DWECE/wsj58n9ewIFAEts8xTCKjWGQ0p+7fZ3XKFJR7hvFt7fNTZAQm1sBSAd55697ow7kq7Y1wyicvBBDw==",
|
||||
"python/iqpilot_private/navassist/daemon.cpython-312-aarch64-linux-gnu.so": "h2yssDIlxVDJMaPW+K3TzGKwzrGcGDdQdOrZ75LmTS02UN34tmPWzv0j7WV2ombz5n8gu8+FcxYB+o1VapqkDA==",
|
||||
"python/iqpilot_private/navassist/guard.cpython-312-aarch64-linux-gnu.so": "kTPke8BA2muzet1xLQWUKnFtlVboJSZ6Ep6O79y2zQ8xMkEPum2fHiYZr8wkqu+2NMEB/j1HO0BvwJPdl/qOBg==",
|
||||
"python/iqpilot_private/navassist/paths.cpython-312-aarch64-linux-gnu.so": "Sd7DGPwD4DDrbqrnCiIwGgGAnTXU5MTS7rNdpq2rsixxvXhFzaaxQgMbGFi6CoylBAHeOwqi9uwjtY6aiaYkCQ=="
|
||||
"python/iqpilot_private/navassist/__init__.cpython-312-aarch64-linux-gnu.so": "pB2EuFRYCo2d0WQnYAziKZMtTF0myedrlt4jPt6baypR49sl15qOFiKnFW8iL/C91mC8yrb8mgRu9DEJNs07Bw==",
|
||||
"python/iqpilot_private/navassist/appsetup.cpython-312-aarch64-linux-gnu.so": "y/P4Ni0GEBmqZHULY14DX/Odh4ByFo/tDd8QlgHiAM22QJ0hXhPRwr6AqbHqNADfjYSEOrGS30Oz/aXcXlXBBw==",
|
||||
"python/iqpilot_private/navassist/assets.cpython-312-aarch64-linux-gnu.so": "TzTvaBh0Wzuesg5T1GP6QKX253masiMTyYtcKkz2Mptfc8LcAq7xbJmPP5RfviDXiv0tEFe6PfH/LEvD8Xv6AQ==",
|
||||
"python/iqpilot_private/navassist/container.cpython-312-aarch64-linux-gnu.so": "bzSB5YmGEMbPX6TJn9R+g3hvIWI9sQYUOrSWofpQTFNcoPcf2WcLJRM9Fl1LbIdRWtEx2lWPQwjAQ5pd6J+4BQ==",
|
||||
"python/iqpilot_private/navassist/daemon.cpython-312-aarch64-linux-gnu.so": "sVR22V1Mfp2b2anriiZ16zoLPUT+/WT6uTpcfTErx8PxX2Ox/gWwe4ifzQMkWezFIaWn2imT4CehxhQZCA8HDA==",
|
||||
"python/iqpilot_private/navassist/guard.cpython-312-aarch64-linux-gnu.so": "k9Fz2A9GIFbJE+LEcFSmPWaNfYi0y3ZtVyP6P9e9vgk7KiugIazn5q9hRwUSlbBAn92vx8vU875Zv3/sqpr4AA==",
|
||||
"python/iqpilot_private/navassist/paths.cpython-312-aarch64-linux-gnu.so": "PplaPn3UzgTejl36JQ0tKHq9qd2Z8YqE7dX6z0+tHWaITgPdMhV5bDOXjt4haJCvzdN/Z5moPkXHPyCgKB4SCQ=="
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
+k8uY8dYPLT5xuTlqHHgo9YUJkOQM6KQxhPn4leJUi2t9DsHDEMBWJwdtyqzQi5Zes9eRuG9GmF7Hircxj88DQ==
|
||||
Vx6Vm8MyJE7uWp+sCDMp9K8NBG6lbJ2w49N8AXP8pAnM82G2NB1SWe4pTI4AqwoUle/n93Ydpdvwhv1kAztuCg==
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -845,6 +845,7 @@ class CarState(CarStateBase):
|
||||
pt_messages += [
|
||||
("Blinkmodi_01", math.nan), # From J519 BCM (is inactive when no lights active, 50Hz when active)
|
||||
("Kombi_02", math.nan), # Auxiliary-bus cluster odometer
|
||||
("LH_EPS_01", math.nan), # ALC key slot, absent on MLB racks that never send 0x32A
|
||||
]
|
||||
else:
|
||||
pt_messages += [("Kombi_02", math.nan)] # Auxiliary-bus cluster odometer
|
||||
|
||||
@@ -10,8 +10,8 @@ from iqdbc.car.volkswagen.carstate import CarState
|
||||
from iqdbc.car.structs import CarParams
|
||||
from iqdbc.car.volkswagen.interface import CarInterface
|
||||
from iqdbc.car.volkswagen.values import (CAR, FW_QUERY_CONFIG, MLB_ACC_COORDINATOR_MSGS, MLB_GEARBOX_MSGS, MLB_MSG_ACC_10,
|
||||
MLB_MSG_GATEWAY_05, MLB_MSG_GETRIEBE_01, MLB_MSG_LH_EPS_03, WMI, VolkswagenFlags,
|
||||
VolkswagenFlagsIQ, VolkswagenSafetyFlags)
|
||||
MLB_MSG_GATEWAY_05, MLB_MSG_GETRIEBE_01, MLB_MSG_LH_EPS_01, MLB_MSG_LH_EPS_03,
|
||||
WMI, VolkswagenFlags, VolkswagenFlagsIQ, VolkswagenSafetyFlags)
|
||||
from iqdbc.car.volkswagen.fingerprints import FW_VERSIONS
|
||||
|
||||
Ecu = CarParams.Ecu
|
||||
@@ -210,7 +210,6 @@ def _a4_mk4_frames(packer, reverse=False, eps_torque=None):
|
||||
packer.make_can_msg("Kombi_02", 1, {"KBI_Inhalt_Tank": 40, "KBI_Kilometerstand": 100000}),
|
||||
packer.make_can_msg("Airbag_02", 1, {"AB_Gurtschloss_FA": 3}),
|
||||
packer.make_can_msg("Gateway_05", 1, {"BCM1_Rueckfahrlicht_Schalter": int(reverse)}),
|
||||
packer.make_can_msg("LH_EPS_01", 1, {}),
|
||||
]
|
||||
if eps_torque is not None:
|
||||
msgs.append(packer.make_can_msg("LH_EPS_03", 1, {"EPS_Lenkmoment": abs(eps_torque),
|
||||
@@ -499,6 +498,32 @@ def test_mlb_manual_gateway_car_adds_only_the_reverse_switch_on_the_powertrain_b
|
||||
assert manual[Bus.aux] == automatic[Bus.aux] | {MLB_MSG_GATEWAY_05}
|
||||
|
||||
|
||||
def _read_like_the_alc_runtime(parser, name):
|
||||
# the closed-source ALC reads its key slot through parser.vl, which subscribes the message on first access
|
||||
if name not in parser.dat:
|
||||
parser.vl[name]
|
||||
return parser.dat.get(name, b"")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("build", (_a4_mk4_car, _q5_mk1_car), ids=("a4_mk4", "q5_mk1"))
|
||||
def test_mlb_alc_key_slot_read_keeps_can_valid_on_a_rack_that_never_sends_it(build):
|
||||
car = build()
|
||||
subscribed = _subscribed_addresses(car)
|
||||
never_sent = {bus: addrs - {MLB_MSG_LH_EPS_01} for bus, addrs in subscribed.items()}
|
||||
|
||||
packer = CANPacker("vw_mlb")
|
||||
|
||||
def build_frames():
|
||||
_read_like_the_alc_runtime(car.can_parsers[Bus.pt], "LH_EPS_01")
|
||||
return _frames_for(car, packer, never_sent)
|
||||
|
||||
ret = _run_past_aliveness_timeout(car, build_frames)
|
||||
|
||||
assert ret.canValid
|
||||
assert all(parser.can_valid for parser in car.can_parsers.values())
|
||||
assert not any(parser.bus_timeout for parser in car.can_parsers.values())
|
||||
|
||||
|
||||
@pytest.mark.parametrize("build", (_a4_mk4_car, _q5_mk1_car), ids=("a4_mk4", "q5_mk1"))
|
||||
def test_mlb_carstate_subscriptions_settle_and_stay_alive(build):
|
||||
car = build()
|
||||
|
||||
@@ -339,6 +339,7 @@ class VolkswagenFlagsIQ(IntFlag):
|
||||
|
||||
RADAR_DISABLE_STATE = {"error": False}
|
||||
|
||||
MLB_MSG_LH_EPS_01 = 0x32A
|
||||
MLB_MSG_LH_EPS_03 = 0x9F
|
||||
MLB_MSG_GETRIEBE_01 = 0x82
|
||||
MLB_MSG_GETRIEBE_02 = 0x83
|
||||
|
||||
Reference in New Issue
Block a user