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 { 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; } } struct CarParamsSP @0x80ae746ee2596b11 { flags @0 :UInt32; # flags for car specific quirks in sunnypilot safetyParam @1 : Int16; # flags for sunnypilot's custom safety flags } struct CarControlSP @0xa5cd762cd951a455 { mads @0 :ModularAssistiveDrivingSystem; } struct CustomReserved6 @0xf98d843bfd7004a3 { } 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 { }