mirror of
https://github.com/infiniteCable2/openpilot.git
synced 2026-08-05 08:16:03 +08:00
d90e41f08f
* Refactor model and artifact structures with version compatibility filtering - Introduced `Artifact` struct and nested it within the `Model` struct for improved clarity and organization. - Updated enums, logic, and parsing to align with the new struct definitions. - Implemented version compatibility filtering for model bundles using the `is_bundle_version_compatible` helper. - Enhanced artifact download handling by adding checks for missing URIs, better error management, and improved logging. - Adjusted model fetching to point to the latest endpoint (`v3`). * Make linter happy * Make linter happy * Refactor model data parsing to improve readability. Replaced kwargs-based data extraction with explicit parameter passing for clarity. This enhances code readability and reduces ambiguities in method calls, making the parsing logic more maintainable and straightforward. * Refactor error handling in active model bundle retrieval. Wrapped the logic to fetch the active model bundle in a try-except block to prevent unhandled exceptions. This ensures more robust error handling and avoids potential crashes when retrieving or processing model data. * Refactor exception handling in get_active_model_bundle Replace bare except with Exception to improve specificity and clarity. This ensures better debugging practices and aligns with recommended coding standards. Other minor whitespace adjustments were made for improved readability. * Update model path to use artifact fileName property Replaced `fileName` with `artifact.fileName` in the custom model path construction. This ensures compatibility with updated drive model structures and avoids potential file resolution issues.
251 lines
5.1 KiB
Cap'n Proto
251 lines
5.1 KiB
Cap'n Proto
using Cxx = import "./include/c++.capnp";
|
|
$Cxx.namespace("cereal");
|
|
|
|
@0xb526ba661d550a59;
|
|
|
|
# custom.capnp: a home for empty structs reserved for custom forks
|
|
# These structs are guaranteed to remain reserved and empty in mainline
|
|
# cereal, so use these if you want custom events in your fork.
|
|
|
|
# DO rename the structs
|
|
# DON'T change the identifier (e.g. @0x81c2f05a394cf4af)
|
|
|
|
struct ModularAssistiveDrivingSystem {
|
|
state @0 :ModularAssistiveDrivingSystemState;
|
|
enabled @1 :Bool;
|
|
active @2 :Bool;
|
|
available @3 :Bool;
|
|
|
|
enum ModularAssistiveDrivingSystemState {
|
|
disabled @0;
|
|
paused @1;
|
|
enabled @2;
|
|
softDisabling @3;
|
|
overriding @4;
|
|
}
|
|
}
|
|
|
|
struct SelfdriveStateSP @0x81c2f05a394cf4af {
|
|
mads @0 :ModularAssistiveDrivingSystem;
|
|
}
|
|
|
|
struct ModelManagerSP @0xaedffd8f31e7b55d {
|
|
activeBundle @0 :ModelBundle;
|
|
selectedBundle @1 :ModelBundle;
|
|
availableBundles @2 :List(ModelBundle);
|
|
|
|
struct DownloadUri {
|
|
uri @0 :Text;
|
|
sha256 @1 :Text;
|
|
}
|
|
|
|
enum DownloadStatus {
|
|
notDownloading @0;
|
|
downloading @1;
|
|
downloaded @2;
|
|
cached @3;
|
|
failed @4;
|
|
}
|
|
|
|
struct DownloadProgress {
|
|
status @0 :DownloadStatus;
|
|
progress @1 :Float32;
|
|
eta @2 :UInt32;
|
|
}
|
|
|
|
struct Artifact {
|
|
fileName @0 :Text;
|
|
downloadUri @1 :DownloadUri;
|
|
downloadProgress @2 :DownloadProgress;
|
|
}
|
|
|
|
struct Model {
|
|
type @0 :Type;
|
|
artifact @1 :Artifact; # Main artifact
|
|
metadata @2 :Artifact; # Metadata artifact
|
|
|
|
enum Type {
|
|
supercombo @0;
|
|
navigation @1;
|
|
vision @2;
|
|
policy @3;
|
|
}
|
|
}
|
|
|
|
enum Runner {
|
|
snpe @0;
|
|
tinygrad @1;
|
|
stock @2;
|
|
}
|
|
|
|
struct ModelBundle {
|
|
index @0 :UInt32;
|
|
internalName @1 :Text;
|
|
displayName @2 :Text;
|
|
models @3 :List(Model);
|
|
status @4 :DownloadStatus;
|
|
generation @5 :UInt32;
|
|
environment @6 :Text;
|
|
runner @7 :Runner;
|
|
is20hz @8 :Bool;
|
|
ref @9 :Text; # New field
|
|
minimumSelectorVersion @10 :UInt32;
|
|
}
|
|
}
|
|
|
|
struct LongitudinalPlanSP @0xf35cc4560bbf6ec2 {
|
|
dec @0 :DynamicExperimentalControl;
|
|
|
|
struct DynamicExperimentalControl {
|
|
state @0 :DynamicExperimentalControlState;
|
|
enabled @1 :Bool;
|
|
active @2 :Bool;
|
|
|
|
enum DynamicExperimentalControlState {
|
|
acc @0;
|
|
blended @1;
|
|
}
|
|
}
|
|
}
|
|
|
|
struct OnroadEventSP @0xda96579883444c35 {
|
|
events @0 :List(Event);
|
|
|
|
struct Event {
|
|
name @0 :EventName;
|
|
|
|
# event types
|
|
enable @1 :Bool;
|
|
noEntry @2 :Bool;
|
|
warning @3 :Bool; # alerts presented only when enabled or soft disabling
|
|
userDisable @4 :Bool;
|
|
softDisable @5 :Bool;
|
|
immediateDisable @6 :Bool;
|
|
preEnable @7 :Bool;
|
|
permanent @8 :Bool; # alerts presented regardless of openpilot state
|
|
overrideLateral @10 :Bool;
|
|
overrideLongitudinal @9 :Bool;
|
|
}
|
|
|
|
enum EventName {
|
|
lkasEnable @0;
|
|
lkasDisable @1;
|
|
manualSteeringRequired @2;
|
|
manualLongitudinalRequired @3;
|
|
silentLkasEnable @4;
|
|
silentLkasDisable @5;
|
|
silentBrakeHold @6;
|
|
silentWrongGear @7;
|
|
silentReverseGear @8;
|
|
silentDoorOpen @9;
|
|
silentSeatbeltNotLatched @10;
|
|
silentParkBrake @11;
|
|
controlsMismatchLateral @12;
|
|
hyundaiRadarTracksConfirmed @13;
|
|
experimentalModeSwitched @14;
|
|
wrongCarModeAlertOnly @15;
|
|
}
|
|
}
|
|
|
|
struct CarParamsSP @0x80ae746ee2596b11 {
|
|
flags @0 :UInt32; # flags for car specific quirks in sunnypilot
|
|
safetyParam @1 : Int16; # flags for sunnypilot's custom safety flags
|
|
|
|
neuralNetworkLateralControl @2 :NeuralNetworkLateralControl;
|
|
|
|
struct NeuralNetworkLateralControl {
|
|
model @0 :Model;
|
|
fuzzyFingerprint @1 :Bool;
|
|
|
|
struct Model {
|
|
path @0 :Text;
|
|
name @1 :Text;
|
|
}
|
|
}
|
|
}
|
|
|
|
struct CarControlSP @0xa5cd762cd951a455 {
|
|
mads @0 :ModularAssistiveDrivingSystem;
|
|
}
|
|
|
|
struct BackupManagerSP @0xf98d843bfd7004a3 {
|
|
backupStatus @0 :Status;
|
|
restoreStatus @1 :Status;
|
|
backupProgress @2 :Float32;
|
|
restoreProgress @3 :Float32;
|
|
lastError @4 :Text;
|
|
currentBackup @5 :BackupInfo;
|
|
backupHistory @6 :List(BackupInfo);
|
|
|
|
enum Status {
|
|
idle @0;
|
|
inProgress @1;
|
|
completed @2;
|
|
failed @3;
|
|
}
|
|
|
|
struct Version {
|
|
major @0 :UInt16;
|
|
minor @1 :UInt16;
|
|
patch @2 :UInt16;
|
|
build @3 :UInt16;
|
|
branch @4 :Text;
|
|
}
|
|
|
|
struct MetadataEntry {
|
|
key @0 :Text;
|
|
value @1 :Text;
|
|
tags @2 :List(Text);
|
|
}
|
|
|
|
struct BackupInfo {
|
|
deviceId @0 :Text;
|
|
version @1 :UInt32;
|
|
config @2 :Text;
|
|
isEncrypted @3 :Bool;
|
|
createdAt @4 :Text; # ISO timestamp
|
|
updatedAt @5 :Text; # ISO timestamp
|
|
sunnypilotVersion @6 :Version;
|
|
backupMetadata @7 :List(MetadataEntry);
|
|
}
|
|
}
|
|
|
|
struct CustomReserved7 @0xb86e6369214c01c8 {
|
|
}
|
|
|
|
struct CustomReserved8 @0xf416ec09499d9d19 {
|
|
}
|
|
|
|
struct CustomReserved9 @0xa1680744031fdb2d {
|
|
}
|
|
|
|
struct CustomReserved10 @0xcb9fd56c7057593a {
|
|
}
|
|
|
|
struct CustomReserved11 @0xc2243c65e0340384 {
|
|
}
|
|
|
|
struct CustomReserved12 @0x9ccdc8676701b412 {
|
|
}
|
|
|
|
struct CustomReserved13 @0xcd96dafb67a082d0 {
|
|
}
|
|
|
|
struct CustomReserved14 @0xb057204d7deadf3f {
|
|
}
|
|
|
|
struct CustomReserved15 @0xbd443b539493bc68 {
|
|
}
|
|
|
|
struct CustomReserved16 @0xfc6241ed8877b611 {
|
|
}
|
|
|
|
struct CustomReserved17 @0xa30662f84033036c {
|
|
}
|
|
|
|
struct CustomReserved18 @0xc86a3d38d13eb3ef {
|
|
}
|
|
|
|
struct CustomReserved19 @0xa4f1eb3323f5f582 {
|
|
}
|