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. # you can rename the struct, but don't change the identifier struct SelfdriveStateSP @0x81c2f05a394cf4af { mads @0 :ModularAssistiveDrivingSystem; 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 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; } 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; } } struct LongitudinalPlanSP @0xf35cc4560bbf6ec2 { mpcSource @0 :MpcSource; dynamicExperimentalControl @1 :Bool; enum MpcSource { acc @0; blended @1; } } struct CustomReserved3 @0xda96579883444c35 { } struct CustomReserved4 @0x80ae746ee2596b11 { } struct CustomReserved5 @0xa5cd762cd951a455 { } struct CustomReserved6 @0xf98d843bfd7004a3 { } struct CustomReserved7 @0xb86e6369214c01c8 { } struct CustomReserved8 @0xf416ec09499d9d19 { } struct CustomReserved9 @0xa1680744031fdb2d { }