diff --git a/artifacts/iqpilot_hephaestusd_private/manifest.json b/artifacts/iqpilot_hephaestusd_private/manifest.json index 3ea076f88..3543cbcf0 100644 --- a/artifacts/iqpilot_hephaestusd_private/manifest.json +++ b/artifacts/iqpilot_hephaestusd_private/manifest.json @@ -316,8 +316,8 @@ }, "python/_iqclosure/iqpilot/system/manager/process_config.py": { "mode": 420, - "sha256": "1676d1350461c917f2ac8412d68b85a4181e05075755823d34d530866f37ce62", - "size": 13361 + "sha256": "8b8de3f4d266213530dbc37248cf86c6a36241ec9b2f04afe0389e126fd2282f", + "size": 13597 }, "python/_iqclosure/iqpilot/system/micd.py": { "mode": 420, @@ -376,27 +376,27 @@ }, "python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "e5766a76611ae1e6a16f16bed9899c0a1617e9ec8390487ac1c76bd68102aec8", + "sha256": "8d8808534c26b97369f5a69da3afbb2f6bdb2e2708c2479ff55a07574eab3cbd", "size": 135552 }, "python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "f3434b919fbbcf9fc2bb29c3af817214b4b025eda7d8a50ab331637e41e3fc30", + "sha256": "5ec7c8dc4e4d21f47b9e949a8960baacb470ab267752681ae840ea537646d29a", "size": 67664 }, "python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "c2a3cbc4411bee79c6b9cf284385152f4c1d8a50fd4beb246872bf47a5059878", + "sha256": "91e0fab17809c6a7231a956ef082033c906a8e5e44972a10bd32f9b653d634ea", "size": 204640 }, "python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "13f241fc7fb7cdd3afc01ce65936e3054d60910461c384b6f8ccabb65e50e61b", + "sha256": "d7356d8cb1ef60ac025ec806f6fe1c1c734c234f5fe5256f17c1bfd3ff36052f", "size": 69768 }, "python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "c9d4a41687f057074f520b693c3d208cb8c78951f8c2e24b8cf6ea95c1690f14", + "sha256": "58c1601759b2f61b942d18bf7a07d16050c53424337882e040afb6d083dbd4a4", "size": 203088 }, "python/iqpilot_private/konn3kt/flockd/__init__.py": { @@ -406,12 +406,12 @@ }, "python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "bd6e7bdcd9186240febe0cba2b66dc5ff92e5d7b65f91d8b146e81114a8c6090", + "sha256": "3dea6e1a02a92a5cbebda37b768bcb4ba65224b4920307cded9247f738e6bdfe", "size": 202184 }, "python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "9bea4ab85fdc103fc451031d99e1235ca7f84358a65424db902bbfd839278b30", + "sha256": "34a58774d1243add0c0dc5cc95d78e0b17b13ede3bbfb8f0de63dd47a4c6a39f", "size": 68080 }, "python/iqpilot_private/konn3kt/hephaestus/__init__.py": { @@ -421,67 +421,67 @@ }, "python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip": { "mode": 420, - "sha256": "5bccf8ab5fb8a3d648ba8be6f1e9a9263c1577b2a959f202763a6fcbe02eacb9", + "sha256": "60ce72178566082562ceeeeb84693f04640a2436d5d6c88657ee10fbf570adaa", "size": 1379342 }, "python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "6681689c2a20680be9a5c588fc6234a57eba1bc023ff209e9ba16534955d760c", + "sha256": "c83f7947d210eee887750ca5e494e859cd6a099371eede6740282ee5f95fc725", "size": 268080 }, "python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "cc9c70a616928fe18e3ec7a49b80b127bb827438cd536146d57013ad006cb9ac", + "sha256": "f7e0c6471e5ae85e4bdb7225d60cdd67e2a54bd7e9386436e6f9eef7249354b3", "size": 406176 }, "python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "ac9f9b0467d64935e0a4f81a5e3525aacc8b243937eb339462086a447d7c6210", + "sha256": "83e7f6f18984c947811e2a17707def76fc2e563aea9eb37e9f37f5e09e377548", "size": 68048 }, "python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "33e3f6f65a0000d89c5b7e66054232a9773adc4d01fa28cb1ac658c20432e56b", - "size": 335776 + "sha256": "20f4505b5c0a320c2bab7f5026f55a0a405d85840b40f89a624b417f764f8a07", + "size": 335848 }, "python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "c3306fc198b7b9cbf4b481debf4af79ff3d3e9dd23a6cc52137e763427d8f4cd", + "sha256": "b1a14c8534fc8b20bef3661b9390db53a3f39086337d241f931af72a368f7da2", "size": 272112 }, "python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "a3e3e45c6c9091620ee1d25f840bac287e166d7fb967d48f04d985c801d72711", + "sha256": "cf3c6b74668adb6f8830e52c25aa17f4211c5fe4cbea88e50dbd3c077e92bd84", "size": 134408 }, "python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "9151341dad54e3d27335a1e34592a35dc96e7f82431512cb9387a6ce35ac9661", + "sha256": "2f30fe07926a2b6d51c6ec88ee4d57d0895d841e080bd3866a8750b5f9608aa1", "size": 3915272 }, "python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "b3481836a4f580539882bf0781b6aa196940c247e6050f074727501599a04eaa", + "sha256": "823b330d38eac09dbc22a01d1abe00d110f9d2cf8c5dc489ce58b05050db3dbe", "size": 136472 }, "python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "7f557d6349f6feb313896fb063b7cdd1b81d13bc3adaa51072730b62e51f2199", + "sha256": "02b76b8792b8f62ec4278dad6e63e5c8574479b8e714538c2cc73ebc216872eb", "size": 68208 }, "python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "32257f70289748828910bcdefeb689221a9b9f1b60b669aa454e0c4ed0514194", + "sha256": "46197da34eed0bf10c17baf32081b6a9871ddc9f3807f5de376e41699286e38c", "size": 67840 }, "python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "a3de8a57ec88a7a7900e360f274ff4a4a55cb6c693282f000ab9e1a804d1aadf", + "sha256": "144af2138c5e8f90c8432d9b90a8acafe995c1a030eb864aeb4e1b210b53b871", "size": 135664 }, "python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "28a68065a70ceea382ac3773d79f0251f0bf862900a7a353d11fe9cb52561b08", + "sha256": "3918430ba6f7dd7b654c73222bb7444afa2ef78be7bf595092b0813cebd61606", "size": 269600 }, "python/iqpilot_private/konn3kt/uploaderd/__init__.py": { @@ -491,7 +491,7 @@ }, "python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "beda75859f40628aaea1890d1207225bd633c76bc975f5a3cc741066508cc709", + "sha256": "77a0da7cf61eaa05df08c448460cb2e563929ee7c41257d9b5f0814d6d32016f", "size": 336280 }, "runtime": { @@ -535,25 +535,25 @@ } }, "signatures": { - "python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so": "/uV0KncXN88hxSYogRunz1SJTaeiZtYzMfVXiOwr+QA3AwatE3ZHouzIiPxqYsH/AngmSPBqk9sBHOCmPuTiCw==", - "python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so": "skmbTy7FxaZggM1kT1qKUoQijD7s0TJjs7FZB+JSUt4ocf248pQMC55bbKM9P4yFX2QKk7LJ9P0NzXglwTi4CA==", - "python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so": "pVG+KU133RzRnnJ71ocvMO5c6lnAhXf3eq7wB3Vr1U3KeITBE/7dJemwbvVfN9bciD8/mUFeurVpBslBDlp1Bw==", - "python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so": "/N1l31Ks/riHSDMhyqBpguzrPNGNPg3WlNRBBnloST7kvAEvphcBnT5+yIQvPWtIZfDN6uKNFavUi06Q3/2JDA==", - "python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so": "2m5TXcCRT3Shxw5k8Ch3G3UtCIE5Lq5pZwp/R0Npn3hBIqAHi7lVU2q8YuaAPEuR09vbL+dStL3aqy/CbCqXBw==", - "python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so": "YtzOVOh9rRQT3fbT4a4UDMbmKxPAUL/fLsA7WvQiI4YaUOgy5vx3i/FMx7N+2FswSbAL1Si+jab85zZbJbGaCQ==", - "python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so": "+zB9FYrJAU6/equ/5EUmCTKV+ukSnPb3NdFuLVDxrbQ0wOKLpwU5fL+760Nk4anp8bpOVABQeS5LMSK+jvhqDA==", - "python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": "Uny9JAJkWPPCJbAkE9PkQvF2XNdHBKqZqdJraA6c2ywzbTx+F8Y+ge054N7Pfgj/oY2rZqHHwC66sz6zUXNbBg==", - "python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": "EGHn14z9HhVK4WDAiv1k3MKPm9YRkXThjee3PKte9hMB6wF0LWCMNul0pUWcmauPSjhBIU7h9DSIFg9GmgKiAw==", - "python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": "Cmy6QWRx+jkndmCXb2Inr7KSWnB8MeN3IVYoR+GUR7Al2H28bTkB4aroCHc6JRIIIyiE+L3RHn8OZfbfszRICA==", - "python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": "vAEIgGKcJnr8NmZDkgoJlVQczr2JmQoORbj5jUmFIidDyw2biwH/hhnhAUEbd7DMs2AgcUKsaCozIdD2SYi8CQ==", - "python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so": "qA+C/uOh+uLHDi8j2HwLUa+Mx3CMOY5hVOjTaw86opkE8GFiCJEMnZnD1+gLfHhSw686VNswDgrp2oUmz97MBQ==", - "python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so": "A/t3xlcV3TPh3o9rfH1JhX7nhUVsDH9foqFKjwpqvpuOlm7X4pfgJXLlxCeEN/YAOkaFEL2ITxpTR/LxxI+sAQ==", - "python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": "oQC/Edkjh7OGSHjWyYdY0SKRJst5drk4GjXnMuFbZQu53INbrGEuZnpQ8x5Mjb6LxLOiKGU4Yu+ibhZTl7+oAw==", - "python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so": "P1y+n8sFHjL+0EMD3+5dHYCUZ5fGLeznzf+1/zszr45fBsHJbSYqPDBepAEx+TrXwDrxEONo8aaVC6PA193pDg==", - "python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": "yZY/mAzII1O/xMrmQueULxTgXf6Ze6P9PvMNM41LYEaLWlNSJLbYu+umhGQeru8LUGAO+xpuGahDloNMKa+dDg==", - "python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so": "zQoY1eHKdlMZW3ITM8G6+UwMBCGR+xt+0dx/ovz5u1uGkbrVHm6A8tfk6Zx27iBKle0qFdye6Al2PQK02kXMBQ==", - "python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so": "10YGOLrImdCOB7LXlDkwkEdj6beXsFfc5AixI5Zq097mBiAcfoWFKiCSPeN3pk4CxuehNXtebw5UuLXsx2ABDg==", - "python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so": "QQ2CnLrT79NeQzODxK9/QbduXtCrp6u/Ca6U5KAdnKVPD86+TndxeiX01wgYUZMLmIFCJh4rPGiFBI2f+oS7AA==", - "python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so": "CqJ0BMkC09FCG+XDybTNULBSobSDBWAPL8YMqXv7QVGCut/9pO1NON5s5zQPVsN6IHUOdt94Iz+h5Ehu1yPjAQ==" + "python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so": "lRrLXy0fYvSR0U/mJbw1BXUacNm7Jc6YRknVHM8DuT0gGsLp0y0xrYXSlarISHznZvV0JbPsNf3wgbQA5NZ3CA==", + "python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so": "H0GqhuuUrSJYyT4UXbf7GujRXxGx/zgIn+ZDaiyjPghcYdy64bGH2fVWwEm69OC409ZtVB0sI69GlqGPMKF/Dg==", + "python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so": "sF93qmp1nxbSBfqq0FBr/jI8QK1jP3wQgEYoys3McYNfC3IOk6V7eqL1AZz8Rj20j7Iu1TOpWsGsSVxo+G0xAg==", + "python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so": "FcuWnfFQt7EWTRH5Lev1PhNpQposz/8d6p8DK6Jg7Zi+Rf93GUDgg3/t74IjHTq+aPSvR1J1ArKAUGRstGmpDw==", + "python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so": "UkRfnbDSg3UPzTL6BgLM3pXTOKUqo/QA/DP1qCUVYWm7hTGX5balWH3inYKaxQTP6WkbIm0dGusMT2pldW7JAg==", + "python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so": "VLvLBhbqm6+V8udYUKpv7hXQygiu3scB6FXmfjyRVKLvGcCsVUA2LKLNtH8Ff+TPsdEXRp7wCBMrVBVUslCiBA==", + "python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so": "b9jhc7aE//J2/bE8fyglw3hO+KKSOEjnzDzKSPmfL+bVmVUvtdN/F/1lpvdYrb2RalkBvl7ktFOgymZKn0vrBA==", + "python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": "IovyDAeYBOAC8yv67H+UqiicwOd210iwDXMvNuTXbU4lbq0xuqa1uy7t/oCClt4P0BhZLgvJQ0KI/jqMRsbxBA==", + "python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": "xmIlShogvGuAh7RJOaOJSV/oB7EhvUpjPFiPHah97yvwg+pmrDYy2avmjWM8wCE3kKrKCFgEVW6ye6u4Eo0wCA==", + "python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": "Zbj2hW+Z5TMeXrXOVd7htJ1KAOkEOX7W4jqj1hulsO/hsUEzcIBFEYkCTGzEJ7jkU7QO1LzUjT04WyqlRAgOAA==", + "python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": "L+gCCPfiImd9gqtJ0jnSKzRWYnJjqB8f1ixz7WFJGDipbjMF1NDj24nwYLE21oUAqTdDSVnb3bQG9gtLkNbeBg==", + "python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so": "Tu14xhw8hc5vgg0oJ4vYZSwuml+k80ZrWjf8VgTefxvG8JGvm4ZwZ34lVdesUfvZCAVCszkEUustAXVhTLu0Cw==", + "python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so": "VvPIQ0Ffu2K0T806hzzK5sLdAtL6I0ORgLVW6Hl4VNgzwJucMPSHQChFn3q94G7KhD20F1g0UvBF+0NrgRVCDg==", + "python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": "qMi6U7oxlcOf9s3O+o2mFRorOYNxjK/MPrw0JxRJ2cVgG64hbzXou1yw/LZTVTAjun/EGCJgfXC313G/nGP9Cg==", + "python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so": "/kjgZ33Ev8UgrJtqsyGWCMp5IIeqk6Kb9UGpwzZE5jrJiym15HjVQZnfWIqAECUOxBnJsIKrun5tcKKndfgsAQ==", + "python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": "/eUDZy8k0jVHALTMabHt3f9Va3xGc2FnXUX0ly7oSqaWPsoB/CivrxP+jlc5NcKNsigwqox97lDye291B1LOBg==", + "python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so": "C+ObT5E4w707z7kVKW89SUsEzVb7ZExmDLKXnTh1a2oa92hzRusH60iIEMF8ofL0eZBORRmbNVsewVEEGQ6ZDQ==", + "python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so": "2vqBy+02ldRHcVMlKUT+Vk6Hz7diGSxVct+FK/LcMCpXg5N51YqhvX5YdBgtZWnQpbvIPi1wyr9Zqs3oIT5hAw==", + "python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so": "uHyniVaxBLNTVLx/40UH6pifUZF/xwwo9Jd8slS+0lyhAXMuZnmoQoHnaJRN4adTuEGOyKKyi/wisjFASuwqCA==", + "python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so": "No8Xim23VntTR9aceGofLd/vNC3jVQSZ9PmB3qwS5osNqdUrEh/5Y5RpXWKU2/azhsOMqnlbT0ppARqNGVDKCQ==" } } diff --git a/artifacts/iqpilot_hephaestusd_private/manifest.json.sig b/artifacts/iqpilot_hephaestusd_private/manifest.json.sig index e47824cd2..5108cec68 100644 --- a/artifacts/iqpilot_hephaestusd_private/manifest.json.sig +++ b/artifacts/iqpilot_hephaestusd_private/manifest.json.sig @@ -1 +1 @@ -1J/pEtI6qoBjh397jGVMx0xaeG1QXhcxuiHCXKKiU497RGTTHNmgVpKkNngATL61HgbYa7dgj7mPwLs2u7epAQ== +Li23uJ7UFsHmYsNYtk8ZvF7oFHZoV8tl9yuzsFSkEzPBnX5MQJwpihQtEwVC1mn1EAHwyjj7nJ/uaZww1o9wCg== diff --git a/artifacts/iqpilot_hephaestusd_private/python/_iqclosure/iqpilot/system/manager/process_config.py b/artifacts/iqpilot_hephaestusd_private/python/_iqclosure/iqpilot/system/manager/process_config.py index 77b650722..2b1de9aee 100644 --- a/artifacts/iqpilot_hephaestusd_private/python/_iqclosure/iqpilot/system/manager/process_config.py +++ b/artifacts/iqpilot_hephaestusd_private/python/_iqclosure/iqpilot/system/manager/process_config.py @@ -138,6 +138,11 @@ def egpu_enabled(started, params, CP: car.CarParams) -> bool: return (resolve_backend(params.get_bool("IQEmacEnabled"), egpu_selected(params), _egpu_present(params)) == "egpu" and _egpu_present(params)) +def egpu_prefetch_enabled(started, params, CP: car.CarParams) -> bool: + if params.get_bool("IQEgpuDisabled"): + return False + return resolve_backend(params.get_bool("IQEmacEnabled"), True, _egpu_present(params)) == "egpu" + def big_model_enabled(started, params, CP: car.CarParams) -> bool: return params.get_bool("IQEmacEnabled") or egpu_selected(params) @@ -223,7 +228,7 @@ procs += [ PythonProcess("iqegpumodeld", "iqpilot.selfdrive.iqmodeld.iqegpumodeld", and_(only_onroad, and_(is_tinygrad_model, egpu_enabled)), restart_if_crash=True), PythonProcess("egpu_prefetch", "iqpilot.selfdrive.iqmodeld.egpu_prefetch", - and_(only_offroad, and_(is_tinygrad_model, egpu_enabled)), restart_if_crash=True), + and_(only_offroad, and_(is_tinygrad_model, egpu_prefetch_enabled)), restart_if_crash=True), BundleProcess("backup_manager_k3", "iqpilot_hephaestusd_private", "iqpilot_private.konn3kt.backups.backup_orchestrator", and_(only_offroad, hephaestus_ready_shim, not_low_power)), diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so index 7e9b21760..ee064e962 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/archive_codec.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so index c4e66618a..ec61f4849 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_keys.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so index 223368c51..8c8fa0305 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/backup_orchestrator.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so index 0b6a1583f..e3018c11d 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/cbc_vault.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so index 30a9fb797..4a65717a2 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/backups/imahelper.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so index 89e90017d..339bbb687 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/flockd.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so index 7728235c4..23bfc0c99 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/flockd/signatures.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip index b3755d0e0..bdc47cf56 100644 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so index a4f2a1b08..5aa4c0ed2 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so index ee57b01de..0991bdfdb 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so index a3b0f4086..d007bfb0c 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so index d48134ccd..0d96d04b1 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so index 3bce1b9c2..acab67921 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/bt_gamepad.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so index e85c88c6d..92f7eb82a 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/cloud_routes.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so index cac85c726..46776913c 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so index 42c1ec0c0..07d143187 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/kwp2000.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so index b546615ea..9b72d3ab6 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so index b6204be1a..ba238e278 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/motd.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so index 784d66f7c..ed10ab96e 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/tp20.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so index 25b5ac94e..0a97a439b 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/hephaestus/vw_pq_flasher.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so index 92914bbe0..b9b87c5fd 100755 Binary files a/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_hephaestusd_private/python/iqpilot_private/konn3kt/uploaderd/iquploaderd.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_updater_private/manifest.json b/artifacts/iqpilot_updater_private/manifest.json index 44989ecc9..d484b4641 100644 --- a/artifacts/iqpilot_updater_private/manifest.json +++ b/artifacts/iqpilot_updater_private/manifest.json @@ -16,22 +16,22 @@ }, "python/iqpilot_private/updater/_hf_maps_blob.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "f18e3a7886a2e6835c91936cc4a11b118c02576f827683cff2a8d8788c3d1628", + "sha256": "69b858142aeb82cf730f042f6bc354dabb19579654872eaed3f73d482a856802", "size": 67616 }, "python/iqpilot_private/updater/_iqos_pat_blob.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "9bb73ab877e3c87f415b07a780c807f6f686bf5d5c01f4f4866260d2812f0b8d", + "sha256": "d8d9ccc3059b6239f2be41437e97b160b96278e419d84f9c0c243a2ba3ebf94c", "size": 67616 }, "python/iqpilot_private/updater/_pat_blob.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "8e33ab06991537400b3c50d2bfe3483627b50c999d6ad0c44d27d09eacac9235", + "sha256": "cea69f651768732bcbbd1a7edff668876dcf6787c332e859f6f01c945d74cbe0", "size": 67616 }, "python/iqpilot_private/updater/git_remote.cpython-312-aarch64-linux-gnu.so": { "mode": 493, - "sha256": "55db05006382a9212c300db2236590260b66489d904e19656f2cf03309de89bf", + "sha256": "384782451d53a5ca89809f05bf5c68577596dfbaca3f2f82bb0a972663897491", "size": 136608 }, "runtime": { @@ -43,9 +43,9 @@ } }, "signatures": { - "python/iqpilot_private/updater/_hf_maps_blob.cpython-312-aarch64-linux-gnu.so": "8MfmjOuuJgGPd2959u6zSnbsfCGIcY8ut4vH4JW//Vqb51508zKFSZYbmsKYFSYmUYcsNrDdKlzG7cyxwi25CQ==", - "python/iqpilot_private/updater/_iqos_pat_blob.cpython-312-aarch64-linux-gnu.so": "7ygpLdx/E5TgYoL8OINkv4mYLVkAHlAG0Wh4ZBnXCdTi+fd1bySI+7WmQczoQMlk0VjtIqyJTus+tsRkXEjQDg==", - "python/iqpilot_private/updater/_pat_blob.cpython-312-aarch64-linux-gnu.so": "79iU094xiuJ25sF9qXaLqTS/f9AidQhDoTlj2HVBIWt6biVmBY0MpgHOXK7lhCskykR7H/8j9zp2SsA2dToaDA==", - "python/iqpilot_private/updater/git_remote.cpython-312-aarch64-linux-gnu.so": "rxKmOjUbaJRdo65i8bDae/zEDUXIWvOay4k+KJ3vuH1Z+jQQvRXuWjKAMtJX7a7v/zzTcg7ijY2CBfXEFZJRCQ==" + "python/iqpilot_private/updater/_hf_maps_blob.cpython-312-aarch64-linux-gnu.so": "2hlUdv1cuGpzNrKoSx3VqRGdaVsgkkGhiHKBirfYkEwJmQJizQ966d6iZQoIzh8LEmRdhi+77iLFXQiEWApSDQ==", + "python/iqpilot_private/updater/_iqos_pat_blob.cpython-312-aarch64-linux-gnu.so": "EHoKO6/esRwuP7oxR9a5FXiQVPjh+3CmtXS1jNQor7yOpra/LijNPHvvu423y+vlOn1KkVCbhZgaHrsB/3oJDA==", + "python/iqpilot_private/updater/_pat_blob.cpython-312-aarch64-linux-gnu.so": "oqWDyKXImMpVEHwBohGW1nL7oZaNMu12aP/zMfowkjDAsHZJOM+TOicUNketIi990nJMbhApcJk3zpoM+1nGCw==", + "python/iqpilot_private/updater/git_remote.cpython-312-aarch64-linux-gnu.so": "xp2MN37LX95Rbt3zGC/ZysyTCv8wUi6xpzbHoTLMwRfq4cDpWafItWgFiypcn5ANsAQA7weqMbihmtq6EbV3Bg==" } } diff --git a/artifacts/iqpilot_updater_private/manifest.json.sig b/artifacts/iqpilot_updater_private/manifest.json.sig index 76f1c4305..3c650df70 100644 --- a/artifacts/iqpilot_updater_private/manifest.json.sig +++ b/artifacts/iqpilot_updater_private/manifest.json.sig @@ -1 +1 @@ -0OdQnuSdywA/tTTIVWGwz2gpZ5H50RoDjjWrXlgYDivBPpTU83nj3jbFtFenrzVNDouRC/PbTvEFNwcnHAe8DA== +Q62ipKl3jmGXHvKYVnhQY7sk4ZSS7AmhXf23DY4sYqoTP7hn9WDDlQD82bMhQJdcY+Obcr9fRn1EGmGTuMUjDw== diff --git a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_hf_maps_blob.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_hf_maps_blob.cpython-312-aarch64-linux-gnu.so index bd904d978..aabbbf8e3 100755 Binary files a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_hf_maps_blob.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_hf_maps_blob.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_iqos_pat_blob.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_iqos_pat_blob.cpython-312-aarch64-linux-gnu.so index 260d66a4b..168c4883c 100755 Binary files a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_iqos_pat_blob.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_iqos_pat_blob.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_pat_blob.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_pat_blob.cpython-312-aarch64-linux-gnu.so index ac5c3e8a2..b4bc7150a 100755 Binary files a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_pat_blob.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/_pat_blob.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/git_remote.cpython-312-aarch64-linux-gnu.so b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/git_remote.cpython-312-aarch64-linux-gnu.so index 7b8b609a0..372c9b9eb 100755 Binary files a/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/git_remote.cpython-312-aarch64-linux-gnu.so and b/artifacts/iqpilot_updater_private/python/iqpilot_private/updater/git_remote.cpython-312-aarch64-linux-gnu.so differ diff --git a/artifacts/package_sources/iqdbc/iqdbc/car/honda/carcontroller.py b/artifacts/package_sources/iqdbc/iqdbc/car/honda/carcontroller.py index 6a1fc1655..4be23b889 100644 --- a/artifacts/package_sources/iqdbc/iqdbc/car/honda/carcontroller.py +++ b/artifacts/package_sources/iqdbc/iqdbc/car/honda/carcontroller.py @@ -429,55 +429,38 @@ class CarController(CarControllerBase, AolCarController, GasInterceptorCarContro self.gas = pcm_accel / self.params.NIDEC_GAS_MAX # Render OP's lane and lead cars on the dash. On CAN FD these are radar look-alikes that only - # exist (and are only allowed by panda safety) when the radar is disabled; in stock ACC the real - # radar still owns LANE_PATH/HUD_OBJECTS - if ((self.frame % 2 == 0 and self.CP.carFingerprint in HONDA_BOSCH_RADARLESS) or - (CS.radar_50hz_tick and self.CP.carFingerprint in HONDA_BOSCH_CANFD and self.CP.openpilotLongitudinalControl - and not CS.stock_acc_alive)): + # exist (and are only allowed by panda safety) when the radar is disabled. Radarless keeps the + # camera as the dash authority (known-good), so OP does not author these there + if (CS.radar_50hz_tick and self.CP.carFingerprint in HONDA_BOSCH_CANFD and self.CP.openpilotLongitudinalControl + and not CS.stock_acc_alive): leads = dash_objects.leads_from_model(self.model, CS.out.vEgo) lead = leads[0] lead_d = lead.dRel if lead.status else 0.0 self.rendered_lane = self.lane_renderer.update(self.model, CS.out.vEgo, lead_d) - # the dash freezes the lane display if LANE_PATH and HUD_OBJECTS muxes don't match - if self.CP.carFingerprint in HONDA_BOSCH_CANFD: - mux = self.radar_mux - # no LKAS_HUD_2 on CAN FD: the dash reads the lane length from the in-band terminator, so the - # path is reshaped into the terminated-prefix form - lane_offsets = dash_lane.canfd_lane_offsets(self.rendered_lane) - else: - mux = dash_lane.MUX_CYCLE[(self.frame // 2) % len(dash_lane.MUX_CYCLE)] - lane_offsets = self.rendered_lane.offsets + mux = self.radar_mux + # no LKAS_HUD_2 on CAN FD: the dash reads the lane length from the in-band terminator, so the + # path is reshaped into the terminated-prefix form + lane_offsets = dash_lane.canfd_lane_offsets(self.rendered_lane) lane_msg = dash_lane.create_lane_path(self.packer, self.CAN.lkas, lane_offsets, mux) can_sends.append(lane_msg) # CAN FD cars have no camera HUD_OBJECTS to poll (the disabled radar owned it): author OP's # lead in slot 0 with the other slots blank (tracks=None) tracks = CS.camera_object_tracker.snapshot() if CS.camera_object_tracker is not None else None - if self.CP.openpilotLongitudinalControl: - hud_msg = self.dash_object_author.create(self.packer, self.CAN.lkas, lead, tracks, mux, now_nanos * 1e-9, - extra_leads=leads[1:]) - else: - # for stock ACC, forward the camera's objects but with our mux - hud_msg = dash_objects.forward_hud_object(self.packer, self.CAN.lkas, mux, tracks) + hud_msg = self.dash_object_author.create(self.packer, self.CAN.lkas, lead, tracks, mux, now_nanos * 1e-9, + extra_leads=leads[1:]) can_sends.append(hud_msg) - # on CAN FD the camera (behind the relay) also consumes these; mirror the identical packed - # bytes onto the camera bus (packed once, so the counter/checksum stay in lockstep) - if self.CP.carFingerprint in HONDA_BOSCH_CANFD: - for addr, dat, _ in (lane_msg, hud_msg): - can_sends.append((addr, dat, self.CAN.camera)) + # the camera (behind the relay) also consumes these; mirror the identical packed bytes onto the + # camera bus (packed once, so the counter/checksum stay in lockstep) + for addr, dat, _ in (lane_msg, hud_msg): + can_sends.append((addr, dat, self.CAN.camera)) - if self.frame % 20 == 0 and self.CP.carFingerprint in HONDA_BOSCH_RADARLESS: - # COUNTER_2 trails the packer's COUNTER (frame//20 % 4) by one - rl = self.rendered_lane - can_sends.append(dash_lane.create_lkas_hud_2(self.packer, self.CAN.lkas, (self.frame // 20 - 1) % 4, - rl.reach, rl.lane_cross, rl.left_line, rl.right_line)) - - # Radarless + CAN FD: when stock LKAS is active, the touch-steering-wheel nag eventually forces an - # ACC disengagement (on CAN FD it shows up as a brake tap from the VSA). Disable LKAS automatically - # and block the driver's LKAS button by taking over SCM_BUTTONS on the camera bus while engaged - # (panda blocks the forwarded stock SCM_BUTTONS while this stream flows) - if self.CP.carFingerprint in (HONDA_BOSCH_RADARLESS | HONDA_BOSCH_CANFD) and CC.enabled and self.frame % 4 == 0 and \ + # CAN FD: when stock LKAS is active, the touch-steering-wheel nag eventually forces an ACC + # disengagement (a brake tap from the VSA). Disable LKAS automatically and block the driver's LKAS + # button by taking over SCM_BUTTONS on the camera bus while engaged (panda blocks the forwarded + # stock SCM_BUTTONS while this stream flows). Radarless keeps the stock camera LKAS untouched + if self.CP.carFingerprint in HONDA_BOSCH_CANFD and CC.enabled and self.frame % 4 == 0 and \ not pcm_cancel_cmd and not CC.cruiseControl.resume: if self.lkas_button_send_remaining == 0 and CS.lkas_hud["LKAS_READY"] and self.frame >= self.last_lkas_button_frame + 500: self.lkas_button_send_remaining = 3 diff --git a/artifacts/package_sources/iqdbc/iqdbc/car/honda/hondacan.py b/artifacts/package_sources/iqdbc/iqdbc/car/honda/hondacan.py index 9d35381ec..7b855e3e4 100644 --- a/artifacts/package_sources/iqdbc/iqdbc/car/honda/hondacan.py +++ b/artifacts/package_sources/iqdbc/iqdbc/car/honda/hondacan.py @@ -197,18 +197,19 @@ def create_lkas_hud(packer, bus, CP, hud_control, lat_active, steering_available if CP.carFingerprint in (HONDA_BOSCH_RADARLESS | HONDA_BOSCH_CANFD): lkas_hud_values['LANE_LINES'] = 3 - lkas_hud_values['LKAS_PROBLEM'] = steer_fault_permanent + lkas_hud_values['DASHED_LANES'] = lat_active + + # car likely needs to see LKAS_PROBLEM fall within a specific time frame, so forward from camera if CP.carFingerprint in HONDA_BOSCH_RADARLESS: - # gray lanes when disengaged - lkas_hud_values['DASHED_LANES'] = 1 - else: + lkas_hud_values['LKAS_PROBLEM'] = lkas_hud['LKAS_PROBLEM'] + + if CP.carFingerprint in HONDA_BOSCH_CANFD: + lkas_hud_values['LKAS_PROBLEM'] = steer_fault_permanent # CAN FD: dashed lanes are the AOL armed indication (dashed_lanes is aol.enabled and not # latActive, which is not standstill-gated - so parked LKAS button presses produce cluster # feedback). ORed with lat_active so the engaged payload keeps SOLID and DASHED set together, # byte-matching the stock camera's lanes-on state lkas_hud_values['DASHED_LANES'] = dashed_lanes or lat_active - - if CP.carFingerprint in HONDA_BOSCH_CANFD: # every payload change must coincide with an LKAS_STATE_CHANGE pulse (see carcontroller); keyed # on lat_active, not lanesVisible, so the dash LKAS indication follows AOL's lateral state lkas_hud_values['SOLID_LANES'] = lat_active diff --git a/artifacts/package_sources/iqdbc/iqdbc/safety/modes/honda.h b/artifacts/package_sources/iqdbc/iqdbc/safety/modes/honda.h index f477e3116..45ce18030 100644 --- a/artifacts/package_sources/iqdbc/iqdbc/safety/modes/honda.h +++ b/artifacts/package_sources/iqdbc/iqdbc/safety/modes/honda.h @@ -323,9 +323,9 @@ static bool honda_tx_hook(const CANPacket_t *msg) { // FORCE CANCEL: safety check only relevant when spamming the cancel button in Bosch HW // ensuring that only the cancel button press is sent (VAL 2) when controls are off. // This avoids unintended engagements while still allowing resume spam - // On CAN FD and radarless, buttons are also sent to the camera (bus 2) to take over SCM_BUTTONS - // while engaged, so the same check applies there - const bool is_buttons_bus = (msg->bus == bus_buttons) || ((honda_bosch_canfd || honda_bosch_radarless) && (msg->bus == 2U)); + // On CAN FD, buttons are also sent to the camera (bus 2) to take over SCM_BUTTONS while engaged, so + // the same check applies there (radarless already sends buttons on bus 2 via bus_buttons) + const bool is_buttons_bus = (msg->bus == bus_buttons) || (honda_bosch_canfd && (msg->bus == 2U)); if ((msg->addr == 0x296U) && !controls_allowed && is_buttons_bus) { if (((msg->data[0] >> 5) & 0x7U) != 2U) { tx = false; @@ -454,13 +454,10 @@ static safety_config honda_bosch_init(uint16_t param) { {0x33DA, 1, 5, .check_relay = true}, {0x33DB, 1, 8, .check_relay = true}, {0x39F, 1, 8, .check_relay = false}, {0x18DAB0F1, 1, 8, .check_relay = false}}; // Bosch w/ gas and brakes - static CanMsg HONDA_RADARLESS_TX_MSGS[] = {{0xE4, 0, 5, .check_relay = true}, {0x296, 2, 4, .check_relay = false}, {0x33D, 0, 8, .check_relay = true}, - {0x6CD5554, 0, 8, .check_relay = true}, {0xF31AA54, 0, 8, .check_relay = true}, - {0x6CD5557, 0, 8, .check_relay = true}}; // Bosch radarless (LANE_PATH/LKAS_HUD_2/HUD_OBJECTS authored in stock ACC too) + static CanMsg HONDA_RADARLESS_TX_MSGS[] = {{0xE4, 0, 5, .check_relay = true}, {0x296, 2, 4, .check_relay = false}, {0x33D, 0, 8, .check_relay = true}}; // Bosch radarless static CanMsg HONDA_RADARLESS_LONG_TX_MSGS[] = {{0xE4, 0, 5, .check_relay = true}, {0x33D, 0, 8, .check_relay = true}, {0x1C8, 0, 8, .check_relay = true}, - {0x30C, 0, 8, .check_relay = true}, {0x296, 2, 4, .check_relay = false}, {0x6CD5554, 0, 8, .check_relay = true}, - {0xF31AA54, 0, 8, .check_relay = true}, {0x6CD5557, 0, 8, .check_relay = true}}; // Bosch radarless w/ gas and brakes + {0x30C, 0, 8, .check_relay = true}}; // Bosch radarless w/ gas and brakes // 0x296 on bus 2: OP takes over SCM_BUTTONS towards the camera to auto-disable stock LKAS and to block // the driver's LKAS button while engaged (the physical SCM_BUTTONS is blocked from forwarding, see fwd hook) @@ -585,7 +582,7 @@ static bool honda_bosch_fwd_hook(int bus_num, int addr) { // actually flowing (honda_op_buttons_fresh): the camera needs SCM_BUTTONS content beyond the buttons // (it raises an adaptive high beam error when the message goes missing), so a bare controls_allowed // gate would starve it whenever the panda allows controls but OP refuses to engage - if ((honda_bosch_radarless || honda_bosch_canfd) && controls_allowed && (honda_op_buttons_fresh > 0) && + if (honda_bosch_canfd && controls_allowed && (honda_op_buttons_fresh > 0) && (bus_num == 0) && (addr == 0x296)) { block_msg = true; } diff --git a/artifacts/package_sources/iqdbc/iqdbc/safety/modes/toyota.h b/artifacts/package_sources/iqdbc/iqdbc/safety/modes/toyota.h index ddf69fe1d..d2248236d 100644 --- a/artifacts/package_sources/iqdbc/iqdbc/safety/modes/toyota.h +++ b/artifacts/package_sources/iqdbc/iqdbc/safety/modes/toyota.h @@ -39,6 +39,7 @@ #define TOYOTA_COMMON_RX_CHECKS(lta) \ {.msg = {{ 0xaa, 0, 8, 83U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, \ {.msg = {{0x260, 0, 8, 50U, .ignore_counter = true, .ignore_quality_flag=!(lta)}, { 0 }, { 0 }}}, \ + {.msg = {{0x412, 2, 8, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true, .frequency = 1U}, { 0 }, { 0 }}}, \ #define TOYOTA_RX_CHECKS(lta) \ TOYOTA_COMMON_RX_CHECKS(lta) \ @@ -98,6 +99,15 @@ static int TOYOTA_GET_INTERCEPTOR(const CANPacket_t *msg) { } static void toyota_rx_hook(const CANPacket_t *msg) { + if (msg->bus == 2U) { + // TSS2 LKAS/LDA button is only observable via the camera's LKAS_HUD; it reads 1 or 2 while + // pressed and rests at 0, and without this edge AOL can never be granted lateral on Toyota. + if (msg->addr == 0x412U) { + unsigned int lda_on_message = (msg->data[3] >> 6U) & 0x3U; + aol_button_press = (lda_on_message != 0U) ? AOL_BUTTON_PRESSED : AOL_BUTTON_NOT_PRESSED; + } + } + if (msg->bus == 0U) { // get eps motor torque (0.66 factor in dbc) diff --git a/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_honda.py b/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_honda.py index 44e005e41..372a06a75 100755 --- a/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_honda.py +++ b/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_honda.py @@ -609,41 +609,14 @@ class TestHondaBoschRadarlessSafetyBase(TestHondaBoschSafetyBase): STEER_BUS = 0 BUTTONS_BUS = 2 # camera controls ACC, need to send buttons on bus 2 - TX_MSGS = [[0xE4, 0], [0x296, 2], [0x33D, 0], [0x6CD5554, 0], [0xF31AA54, 0], [0x6CD5557, 0]] - FWD_BLACKLISTED_ADDRS = {2: [0xE4, 0x33D, 0x6CD5554, 0xF31AA54, 0x6CD5557]} - # STEERING_CONTROL, LANE_PATH, LKAS_HUD_2, HUD_OBJECTS - RELAY_MALFUNCTION_ADDRS = {0: (0xE4, 0x33D, 0x6CD5554, 0xF31AA54, 0x6CD5557)} + TX_MSGS = [[0xE4, 0], [0x296, 2], [0x33D, 0]] + FWD_BLACKLISTED_ADDRS = {2: [0xE4, 0x33D]} + RELAY_MALFUNCTION_ADDRS = {0: (0xE4, 0x33D)} # STEERING_CONTROL def setUp(self): self.packer = CANPackerSafety("honda_bosch_radarless_generated") self.safety = libsafety_py.libsafety - def test_buttons_fwd(self): - # SCM_BUTTONS (0x296) forwards to the camera unless OP's replacement button stream is flowing - # (engaged + a recent OP SCM_BUTTONS tx on the camera bus). The camera needs the message content - # beyond the buttons, so the block fails safe back to forwarding when OP stops sending - self.safety.set_controls_allowed(False) - self.assertEqual(2, self.safety.safety_fwd_hook(0, 0x296)) - - # engaged but OP not sending buttons: keep forwarding - self.safety.set_controls_allowed(True) - self.assertEqual(2, self.safety.safety_fwd_hook(0, 0x296)) - - # OP button stream flowing: block the stock buttons - self.assertTrue(self._tx(self._button_msg(Btn.NONE, bus=2))) - self.assertEqual(-1, self.safety.safety_fwd_hook(0, 0x296)) - - # never blocked while disengaged - self.safety.set_controls_allowed(False) - self.assertEqual(2, self.safety.safety_fwd_hook(0, 0x296)) - self.safety.set_controls_allowed(True) - self.assertEqual(-1, self.safety.safety_fwd_hook(0, 0x296)) - - # freshness decays after 10 stock button frames without an OP tx - for _ in range(10): - self._rx(self._button_msg(Btn.NONE, main_on=True)) - self.assertEqual(2, self.safety.safety_fwd_hook(0, 0x296)) - class TestHondaBoschRadarlessSafety(HondaPcmEnableBase, TestHondaBoschRadarlessSafetyBase): """ @@ -672,9 +645,9 @@ class TestHondaBoschRadarlessLongSafety(common.LongitudinalAccelSafetyTest, Hond """ Covers the Honda Bosch Radarless safety mode with longitudinal control """ - TX_MSGS = [[0xE4, 0], [0x33D, 0], [0x1C8, 0], [0x30C, 0], [0x296, 2], [0x6CD5554, 0], [0xF31AA54, 0], [0x6CD5557, 0]] - FWD_BLACKLISTED_ADDRS = {2: [0xE4, 0x33D, 0x1C8, 0x30C, 0x6CD5554, 0xF31AA54, 0x6CD5557]} - RELAY_MALFUNCTION_ADDRS = {0: (0xE4, 0x1C8, 0x30C, 0x33D, 0x6CD5554, 0xF31AA54, 0x6CD5557)} + TX_MSGS = [[0xE4, 0], [0x33D, 0], [0x1C8, 0], [0x30C, 0]] + FWD_BLACKLISTED_ADDRS = {2: [0xE4, 0x33D, 0x1C8, 0x30C]} + RELAY_MALFUNCTION_ADDRS = {0: (0xE4, 0x1C8, 0x30C, 0x33D)} def setUp(self): super().setUp() diff --git a/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_toyota.py b/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_toyota.py index b640de7fe..16d9fb1a6 100755 --- a/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_toyota.py +++ b/artifacts/package_sources/iqdbc/iqdbc/safety/tests/test_toyota.py @@ -91,6 +91,35 @@ class TestToyotaSafetyBase(common.CarSafetyTest, common.LongitudinalAccelSafetyT values = {"MAIN_ON": enabled} return self.packer.make_can_msg_safety(msg, 0, values) + def _lkas_button_msg(self, lkas_button=False, lda_value=None): + values = {"LDA_ON_MESSAGE": (1 if lkas_button else 0) if lda_value is None else lda_value} + return self.packer.make_can_msg_safety("LKAS_HUD", 2, values) + + def test_enable_control_allowed_with_aol_button(self): + for enable_aol in (True, False): + with self.subTest("enable_aol", aol_enabled=enable_aol): + self.safety.set_aol_params(enable_aol, False, False) + + self._rx(self._lkas_button_msg(False)) + self.assertEqual(0, self.safety.get_aol_button_press()) + self.assertFalse(self.safety.get_controls_allowed_lat()) + + self._rx(self._lkas_button_msg(True)) + self.assertEqual(1, self.safety.get_aol_button_press()) + self.assertEqual(enable_aol, self.safety.get_controls_allowed_lat()) + + self._rx(self._lkas_button_msg(False)) + self.assertEqual(0, self.safety.get_aol_button_press()) + self.assertEqual(enable_aol, self.safety.get_controls_allowed_lat()) + + self.safety.set_controls_allowed_lat(False) + self._rx(self._lkas_button_msg(False, lda_value=2)) + self.assertEqual(1, self.safety.get_aol_button_press()) + self.assertEqual(enable_aol, self.safety.get_controls_allowed_lat()) + self._rx(self._lkas_button_msg(False)) + self.safety.set_controls_allowed_lat(False) + self.safety.set_aol_params(False, False, False) + def test_diagnostics(self, stock_longitudinal: bool = False, ecu_disabled: bool = True): for should_tx, msg in ((False, b"\x6D\x02\x3E\x00\x00\x00\x00\x00"), # fwdCamera tester present (False, b"\x0F\x03\xAA\xAA\x00\x00\x00\x00"), # non-tester present diff --git a/iqpilot/iq_maps/tile_bundle_downloader.py b/iqpilot/iq_maps/tile_bundle_downloader.py index b78a44b1a..d5d89a6b3 100644 --- a/iqpilot/iq_maps/tile_bundle_downloader.py +++ b/iqpilot/iq_maps/tile_bundle_downloader.py @@ -161,13 +161,15 @@ def _resolve_object_url(session: requests.Session, url: str, headers: dict) -> t probe = session.get(url, headers={**headers, "Accept-Encoding": None}, stream=True, timeout=HTTP_TIMEOUT_S) probe.raise_for_status() + # A host that serves the bytes itself still needs the caller's auth on the real GET -- + # returning {} here sends the download out anonymous and a private host answers 401. if int(probe.headers.get("content-length") or 0) >= 1024: probe.close() - return url, {} + return url, dict(headers) body = probe.content probe.close() if not body.startswith(LFS_POINTER_MAGIC): - return url, {} + return url, dict(headers) meta = dict(line.split(" ", 1) for line in body.decode().strip().splitlines() if " " in line) oid = meta["oid"].split(":", 1)[1]