IQ.Pilot Release Commit @ 2f37564

This commit is contained in:
IQ.Lvbs CI [bot]
2026-07-27 01:30:19 -05:00
parent 6a4096e52e
commit 15c14e1369
236 changed files with 2475 additions and 990 deletions

View File

@@ -16,29 +16,44 @@
}, },
"python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "8f9c7215f23878cf3ca3a07f013850f7e889a9e10deb4c1ec8bdabae488723e6", "sha256": "dfc76d7b791879501396d4de4891718d0052d23b1e6cb217b0be01f3e3e6d857",
"size": 135536 "size": 135536
}, },
"python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "c0d031c33712c71abcad3f9e10aa8e987ee801e20407a98344295e008657aab9", "sha256": "d1a7fd4e222b08c1e574ed1188943acddecc8d3f5ac02a1983bf90bde5e00a2c",
"size": 67664 "size": 67664
}, },
"python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "e049af92c953da53db2728f23484d8d691c9834d4130e3b6caa19c3ae69ce86d", "sha256": "5393274eb99f50917fef30f994b1ad5fab66860bd535b7d270a86d144d4e25b7",
"size": 204624 "size": 204624
}, },
"python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "a73a6a7ba5ac0a87d114db02e895921f0c452e9a8c6bd622116d94c347216ef1", "sha256": "9c08c3f6e3dc3b73f1a28d50d5aa76fa0894e9cd83bf02b7e9cc83bda5e84b4e",
"size": 69752 "size": 69752
}, },
"python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "692bde7a464bcef05c8b684224cc8fd6a6c05d226775ed3e81b6a02c748e11c5", "sha256": "fb417b7fed56353caad6d5a96429952ff0b87ee1bab7d6a8f0856d1ca40e4b4a",
"size": 203072 "size": 203072
}, },
"python/iqpilot_private/konn3kt/flockd/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "73164bb5c3eafe0a5409508140c093503ec40c1c58d0a8e79281bac3d22d811c",
"size": 202168
},
"python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "fb6d56fbec20965d988f936c46e7a70f31def71a2fba27a6506567b3c13574cf",
"size": 68080
},
"python/iqpilot_private/konn3kt/hephaestus/__init__.py": { "python/iqpilot_private/konn3kt/hephaestus/__init__.py": {
"mode": 420, "mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -46,67 +61,67 @@
}, },
"python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip": { "python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip": {
"mode": 420, "mode": 420,
"sha256": "832067fea89470fc6224abc8b49c2624e0278e0027ea4e0bb93f939e03938230", "sha256": "52026a3b96c4e7eee5cb33d70a323896ab0de02557196980653afb99498af84d",
"size": 2100238 "size": 2100238
}, },
"python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "92b5f941d9198bdd12915996216014d4bbc9b13c1b2435c20b9a2811661b23e3", "sha256": "aa3530a7f7a44ba1de0d8c1b5de3d26405bf0ee0b9599190bfbbea55d2ed2071",
"size": 268064 "size": 268064
}, },
"python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "4a71f1c7f88fdbd51707812370e733d30b22c0c46a2f22ce32d1757debc14cff", "sha256": "5a6bf50d4f8e3ec43603c2b3d9743dd650b37c6dd2075ec19266d0f1368b8cff",
"size": 340584 "size": 340584
}, },
"python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "25d6899e8ebb8c0c5d813d522033d115502d9b622882c0e59f276406702d9e57", "sha256": "ff36bfb143294790a6ab0e2fe3d14852f3b04374185ef19a614231ca56a40999",
"size": 68048 "size": 68048
}, },
"python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "abee9f335c9ddabaa85f341cb33aaf5eebc433b2397b71c921667329728808bc", "sha256": "ea54bc8d8a2ba2d803ce782898a6987457d248945da81cb9ab08bc32f6763fe1",
"size": 335728 "size": 335728
}, },
"python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "b5900c92a037f7ac88199b515f91692c0f86c45981ca3c929b6cbeb6ad6002a0", "sha256": "f7706a6cabf49660c48609ca4a85c840c1e22e5e4b17d250114e25b56a7b9c34",
"size": 271680 "size": 271680
}, },
"python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "d8ebf16a39d29f9932fd1277bd0d552b60a748b0bad6d5c6314cfe5e80859ce2", "sha256": "5fc96f8ac2c67f3ff660b8c060d14b0e526cba7eaa5ce64fae94f3d0e784d417",
"size": 134408 "size": 134408
}, },
"python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "6f50c91b87b5e37033b2f7a9db22f01aba9bf5e31733b6e753a23c211ae71492", "sha256": "85ecde61b3fcc0d18dc260855a94eb8d30ab2e02adbfea67e209b3fe320608b1",
"size": 3514416 "size": 3514416
}, },
"python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "63eb11f7251748dab6ad9ba7483ace77b0709f0a3f59492d5a9f2b50bfd9e1ad", "sha256": "c7b1b7a441f9c4ad395efb3de26d972379d9927f9c7ea9c121d1d06b8170139b",
"size": 136448 "size": 136448
}, },
"python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "88d2df85126983f2036badc3fac85ee25d79119c95bbe983030c6ea756da111b", "sha256": "a7fddf4e77d804f255ae4821fe64eada65ee6f2cc41cfb5c995acd497a0caca4",
"size": 68136 "size": 68136
}, },
"python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "f0aa1d1e50f73a27fff17a40c16affafbfdd56239da484ac04315e55a7018e0e", "sha256": "2ff9ebdb8887bb71a971a4d06fd362c51f5a4446595a073a45edc8bb630a642a",
"size": 67840 "size": 67840
}, },
"python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "5e4f675dbc70a3cd21156727f430fec31ecee99f28af3873fea89fb185dba39d", "sha256": "789481c2f41a6a38492f4f6e62d90c18c59276ff7a9b60fd8a5063b1754efe82",
"size": 135648 "size": 135648
}, },
"python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "6f9d47e0d6c4156335fcfd6562022dbfad2dd40c860fac20288be43823195443", "sha256": "280bee6ecfcde50d1856835a319aaa3354ecfdc4c9d552243493ae7070f9f169",
"size": 269568 "size": 269568
}, },
"python/iqpilot_private/konn3kt/uploaderd/__init__.py": { "python/iqpilot_private/konn3kt/uploaderd/__init__.py": {
@@ -116,11 +131,19 @@
}, },
"python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "995b9bcfa8544066a4b71565e834bedc4c1c3dd6b54e14765ef2365d32ccfe05", "sha256": "b1df9786798beaf80ae110b20b79c2e88b7bbdf38c576fa249fc896e360f9ad1",
"size": 204184 "size": 204184
}, },
"runtime": { "runtime": {
"entries": { "entries": {
"iqpilot_private.konn3kt.backups.backup_orchestrator": {
"path": "python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so",
"type": "python-module"
},
"iqpilot_private.konn3kt.flockd.flockd": {
"path": "python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so",
"type": "python-module"
},
"iqpilot_private.konn3kt.hephaestus.ble_transportd": { "iqpilot_private.konn3kt.hephaestus.ble_transportd": {
"path": "python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so", "path": "python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so",
"type": "python-module" "type": "python-module"
@@ -148,23 +171,25 @@
} }
}, },
"signatures": { "signatures": {
"python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so": "UehTRkDLBq77ERDm+ZSjxDU3+5EpJUOIzs5zk7Fz8Aru6yQX9ytRexns4dGse8BlIveGuHpWq+L+GvjG0Hf4Bw==", "python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so": "/YL6W76Q7ejmJvQraTclgzsGxYGpYbSBF3qql0E8Z40MZBQcm8wy+9mrMm1en5W9xGebuaT5xN2+Rji5MUCrDQ==",
"python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so": "uddHEDnsMjWbMeWotUzZES/3hyLuPmZM1ENCkcTxMYXzM0g0YfbyOJlzq2FuSL4Zg2Hl+PyM/nmnEYbi88NIBg==", "python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so": "0/MsPs9cfZy51uqtyCEK8/U8paw+eQXgqVnglRdUM3Xx6WaPTku3DXfx7MquCTXl+ia9XlM1xdaH/ax6zxhdAw==",
"python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so": "2gPFBBZeMfvlnGtQkP6JMI/8c6uanTylvVtZ+1cifaK/ixsGDyfw051gv28uorxjDvRHbgGab/q2n3QYZj8EBA==", "python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so": "1i1wEWih2NTsQ9jgK/cpb8V/B0y5prTk/OHG1wu4qoaMx4Qm1gVm6KAWU7rkvaQHMqC5eZG5lgL7O6tGflgOBA==",
"python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so": "KwOoTQlcNJA//GwfMeS8e1yw9agzaJDa/oUXXhiEFyrdEgZurmLbV0slgxUR+hC/LLrrzqqsw1BjQcYuqVXdCw==", "python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so": "Q0TBxMRrSRv99t5NIpcYgwRcj26IycOSUSX+Yh4f4S82hY3dXwME3XSqWFLaL2wNF+uG7dMZr0pZkZnHBHmaDg==",
"python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so": "BbNS1vTfoizdCnZE3j/2kbY84uXDcGk0WgQ+nmBtySNBBJgT/5HspuY/AOxHukgVyjh7vm7BCnBuJO6/Gm30AQ==", "python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so": "wFMRv5A2/dCAjlBC/x5uN876dq/kMrgMg5F7nmOKjDlrC5lZ014MbZXU0BKzI49CSch9uU3TLbvUR1p9gWPcBA==",
"python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": "HU6uqhzgAx6mA9ScihdhYvmknQ9kZbI2p4a/ViB4BLo1OTZnfhFecQQ3rnvXNLGOyfbacqooz+s+JRuSOqEmDw==", "python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so": "de2W5b0SVEEAhjf9r1Ht9tg6W4RWldp7Tc/IzUQdphK4XBOzqouXIYCItN5xgEbc1tFTmGgKu2pfMXAoXkgYDw==",
"python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": "Nw/QTfb9gk1QgTWKvacfS4BlKZ3DuWJKf5ll/H4Hb8YEaXmYz1xU0klwcybjHPs4twA5qsYUnjmzL110llD+Cw==", "python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so": "yEkA8O096lTrh5YTvZgmuGpyuZ0vTnZDvLnLGR7dhBfypiNPsF4dxp2bcgDpz14GRKPHKa3v8O2v/G/06lk4CQ==",
"python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": "WE552SVLgy0vmwvrJv54kW4bDyjB9bKUhMnGa+OI/L7WZT/ReWm3H2NbT0TzWZEGbzFHKr4I01Zmi+MHJGVrAQ==", "python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": "fpzjKBczfi9su9/BzPINkMJ8+Qx2KljBmYg/lhpaCRZDQX9kIT2qgcgbu5CqahfEQAjWDH2YKDwRhAGzkx1LBw==",
"python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": "N9u9KO1e4Xc9su7MndJ6MfyDMY1eV89xbIy6Qo5F5eg0xqfl8QGyYcUU6btIOFdrpRdpWxXTukff9FbU0c+RBg==", "python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": "mUUGiu3/nIkcp9McjoX+qOTzBwuJlFzxxZdbW3uU2C4ppAlQ+bYMz9p33qnmkUiJUGfjcBwFnJebL8AXo/kXBQ==",
"python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so": "t9HmTDU8a0a3rhm9rxzbUaYalAmjASZRbgCku8rg6AxQJohJo3eMVmH7dy7A6vtFvhYvvD9Ywi9kKeUaPTvPCQ==", "python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": "Nge3RnzUjW2gPUjEyBRxh+D6frwx9dJ/N9W0e0vzFWLLvbo+cT5zjrNAT7buA7XAKGfHSy14ssOxL8Jz+uZBBw==",
"python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so": "Oq2wyp4UTAQg/Q16pgCJ9+C/4zi4ljCOHJRcnYXhUk997Tq/5LuBHBstfxrq9ZLubF2ntLLw5UhePtehjLliDg==", "python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": "KXjqWoG0lsVWqK8uRhOOChREx/ThGtcdKoFxaDD2WpGtEoFBTz2fDsNP8lgyLcrH+9ETT6ggnXqHMf2SnEabBw==",
"python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": "n2X6vqTFDy3dGiTiI9kWfAYySl0srw30k5aDqN/YWTzZomQabwZ1ETmUC6TIG3Wag074XNEJgrZhiguN1wgeAg==", "python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so": "+0ZLw/tXrJtcempSJZFTKz9vlzs7q13YrnzSkuSpHzaGUm4Z2l4H3Syy0rPj3iJ8OLbkMAE9LegxScVq9mb1Bg==",
"python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so": "ami2SR9/GUXkFRDB5hN/JrJO4rz2piQNtEYJFAsvssLmcqzVPHehRIy61gctjKr5kBLOfUGJjpNU3ceswOUWBg==", "python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so": "Q44rxaPzw1QoSLoHyoaCMtW9N45YeYUNhtgPETz6Z1zLJ5o9NPec6yP06673sX9xdOnRXr0maeLfI2ji7iFiBg==",
"python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": "wCeURfEwJlXuy7FYiJ3ZWUJZUp8ehKehKqWH/nNyo+GlSlC8YhAGNvQxwZ9FH0agOsSQVHMExnL4ofLvJOytAA==", "python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": "MUg6v8qvb7Rhhk5LPoU7krD0CKb39e8wsoh5ER+VvzWYJZ2fnra7Od14xSGfhFZoHIItPwtOlASUbqlbPKReCg==",
"python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so": "+G2me3BkbbjwwtVfjGz/ePsXQwNde7Y9bLELSRk8tDxLdGHWkFCU9i8ba8vue7uqfMTnRq5opCDFdIXvY7CwDg==", "python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so": "ERRMJ3hrOhetsuiNyWrsXH6hwtKzw5CAjg8kB/025JkDyA4OR3yLGMnqXqryygc4r4onUUF0Q55SzTbxxHWzDA==",
"python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so": "lh63nHd0YApA9e9+C8SnRd+DILlprzpzt2PR8S6x8VSMQAzAySS9xuJ8Jw76JMpIItzW030n5/wazi4i/gK+Aw==", "python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": "+gyiBvn9Uz56mpHovmDtUsNxvlnPYLH8/v5J+f0o8nr/E26f1xvSk2yQbYwYrCeZZ8AOxgY6GmdGRnkly4WCCg==",
"python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so": "3fYQP73XdXlWREMsM+P7D9EUSAwrLuih17DqmbDfQDa0S0TKbXcWJgRMbeOHRUDMZ04sUDrli82OfAkz6vlyBQ==", "python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so": "Y/cinSdkb/kWX44T/w4woXX/Ex9+Q1KPtUC318dtygZeTiHDjCM+0IUjfS/BXwbdKETQPEpyIoKLsJaP2Gk1Cw==",
"python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so": "UtM9t4Db3LX6RfiMkADMI7Skre5FtPvjPB2xNuJofd4fVtrLo7r4YYcSOmq7jo4+UviYp4N3CPiGGoOc6WHzAA==" "python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so": "N+JrGIiTUzESxzH9fdgub5y01psxzlmEw75Y1AuxQqFx7mG4Z+Tx20UeeyQtAw27UuOctiKpGPHq9trtijJwBA==",
"python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so": "1MxRuPAWgjtsNORklvPZBml0OOVqIu8vMluY0QlK/pqE3S8EoC28/Gn39Bhb6hMjk8yTAUaTnTn4HlwkENpvBA==",
"python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so": "Uxa3OMIwXvFEYz1LP+UDWB1sVhi4z8yC9bP+Xypzw26LNRAMkJZta2r+drXGPEe1TFg4zgVWrb9Q1+Y3pA9HAQ=="
} }
} }

View File

@@ -6,7 +6,7 @@
}, },
"python/iqpilot_private/iqvd/__init__.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/iqvd/__init__.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "3731e0eaf0f13f83fa5997108de084a98812869eb16b35aeda5671225a9ae468", "sha256": "d36af86bf1fe721522e729b6a48e3a962ce033dcfe89f9e00e3d6208b1801591",
"size": 67616 "size": 67616
}, },
"python/iqpilot_private/iqvd/__init__.py": { "python/iqpilot_private/iqvd/__init__.py": {
@@ -16,12 +16,12 @@
}, },
"python/iqpilot_private/iqvd/iqvd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/iqvd/iqvd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "67f55a32787720c3adb423330fe4dba529e99be227af14ad56df2088206523ad", "sha256": "f81036080eb7bc0c91bae10b11f52064041311a5fc67e7dc0fba32f585318e41",
"size": 201520 "size": 201584
}, },
"python/iqpilot_private/iqvd/yolov8_net.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/iqvd/yolov8_net.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "6ca0d723546fa9a670fee6bed6b96b009856628ba9727e0ae5f9b6cf90cb862f", "sha256": "976be8806f006a175a14b0c63e9a1c2c2b845ee2dab77a41eeb6759c7feab641",
"size": 204568 "size": 204568
}, },
"runtime": { "runtime": {
@@ -33,8 +33,8 @@
} }
}, },
"signatures": { "signatures": {
"python/iqpilot_private/iqvd/__init__.cpython-312-aarch64-linux-gnu.so": "VwC9JwdPjTasc0t562kGkyPRBuV5Dfe+wlSmctOyBMmMZEjB6J6aBz9M/o/zmkFbylVNKWbBrnS2WMcbWiseDg==", "python/iqpilot_private/iqvd/__init__.cpython-312-aarch64-linux-gnu.so": "bMboPEsPzZjh0Y1Zk3Brvc6fyWFF5CxuzN9KQr2RK0Hn+l8XiD6l/ym2Y10nFxvj8+uLikIZ0xSAovJlJcRUAA==",
"python/iqpilot_private/iqvd/iqvd.cpython-312-aarch64-linux-gnu.so": "Gq4Qs2SgFk66OEq1pFVZKkhsyG+ougZTRcHd+gTqca8P5QV932gDv1zaIYz538VUzksHhZleJFi76I4y4BGVCQ==", "python/iqpilot_private/iqvd/iqvd.cpython-312-aarch64-linux-gnu.so": "seyE6m33mqlKZ4H7b1JL6pxxz+r/+dKP1PzcfXxhdhHvsl8Ka8Noi6+ln5z+QSvBgt5ulxQeBJMBP5qdu6lOCw==",
"python/iqpilot_private/iqvd/yolov8_net.cpython-312-aarch64-linux-gnu.so": "9Xh6hjmUFKQTU4LTn+WSKe/BM3lmh/gleSwdhEYXavmN3KwF0ypYdjg5DDpduGjKG/VqQauz42kqdcYKXd1hAg==" "python/iqpilot_private/iqvd/yolov8_net.cpython-312-aarch64-linux-gnu.so": "RvzkJLNxPA+u7yEnH5jd2jecT02PJCQkIDj/LiWvBCE4lFmFFzOf1Q+ZCGGjrFQzhLQZlm75SvW80mlqJ9BJCw=="
} }
} }

View File

@@ -6,7 +6,7 @@
}, },
"python/iqpilot_private/navd/__init__.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/__init__.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "8b6114f67eb7a83d47e90113a0e75801ffd55d6c732d1db9a6af620f3cfba1d8", "sha256": "449495db52a85f8d0b0e2bb3128ee480598f8bdb5a44ec13153877fe8b372a91",
"size": 67616 "size": 67616
}, },
"python/iqpilot_private/navd/__init__.py": { "python/iqpilot_private/navd/__init__.py": {
@@ -16,72 +16,72 @@
}, },
"python/iqpilot_private/navd/event_builder.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/event_builder.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "4ebabfe3b85a380441cb22730ea3779c3c477e7ec40a88d0ba4d8130a2827877", "sha256": "ae2b25f52f7c7b02f3c977bbf46f5e9e938bfeda78bdb60f2f897eb04d698e43",
"size": 136944 "size": 136944
}, },
"python/iqpilot_private/navd/helpers.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/helpers.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "7506530560907e8a39e54c05c988c5be3b86bbdaa5279059ada9d847d1e2889c", "sha256": "f6ad0590f2a0bdbed56e7126203df2f6cdad86074f76ab9dded38b9e1600c8af",
"size": 135936 "size": 135936
}, },
"python/iqpilot_private/navd/iqmapd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/iqmapd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "905391fcf31991b315abe6126797bc870066352596cd2e9574b289a9c0f386be", "sha256": "b4ed48cada1dfb3383ff8ee106a7d93967bf65115d4c528b60dc3d73112a2f0e",
"size": 135608 "size": 135608
}, },
"python/iqpilot_private/navd/long_decel.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/long_decel.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "33f91bfad8894347729d4fd072e8a81af766240e5ec8921de0f92230e3d5faf1", "sha256": "e68aca6829cb00c5eda5330e1dfedd6269381ea5831abaca1055adf6df1f53ff",
"size": 69728 "size": 69728
}, },
"python/iqpilot_private/navd/mapbox_client.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/mapbox_client.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "4572bb1d704de4b9919d4e81e7c28d64197dadbdd8d84f4f1a203ad924d000f6", "sha256": "ebd30c5c34fbbe82d7d24343a2e791919e526997d192fd1441df749b15526704",
"size": 68088 "size": 68088
}, },
"python/iqpilot_private/navd/nav_cameras.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/nav_cameras.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "5087cd98a1bf042e0f3d19021af43a0d12ae0ce3f502158a0f4d3a0ace2bbabe", "sha256": "6e69c5fcac3c302e401b3ed3735b42f3de4af4e0d188d15a7add7aa02920f4c5",
"size": 135440 "size": 135440
}, },
"python/iqpilot_private/navd/navd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/navd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "f26cb01eaad63b14c686932496a62a3ec5aef1ebb4f36fb46680c124c77e0e16", "sha256": "55c88f8c5996dd7094c0feaf454fe0f1aec97276aed8926d7e8f6d1597de5a83",
"size": 664448 "size": 664480
}, },
"python/iqpilot_private/navd/navrenderd.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/navrenderd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "3e4a79640333390203e50fb226b00b72aa97a78637544e0f616ed54547c40489", "sha256": "b971e1093f5713a633636d6ee74891206a2d5abfb492406c7ae5df7a66bdc0d9",
"size": 135560 "size": 135560
}, },
"python/iqpilot_private/navd/osm_cameras.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/osm_cameras.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "cc7040441e8ce97be6ba7bdb371761e7f14c3caf99ab15bf343635a69f4e0fb1", "sha256": "882ccc23c3de2e4e34c685a7abb00075f6c5be634eaf7e81cab86461c624449d",
"size": 136368 "size": 136368
}, },
"python/iqpilot_private/navd/reroute.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/reroute.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "2b9357dd886231d18e4a9b180b91ea2747f5fa23d91d2d349e032286ea330db2", "sha256": "df0bf89d492dba3b6c3792dde1bcb30a60e692f62519be7c62a517ef514ec276",
"size": 136072 "size": 136072
}, },
"python/iqpilot_private/navd/route_manager.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/route_manager.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "3a85759d30234271a83a9473d6d18af74d672c892f686b5d082e9b6df1b70159", "sha256": "0311a1fbde1510b31055606db21a7c5f74e6872f9f1aabd6fb4a0a501395eaef",
"size": 600528 "size": 600528
}, },
"python/iqpilot_private/navd/runtime_common.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/runtime_common.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "2423bca9e7637997d1b6a86365cbc9e9a7d47c89f96aa21be4de32a898ad795c", "sha256": "1f08c7c462b4cb08a8de9140d968ef5dc74b31afffe16c9f8fad4e0271bec6cc",
"size": 135752 "size": 135752
}, },
"python/iqpilot_private/navd/turn_desire.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/turn_desire.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "12b333b4c8904483cae4bae1346016b24b9bee0866d332b2b61dc9fbc30a14b7", "sha256": "aea71be79c99884a0aeaaf8e5c0f70e37bb4f0c0123025cd07df830189774ba9",
"size": 69832 "size": 69832
}, },
"python/iqpilot_private/navd/web_server.cpython-312-aarch64-linux-gnu.so": { "python/iqpilot_private/navd/web_server.cpython-312-aarch64-linux-gnu.so": {
"mode": 493, "mode": 493,
"sha256": "3954330e8004abad9dd31f3a02b57306dc7e83e73ee0ba4072b1b4ecc7f88dfc", "sha256": "5c7dd6ef7dafb9a35662ee3d22c08b17b02807df736bf146af88cb260f5bbf09",
"size": 201384 "size": 201384
}, },
"runtime": { "runtime": {
@@ -105,20 +105,20 @@
} }
}, },
"signatures": { "signatures": {
"python/iqpilot_private/navd/__init__.cpython-312-aarch64-linux-gnu.so": "j3fNuxY5XzC219Okj5DV4kId8oUAKcwTcZhwLpp8S/kWXpFv4gHo43Van3A+OkWPFa50ZvKqWH7WhoQc8IgPBw==", "python/iqpilot_private/navd/__init__.cpython-312-aarch64-linux-gnu.so": "E3+Gd+btNi+4qFqM+nFMfWgCLJhP21ZgIwZrE/CJjqafB1htd/qOhh9QtrulS46HW5geZ/nwW3jlxPbFeNubBw==",
"python/iqpilot_private/navd/event_builder.cpython-312-aarch64-linux-gnu.so": "+Pj9wj6MC4cZ8YxZvvT4XlrzS/N6gVDf5LGZ6kkWiJhVuolBW4ey5KSjbggp4NSIiZWi9aARMZfGsWabQi+nDA==", "python/iqpilot_private/navd/event_builder.cpython-312-aarch64-linux-gnu.so": "hHQQCCPcxRXdO9vko9476AYbgbfNwhi9bVYpoOzQQStPC8DbIO0QN/RRzaJVGr2kgJGZlXDmnGl85m7EHgC1BA==",
"python/iqpilot_private/navd/helpers.cpython-312-aarch64-linux-gnu.so": "KYCV1qnZ8+mrne7n0H7x+kTu8x/U9H71SXYZt3URy/yIgdtTTXkSS6IQs1UvusfMHzRdBGcT58ado3UcLpsNAg==", "python/iqpilot_private/navd/helpers.cpython-312-aarch64-linux-gnu.so": "Wz5yfWlMeoASj274KqrCWwEJD/wtm5WyxLenceYu7MkXaMlN1QyztvJhq8Y8K8Jfis7R5fQ/aAnlsQgWTIVEBg==",
"python/iqpilot_private/navd/iqmapd.cpython-312-aarch64-linux-gnu.so": "qC8oELP8nBJSvaDsCMo7/JqoiqCZBJa/LeUE0b36DdkT7kzHSLQ+MuGP5Vc8ms8VowBh447LaLq2WWURGB/fAQ==", "python/iqpilot_private/navd/iqmapd.cpython-312-aarch64-linux-gnu.so": "6WFWUXmkyy21rh/9xa7s7S7CTiCRnywOahU859T6iP0447NkVxHRYmXAVCH1/vRDPXASHRNPyUk8oSDLIGK1Ag==",
"python/iqpilot_private/navd/long_decel.cpython-312-aarch64-linux-gnu.so": "6kFnnmSPQPXe1HuiBL14HrPx5cr2XmOYzTcESKHvt7DAL7M5tMKy0BWufo34F/LH4MYXQu1/k5TyzHt4wQ7jBw==", "python/iqpilot_private/navd/long_decel.cpython-312-aarch64-linux-gnu.so": "ZUsjQ/AGPa5pVKAv3IkycDPIVBWh+4jBNor/xrUi7BBPHki8G6T1grv3exeHhr2WF2JiqN727ge3JaqvlU1KDQ==",
"python/iqpilot_private/navd/mapbox_client.cpython-312-aarch64-linux-gnu.so": "F0JFe9uN7YtdFvtSwHXPch4l6Cz7yWTOtKPHOdBxqk9CkHh0vfO2d4EAeGTpvHINFS5Kf2KcF99qyEhWfr31Ag==", "python/iqpilot_private/navd/mapbox_client.cpython-312-aarch64-linux-gnu.so": "t+VHmWhxf7oKcR5e+tJe6hPKy6xz0bMY84WEhujwcwBlWgIXscfc9aNSP6e4N7GITW7cOn+RlDRTTfwQsA6PDA==",
"python/iqpilot_private/navd/nav_cameras.cpython-312-aarch64-linux-gnu.so": "7sQ0zXNASjEVBknO94P5wnMifC+8cVAKaBBbQjfbbaV1lsg18mm/rtTOGlFX7NJD23kJFxyLJmJ+wKjRAZXkBg==", "python/iqpilot_private/navd/nav_cameras.cpython-312-aarch64-linux-gnu.so": "qOrpSi2I+aFLKN4WjBljfzbk2U1rvOgDuyV+p7IvshugeUOoqTKiYYSG9xwyi2/eB/syyfiVFoqAg+ETFXXPDA==",
"python/iqpilot_private/navd/navd.cpython-312-aarch64-linux-gnu.so": "VTg/Ojx4I8+JJz+vf9gDwUSBY9MCUvIg9wGnNJiQwIKDJr/VkSRoaiM4nMoazauhLEgYpmlfX7C8OEAWswKhBQ==", "python/iqpilot_private/navd/navd.cpython-312-aarch64-linux-gnu.so": "PcFJWRYrb52pJCbTdsAPm3IC0OR9zt/7P0uc1GlQr4CVGvzfXukbnt/7sSeL8T29w7drf9MfGkpRe4BjbWwtDw==",
"python/iqpilot_private/navd/navrenderd.cpython-312-aarch64-linux-gnu.so": "4i882AjYz/zCgoGlr1LGNcVGfzyybHPMOL0aKva8VNsHBEtMbnnetecRBurtAzlU6O8+p89gY1GNDaJfyi7OAQ==", "python/iqpilot_private/navd/navrenderd.cpython-312-aarch64-linux-gnu.so": "gp1noPJ35MRVcQL3t4wKbsEH0L0+n9Yf8Zty+VCY7uy9EsK8211kW2YIw7Lcyw879VLLbVntHIWz/BMankSeAw==",
"python/iqpilot_private/navd/osm_cameras.cpython-312-aarch64-linux-gnu.so": "hO9yDTiAaidM3yQCfh4J8vP54R2z42ejhkqU8E6l+wWUXhRrfS4Z6qLyxeQqQGJSPSAMfsWl/yODWogqoH+MDQ==", "python/iqpilot_private/navd/osm_cameras.cpython-312-aarch64-linux-gnu.so": "N6yH0R8V/Cw1J3hYPfFeZXByolRwtACwNe2wHMzPEQ69UTWnSNFRXWjOLCEvtwB8Z+iglAqFx8uztZ6wXZKUCQ==",
"python/iqpilot_private/navd/reroute.cpython-312-aarch64-linux-gnu.so": "xPCGbuG+pQUqCjBx3NijbInbyo/rRteGLCbhVun2odrw1lGMx4JwzSyNUUsEU7xFPEZ+oZwPUaZcVOHRPnknAw==", "python/iqpilot_private/navd/reroute.cpython-312-aarch64-linux-gnu.so": "oQQU70Yp8wzkqB9Ktm2KDEHNVZfB3otqIoG2mkqQNh6QdtVKXraIv6cAbt2Zjob5914C06El2z+NPZQE5NjODQ==",
"python/iqpilot_private/navd/route_manager.cpython-312-aarch64-linux-gnu.so": "ZDojmbuEkZUbZ7a56pPvO8hFcYHM5zB9OvGs+r90swvPzU0GRm4SkEiDRLhG6zSyP+vHhJnrsTs+dvyaBkzvCQ==", "python/iqpilot_private/navd/route_manager.cpython-312-aarch64-linux-gnu.so": "ayPdxCUGA/o+AavLMd9mGDY6zYnZk54gAEVaMQXFYlztjXiREC+IEmV1iETOYcsEFAxr8qtUFfcwZ3p7rXljCw==",
"python/iqpilot_private/navd/runtime_common.cpython-312-aarch64-linux-gnu.so": "888SP/NpbJtdv2BKbsW7WzuD0pKh2rM50YvS4GlD8brL2xq7a7GPPeKM/b5F+pTzVvS7CbUmELqh3HmeAtOKCw==", "python/iqpilot_private/navd/runtime_common.cpython-312-aarch64-linux-gnu.so": "Rh0wUjYjRabedjFSnsE9BAjILjA1+RHMdfuCqTye1AlhFlXVUQMRo6Ier6Z71kyiOYw+CXCOrHUF9fP69cP4DQ==",
"python/iqpilot_private/navd/turn_desire.cpython-312-aarch64-linux-gnu.so": "cmYohrfIfttybS+9x+b9DFzgxyaDGNtgr+olaMWUZ7ytgenB+EvwKAXJHmicFtvBTsKOxYzywKR2zLb71DDFDg==", "python/iqpilot_private/navd/turn_desire.cpython-312-aarch64-linux-gnu.so": "13bqig90oceup9ovo8weu9UpdQN/l/pq7REFm8dwwgqquuh8jJFkzNz7dvIhDlaxIGAQwzWJe4+QzIQfhg0jAA==",
"python/iqpilot_private/navd/web_server.cpython-312-aarch64-linux-gnu.so": "laxlmUb7INupC/eu6k/eok3bXW4c5H7Lui5MDJXLCoSFCiutla374A6rN8Dh+g3AcSY2NfLBzrnyqQDqQH0KBw==" "python/iqpilot_private/navd/web_server.cpython-312-aarch64-linux-gnu.so": "Vm1Inx4XY0BOmLuNizOCRNAl4tPDcvJ/4A+TwVSr1cZuMg7pg1jeFg613e6cFM6t08hYvPsysXc2+gD69zkcBA=="
} }
} }

View File

@@ -242,8 +242,8 @@ struct IQPlan @0xda401323ae805f2b {
} }
struct E2eAlerts { struct E2eAlerts {
greenLightAlert @0 :Bool; pathOpen @0 :Bool;
leadDepartAlert @1 :Bool; leadPullaway @1 :Bool;
} }
} }
@@ -734,6 +734,7 @@ struct IQVehicleTracks @0xb877ef4b20a4ae22 {
frameHeight @2 :UInt16; frameHeight @2 :UInt16;
processingMs @3 :Float32; processingMs @3 :Float32;
tracks @4 :List(Track); tracks @4 :List(Track);
wide @5 :Bool;
struct Track { struct Track {
# box corners normalized [0,1] in the road-camera frame # box corners normalized [0,1] in the road-camera frame

View File

@@ -70,12 +70,12 @@ struct OnroadEvent @0xc4fa6047f024e718 {
longitudinalManeuver @30; longitudinalManeuver @30;
steerTempUnavailableSilent @31; steerTempUnavailableSilent @31;
resumeRequired @32; resumeRequired @32;
preDriverDistracted @33; driverDistracted1 @33;
promptDriverDistracted @34; driverDistracted2 @34;
driverDistracted @35; driverDistracted3 @35;
preDriverUnresponsive @36; driverUnresponsive1 @36;
promptDriverUnresponsive @37; driverUnresponsive2 @37;
driverUnresponsive @38; driverUnresponsive3 @38;
belowSteerSpeed @39; belowSteerSpeed @39;
lowBattery @40; lowBattery @40;
accFaulted @41; accFaulted @41;
@@ -2183,6 +2183,7 @@ struct DriverStateV2 {
rightBlinkProb @8 :Float32; rightBlinkProb @8 :Float32;
sunglassesProb @9 :Float32; sunglassesProb @9 :Float32;
phoneProb @13 :Float32; phoneProb @13 :Float32;
sleepProb @14 :Float32;
notReadyProbDEPRECATED @12 :List(Float32); notReadyProbDEPRECATED @12 :List(Float32);
occludedProbDEPRECATED @10 :Float32; occludedProbDEPRECATED @10 :Float32;
readyProbDEPRECATED @11 :List(Float32); readyProbDEPRECATED @11 :List(Float32);
@@ -2224,7 +2225,7 @@ struct DriverStateDEPRECATED @0xb83c6cc593ed0a00 {
stdDEPRECATED @2 :Float32; stdDEPRECATED @2 :Float32;
} }
struct DriverMonitoringState @0xb83cda094a1da284 { struct DriverMonitoringStateDEPRECATED @0xb83cda094a1da284 {
events @18 :List(OnroadEvent); events @18 :List(OnroadEvent);
faceDetected @1 :Bool; faceDetected @1 :Bool;
isDistracted @2 :Bool; isDistracted @2 :Bool;
@@ -2250,6 +2251,81 @@ struct DriverMonitoringState @0xb83cda094a1da284 {
eventsDEPRECATED @0 :List(Car.OnroadEventDEPRECATED); eventsDEPRECATED @0 :List(Car.OnroadEventDEPRECATED);
} }
struct DriverMonitoringState {
lockout @0 :Bool;
lockoutCount @15 :Int8;
lockoutMinutesRemaining @11 :Int8;
alert3Count @12 :Int8;
noResponseCount @13 :Int8;
noResponseForceDecel @14 :Bool;
alwaysOn @3 :Bool;
alwaysOnLockout @4 :Bool;
alertLevel @5 :AlertLevel;
activePolicy @6 :MonitoringPolicy;
isRHD @7 :Bool;
rhdCalibration @8 :CalibrationState;
visionPolicyState @9 :VisionPolicyState;
wheeltouchPolicyState @10 :WheeltouchPolicyState;
enum AlertLevel {
none @0;
one @1;
two @2;
three @3;
}
enum MonitoringPolicy {
wheeltouch @0;
vision @1;
}
struct VisionPolicyState {
awarenessPercent @0 :Int8;
awarenessStep @1 :Float32;
isDistracted @2 :Bool;
distractedTypes @3 :DistractedTypes;
faceDetected @4 :Bool;
pose @5 :Pose;
wheeltouchFallbackPercent @6 :Int8;
uncertainOffroadAlertPercent @7 :Int8;
struct DistractedTypes {
pose @0: Bool;
eye @1: Bool;
phone @2: Bool;
}
struct Pose {
pitch @0 :Float32;
yaw @1 :Float32;
pitchCalib @2 :CalibrationState;
yawCalib @3 :CalibrationState;
calibrated @4 :Bool;
uncertainty @5 :Float32;
}
}
struct WheeltouchPolicyState {
awarenessPercent @0 :Int8;
awarenessStep @1 :Float32;
driverInteracting @2 :Bool;
}
struct CalibrationState {
calibratedPercent @0 :Int8;
offset @1 :Float32;
}
deprecated :group {
alertCountLockoutPercent @1 :Int8;
alertTimeLockoutPercent @2 :Int8;
}
}
struct Boot { struct Boot {
wallTimeNanos @0 :UInt64; wallTimeNanos @0 :UInt64;
pstore @4 :Map(Text, Data); pstore @4 :Map(Text, Data);
@@ -2570,7 +2646,7 @@ struct Event {
thumbnail @66: Thumbnail; thumbnail @66: Thumbnail;
onroadEvents @134: List(OnroadEvent); onroadEvents @134: List(OnroadEvent);
carParams @69: Car.CarParams; carParams @69: Car.CarParams;
driverMonitoringState @71: DriverMonitoringState; driverMonitoringState @165: DriverMonitoringState;
livePose @129 :LivePose; livePose @129 :LivePose;
modelV2 @75 :ModelDataV2; modelV2 @75 :ModelDataV2;
drivingModelData @128 :DrivingModelData; drivingModelData @128 :DrivingModelData;
@@ -2693,6 +2769,7 @@ struct Event {
wifiScanDEPRECATED @29 :List(Legacy.WifiScan); wifiScanDEPRECATED @29 :List(Legacy.WifiScan);
uiNavigationEventDEPRECATED @50 :Legacy.UiNavigationEvent; uiNavigationEventDEPRECATED @50 :Legacy.UiNavigationEvent;
liveMapDataDEPRECATED @62 :LiveMapDataDEPRECATED; liveMapDataDEPRECATED @62 :LiveMapDataDEPRECATED;
driverMonitoringStateDEPRECATED @71 :DriverMonitoringStateDEPRECATED;
gpsPlannerPointsDEPRECATED @40 :Legacy.GPSPlannerPoints; gpsPlannerPointsDEPRECATED @40 :Legacy.GPSPlannerPoints;
gpsPlannerPlanDEPRECATED @41 :Legacy.GPSPlannerPlan; gpsPlannerPlanDEPRECATED @41 :Legacy.GPSPlannerPlan;
applanixRawDEPRECATED @42 :Data; applanixRawDEPRECATED @42 :Data;

View File

@@ -41,6 +41,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"DoShutdown", {CLEAR_ON_MANAGER_START, BOOL}}, {"DoShutdown", {CLEAR_ON_MANAGER_START, BOOL}},
{"DoUninstall", {CLEAR_ON_MANAGER_START, BOOL}}, {"DoUninstall", {CLEAR_ON_MANAGER_START, BOOL}},
{"DriverTooDistracted", {CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_ON, BOOL}}, {"DriverTooDistracted", {CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_ON, BOOL}},
{"DriverLockoutCount", {CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_ON, INT, "0"}},
{"AlphaLongitudinalEnabled", {PERSISTENT, BOOL}}, {"AlphaLongitudinalEnabled", {PERSISTENT, BOOL}},
{"ExperimentalMode", {PERSISTENT, BOOL}}, {"ExperimentalMode", {PERSISTENT, BOOL}},
{"ExperimentalModeConfirmed", {PERSISTENT, BOOL}}, {"ExperimentalModeConfirmed", {PERSISTENT, BOOL}},
@@ -170,12 +171,12 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"DeviceBootMode", {PERSISTENT, INT, "0"}}, {"DeviceBootMode", {PERSISTENT, INT, "0"}},
{"IQDevUIInfo", {PERSISTENT, INT, "0"}}, {"IQDevUIInfo", {PERSISTENT, INT, "0"}},
{"EnableEsimProvisioning", {PERSISTENT, BOOL, "1"}}, {"EnableEsimProvisioning", {PERSISTENT, BOOL, "1"}},
{"GreenLightAlert", {PERSISTENT, BOOL, "0"}}, {"EndToEndAlert", {PERSISTENT, BOOL, "0"}},
{"InteractivityTimeout", {PERSISTENT, INT, "0"}}, {"InteractivityTimeout", {PERSISTENT, INT, "0"}},
{"IsDevelopmentBranch", {CLEAR_ON_MANAGER_START, BOOL}}, {"IsDevelopmentBranch", {CLEAR_ON_MANAGER_START, BOOL}},
{"IsReleaseIqBranch", {CLEAR_ON_MANAGER_START, BOOL}}, {"IsReleaseIqBranch", {CLEAR_ON_MANAGER_START, BOOL}},
{"LastGPSPositionIQLoc", {PERSISTENT, STRING}}, {"LastGPSPositionIQLoc", {PERSISTENT, STRING}},
{"LeadDepartAlert", {PERSISTENT, BOOL, "0"}}, {"EndToEndLeadAlert", {PERSISTENT, BOOL, "0"}},
{"LongIncrementsEnabled", {PERSISTENT, BOOL, "0"}}, {"LongIncrementsEnabled", {PERSISTENT, BOOL, "0"}},
{"LongIncrementTapStep", {PERSISTENT, INT, "1"}}, {"LongIncrementTapStep", {PERSISTENT, INT, "1"}},
{"LongIncrementHoldStep", {PERSISTENT, INT, "5"}}, {"LongIncrementHoldStep", {PERSISTENT, INT, "5"}},

View File

@@ -42,7 +42,9 @@ if not _os.path.exists("/usr/libexec/iqpilot/runtime_integrity.json"):
"update_mlb_carstate_alc_state": _noop, "update_mlb_carstate_alc_state": _noop,
"update_pq_carstate_alc_state": _noop, "update_pq_carstate_alc_state": _noop,
}) })
_stub_module("iqpilot_private.konn3kt.iqlvbs.iqlvbs_commander", {}) _stub_module("iqpilot_private.konn3kt.iqlvbs.iqlvbs_commander", {
"update_turn_signals": _noop,
})
_stub_module("iqpilot_private.konn3kt.hephaestus.vw_pq_flasher", {}) _stub_module("iqpilot_private.konn3kt.hephaestus.vw_pq_flasher", {})
try: try:

View File

@@ -11,7 +11,7 @@ from iqdbc.car.mock.values import CAR as MOCK
from iqdbc.car.values import BRANDS from iqdbc.car.values import BRANDS
from iqdbc.car.vin import get_vin, is_valid_vin, VIN_UNKNOWN from iqdbc.car.vin import get_vin, is_valid_vin, VIN_UNKNOWN
from iqdbc.iqpilot.car.interfaces import setup_interfaces as iqpilot_interfaces from iqdbc.lvbs.car.interfaces import apply_iq_car_config as iqpilot_interfaces
FRAME_FINGERPRINT = 100 # 1s FRAME_FINGERPRINT = 100 # 1s

View File

@@ -5,16 +5,16 @@ from iqdbc.car.chrysler import chryslercan
from iqdbc.car.chrysler.values import RAM_CARS, CarControllerParams, ChryslerFlags, RAM_DT from iqdbc.car.chrysler.values import RAM_CARS, CarControllerParams, ChryslerFlags, RAM_DT
from iqdbc.car.interfaces import CarControllerBase from iqdbc.car.interfaces import CarControllerBase
from iqdbc.iqpilot.car.chrysler.carcontroller_ext import CarControllerExt from iqdbc.lvbs.car.chrysler.iq_carcontroller import IQCarController
from iqdbc.iqpilot.car.chrysler.aol import AolCarController from iqdbc.lvbs.car.chrysler.aol import AolCarController
from iqdbc.iqpilot.car.chrysler.values_ext import ChryslerFlagsIQ from iqdbc.lvbs.car.chrysler.iq_values import ChryslerFlagsIQ
class CarController(CarControllerBase, AolCarController, CarControllerExt): class CarController(CarControllerBase, AolCarController, IQCarController):
def __init__(self, dbc_names, CP, CP_IQ): def __init__(self, dbc_names, CP, CP_IQ):
CarControllerBase.__init__(self, dbc_names, CP, CP_IQ) CarControllerBase.__init__(self, dbc_names, CP, CP_IQ)
AolCarController.__init__(self) AolCarController.__init__(self)
CarControllerExt.__init__(self, CP, CP_IQ) IQCarController.__init__(self, CP, CP_IQ)
self.apply_torque_last = 0 self.apply_torque_last = 0
self.hud_count = 0 self.hud_count = 0
@@ -58,7 +58,7 @@ class CarController(CarControllerBase, AolCarController, CarControllerExt):
# TODO: can we make this more sane? why is it different for all the cars? # TODO: can we make this more sane? why is it different for all the cars?
lkas_control_bit = self.lkas_control_bit_prev lkas_control_bit = self.lkas_control_bit_prev
if self.CP_IQ.flags & ChryslerFlagsIQ.NO_MIN_STEERING_SPEED or self.CP.carFingerprint in RAM_DT: if self.CP_IQ.flags & ChryslerFlagsIQ.NO_MIN_STEERING_SPEED or self.CP.carFingerprint in RAM_DT:
lkas_control_bit = CarControllerExt.get_lkas_control_bit(self, CS, CC, lkas_control_bit) lkas_control_bit = IQCarController.get_lkas_control_bit(self, CS, CC, lkas_control_bit)
elif CS.out.vEgo > self.CP.minSteerSpeed: elif CS.out.vEgo > self.CP.minSteerSpeed:
lkas_control_bit = True lkas_control_bit = True
elif self.CP.flags & ChryslerFlags.HIGHER_MIN_STEERING_SPEED: elif self.CP.flags & ChryslerFlags.HIGHER_MIN_STEERING_SPEED:

View File

@@ -4,17 +4,17 @@ from iqdbc.car.chrysler.values import DBC, STEER_THRESHOLD, RAM_CARS
from iqdbc.car.common.conversions import Conversions as CV from iqdbc.car.common.conversions import Conversions as CV
from iqdbc.car.interfaces import CarStateBase from iqdbc.car.interfaces import CarStateBase
from iqdbc.iqpilot.car.chrysler.aol import AolCarState from iqdbc.lvbs.car.chrysler.aol import AolCarState
from iqdbc.iqpilot.car.chrysler.carstate_ext import CarStateExt from iqdbc.lvbs.car.chrysler.iq_carstate import IQCarState
ButtonType = structs.CarState.ButtonEvent.Type ButtonType = structs.CarState.ButtonEvent.Type
class CarState(CarStateBase, AolCarState, CarStateExt): class CarState(CarStateBase, AolCarState, IQCarState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
AolCarState.__init__(self, CP, CP_IQ) AolCarState.__init__(self, CP, CP_IQ)
CarStateExt.__init__(self, CP, CP_IQ) IQCarState.__init__(self, CP, CP_IQ)
self.CP = CP self.CP = CP
can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt]) can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt])
@@ -102,7 +102,7 @@ class CarState(CarStateBase, AolCarState, CarStateExt):
self.button_counter = cp.vl["CRUISE_BUTTONS"]["COUNTER"] self.button_counter = cp.vl["CRUISE_BUTTONS"]["COUNTER"]
AolCarState.update_aol(self, ret, can_parsers) AolCarState.update_aol(self, ret, can_parsers)
CarStateExt.update(self, ret, ret_iq, can_parsers) IQCarState.update(self, ret, ret_iq, can_parsers)
ret.buttonEvents = [ ret.buttonEvents = [
*create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise}), *create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise}),

View File

@@ -1,8 +1,8 @@
""" AUTO-FORMATTED USING iqdbc/car/debug/format_fingerprints.py, EDIT STRUCTURE THERE.""" """ AUTO-FORMATTED USING iqdbc/car/debug/format_fingerprints.py, EDIT STRUCTURE THERE."""
from iqdbc.car.structs import CarParams from iqdbc.car.structs import CarParams
from iqdbc.car.chrysler.values import CAR from iqdbc.car.chrysler.values import CAR
from iqdbc.iqpilot.car.fingerprints_ext import merge_fw_versions from iqdbc.lvbs.car.iq_fingerprints import extend_fw_versions
from iqdbc.iqpilot.car.chrysler.fingerprints_ext import FW_VERSIONS_EXT from iqdbc.lvbs.car.chrysler.iq_fingerprints import FW_VERSIONS_EXT
Ecu = CarParams.Ecu Ecu = CarParams.Ecu
@@ -791,4 +791,4 @@ FW_VERSIONS = {
FW_VERSIONS = merge_fw_versions(FW_VERSIONS, FW_VERSIONS_EXT) FW_VERSIONS = extend_fw_versions(FW_VERSIONS, FW_VERSIONS_EXT)

View File

@@ -5,7 +5,7 @@ from iqdbc.car.chrysler.carstate import CarState
from iqdbc.car.chrysler.radar_interface import RadarInterface from iqdbc.car.chrysler.radar_interface import RadarInterface
from iqdbc.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags, ChryslerSafetyFlags from iqdbc.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags, ChryslerSafetyFlags
from iqdbc.car.interfaces import CarInterfaceBase from iqdbc.car.interfaces import CarInterfaceBase
from iqdbc.iqpilot.car.chrysler.values_ext import ChryslerFlagsIQ from iqdbc.lvbs.car.chrysler.iq_values import ChryslerFlagsIQ
class CarInterface(CarInterfaceBase): class CarInterface(CarInterfaceBase):

View File

@@ -5,8 +5,8 @@ from iqdbc.car.common.conversions import Conversions as CV
from iqdbc.car.interfaces import CarStateBase from iqdbc.car.interfaces import CarStateBase
from iqdbc.car.gm.values import DBC, AccState, CruiseButtons, STEER_THRESHOLD, SDGM_CAR, ALT_ACCS from iqdbc.car.gm.values import DBC, AccState, CruiseButtons, STEER_THRESHOLD, SDGM_CAR, ALT_ACCS
from iqdbc.iqpilot.car.gm.carstate_ext import CarStateExt from iqdbc.lvbs.car.gm.iq_carstate import IQCarState
from iqdbc.iqpilot.car.gm.values_ext import GMFlagsIQ from iqdbc.lvbs.car.gm.iq_values import GMFlagsIQ
ButtonType = structs.CarState.ButtonEvent.Type ButtonType = structs.CarState.ButtonEvent.Type
TransmissionType = structs.CarParams.TransmissionType TransmissionType = structs.CarParams.TransmissionType
@@ -18,10 +18,10 @@ BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.D
CruiseButtons.MAIN: ButtonType.mainCruise, CruiseButtons.CANCEL: ButtonType.cancel} CruiseButtons.MAIN: ButtonType.mainCruise, CruiseButtons.CANCEL: ButtonType.cancel}
class CarState(CarStateBase, CarStateExt): class CarState(CarStateBase, IQCarState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
CarStateExt.__init__(self, CP, CP_IQ) IQCarState.__init__(self, CP, CP_IQ)
can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt]) can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt])
self.shifter_values = can_define.dv["ECMPRDNL2"]["PRNDL2"] self.shifter_values = can_define.dv["ECMPRDNL2"]["PRNDL2"]
self.cluster_speed_hyst_gap = CV.KPH_TO_MS / 2. self.cluster_speed_hyst_gap = CV.KPH_TO_MS / 2.
@@ -163,7 +163,7 @@ class CarState(CarStateBase, CarStateExt):
if ret.vEgo < self.CP.minSteerSpeed: if ret.vEgo < self.CP.minSteerSpeed:
ret.lowSpeedAlert = True ret.lowSpeedAlert = True
CarStateExt.update(self, ret, can_parsers) IQCarState.update(self, ret, can_parsers)
return ret, ret_iq return ret, ret_iq

View File

@@ -1,8 +1,8 @@
# ruff: noqa: E501 # ruff: noqa: E501
""" AUTO-FORMATTED USING iqdbc/car/debug/format_fingerprints.py, EDIT STRUCTURE THERE.""" """ AUTO-FORMATTED USING iqdbc/car/debug/format_fingerprints.py, EDIT STRUCTURE THERE."""
from iqdbc.car.gm.values import CAR from iqdbc.car.gm.values import CAR
from iqdbc.iqpilot.car.fingerprints_ext import merge_fingerprints from iqdbc.lvbs.car.iq_fingerprints import extend_fingerprints
from iqdbc.iqpilot.car.gm.fingerprints_ext import FINGERPRINTS_EXT from iqdbc.lvbs.car.gm.iq_fingerprints import FINGERPRINTS_EXT
# Trailblazer also matches as a SILVERADO, TODO: split with fw versions # Trailblazer also matches as a SILVERADO, TODO: split with fw versions
# FIXME: There are Equinox users with different message lengths, specifically 304 and 320 # FIXME: There are Equinox users with different message lengths, specifically 304 and 320
@@ -81,4 +81,4 @@ FW_VERSIONS: dict[str, dict[tuple, list[bytes]]] = {
} }
FINGERPRINTS = merge_fingerprints(FINGERPRINTS, FINGERPRINTS_EXT) FINGERPRINTS = extend_fingerprints(FINGERPRINTS, FINGERPRINTS_EXT)

View File

@@ -10,8 +10,8 @@ from iqdbc.car.gm.radar_interface import RadarInterface, RADAR_HEADER_MSG, CAMER
from iqdbc.car.gm.values import CAR, CarControllerParams, EV_CAR, CAMERA_ACC_CAR, SDGM_CAR, ALT_ACCS, CanBus, GMSafetyFlags from iqdbc.car.gm.values import CAR, CarControllerParams, EV_CAR, CAMERA_ACC_CAR, SDGM_CAR, ALT_ACCS, CanBus, GMSafetyFlags
from iqdbc.car.interfaces import CarInterfaceBase, TorqueFromLateralAccelCallbackType, LateralAccelFromTorqueCallbackType from iqdbc.car.interfaces import CarInterfaceBase, TorqueFromLateralAccelCallbackType, LateralAccelFromTorqueCallbackType
from iqdbc.iqpilot.car.gm.interface_ext import CarInterfaceExt from iqdbc.lvbs.car.gm.iq_interface import IQCarInterface
from iqdbc.iqpilot.car.gm.values_ext import GMFlagsIQ, GMSafetyFlagsIQ from iqdbc.lvbs.car.gm.iq_values import GMFlagsIQ, GMSafetyFlagsIQ
TransmissionType = structs.CarParams.TransmissionType TransmissionType = structs.CarParams.TransmissionType
NetworkLocation = structs.CarParams.NetworkLocation NetworkLocation = structs.CarParams.NetworkLocation
@@ -30,7 +30,7 @@ NON_LINEAR_TORQUE_PARAMS = {
} }
class CarInterface(CarInterfaceBase, CarInterfaceExt): class CarInterface(CarInterfaceBase, IQCarInterface):
CarState = CarState CarState = CarState
CarController = CarController CarController = CarController
RadarInterface = RadarInterface RadarInterface = RadarInterface
@@ -40,7 +40,7 @@ class CarInterface(CarInterfaceBase, CarInterfaceExt):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarInterfaceBase.__init__(self, CP, CP_IQ) CarInterfaceBase.__init__(self, CP, CP_IQ)
CarInterfaceExt.__init__(self, CP, CarInterfaceBase) IQCarInterface.__init__(self, CP, CarInterfaceBase)
@staticmethod @staticmethod
def get_pid_accel_limits(CP, CP_IQ, current_speed, cruise_speed): def get_pid_accel_limits(CP, CP_IQ, current_speed, cruise_speed):

View File

@@ -4,7 +4,7 @@ from enum import Enum, IntFlag
from iqdbc.car import Bus, PlatformConfig, DbcDict, Platforms, CarSpecs from iqdbc.car import Bus, PlatformConfig, DbcDict, Platforms, CarSpecs
from iqdbc.car.structs import CarParams from iqdbc.car.structs import CarParams
from iqdbc.car.docs_definitions import CarDocs, CarFootnote, CarHarness, CarParts, Column, SupportType from iqdbc.car.docs_definitions import CarDocs, CarFootnote, CarHarness, CarParts, Column, SupportType
from iqdbc.iqpilot.car.gm.values_ext import GMFlagsIQ from iqdbc.lvbs.car.gm.iq_values import GMFlagsIQ
from iqdbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries from iqdbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries
Ecu = CarParams.Ecu Ecu = CarParams.Ecu

View File

@@ -8,8 +8,8 @@ from iqdbc.car.honda.values import CAR, CruiseButtons, HONDA_BOSCH, HONDA_BOSCH_
HONDA_BOSCH_TJA_CONTROL, HONDA_NIDEC_ALT_PCM_ACCEL, CarControllerParams HONDA_BOSCH_TJA_CONTROL, HONDA_NIDEC_ALT_PCM_ACCEL, CarControllerParams
from iqdbc.car.interfaces import CarControllerBase from iqdbc.car.interfaces import CarControllerBase
from iqdbc.iqpilot.car.honda.aol import AolCarController from iqdbc.lvbs.car.honda.aol import AolCarController
from iqdbc.iqpilot.car.honda.gas_interceptor import GasInterceptorCarController from iqdbc.lvbs.car.honda.gas_interceptor import GasInterceptorCarController
VisualAlert = structs.CarControl.HUDControl.VisualAlert VisualAlert = structs.CarControl.HUDControl.VisualAlert
LongCtrlState = structs.CarControl.Actuators.LongControlState LongCtrlState = structs.CarControl.Actuators.LongControlState

View File

@@ -10,7 +10,7 @@ from iqdbc.car.honda.values import CAR, DBC, STEER_THRESHOLD, HONDA_BOSCH, HONDA
HondaFlags, CruiseButtons, CruiseSettings, GearShifter, CarControllerParams HondaFlags, CruiseButtons, CruiseSettings, GearShifter, CarControllerParams
from iqdbc.car.interfaces import CarStateBase from iqdbc.car.interfaces import CarStateBase
from iqdbc.iqpilot.car.honda.carstate_ext import CarStateExt from iqdbc.lvbs.car.honda.iq_carstate import IQCarState
TransmissionType = structs.CarParams.TransmissionType TransmissionType = structs.CarParams.TransmissionType
ButtonType = structs.CarState.ButtonEvent.Type ButtonType = structs.CarState.ButtonEvent.Type
@@ -20,10 +20,10 @@ BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.D
SETTINGS_BUTTONS_DICT = {CruiseSettings.DISTANCE: ButtonType.gapAdjustCruise, CruiseSettings.LKAS: ButtonType.lkas} SETTINGS_BUTTONS_DICT = {CruiseSettings.DISTANCE: ButtonType.gapAdjustCruise, CruiseSettings.LKAS: ButtonType.lkas}
class CarState(CarStateBase, CarStateExt): class CarState(CarStateBase, IQCarState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
CarStateExt.__init__(self, CP, CP_IQ) IQCarState.__init__(self, CP, CP_IQ)
can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt]) can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt])
if CP.transmissionType != TransmissionType.manual: if CP.transmissionType != TransmissionType.manual:
@@ -246,7 +246,7 @@ class CarState(CarStateBase, CarStateExt):
*create_button_events(self.cruise_setting, prev_cruise_setting, SETTINGS_BUTTONS_DICT), *create_button_events(self.cruise_setting, prev_cruise_setting, SETTINGS_BUTTONS_DICT),
] ]
CarStateExt.update(self, ret, can_parsers) IQCarState.update(self, ret, can_parsers)
return ret, ret_iq return ret, ret_iq

View File

@@ -2,8 +2,8 @@
from iqdbc.car.structs import CarParams from iqdbc.car.structs import CarParams
from iqdbc.car.honda.values import CAR from iqdbc.car.honda.values import CAR
from iqdbc.iqpilot.car.fingerprints_ext import merge_fw_versions from iqdbc.lvbs.car.iq_fingerprints import extend_fw_versions
from iqdbc.iqpilot.car.honda.fingerprints_ext import FW_VERSIONS_EXT from iqdbc.lvbs.car.honda.iq_fingerprints import FW_VERSIONS_EXT
Ecu = CarParams.Ecu Ecu = CarParams.Ecu
@@ -1098,4 +1098,4 @@ FW_VERSIONS = {
}, },
} }
FW_VERSIONS = merge_fw_versions(FW_VERSIONS, FW_VERSIONS_EXT) FW_VERSIONS = extend_fw_versions(FW_VERSIONS, FW_VERSIONS_EXT)

View File

@@ -2,7 +2,7 @@ from iqdbc.car import CanBusBase
from iqdbc.car.common.conversions import Conversions as CV from iqdbc.car.common.conversions import Conversions as CV
from iqdbc.car.honda.values import (HondaFlags, HONDA_BOSCH, HONDA_BOSCH_ALT_RADAR, HONDA_BOSCH_RADARLESS, from iqdbc.car.honda.values import (HondaFlags, HONDA_BOSCH, HONDA_BOSCH_ALT_RADAR, HONDA_BOSCH_RADARLESS,
HONDA_BOSCH_CANFD, CarControllerParams) HONDA_BOSCH_CANFD, CarControllerParams)
from iqdbc.iqpilot.car.honda.values_ext import HondaFlagsIQ from iqdbc.lvbs.car.honda.iq_values import HondaFlagsIQ
# CAN bus layout with relay # CAN bus layout with relay
# 0 = ACC-CAN - radar side # 0 = ACC-CAN - radar side

View File

@@ -11,7 +11,7 @@ from iqdbc.car.honda.carstate import CarState
from iqdbc.car.honda.radar_interface import RadarInterface from iqdbc.car.honda.radar_interface import RadarInterface
from iqdbc.car.interfaces import CarInterfaceBase from iqdbc.car.interfaces import CarInterfaceBase
from iqdbc.iqpilot.car.honda.values_ext import HondaFlagsIQ, HondaSafetyFlagsIQ from iqdbc.lvbs.car.honda.iq_values import HondaFlagsIQ, HondaSafetyFlagsIQ
TransmissionType = structs.CarParams.TransmissionType TransmissionType = structs.CarParams.TransmissionType

View File

@@ -18,7 +18,7 @@ from iqdbc.car.values import PLATFORMS
from iqdbc.can import CANParser from iqdbc.can import CANParser
from iqdbc.car.carlog import carlog from iqdbc.car.carlog import carlog
from iqdbc.iqpilot.car.interfaces import CarInterfaceBaseIQ from iqdbc.lvbs.car.interfaces import CarInterfaceBaseIQ
GearShifter = structs.CarState.GearShifter GearShifter = structs.CarState.GearShifter
ButtonType = structs.CarState.ButtonEvent.Type ButtonType = structs.CarState.ButtonEvent.Type

View File

@@ -6,17 +6,17 @@ from iqdbc.car.common.conversions import Conversions as CV
from iqdbc.car.interfaces import CarStateBase from iqdbc.car.interfaces import CarStateBase
from iqdbc.car.nissan.values import CAR, DBC, CarControllerParams from iqdbc.car.nissan.values import CAR, DBC, CarControllerParams
from iqdbc.iqpilot.car.nissan.carstate_ext import CarStateExt from iqdbc.lvbs.car.nissan.iq_carstate import IQCarState
ButtonType = structs.CarState.ButtonEvent.Type ButtonType = structs.CarState.ButtonEvent.Type
TORQUE_SAMPLES = 12 TORQUE_SAMPLES = 12
class CarState(CarStateBase, CarStateExt): class CarState(CarStateBase, IQCarState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
CarStateExt.__init__(self, CP, CP_IQ) IQCarState.__init__(self, CP, CP_IQ)
can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt]) can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt])
self.lkas_hud_msg = {} self.lkas_hud_msg = {}
@@ -130,7 +130,7 @@ class CarState(CarStateBase, CarStateExt):
self.lkas_hud_msg = copy.copy(cp_adas.vl["PROPILOT_HUD"]) self.lkas_hud_msg = copy.copy(cp_adas.vl["PROPILOT_HUD"])
self.lkas_hud_info_msg = copy.copy(cp_adas.vl["PROPILOT_HUD_INFO_MSG"]) self.lkas_hud_info_msg = copy.copy(cp_adas.vl["PROPILOT_HUD_INFO_MSG"])
CarStateExt.update(self, ret, ret_iq, can_parsers) IQCarState.update(self, ret, ret_iq, can_parsers)
ret.buttonEvents = [ ret.buttonEvents = [
*create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise}), *create_button_events(self.distance_button, prev_distance_button, {1: ButtonType.gapAdjustCruise}),

View File

@@ -3,7 +3,7 @@ from iqdbc.car.interfaces import CarInterfaceBase
from iqdbc.car.nissan.carcontroller import CarController from iqdbc.car.nissan.carcontroller import CarController
from iqdbc.car.nissan.carstate import CarState from iqdbc.car.nissan.carstate import CarState
from iqdbc.car.nissan.values import CAR, NissanSafetyFlags from iqdbc.car.nissan.values import CAR, NissanSafetyFlags
from iqdbc.iqpilot.car.nissan.values import NissanSafetyFlagsIQ from iqdbc.lvbs.car.nissan.values import NissanSafetyFlagsIQ
class CarInterface(CarInterfaceBase): class CarInterface(CarInterfaceBase):
CarState = CarState CarState = CarState

View File

@@ -6,7 +6,7 @@ from iqdbc.car.interfaces import CarControllerBase
from iqdbc.car.rivian.riviancan import create_lka_steering, create_longitudinal, create_wheel_touch, create_adas_status from iqdbc.car.rivian.riviancan import create_lka_steering, create_longitudinal, create_wheel_touch, create_adas_status
from iqdbc.car.rivian.values import CarControllerParams from iqdbc.car.rivian.values import CarControllerParams
from iqdbc.iqpilot.car.rivian.aol import AolCarController from iqdbc.lvbs.car.rivian.aol import AolCarController
class CarController(CarControllerBase, AolCarController): class CarController(CarControllerBase, AolCarController):

View File

@@ -4,15 +4,15 @@ from iqdbc.car import Bus, structs
from iqdbc.car.interfaces import CarStateBase from iqdbc.car.interfaces import CarStateBase
from iqdbc.car.rivian.values import DBC, GEAR_MAP from iqdbc.car.rivian.values import DBC, GEAR_MAP
from iqdbc.car.common.conversions import Conversions as CV from iqdbc.car.common.conversions import Conversions as CV
from iqdbc.iqpilot.car.rivian.carstate_ext import CarStateExt from iqdbc.lvbs.car.rivian.iq_carstate import IQCarState
GearShifter = structs.CarState.GearShifter GearShifter = structs.CarState.GearShifter
class CarState(CarStateBase, CarStateExt): class CarState(CarStateBase, IQCarState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
CarStateExt.__init__(self, CP, CP_IQ) IQCarState.__init__(self, CP, CP_IQ)
self.last_speed = 30 self.last_speed = 30
self.acm_lka_hba_cmd = None self.acm_lka_hba_cmd = None
@@ -95,7 +95,7 @@ class CarState(CarStateBase, CarStateExt):
self.sccm_wheel_touch = copy.copy(cp.vl["SCCM_WheelTouch"]) self.sccm_wheel_touch = copy.copy(cp.vl["SCCM_WheelTouch"])
self.vdm_adas_status = copy.copy(cp.vl["VDM_AdasSts"]) self.vdm_adas_status = copy.copy(cp.vl["VDM_AdasSts"])
CarStateExt.update(self, ret, can_parsers) IQCarState.update(self, ret, can_parsers)
return ret, ret_iq return ret, ret_iq
@@ -105,5 +105,5 @@ class CarState(CarStateBase, CarStateExt):
Bus.pt: CANParser(DBC[CP.carFingerprint][Bus.pt], [], 0), Bus.pt: CANParser(DBC[CP.carFingerprint][Bus.pt], [], 0),
Bus.adas: CANParser(DBC[CP.carFingerprint][Bus.pt], [], 1), Bus.adas: CANParser(DBC[CP.carFingerprint][Bus.pt], [], 1),
Bus.cam: CANParser(DBC[CP.carFingerprint][Bus.pt], [], 2), Bus.cam: CANParser(DBC[CP.carFingerprint][Bus.pt], [], 2),
**CarStateExt.get_parser(CP, CP_IQ), **IQCarState.get_parser(CP, CP_IQ),
} }

View File

@@ -4,7 +4,7 @@ from iqdbc.car.rivian.carcontroller import CarController
from iqdbc.car.rivian.carstate import CarState from iqdbc.car.rivian.carstate import CarState
from iqdbc.car.rivian.radar_interface import RadarInterface from iqdbc.car.rivian.radar_interface import RadarInterface
from iqdbc.car.rivian.values import RivianSafetyFlags from iqdbc.car.rivian.values import RivianSafetyFlags
from iqdbc.iqpilot.car.rivian.values import RivianFlagsIQ from iqdbc.lvbs.car.rivian.values import RivianFlagsIQ
class CarInterface(CarInterfaceBase): class CarInterface(CarInterfaceBase):

View File

@@ -6,7 +6,7 @@ from iqdbc.car.interfaces import CarControllerBase
from iqdbc.car.subaru import subarucan from iqdbc.car.subaru import subarucan
from iqdbc.car.subaru.values import DBC, GLOBAL_ES_ADDR, CanBus, CarControllerParams, SubaruFlags from iqdbc.car.subaru.values import DBC, GLOBAL_ES_ADDR, CanBus, CarControllerParams, SubaruFlags
from iqdbc.iqpilot.car.subaru.stop_and_go import SnGCarController from iqdbc.lvbs.car.subaru.stop_and_go import IQStopAndGoController
# FIXME: These limits aren't exact. The real limit is more than likely over a larger time period and # FIXME: These limits aren't exact. The real limit is more than likely over a larger time period and
# involves the total steering angle change rather than rate, but these limits work well for now # involves the total steering angle change rather than rate, but these limits work well for now
@@ -14,10 +14,10 @@ MAX_STEER_RATE = 25 # deg/s
MAX_STEER_RATE_FRAMES = 7 # tx control frames needed before torque can be cut MAX_STEER_RATE_FRAMES = 7 # tx control frames needed before torque can be cut
class CarController(CarControllerBase, SnGCarController): class CarController(CarControllerBase, IQStopAndGoController):
def __init__(self, dbc_names, CP, CP_IQ): def __init__(self, dbc_names, CP, CP_IQ):
CarControllerBase.__init__(self, dbc_names, CP, CP_IQ) CarControllerBase.__init__(self, dbc_names, CP, CP_IQ)
SnGCarController.__init__(self, CP, CP_IQ) IQStopAndGoController.__init__(self, CP, CP_IQ)
self.apply_torque_last = 0 self.apply_torque_last = 0
self.cruise_button_prev = 0 self.cruise_button_prev = 0
@@ -139,7 +139,7 @@ class CarController(CarControllerBase, SnGCarController):
if self.frame % 2 == 0: if self.frame % 2 == 0:
can_sends.append(subarucan.create_es_static_2(self.packer)) can_sends.append(subarucan.create_es_static_2(self.packer))
can_sends.extend(SnGCarController.create_stop_and_go(self, self.packer, CC, CS, self.frame)) can_sends.extend(IQStopAndGoController.create_stop_and_go(self, self.packer, CC, CS, self.frame))
new_actuators = actuators.as_builder() new_actuators = actuators.as_builder()
new_actuators.torque = self.apply_torque_last / self.p.STEER_MAX new_actuators.torque = self.apply_torque_last / self.p.STEER_MAX

View File

@@ -6,15 +6,15 @@ from iqdbc.car.interfaces import CarStateBase
from iqdbc.car.subaru.values import DBC, CanBus, SubaruFlags from iqdbc.car.subaru.values import DBC, CanBus, SubaruFlags
from iqdbc.car import CanSignalRateCalculator from iqdbc.car import CanSignalRateCalculator
from iqdbc.iqpilot.car.subaru.aol import AolCarState from iqdbc.lvbs.car.subaru.aol import AolCarState
from iqdbc.iqpilot.car.subaru.stop_and_go import SnGCarState from iqdbc.lvbs.car.subaru.stop_and_go import IQStopAndGoState
class CarState(CarStateBase, AolCarState, SnGCarState): class CarState(CarStateBase, AolCarState, IQStopAndGoState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
AolCarState.__init__(self, CP, CP_IQ) AolCarState.__init__(self, CP, CP_IQ)
SnGCarState.__init__(self, CP, CP_IQ) IQStopAndGoState.__init__(self, CP, CP_IQ)
can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt]) can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt])
self.shifter_values = can_define.dv["Transmission"]["Gear"] self.shifter_values = can_define.dv["Transmission"]["Gear"]
@@ -144,7 +144,7 @@ class CarState(CarStateBase, AolCarState, SnGCarState):
self.es_infotainment_msg = copy.copy(cp_cam.vl["ES_Infotainment"]) self.es_infotainment_msg = copy.copy(cp_cam.vl["ES_Infotainment"])
AolCarState.update_aol(self, ret, can_parsers) AolCarState.update_aol(self, ret, can_parsers)
SnGCarState.update(self, ret, can_parsers) IQStopAndGoState.update(self, ret, can_parsers)
return ret, ret_iq return ret, ret_iq

View File

@@ -8,8 +8,8 @@ from iqdbc.car.tesla.teslacan import TeslaCAN
from iqdbc.car.tesla.values import CarControllerParams from iqdbc.car.tesla.values import CarControllerParams
from iqdbc.car.vehicle_model import VehicleModel from iqdbc.car.vehicle_model import VehicleModel
from openpilot.iqpilot.selfdrive.car.enhanced_stock_longitudinal_control import get_set_speed_kph_from_params from openpilot.iqpilot.selfdrive.car.enhanced_stock_longitudinal_control import get_set_speed_kph_from_params
from iqdbc.iqpilot.car.tesla.coop_steering import CoopSteeringCarController from iqdbc.lvbs.car.tesla.coop_steering import CoopSteeringCarController
from iqdbc.iqpilot.car.tesla.values import TeslaFlagsIQ from iqdbc.lvbs.car.tesla.values import TeslaFlagsIQ
def get_safety_CP(): def get_safety_CP():

View File

@@ -6,8 +6,8 @@ from iqdbc.car.interfaces import CarStateBase
from iqdbc.car.tesla import TESLA_BLINKERS from iqdbc.car.tesla import TESLA_BLINKERS
from iqdbc.car.tesla.values import DBC, CANBUS, GEAR_MAP, STEER_THRESHOLD, TeslaFlags from iqdbc.car.tesla.values import DBC, CANBUS, GEAR_MAP, STEER_THRESHOLD, TeslaFlags
from iqdbc.iqpilot.car.tesla.carstate_ext import CarStateExt from iqdbc.lvbs.car.tesla.iq_carstate import IQCarState
from iqdbc.iqpilot.car.tesla.values import TeslaFlagsIQ from iqdbc.lvbs.car.tesla.values import TeslaFlagsIQ
from openpilot.common.params import Params from openpilot.common.params import Params
from openpilot.system.proprietary_runtime._verified_import import import_verified_module from openpilot.system.proprietary_runtime._verified_import import import_verified_module
@@ -16,10 +16,10 @@ vehicle_state = import_verified_module("iqpilot_alc_private", "iqpilot_private.k
ButtonType = structs.CarState.ButtonEvent.Type ButtonType = structs.CarState.ButtonEvent.Type
class CarState(CarStateBase, CarStateExt): class CarState(CarStateBase, IQCarState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
CarStateExt.__init__(self, CP, CP_IQ) IQCarState.__init__(self, CP, CP_IQ)
self.can_define = CANDefine(DBC[CP.carFingerprint][Bus.party]) self.can_define = CANDefine(DBC[CP.carFingerprint][Bus.party])
self.shifter_values = self.can_define.dv["DI_systemStatus"]["DI_gear"] self.shifter_values = self.can_define.dv["DI_systemStatus"]["DI_gear"]
@@ -159,7 +159,7 @@ class CarState(CarStateBase, CarStateExt):
if TESLA_BLINKERS and Bus.cam in can_parsers: if TESLA_BLINKERS and Bus.cam in can_parsers:
self.das_body_controls_dat = bytes(can_parsers[Bus.cam].dat.get(0x3E9, b"")) self.das_body_controls_dat = bytes(can_parsers[Bus.cam].dat.get(0x3E9, b""))
CarStateExt.update(self, ret, ret_iq, can_parsers) IQCarState.update(self, ret, ret_iq, can_parsers)
if ret.odometer > 0.0: if ret.odometer > 0.0:
ret.odometer = self._odometer_store.record(ret.odometer) or 0.0 ret.odometer = self._odometer_store.record(ret.odometer) or 0.0
@@ -170,7 +170,7 @@ class CarState(CarStateBase, CarStateExt):
parsers = { parsers = {
Bus.party: CANParser(DBC[CP.carFingerprint][Bus.party], [], CANBUS.party), Bus.party: CANParser(DBC[CP.carFingerprint][Bus.party], [], CANBUS.party),
Bus.ap_party: CANParser(DBC[CP.carFingerprint][Bus.party], [], CANBUS.autopilot_party), Bus.ap_party: CANParser(DBC[CP.carFingerprint][Bus.party], [], CANBUS.autopilot_party),
**CarStateExt.get_parser(CP, CP_IQ), **IQCarState.get_parser(CP, CP_IQ),
} }
# Stock DAS_bodyControls from the AP bus (bus 2) for the nav blinker. # Stock DAS_bodyControls from the AP bus (bus 2) for the nav blinker.
if TESLA_BLINKERS and CP_IQ.flags & TeslaFlagsIQ.HAS_VEHICLE_BUS and Bus.adas in DBC[CP.carFingerprint]: if TESLA_BLINKERS and CP_IQ.flags & TeslaFlagsIQ.HAS_VEHICLE_BUS and Bus.adas in DBC[CP.carFingerprint]:

View File

@@ -5,7 +5,7 @@ from iqdbc.car.tesla.carstate import CarState
from iqdbc.car.tesla.values import TeslaSafetyFlags, TeslaFlags, CANBUS, CAR, DBC, LEGACY_DAS_STEERING_FW, Ecu from iqdbc.car.tesla.values import TeslaSafetyFlags, TeslaFlags, CANBUS, CAR, DBC, LEGACY_DAS_STEERING_FW, Ecu
from iqdbc.car.tesla.radar_interface import RadarInterface, RADAR_START_ADDR from iqdbc.car.tesla.radar_interface import RadarInterface, RADAR_START_ADDR
from iqdbc.iqpilot.car.tesla.values import TeslaFlagsIQ, TeslaSafetyFlagsIQ from iqdbc.lvbs.car.tesla.values import TeslaFlagsIQ, TeslaSafetyFlagsIQ
class CarInterface(CarInterfaceBase): class CarInterface(CarInterfaceBase):

View File

@@ -115,3 +115,24 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
"HYUNDAI_CASPER_EV"= [2.5, 2.5, 0.1] "HYUNDAI_CASPER_EV"= [2.5, 2.5, 0.1]
"HYUNDAI_IONIQ_5_N" = [3.17, 2.71, 0.097] "HYUNDAI_IONIQ_5_N" = [3.17, 2.71, 0.097]
"HYUNDAI_IONIQ_5_PE" = [1.75, 1.75, 0.15] "HYUNDAI_IONIQ_5_PE" = [1.75, 1.75, 0.15]
# Synced verbatim from comma opendbc torque_data/override.toml — these platforms
# exist upstream and were simply never carried over when iqdbc forked.
ACURA_MDX_4G_MMR = [1.25, 1.25, 0.15]
ACURA_TLX_2G = [1.2, 1.2, 0.15]
ACURA_TLX_2G_MMR = [1.7, 1.7, 0.16]
AUDI_Q5_MK1 = [1.8, 1.8, 0.18]
CUPRA_BORN_MK1 = [nan, 2.5, nan]
FORD_ESCAPE_MK4_5 = [nan, 1.5, nan]
FORD_EXPEDITION_MK4 = [nan, 1.5, nan]
HONDA_ACCORD_11G = [1.35, 1.35, 0.17]
HONDA_CITY_7G = [1.2, 1.2, 0.23]
HONDA_CRV_6G = [1.3, 1.3, 0.2]
HONDA_NBOX_2G = [1.2, 1.2, 0.2]
HONDA_ODYSSEY_5G_MMR = [0.9, 0.9, 0.2]
HONDA_PASSPORT_4G = [1.2, 1.2, 0.16]
HONDA_PILOT_4G = [1.25, 1.25, 0.21]
LEXUS_LS = [1.35, 1.7, 0.17]
PORSCHE_MACAN_MK1 = [2.0, 2.0, 0.2]
PSA_PEUGEOT_208 = [nan, 2.0, nan]
TESLA_MODEL_X = [nan, 2.5, nan]

View File

@@ -110,3 +110,24 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
"CHEVROLET_TRAILBLAZER_NON_ACC_2ND_GEN" = "CHEVROLET_TRAILBLAZER" "CHEVROLET_TRAILBLAZER_NON_ACC_2ND_GEN" = "CHEVROLET_TRAILBLAZER"
"CHEVROLET_MALIBU_NON_ACC_9TH_GEN" = "CHEVROLET_VOLT" "CHEVROLET_MALIBU_NON_ACC_9TH_GEN" = "CHEVROLET_VOLT"
"CADILLAC_XT5_NON_ACC_1ST_GEN" = "CADILLAC_XT4" "CADILLAC_XT5_NON_ACC_1ST_GEN" = "CADILLAC_XT4"
# Synced verbatim from comma opendbc torque_data/substitute.toml
"HONDA_ODYSSEY_TWN" = "HONDA_ODYSSEY"
"LEXUS_RC_TSS2" = "LEXUS_NX_TSS2"
# Platform-sibling substitutes: comma has never shipped torque data for these,
# so rather than invent lateral-accel figures they borrow the tune of the closest
# platform twin. REVIEW: replace with measured values when available.
"SEAT_ALHAMBRA_MK1" = "VOLKSWAGEN_SHARAN_MK2"
"VOLKSWAGEN_PASSAT_NMS_PLUS" = "VOLKSWAGEN_PASSAT_NMS"
"VOLKSWAGEN_ID3_MK1" = "VOLKSWAGEN_ID4_MK1"
"VOLKSWAGEN_ID3_MK2" = "VOLKSWAGEN_ID4_MK2"
"SKODA_ENYAQ_MK1" = "VOLKSWAGEN_ID4_MK1"
"SKODA_ENYAQ_MK2" = "VOLKSWAGEN_ID4_MK2"
"AUDI_Q4_MK1" = "VOLKSWAGEN_ID4_MK1"
"AUDI_Q4_MK2" = "VOLKSWAGEN_ID4_MK2"
"VOLKSWAGEN_GOLF_MK8" = "VOLKSWAGEN_GOLF_MK7"
"SEAT_LEON_MK4" = "VOLKSWAGEN_GOLF_MK7"
"VOLKSWAGEN_PASSAT_MK7" = "VOLKSWAGEN_PASSAT_NMS"
"VOLKSWAGEN_PASSAT_B7" = "VOLKSWAGEN_PASSAT_NMS"
"HONDA_CLARITY" = "HONDA_ACCORD"

View File

@@ -13,8 +13,8 @@ from iqdbc.car.toyota.values import CAR, NO_STOP_TIMER_CAR, TSS2_CAR, \
UNSUPPORTED_DSU_CAR UNSUPPORTED_DSU_CAR
from iqdbc.can import CANPacker from iqdbc.can import CANPacker
from iqdbc.iqpilot.car.toyota.gas_interceptor import GasInterceptorCarController from iqdbc.lvbs.car.toyota.gas_interceptor import GasInterceptorCarController
from iqdbc.iqpilot.car.toyota.values import ToyotaFlagsIQ from iqdbc.lvbs.car.toyota.values import ToyotaFlagsIQ
Ecu = structs.CarParams.Ecu Ecu = structs.CarParams.Ecu
LongCtrlState = structs.CarControl.Actuators.LongControlState LongCtrlState = structs.CarControl.Actuators.LongControlState

View File

@@ -8,8 +8,8 @@ from iqdbc.car.interfaces import CarStateBase
from iqdbc.car.toyota.values import ToyotaFlags, CAR, DBC, STEER_THRESHOLD, NO_STOP_TIMER_CAR, \ from iqdbc.car.toyota.values import ToyotaFlags, CAR, DBC, STEER_THRESHOLD, NO_STOP_TIMER_CAR, \
TSS2_CAR, RADAR_ACC_CAR, EPS_SCALE, UNSUPPORTED_DSU_CAR, \ TSS2_CAR, RADAR_ACC_CAR, EPS_SCALE, UNSUPPORTED_DSU_CAR, \
SECOC_CAR SECOC_CAR
from iqdbc.iqpilot.car.toyota.carstate_ext import CarStateExt from iqdbc.lvbs.car.toyota.iq_carstate import IQCarState
from iqdbc.iqpilot.car.toyota.values import ToyotaFlagsIQ from iqdbc.lvbs.car.toyota.values import ToyotaFlagsIQ
ButtonType = structs.CarState.ButtonEvent.Type ButtonType = structs.CarState.ButtonEvent.Type
SteerControlType = structs.CarParams.SteerControlType SteerControlType = structs.CarParams.SteerControlType
@@ -26,10 +26,10 @@ TEMP_STEER_FAULTS = (0, 9, 11, 21, 25)
PERM_STEER_FAULTS = (3, 17) PERM_STEER_FAULTS = (3, 17)
class CarState(CarStateBase, CarStateExt): class CarState(CarStateBase, IQCarState):
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
CarStateBase.__init__(self, CP, CP_IQ) CarStateBase.__init__(self, CP, CP_IQ)
CarStateExt.__init__(self, CP, CP_IQ) IQCarState.__init__(self, CP, CP_IQ)
can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt]) can_define = CANDefine(DBC[CP.carFingerprint][Bus.pt])
self.eps_torque_scale = EPS_SCALE[CP.carFingerprint] / 100. self.eps_torque_scale = EPS_SCALE[CP.carFingerprint] / 100.
self.cluster_speed_hyst_gap = CV.KPH_TO_MS / 2. self.cluster_speed_hyst_gap = CV.KPH_TO_MS / 2.
@@ -210,7 +210,7 @@ class CarState(CarStateBase, CarStateExt):
ret.buttonEvents = buttonEvents ret.buttonEvents = buttonEvents
CarStateExt.update(self, ret, ret_iq, can_parsers) IQCarState.update(self, ret, ret_iq, can_parsers)
return ret, ret_iq return ret, ret_iq

View File

@@ -2,8 +2,8 @@
from iqdbc.car.structs import CarParams from iqdbc.car.structs import CarParams
from iqdbc.car.toyota.values import CAR from iqdbc.car.toyota.values import CAR
from iqdbc.iqpilot.car.fingerprints_ext import merge_fw_versions from iqdbc.lvbs.car.iq_fingerprints import extend_fw_versions
from iqdbc.iqpilot.car.toyota.fingerprints_ext import FW_VERSIONS_EXT from iqdbc.lvbs.car.toyota.iq_fingerprints import FW_VERSIONS_EXT
Ecu = CarParams.Ecu Ecu = CarParams.Ecu
@@ -1889,4 +1889,4 @@ FW_VERSIONS = {
}, },
} }
FW_VERSIONS = merge_fw_versions(FW_VERSIONS, FW_VERSIONS_EXT) FW_VERSIONS = extend_fw_versions(FW_VERSIONS, FW_VERSIONS_EXT)

View File

@@ -7,7 +7,7 @@ from iqdbc.car.toyota.values import Ecu, CAR, DBC, ToyotaFlags, CarControllerPar
ToyotaSafetyFlags, UNSUPPORTED_DSU_CAR ToyotaSafetyFlags, UNSUPPORTED_DSU_CAR
from iqdbc.car.disable_ecu import disable_ecu from iqdbc.car.disable_ecu import disable_ecu
from iqdbc.car.interfaces import CarInterfaceBase from iqdbc.car.interfaces import CarInterfaceBase
from iqdbc.iqpilot.car.toyota.values import ToyotaFlagsIQ, ToyotaSafetyFlagsIQ from iqdbc.lvbs.car.toyota.values import ToyotaFlagsIQ, ToyotaSafetyFlagsIQ
SteerControlType = structs.CarParams.SteerControlType SteerControlType = structs.CarParams.SteerControlType

View File

@@ -1,7 +1,7 @@
from iqdbc.car import gen_empty_fingerprint, structs from iqdbc.car import gen_empty_fingerprint, structs
from iqdbc.car.toyota.interface import CarInterface from iqdbc.car.toyota.interface import CarInterface
from iqdbc.car.toyota.values import CAR, ToyotaFlags from iqdbc.car.toyota.values import CAR, ToyotaFlags
from iqdbc.iqpilot.car.toyota.values import ToyotaFlagsIQ from iqdbc.lvbs.car.toyota.values import ToyotaFlagsIQ
def test_secoc_toyota_not_dashcam_on_release(): def test_secoc_toyota_not_dashcam_on_release():

View File

@@ -504,7 +504,7 @@ class CarState(CarStateBase):
ret.gasPressed = pt_cp.vl["Motor_3"]["MO3_Pedalwert"] > 0 ret.gasPressed = pt_cp.vl["Motor_3"]["MO3_Pedalwert"] > 0
ret.brake = pt_cp.vl["Bremse_5"]["BR5_Bremsdruck"] / 250.0 # FIXME: this is pressure in Bar, not sure what OP expects ret.brake = pt_cp.vl["Bremse_5"]["BR5_Bremsdruck"] / 250.0 # FIXME: this is pressure in Bar, not sure what OP expects
ret.brakePressed = bool(pt_cp.vl["Motor_2"]["MO2_BLS"]) ret.brakePressed = bool(pt_cp.vl["Motor_2"]["MO2_BLS"])
ret.parkingBrake = False # bool(pt_cp.vl["Kombi_1"]["Bremsinfo"]) ret.parkingBrake = bool(pt_cp.vl["Kombi_1"]["Bremsinfo"])
# Update gear and/or clutch position data. # Update gear and/or clutch position data.
if self.CP.transmissionType == TransmissionType.automatic: if self.CP.transmissionType == TransmissionType.automatic:
@@ -639,8 +639,8 @@ class CarState(CarStateBase):
ret.lowSpeedAlert = self.update_low_speed_alert(ret.vEgo) ret.lowSpeedAlert = self.update_low_speed_alert(ret.vEgo)
ret.fuelGauge = 0 # pt_cp.vl["Kombi_1"]["Tankinhalt"] / 55.0 ret.fuelGauge = pt_cp.vl["Kombi_1"]["Tankinhalt"] / 55.0
ret.fuelTankLevelL = 0 # pt_cp.vl["Kombi_1"]["Tankinhalt"] # raw liters for konn3kt ret.fuelTankLevelL = pt_cp.vl["Kombi_1"]["Tankinhalt"] # raw liters for konn3kt
if aux_cp is not None: if aux_cp is not None:
self._update_odometer(ret, aux_cp.vl["Kombi_3"]["Kilometerstand"]) self._update_odometer(ret, aux_cp.vl["Kombi_3"]["Kilometerstand"])

View File

@@ -10,7 +10,7 @@ from collections import namedtuple
from iqdbc.car import Bus, structs from iqdbc.car import Bus, structs
from iqdbc.car.chrysler.values import RAM_CARS from iqdbc.car.chrysler.values import RAM_CARS
from iqdbc.iqpilot.aol_base import AolCarStateBase from iqdbc.lvbs.aol_base import AolCarStateBase
from iqdbc.can.parser import CANParser from iqdbc.can.parser import CANParser
AolDataIQ = namedtuple("AolDataIQ", ["enable_aol", "paused", "lkas_disabled"]) AolDataIQ = namedtuple("AolDataIQ", ["enable_aol", "paused", "lkas_disabled"])

View File

@@ -7,12 +7,12 @@ no-min-steering-speed option is set, and holds the RAM DT engagement window.
from iqdbc.car import structs from iqdbc.car import structs
from iqdbc.car.interfaces import CarStateBase from iqdbc.car.interfaces import CarStateBase
from iqdbc.car.chrysler.values import RAM_DT from iqdbc.car.chrysler.values import RAM_DT
from iqdbc.iqpilot.car.chrysler.values_ext import ChryslerFlagsIQ from iqdbc.lvbs.car.chrysler.iq_values import ChryslerFlagsIQ
GearShifter = structs.CarState.GearShifter GearShifter = structs.CarState.GearShifter
class CarControllerExt: class IQCarController:
def __init__(self, CP: structs.CarParams, CP_IQ: structs.IQCarParams): def __init__(self, CP: structs.CarParams, CP_IQ: structs.IQCarParams):
self.CP = CP self.CP = CP
self.CP_IQ = CP_IQ self.CP_IQ = CP_IQ

View File

@@ -8,10 +8,10 @@ from enum import StrEnum
from iqdbc.car import Bus, structs from iqdbc.car import Bus, structs
from iqdbc.can.parser import CANParser from iqdbc.can.parser import CANParser
from iqdbc.iqpilot.car.chrysler.values_ext import BUTTONS from iqdbc.lvbs.car.chrysler.iq_values import BUTTONS
class CarStateExt: class IQCarState:
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
self.CP = CP self.CP = CP
self.CP_IQ = CP_IQ self.CP_IQ = CP_IQ

View File

@@ -9,10 +9,10 @@ from enum import StrEnum
from iqdbc.car import Bus, structs from iqdbc.car import Bus, structs
from iqdbc.car.common.conversions import Conversions as CV from iqdbc.car.common.conversions import Conversions as CV
from iqdbc.can.parser import CANParser from iqdbc.can.parser import CANParser
from iqdbc.iqpilot.car.gm.values_ext import GMFlagsIQ from iqdbc.lvbs.car.gm.iq_values import GMFlagsIQ
class CarStateExt: class IQCarState:
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
self.CP = CP self.CP = CP
self.CP_IQ = CP_IQ self.CP_IQ = CP_IQ

View File

@@ -8,7 +8,7 @@ from math import exp
from iqdbc.car import structs from iqdbc.car import structs
from iqdbc.car.gm.interface import CAR from iqdbc.car.gm.interface import CAR
from iqdbc.iqpilot.car.interfaces import LatControlInputs, TorqueFromLateralAccelCallbackTypeTorqueSpace from iqdbc.lvbs.car.interfaces import LatControlInputs, TorqueFromLateralAccelCallbackTypeTorqueSpace
_NON_LINEAR_TORQUE_PARAMS = { _NON_LINEAR_TORQUE_PARAMS = {
CAR.CHEVROLET_BOLT_EUV: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178], CAR.CHEVROLET_BOLT_EUV: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178],
@@ -17,7 +17,7 @@ _NON_LINEAR_TORQUE_PARAMS = {
} }
class CarInterfaceExt: class IQCarInterface:
def __init__(self, CP: structs.CarParams, CI_Base): def __init__(self, CP: structs.CarParams, CI_Base):
self.CP = CP self.CP = CP
self.CI_Base = CI_Base self.CI_Base = CI_Base

View File

@@ -6,7 +6,7 @@ import numpy as np
from iqdbc.car import structs from iqdbc.car import structs
from iqdbc.car.can_definitions import CanData from iqdbc.car.can_definitions import CanData
from iqdbc.iqpilot.car import create_gas_interceptor_command from iqdbc.lvbs.car import create_gas_interceptor_command
class GasInterceptorCarController: class GasInterceptorCarController:

View File

@@ -5,10 +5,10 @@ from enum import StrEnum
from iqdbc.car import Bus, structs from iqdbc.car import Bus, structs
from iqdbc.can.parser import CANParser from iqdbc.can.parser import CANParser
from iqdbc.iqpilot.car.honda.values_ext import HondaFlagsIQ from iqdbc.lvbs.car.honda.iq_values import HondaFlagsIQ
class CarStateExt: class IQCarState:
def __init__(self, CP, CP_IQ): def __init__(self, CP, CP_IQ):
self.CP = CP self.CP = CP
self.CP_IQ = CP_IQ self.CP_IQ = CP_IQ

Some files were not shown because too many files have changed in this diff Show More