using Cxx = import "./include/c++.capnp"; $Cxx.namespace("cereal"); using Car = import "car.capnp"; @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 enum LongitudinalPersonalitySP { aggressive @0; moderate @1; standard @2; relaxed @3; overtake @4; } enum AccelerationPersonality { sport @0; normal @1; eco @2; stock @3; } enum ModelGeneration { default @0; one @1; two @2; three @3; four @4; five @5; } enum MpcSource { acc @0; blended @1; } struct ControlsStateSP @0x81c2f05a394cf4af { lateralState @0 :Text; personality @8 :LongitudinalPersonalitySP; dynamicPersonality @9 :Bool; accelPersonality @10 :AccelerationPersonality; overtakingAccelerationAssist @11 :Bool; lateralControlState :union { indiState @1 :LateralINDIState; pidState @2 :LateralPIDState; angleState @3 :LateralAngleState; debugState @4 :LateralDebugState; torqueState @5 :LateralTorqueState; curvatureState @6 :LateralCurvatureState; lqrStateDEPRECATED @7 :LateralLQRState; } struct LateralINDIState { } struct LateralPIDState { } struct LateralAngleState { } struct LateralDebugState { } struct LateralTorqueState { nnLog @0 :List(Float32); } struct LateralCurvatureState { } struct LateralLQRState { } } struct LongitudinalPlanSP @0xaedffd8f31e7b55d { visionTurnControllerState @0 :VisionTurnControllerState; visionTurnSpeed @1 :Float32; visionCurrentLatAcc @16 :Float32; visionMaxPredLatAcc @17 :Float32; speedLimitControlState @2 :SpeedLimitControlState; speedLimit @3 :Float32; speedLimitOffset @4 :Float32; distToSpeedLimit @5 :Float32; isMapSpeedLimit @6 :Bool; speedLimitPercOffset @11 :Bool; speedLimitValueOffset @12 :Float32; desiredTF @13 :Float32; notSpeedLimit @14 :Int16; e2eX @15 :List(Float32); e2eBlendedDEPRECATED @18 :Text; e2eStatus @22 :Bool; mpcSource @23 :MpcSource; dynamicExperimentalControl @24 :Bool; distToTurn @7 :Float32; turnSpeed @8 :Float32; turnSpeedControlState @9 :SpeedLimitControlState; turnSign @10 :Int16; events @19 :List(Car.CarEvent); longitudinalPlanSource @20 :LongitudinalPlanSource; personalityDEPRECATED @21 :LongitudinalPersonalitySP; enum SpeedLimitControlState { inactive @0; # No speed limit set or not enabled by parameter. tempInactive @1; # User wants to ignore speed limit until it changes. adapting @2; # Reducing speed to match new speed limit. active @3; # Cruising at speed limit. preActive @4; } enum VisionTurnControllerState { disabled @0; # No predicted substantial turn on vision range or feature disabled. entering @1; # A substantial turn is predicted ahead, adapting speed to turn comfort levels. turning @2; # Actively turning. Managing acceleration to provide a roll on turn feeling. leaving @3; # Road ahead straightens. Start to allow positive acceleration. } enum LongitudinalPlanSource { cruise @0; lead0 @1; lead1 @2; lead2 @3; e2e @4; turn @5; limit @6; turnlimit @7; } } struct LateralPlanSP @0xf35cc4560bbf6ec2 { laneWidth @0 :Float32; lProb @1 :Float32; rProb @2 :Float32; dProb @3 :Float32; dynamicLaneProfile @4 :Int8; standstillElapsed @5 :Float32; dynamicLaneProfileStatus @9 :Bool; dPathWLinesXDEPRECATED @6 :List(Float32); dPathWLinesYDEPRECATED @7 :List(Float32); laneChangePrevDEPRECATED @8 :Bool; laneChangeEdgeBlockDEPRECATED @10 :Bool; } struct DriverMonitoringStateSP @0xda96579883444c35 { handsOnWheelState @0 :HandsOnWheelState; notModified @1 :Float32; enum HandsOnWheelState { none @0; # hand on wheel monitoring inactive ok @1; # driver has hands on steering wheel minor @2; # hands off steering wheel for acceptable period warning @3; # hands off steering wheel for warning period critical @4; # # hands off steering wheel for critical period terminal @5; # # hands off steering wheel for terminal period } } struct LiveMapDataSP @0x80ae746ee2596b11 { speedLimitValid @0 :Bool; speedLimit @1 :Float32; speedLimitAheadValid @2 :Bool; speedLimitAhead @3 :Float32; speedLimitAheadDistance @4 :Float32; turnSpeedLimitValid @5 :Bool; turnSpeedLimit @6 :Float32; turnSpeedLimitEndDistance @7 :Float32; turnSpeedLimitSign @8 :Int16; turnSpeedLimitsAhead @9 :List(Float32); turnSpeedLimitsAheadDistances @10 :List(Float32); turnSpeedLimitsAheadSigns @11 :List(Int16); lastGpsTimestamp @12 :Int64; # Milliseconds since January 1, 1970. currentRoadName @13 :Text; lastGpsLatitude @14 :Float64; lastGpsLongitude @15 :Float64; lastGpsSpeed @16 :Float32; lastGpsBearingDeg @17 :Float32; lastGpsAccuracy @18 :Float32; lastGpsBearingAccuracyDeg @19 :Float32; dataType @20 :DataType; enum DataType { default @0; offline @1; online @2; } } struct E2eLongStateSP @0xa5cd762cd951a455 { status @0 :UInt16; } struct ModelDataV2SP @0xf98d843bfd7004a3 { laneChangePrev @0 :Bool; laneChangeEdgeBlock @1 :Bool; customModel @2 :Bool; modelGeneration @3 :ModelGeneration; modelCapabilities @4 :UInt32; } struct CustomReserved7 @0xb86e6369214c01c8 { } struct CustomReserved8 @0xf416ec09499d9d19 { } struct CustomReserved9 @0xa1680744031fdb2d { }