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 Type { drive @0; navigation @1; metadata @2; } struct Model { fullName @0 :Text; fileName @1 :Text; downloadUri @2 :DownloadUri; downloadProgress @3 :DownloadProgress; type @4 :Type; } enum DownloadStatus { notDownloading @0; downloading @1; downloaded @2; cached @3; failed @4; } struct DownloadProgress { status @0 :DownloadStatus; progress @1 :Float32; eta @2 :UInt32; } 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; } } 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 { }