You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							2603 lines
						
					
					
						
							63 KiB
						
					
					
				
			
		
		
	
	
							2603 lines
						
					
					
						
							63 KiB
						
					
					
				using Cxx = import "./include/c++.capnp";
 | 
						|
$Cxx.namespace("cereal");
 | 
						|
 | 
						|
using Car = import "car.capnp";
 | 
						|
using Legacy = import "legacy.capnp";
 | 
						|
using Custom = import "custom.capnp";
 | 
						|
 | 
						|
@0xf3b1f17e25a4285b;
 | 
						|
 | 
						|
const logVersion :Int32 = 1;
 | 
						|
 | 
						|
struct Map(Key, Value) {
 | 
						|
  entries @0 :List(Entry);
 | 
						|
  struct Entry {
 | 
						|
    key @0 :Key;
 | 
						|
    value @1 :Value;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct OnroadEvent @0xc4fa6047f024e718 {
 | 
						|
  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 @0x91f1992a1f77fb03 {
 | 
						|
    canError @0;
 | 
						|
    steerUnavailable @1;
 | 
						|
    wrongGear @2;
 | 
						|
    doorOpen @3;
 | 
						|
    seatbeltNotLatched @4;
 | 
						|
    espDisabled @5;
 | 
						|
    wrongCarMode @6;
 | 
						|
    steerTempUnavailable @7;
 | 
						|
    reverseGear @8;
 | 
						|
    buttonCancel @9;
 | 
						|
    buttonEnable @10;
 | 
						|
    pedalPressed @11;  # exits active state
 | 
						|
    preEnableStandstill @12;  # added during pre-enable state with brake
 | 
						|
    gasPressedOverride @13;  # added when user is pressing gas with no disengage on gas
 | 
						|
    steerOverride @14;
 | 
						|
    cruiseDisabled @15;
 | 
						|
    speedTooLow @16;
 | 
						|
    outOfSpace @17;
 | 
						|
    overheat @18;
 | 
						|
    calibrationIncomplete @19;
 | 
						|
    calibrationInvalid @20;
 | 
						|
    calibrationRecalibrating @21;
 | 
						|
    controlsMismatch @22;
 | 
						|
    pcmEnable @23;
 | 
						|
    pcmDisable @24;
 | 
						|
    radarFault @25;
 | 
						|
    brakeHold @26;
 | 
						|
    parkBrake @27;
 | 
						|
    manualRestart @28;
 | 
						|
    joystickDebug @29;
 | 
						|
    longitudinalManeuver @30;
 | 
						|
    steerTempUnavailableSilent @31;
 | 
						|
    resumeRequired @32;
 | 
						|
    preDriverDistracted @33;
 | 
						|
    promptDriverDistracted @34;
 | 
						|
    driverDistracted @35;
 | 
						|
    preDriverUnresponsive @36;
 | 
						|
    promptDriverUnresponsive @37;
 | 
						|
    driverUnresponsive @38;
 | 
						|
    belowSteerSpeed @39;
 | 
						|
    lowBattery @40;
 | 
						|
    accFaulted @41;
 | 
						|
    sensorDataInvalid @42;
 | 
						|
    commIssue @43;
 | 
						|
    commIssueAvgFreq @44;
 | 
						|
    tooDistracted @45;
 | 
						|
    posenetInvalid @46;
 | 
						|
    preLaneChangeLeft @48;
 | 
						|
    preLaneChangeRight @49;
 | 
						|
    laneChange @50;
 | 
						|
    lowMemory @51;
 | 
						|
    stockAeb @52;
 | 
						|
    ldw @53;
 | 
						|
    carUnrecognized @54;
 | 
						|
    invalidLkasSetting @55;
 | 
						|
    speedTooHigh @56;
 | 
						|
    laneChangeBlocked @57;
 | 
						|
    relayMalfunction @58;
 | 
						|
    stockFcw @59;
 | 
						|
    startup @60;
 | 
						|
    startupNoCar @61;
 | 
						|
    startupNoControl @62;
 | 
						|
    startupNoSecOcKey @63;
 | 
						|
    startupMaster @64;
 | 
						|
    fcw @65;
 | 
						|
    steerSaturated @66;
 | 
						|
    belowEngageSpeed @67;
 | 
						|
    noGps @68;
 | 
						|
    wrongCruiseMode @69;
 | 
						|
    modeldLagging @70;
 | 
						|
    deviceFalling @71;
 | 
						|
    fanMalfunction @72;
 | 
						|
    cameraMalfunction @73;
 | 
						|
    cameraFrameRate @74;
 | 
						|
    processNotRunning @75;
 | 
						|
    dashcamMode @76;
 | 
						|
    selfdriveInitializing @77;
 | 
						|
    usbError @78;
 | 
						|
    cruiseMismatch @79;
 | 
						|
    canBusMissing @80;
 | 
						|
    selfdrivedLagging @81;
 | 
						|
    resumeBlocked @82;
 | 
						|
    steerTimeLimit @83;
 | 
						|
    vehicleSensorsInvalid @84;
 | 
						|
    locationdTemporaryError @85;
 | 
						|
    locationdPermanentError @86;
 | 
						|
    paramsdTemporaryError @87;
 | 
						|
    paramsdPermanentError @88;
 | 
						|
    actuatorsApiUnavailable @89;
 | 
						|
    espActive @90;
 | 
						|
    personalityChanged @91;
 | 
						|
    aeb @92;
 | 
						|
 | 
						|
    soundsUnavailableDEPRECATED @47;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
enum LongitudinalPersonality {
 | 
						|
  aggressive @0;
 | 
						|
  standard @1;
 | 
						|
  relaxed @2;
 | 
						|
}
 | 
						|
 | 
						|
struct InitData {
 | 
						|
  kernelArgs @0 :List(Text);
 | 
						|
  kernelVersion @15 :Text;
 | 
						|
  osVersion @18 :Text;
 | 
						|
 | 
						|
  dongleId @2 :Text;
 | 
						|
  bootlogId @22 :Text;
 | 
						|
 | 
						|
  deviceType @3 :DeviceType;
 | 
						|
  version @4 :Text;
 | 
						|
  gitCommit @10 :Text;
 | 
						|
  gitCommitDate @21 :Text;
 | 
						|
  gitBranch @11 :Text;
 | 
						|
  gitRemote @13 :Text;
 | 
						|
 | 
						|
  androidProperties @16 :Map(Text, Text);
 | 
						|
 | 
						|
  pandaInfo @8 :PandaInfo;
 | 
						|
 | 
						|
  dirty @9 :Bool;
 | 
						|
  passive @12 :Bool;
 | 
						|
  params @17 :Map(Text, Data);
 | 
						|
 | 
						|
  commands @19 :Map(Text, Data);
 | 
						|
 | 
						|
  wallTimeNanos @20 :UInt64;
 | 
						|
 | 
						|
  enum DeviceType {
 | 
						|
    unknown @0;
 | 
						|
    neo @1;
 | 
						|
    chffrAndroid @2;
 | 
						|
    chffrIos @3;
 | 
						|
    tici @4;
 | 
						|
    pc @5;
 | 
						|
    tizi @6;
 | 
						|
    mici @7;
 | 
						|
  }
 | 
						|
 | 
						|
  struct PandaInfo {
 | 
						|
    hasPanda @0 :Bool;
 | 
						|
    dongleId @1 :Text;
 | 
						|
    stVersion @2 :Text;
 | 
						|
    espVersion @3 :Text;
 | 
						|
  }
 | 
						|
 | 
						|
  # ***** deprecated stuff *****
 | 
						|
  gctxDEPRECATED @1 :Text;
 | 
						|
  androidBuildInfo @5 :AndroidBuildInfo;
 | 
						|
  androidSensorsDEPRECATED @6 :List(AndroidSensor);
 | 
						|
  chffrAndroidExtraDEPRECATED @7 :ChffrAndroidExtra;
 | 
						|
  iosBuildInfoDEPRECATED @14 :IosBuildInfo;
 | 
						|
 | 
						|
  struct AndroidBuildInfo {
 | 
						|
    board @0 :Text;
 | 
						|
    bootloader @1 :Text;
 | 
						|
    brand @2 :Text;
 | 
						|
    device @3 :Text;
 | 
						|
    display @4 :Text;
 | 
						|
    fingerprint @5 :Text;
 | 
						|
    hardware @6 :Text;
 | 
						|
    host @7 :Text;
 | 
						|
    id @8 :Text;
 | 
						|
    manufacturer @9 :Text;
 | 
						|
    model @10 :Text;
 | 
						|
    product @11 :Text;
 | 
						|
    radioVersion @12 :Text;
 | 
						|
    serial @13 :Text;
 | 
						|
    supportedAbis @14 :List(Text);
 | 
						|
    tags @15 :Text;
 | 
						|
    time @16 :Int64;
 | 
						|
    type @17 :Text;
 | 
						|
    user @18 :Text;
 | 
						|
 | 
						|
    versionCodename @19 :Text;
 | 
						|
    versionRelease @20 :Text;
 | 
						|
    versionSdk @21 :Int32;
 | 
						|
    versionSecurityPatch @22 :Text;
 | 
						|
  }
 | 
						|
 | 
						|
  struct AndroidSensor {
 | 
						|
    id @0 :Int32;
 | 
						|
    name @1 :Text;
 | 
						|
    vendor @2 :Text;
 | 
						|
    version @3 :Int32;
 | 
						|
    handle @4 :Int32;
 | 
						|
    type @5 :Int32;
 | 
						|
    maxRange @6 :Float32;
 | 
						|
    resolution @7 :Float32;
 | 
						|
    power @8 :Float32;
 | 
						|
    minDelay @9 :Int32;
 | 
						|
    fifoReservedEventCount @10 :UInt32;
 | 
						|
    fifoMaxEventCount @11 :UInt32;
 | 
						|
    stringType @12 :Text;
 | 
						|
    maxDelay @13 :Int32;
 | 
						|
  }
 | 
						|
 | 
						|
  struct ChffrAndroidExtra {
 | 
						|
    allCameraCharacteristics @0 :Map(Text, Text);
 | 
						|
  }
 | 
						|
 | 
						|
  struct IosBuildInfo {
 | 
						|
    appVersion @0 :Text;
 | 
						|
    appBuild @1 :UInt32;
 | 
						|
    osVersion @2 :Text;
 | 
						|
    deviceModel @3 :Text;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct FrameData {
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  frameIdSensor @25 :UInt32;
 | 
						|
  requestId @28 :UInt32;
 | 
						|
  encodeId @1 :UInt32;
 | 
						|
 | 
						|
  # Timestamps
 | 
						|
  timestampEof @2 :UInt64;
 | 
						|
  timestampSof @8 :UInt64;
 | 
						|
  processingTime @23 :Float32;
 | 
						|
 | 
						|
  # Exposure
 | 
						|
  integLines @4 :Int32;
 | 
						|
  highConversionGain @20 :Bool;
 | 
						|
  gain @15 :Float32; # This includes highConversionGain if enabled
 | 
						|
  measuredGreyFraction @21 :Float32;
 | 
						|
  targetGreyFraction @22 :Float32;
 | 
						|
  exposureValPercent @27 :Float32;
 | 
						|
 | 
						|
  transform @10 :List(Float32);
 | 
						|
 | 
						|
  image @6 :Data;
 | 
						|
 | 
						|
  temperaturesC @24 :List(Float32);
 | 
						|
 | 
						|
  enum FrameTypeDEPRECATED {
 | 
						|
    unknown @0;
 | 
						|
    neo @1;
 | 
						|
    chffrAndroid @2;
 | 
						|
    front @3;
 | 
						|
  }
 | 
						|
 | 
						|
  sensor @26 :ImageSensor;
 | 
						|
  enum ImageSensor {
 | 
						|
    unknown @0;
 | 
						|
    ar0231 @1;
 | 
						|
    ox03c10 @2;
 | 
						|
    os04c10 @3;
 | 
						|
  }
 | 
						|
 | 
						|
  frameLengthDEPRECATED @3 :Int32;
 | 
						|
  globalGainDEPRECATED @5 :Int32;
 | 
						|
  frameTypeDEPRECATED @7 :FrameTypeDEPRECATED;
 | 
						|
  androidCaptureResultDEPRECATED @9 :AndroidCaptureResult;
 | 
						|
  lensPosDEPRECATED @11 :Int32;
 | 
						|
  lensSagDEPRECATED @12 :Float32;
 | 
						|
  lensErrDEPRECATED @13 :Float32;
 | 
						|
  lensTruePosDEPRECATED @14 :Float32;
 | 
						|
  focusValDEPRECATED @16 :List(Int16);
 | 
						|
  focusConfDEPRECATED @17 :List(UInt8);
 | 
						|
  sharpnessScoreDEPRECATED @18 :List(UInt16);
 | 
						|
  recoverStateDEPRECATED @19 :Int32;
 | 
						|
  struct AndroidCaptureResult {
 | 
						|
    sensitivity @0 :Int32;
 | 
						|
    frameDuration @1 :Int64;
 | 
						|
    exposureTime @2 :Int64;
 | 
						|
    rollingShutterSkew @3 :UInt64;
 | 
						|
    colorCorrectionTransform @4 :List(Int32);
 | 
						|
    colorCorrectionGains @5 :List(Float32);
 | 
						|
    displayRotation @6 :Int8;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct Thumbnail {
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  timestampEof @1 :UInt64;
 | 
						|
  thumbnail @2 :Data;
 | 
						|
  encoding @3 :Encoding;
 | 
						|
 | 
						|
  enum Encoding {
 | 
						|
    unknown @0;
 | 
						|
    jpeg @1;
 | 
						|
    keyframe @2;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct GPSNMEAData {
 | 
						|
  timestamp @0 :Int64;
 | 
						|
  localWallTime @1 :UInt64;
 | 
						|
  nmea @2 :Text;
 | 
						|
}
 | 
						|
 | 
						|
# android sensor_event_t
 | 
						|
struct SensorEventData {
 | 
						|
  version @0 :Int32;
 | 
						|
  sensor @1 :Int32;
 | 
						|
  type @2 :Int32;
 | 
						|
  timestamp @3 :Int64;
 | 
						|
  uncalibratedDEPRECATED @10 :Bool;
 | 
						|
 | 
						|
  union {
 | 
						|
    acceleration @4 :SensorVec;
 | 
						|
    magnetic @5 :SensorVec;
 | 
						|
    orientation @6 :SensorVec;
 | 
						|
    gyro @7 :SensorVec;
 | 
						|
    pressure @9 :SensorVec;
 | 
						|
    magneticUncalibrated @11 :SensorVec;
 | 
						|
    gyroUncalibrated @12 :SensorVec;
 | 
						|
    proximity @13: Float32;
 | 
						|
    light @14: Float32;
 | 
						|
    temperature @15: Float32;
 | 
						|
  }
 | 
						|
  source @8 :SensorSource;
 | 
						|
 | 
						|
  struct SensorVec {
 | 
						|
    v @0 :List(Float32);
 | 
						|
    status @1 :Int8;
 | 
						|
  }
 | 
						|
 | 
						|
  enum SensorSource {
 | 
						|
    android @0;
 | 
						|
    iOS @1;
 | 
						|
    fiber @2;
 | 
						|
    velodyne @3;  # Velodyne IMU
 | 
						|
    bno055 @4;    # Bosch accelerometer
 | 
						|
    lsm6ds3 @5;   # includes LSM6DS3 and LSM6DS3TR, TR = tape reel
 | 
						|
    bmp280 @6;    # barometer
 | 
						|
    mmc3416x @7;  # magnetometer
 | 
						|
    bmx055 @8;
 | 
						|
    rpr0521 @9;
 | 
						|
    lsm6ds3trc @10;
 | 
						|
    mmc5603nj @11;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
# android struct GpsLocation
 | 
						|
struct GpsLocationData {
 | 
						|
  # Contains module-specific flags.
 | 
						|
  flags @0 :UInt16;
 | 
						|
 | 
						|
  # Represents latitude in degrees.
 | 
						|
  latitude @1 :Float64;
 | 
						|
 | 
						|
  # Represents longitude in degrees.
 | 
						|
  longitude @2 :Float64;
 | 
						|
 | 
						|
  # Represents altitude in meters above the WGS 84 reference ellipsoid.
 | 
						|
  altitude @3 :Float64;
 | 
						|
 | 
						|
  # Represents speed in meters per second.
 | 
						|
  speed @4 :Float32;
 | 
						|
 | 
						|
  # Represents heading in degrees.
 | 
						|
  bearingDeg @5 :Float32;
 | 
						|
 | 
						|
  # Represents expected horizontal accuracy in meters.
 | 
						|
  horizontalAccuracy @6 :Float32;
 | 
						|
 | 
						|
  unixTimestampMillis @7 :Int64;
 | 
						|
 | 
						|
  source @8 :SensorSource;
 | 
						|
 | 
						|
  # Represents NED velocity in m/s.
 | 
						|
  vNED @9 :List(Float32);
 | 
						|
 | 
						|
  # Represents expected vertical accuracy in meters. (presumably 1 sigma?)
 | 
						|
  verticalAccuracy @10 :Float32;
 | 
						|
 | 
						|
  # Represents bearing accuracy in degrees. (presumably 1 sigma?)
 | 
						|
  bearingAccuracyDeg @11 :Float32;
 | 
						|
 | 
						|
  # Represents velocity accuracy in m/s. (presumably 1 sigma?)
 | 
						|
  speedAccuracy @12 :Float32;
 | 
						|
 | 
						|
  hasFix @13 :Bool;
 | 
						|
 | 
						|
  enum SensorSource {
 | 
						|
    android @0;
 | 
						|
    iOS @1;
 | 
						|
    car @2;
 | 
						|
    velodyne @3;  # Velodyne IMU
 | 
						|
    fusion @4;
 | 
						|
    external @5;
 | 
						|
    ublox @6;
 | 
						|
    trimble @7;
 | 
						|
    qcomdiag @8;
 | 
						|
    unicore @9;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
enum Desire {
 | 
						|
  none @0;
 | 
						|
  turnLeft @1;
 | 
						|
  turnRight @2;
 | 
						|
  laneChangeLeft @3;
 | 
						|
  laneChangeRight @4;
 | 
						|
  keepLeft @5;
 | 
						|
  keepRight @6;
 | 
						|
}
 | 
						|
 | 
						|
enum LaneChangeState {
 | 
						|
  off @0;
 | 
						|
  preLaneChange @1;
 | 
						|
  laneChangeStarting @2;
 | 
						|
  laneChangeFinishing @3;
 | 
						|
}
 | 
						|
 | 
						|
enum LaneChangeDirection {
 | 
						|
  none @0;
 | 
						|
  left @1;
 | 
						|
  right @2;
 | 
						|
}
 | 
						|
 | 
						|
struct CanData {
 | 
						|
  address @0 :UInt32;
 | 
						|
  dat     @2 :Data;
 | 
						|
  src     @3 :UInt8;
 | 
						|
  busTimeDEPRECATED @1 :UInt16;
 | 
						|
}
 | 
						|
 | 
						|
struct DeviceState @0xa4d8b5af2aa492eb {
 | 
						|
  deviceType @45 :InitData.DeviceType;
 | 
						|
 | 
						|
  networkType @22 :NetworkType;
 | 
						|
  networkInfo @31 :NetworkInfo;
 | 
						|
  networkStrength @24 :NetworkStrength;
 | 
						|
  networkStats @43 :NetworkStats;
 | 
						|
  networkMetered @41 :Bool;
 | 
						|
  lastAthenaPingTime @32 :UInt64;
 | 
						|
 | 
						|
  started @11 :Bool;
 | 
						|
  startedMonoTime @13 :UInt64;
 | 
						|
 | 
						|
  # system utilization
 | 
						|
  freeSpacePercent @7 :Float32;
 | 
						|
  memoryUsagePercent @19 :Int8;
 | 
						|
  gpuUsagePercent @33 :Int8;
 | 
						|
  cpuUsagePercent @34 :List(Int8);  # per-core cpu usage
 | 
						|
 | 
						|
  # power
 | 
						|
  offroadPowerUsageUwh @23 :UInt32;
 | 
						|
  carBatteryCapacityUwh @25 :UInt32;
 | 
						|
  powerDrawW @40 :Float32;
 | 
						|
  somPowerDrawW @42 :Float32;
 | 
						|
 | 
						|
  # device thermals
 | 
						|
  cpuTempC @26 :List(Float32);
 | 
						|
  gpuTempC @27 :List(Float32);
 | 
						|
  memoryTempC @28 :Float32;
 | 
						|
  nvmeTempC @35 :List(Float32);
 | 
						|
  modemTempC @36 :List(Float32);
 | 
						|
  pmicTempC @39 :List(Float32);
 | 
						|
  maxTempC @44 :Float32;  # max of other temps, used to control fan
 | 
						|
  thermalZones @38 :List(ThermalZone);
 | 
						|
  thermalStatus @14 :ThermalStatus;
 | 
						|
 | 
						|
  fanSpeedPercentDesired @10 :UInt16;
 | 
						|
  screenBrightnessPercent @37 :Int8;
 | 
						|
 | 
						|
  struct ThermalZone {
 | 
						|
    name @0 :Text;
 | 
						|
    temp @1 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  enum ThermalStatus {
 | 
						|
    green @0;
 | 
						|
    yellow @1;
 | 
						|
    red @2;
 | 
						|
    danger @3;
 | 
						|
  }
 | 
						|
 | 
						|
  enum NetworkType {
 | 
						|
    none @0;
 | 
						|
    wifi @1;
 | 
						|
    cell2G @2;
 | 
						|
    cell3G @3;
 | 
						|
    cell4G @4;
 | 
						|
    cell5G @5;
 | 
						|
    ethernet @6;
 | 
						|
  }
 | 
						|
 | 
						|
  enum NetworkStrength {
 | 
						|
    unknown @0;
 | 
						|
    poor @1;
 | 
						|
    moderate @2;
 | 
						|
    good @3;
 | 
						|
    great @4;
 | 
						|
  }
 | 
						|
 | 
						|
  struct NetworkInfo {
 | 
						|
    technology @0 :Text;
 | 
						|
    operator @1 :Text;
 | 
						|
    band @2 :Text;
 | 
						|
    channel @3 :UInt16;
 | 
						|
    extra @4 :Text;
 | 
						|
    state @5 :Text;
 | 
						|
  }
 | 
						|
 | 
						|
  struct NetworkStats {
 | 
						|
    wwanTx @0 :Int64;
 | 
						|
    wwanRx @1 :Int64;
 | 
						|
  }
 | 
						|
 | 
						|
  # deprecated
 | 
						|
  cpu0DEPRECATED @0 :UInt16;
 | 
						|
  cpu1DEPRECATED @1 :UInt16;
 | 
						|
  cpu2DEPRECATED @2 :UInt16;
 | 
						|
  cpu3DEPRECATED @3 :UInt16;
 | 
						|
  memDEPRECATED @4 :UInt16;
 | 
						|
  gpuDEPRECATED @5 :UInt16;
 | 
						|
  batDEPRECATED @6 :UInt32;
 | 
						|
  pa0DEPRECATED @21 :UInt16;
 | 
						|
  cpuUsagePercentDEPRECATED @20 :Int8;
 | 
						|
  batteryStatusDEPRECATED @9 :Text;
 | 
						|
  batteryVoltageDEPRECATED @16 :Int32;
 | 
						|
  batteryTempCDEPRECATED @29 :Float32;
 | 
						|
  batteryPercentDEPRECATED @8 :Int16;
 | 
						|
  batteryCurrentDEPRECATED @15 :Int32;
 | 
						|
  chargingErrorDEPRECATED @17 :Bool;
 | 
						|
  chargingDisabledDEPRECATED @18 :Bool;
 | 
						|
  usbOnlineDEPRECATED @12 :Bool;
 | 
						|
  ambientTempCDEPRECATED @30 :Float32;
 | 
						|
}
 | 
						|
 | 
						|
struct PandaState @0xa7649e2575e4591e {
 | 
						|
  ignitionLine @2 :Bool;
 | 
						|
  rxBufferOverflow @7 :UInt32;
 | 
						|
  txBufferOverflow @8 :UInt32;
 | 
						|
  pandaType @10 :PandaType;
 | 
						|
  ignitionCan @13 :Bool;
 | 
						|
  faultStatus @15 :FaultStatus;
 | 
						|
  powerSaveEnabled @16 :Bool;
 | 
						|
  uptime @17 :UInt32;
 | 
						|
  faults @18 :List(FaultType);
 | 
						|
  heartbeatLost @22 :Bool;
 | 
						|
  interruptLoad @25 :Float32;
 | 
						|
  fanPower @28 :UInt8;
 | 
						|
  fanStallCount @34 :UInt8;
 | 
						|
 | 
						|
  spiChecksumErrorCount @33 :UInt16;
 | 
						|
 | 
						|
  harnessStatus @21 :HarnessStatus;
 | 
						|
  sbu1Voltage @35 :Float32;
 | 
						|
  sbu2Voltage @36 :Float32;
 | 
						|
 | 
						|
  # can health
 | 
						|
  canState0 @29 :PandaCanState;
 | 
						|
  canState1 @30 :PandaCanState;
 | 
						|
  canState2 @31 :PandaCanState;
 | 
						|
 | 
						|
  # safety stuff
 | 
						|
  controlsAllowed @3 :Bool;
 | 
						|
  safetyRxInvalid @19 :UInt32;
 | 
						|
  safetyTxBlocked @24 :UInt32;
 | 
						|
  safetyModel @14 :Car.CarParams.SafetyModel;
 | 
						|
  safetyParam @27 :UInt16;
 | 
						|
  alternativeExperience @23 :Int16;
 | 
						|
  safetyRxChecksInvalid @32 :Bool;
 | 
						|
 | 
						|
  voltage @0 :UInt32;
 | 
						|
  current @1 :UInt32;
 | 
						|
 | 
						|
  enum FaultStatus {
 | 
						|
    none @0;
 | 
						|
    faultTemp @1;
 | 
						|
    faultPerm @2;
 | 
						|
  }
 | 
						|
 | 
						|
  enum FaultType {
 | 
						|
    relayMalfunction @0;
 | 
						|
    unusedInterruptHandled @1;
 | 
						|
    interruptRateCan1 @2;
 | 
						|
    interruptRateCan2 @3;
 | 
						|
    interruptRateCan3 @4;
 | 
						|
    interruptRateTach @5;
 | 
						|
    interruptRateGmlanDEPRECATED @6;
 | 
						|
    interruptRateInterrupts @7;
 | 
						|
    interruptRateSpiDma @8;
 | 
						|
    interruptRateSpiCs @9;
 | 
						|
    interruptRateUart1 @10;
 | 
						|
    interruptRateUart2 @11;
 | 
						|
    interruptRateUart3 @12;
 | 
						|
    interruptRateUart5 @13;
 | 
						|
    interruptRateUartDma @14;
 | 
						|
    interruptRateUsb @15;
 | 
						|
    interruptRateTim1 @16;
 | 
						|
    interruptRateTim3 @17;
 | 
						|
    registerDivergent @18;
 | 
						|
    interruptRateKlineInit @19;
 | 
						|
    interruptRateClockSource @20;
 | 
						|
    interruptRateTick @21;
 | 
						|
    interruptRateExti @22;
 | 
						|
    interruptRateSpi @23;
 | 
						|
    interruptRateUart7 @24;
 | 
						|
    sirenMalfunction @25;
 | 
						|
    heartbeatLoopWatchdog @26;
 | 
						|
    # Update max fault type in boardd when adding faults
 | 
						|
  }
 | 
						|
 | 
						|
  enum PandaType @0x8a58adf93e5b3751 {
 | 
						|
    unknown @0;
 | 
						|
    whitePanda @1;
 | 
						|
    greyPanda @2;
 | 
						|
    blackPanda @3;
 | 
						|
    pedal @4;
 | 
						|
    uno @5;
 | 
						|
    dos @6;
 | 
						|
    redPanda @7;
 | 
						|
    redPandaV2 @8;
 | 
						|
    tres @9;
 | 
						|
    cuatro @10;
 | 
						|
  }
 | 
						|
 | 
						|
  enum HarnessStatus {
 | 
						|
    notConnected @0;
 | 
						|
    normal @1;
 | 
						|
    flipped @2;
 | 
						|
  }
 | 
						|
 | 
						|
  struct PandaCanState {
 | 
						|
    busOff @0 :Bool;
 | 
						|
    busOffCnt @1 :UInt32;
 | 
						|
    errorWarning @2 :Bool;
 | 
						|
    errorPassive @3 :Bool;
 | 
						|
    lastError @4 :LecErrorCode;
 | 
						|
    lastStoredError @5 :LecErrorCode;
 | 
						|
    lastDataError @6 :LecErrorCode;
 | 
						|
    lastDataStoredError @7 :LecErrorCode;
 | 
						|
    receiveErrorCnt @8 :UInt8;
 | 
						|
    transmitErrorCnt @9 :UInt8;
 | 
						|
    totalErrorCnt @10 :UInt32;
 | 
						|
    totalTxLostCnt @11 :UInt32;
 | 
						|
    totalRxLostCnt @12 :UInt32;
 | 
						|
    totalTxCnt @13 :UInt32;
 | 
						|
    totalRxCnt @14 :UInt32;
 | 
						|
    totalFwdCnt @15 :UInt32;
 | 
						|
    canSpeed @16 :UInt16;
 | 
						|
    canDataSpeed @17 :UInt16;
 | 
						|
    canfdEnabled @18 :Bool;
 | 
						|
    brsEnabled @19 :Bool;
 | 
						|
    canfdNonIso @20 :Bool;
 | 
						|
    irq0CallRate @21 :UInt32;
 | 
						|
    irq1CallRate @22 :UInt32;
 | 
						|
    irq2CallRate @23 :UInt32;
 | 
						|
    canCoreResetCnt @24 :UInt32;
 | 
						|
 | 
						|
    enum LecErrorCode {
 | 
						|
      noError @0;
 | 
						|
      stuffError @1;
 | 
						|
      formError @2;
 | 
						|
      ackError @3;
 | 
						|
      bit1Error @4;
 | 
						|
      bit0Error @5;
 | 
						|
      crcError @6;
 | 
						|
      noChange @7;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  gasInterceptorDetectedDEPRECATED @4 :Bool;
 | 
						|
  startedSignalDetectedDEPRECATED @5 :Bool;
 | 
						|
  hasGpsDEPRECATED @6 :Bool;
 | 
						|
  gmlanSendErrsDEPRECATED @9 :UInt32;
 | 
						|
  fanSpeedRpmDEPRECATED @11 :UInt16;
 | 
						|
  usbPowerModeDEPRECATED @12 :PeripheralState.UsbPowerModeDEPRECATED;
 | 
						|
  safetyParamDEPRECATED @20 :Int16;
 | 
						|
  safetyParam2DEPRECATED @26 :UInt32;
 | 
						|
}
 | 
						|
 | 
						|
struct PeripheralState {
 | 
						|
  pandaType @0 :PandaState.PandaType;
 | 
						|
  voltage @1 :UInt32;
 | 
						|
  current @2 :UInt32;
 | 
						|
  fanSpeedRpm @3 :UInt16;
 | 
						|
 | 
						|
  usbPowerModeDEPRECATED @4 :UsbPowerModeDEPRECATED;
 | 
						|
  enum UsbPowerModeDEPRECATED @0xa8883583b32c9877 {
 | 
						|
    none @0;
 | 
						|
    client @1;
 | 
						|
    cdp @2;
 | 
						|
    dcp @3;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct RadarState @0x9a185389d6fdd05f {
 | 
						|
  mdMonoTime @6 :UInt64;
 | 
						|
  carStateMonoTime @11 :UInt64;
 | 
						|
  radarErrors @12 :List(Car.RadarData.Error);
 | 
						|
 | 
						|
  leadOne @3 :LeadData;
 | 
						|
  leadTwo @4 :LeadData;
 | 
						|
 | 
						|
  struct LeadData {
 | 
						|
    dRel @0 :Float32;
 | 
						|
    yRel @1 :Float32;
 | 
						|
    vRel @2 :Float32;
 | 
						|
    aRel @3 :Float32;
 | 
						|
    vLead @4 :Float32;
 | 
						|
    dPath @6 :Float32;
 | 
						|
    vLat @7 :Float32;
 | 
						|
    vLeadK @8 :Float32;
 | 
						|
    aLeadK @9 :Float32;
 | 
						|
    fcw @10 :Bool;
 | 
						|
    status @11 :Bool;
 | 
						|
    aLeadTau @12 :Float32;
 | 
						|
    modelProb @13 :Float32;
 | 
						|
    radar @14 :Bool;
 | 
						|
    radarTrackId @15 :Int32 = -1;
 | 
						|
 | 
						|
    aLeadDEPRECATED @5 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  # deprecated
 | 
						|
  ftMonoTimeDEPRECATED @7 :UInt64;
 | 
						|
  warpMatrixDEPRECATED @0 :List(Float32);
 | 
						|
  angleOffsetDEPRECATED @1 :Float32;
 | 
						|
  calStatusDEPRECATED @2 :Int8;
 | 
						|
  calCycleDEPRECATED @8 :Int32;
 | 
						|
  calPercDEPRECATED @9 :Int8;
 | 
						|
  canMonoTimesDEPRECATED @10 :List(UInt64);
 | 
						|
  cumLagMsDEPRECATED @5 :Float32;
 | 
						|
}
 | 
						|
 | 
						|
struct LiveCalibrationData {
 | 
						|
  calStatus @11 :Status;
 | 
						|
  calCycle @2 :Int32;
 | 
						|
  calPerc @3 :Int8;
 | 
						|
  validBlocks @9 :Int32;
 | 
						|
 | 
						|
  # view_frame_from_road_frame
 | 
						|
  # ui's is inversed needs new
 | 
						|
  extrinsicMatrix @4 :List(Float32);
 | 
						|
  # the direction of travel vector in device frame
 | 
						|
  rpyCalib @7 :List(Float32);
 | 
						|
  rpyCalibSpread @8 :List(Float32);
 | 
						|
  wideFromDeviceEuler @10 :List(Float32);
 | 
						|
  height @12 :List(Float32);
 | 
						|
 | 
						|
  warpMatrixDEPRECATED @0 :List(Float32);
 | 
						|
  calStatusDEPRECATED @1 :Int8;
 | 
						|
  warpMatrix2DEPRECATED @5 :List(Float32);
 | 
						|
  warpMatrixBigDEPRECATED @6 :List(Float32);
 | 
						|
 | 
						|
  enum Status {
 | 
						|
    uncalibrated @0;
 | 
						|
    calibrated @1;
 | 
						|
    invalid @2;
 | 
						|
    recalibrating @3;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct LiveTracksDEPRECATED {
 | 
						|
  trackId @0 :Int32;
 | 
						|
  dRel @1 :Float32;
 | 
						|
  yRel @2 :Float32;
 | 
						|
  vRel @3 :Float32;
 | 
						|
  aRel @4 :Float32;
 | 
						|
  timeStamp @5 :Float32;
 | 
						|
  status @6 :Float32;
 | 
						|
  currentTime @7 :Float32;
 | 
						|
  stationary @8 :Bool;
 | 
						|
  oncoming @9 :Bool;
 | 
						|
}
 | 
						|
 | 
						|
struct SelfdriveState {
 | 
						|
  # high level system state
 | 
						|
  state @0 :OpenpilotState;
 | 
						|
  enabled @1 :Bool;
 | 
						|
  active @2 :Bool;
 | 
						|
  engageable @9 :Bool;  # can OP be engaged?
 | 
						|
 | 
						|
  # UI alerts
 | 
						|
  alertText1 @3 :Text;
 | 
						|
  alertText2 @4 :Text;
 | 
						|
  alertStatus @5 :AlertStatus;
 | 
						|
  alertSize @6 :AlertSize;
 | 
						|
  alertType @7 :Text;
 | 
						|
  alertSound @8 :Car.CarControl.HUDControl.AudibleAlert;
 | 
						|
  alertHudVisual @12 :Car.CarControl.HUDControl.VisualAlert;
 | 
						|
 | 
						|
  # configurable driving settings
 | 
						|
  experimentalMode @10 :Bool;
 | 
						|
  personality @11 :LongitudinalPersonality;
 | 
						|
 | 
						|
  enum OpenpilotState @0xdbe58b96d2d1ac61 {
 | 
						|
    disabled @0;
 | 
						|
    preEnabled @1;
 | 
						|
    enabled @2;
 | 
						|
    softDisabling @3;
 | 
						|
    overriding @4;  # superset of overriding with steering or accelerator
 | 
						|
  }
 | 
						|
 | 
						|
  enum AlertStatus @0xa0d0dcd113193c62 {
 | 
						|
    normal @0;
 | 
						|
    userPrompt @1;
 | 
						|
    critical @2;
 | 
						|
  }
 | 
						|
 | 
						|
  enum AlertSize @0xe98bb99d6e985f64 {
 | 
						|
    none @0;
 | 
						|
    small @1;
 | 
						|
    mid @2;
 | 
						|
    full @3;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct ControlsState @0x97ff69c53601abf1 {
 | 
						|
  longitudinalPlanMonoTime @28 :UInt64;
 | 
						|
  lateralPlanMonoTime @50 :UInt64;
 | 
						|
 | 
						|
  longControlState @30 :Car.CarControl.Actuators.LongControlState;
 | 
						|
  upAccelCmd @4 :Float32;
 | 
						|
  uiAccelCmd @5 :Float32;
 | 
						|
  ufAccelCmd @33 :Float32;
 | 
						|
  curvature @37 :Float32;  # path curvature from vehicle model
 | 
						|
  desiredCurvature @61 :Float32;  # lag adjusted curvatures used by lateral controllers
 | 
						|
  forceDecel @51 :Bool;
 | 
						|
 | 
						|
  lateralControlState :union {
 | 
						|
    pidState @53 :LateralPIDState;
 | 
						|
    angleState @58 :LateralAngleState;
 | 
						|
    debugState @59 :LateralDebugState;
 | 
						|
    torqueState @60 :LateralTorqueState;
 | 
						|
 | 
						|
    curvatureStateDEPRECATED @65 :LateralCurvatureState;
 | 
						|
    lqrStateDEPRECATED @55 :LateralLQRState;
 | 
						|
    indiStateDEPRECATED @52 :LateralINDIState;
 | 
						|
  }
 | 
						|
 | 
						|
  struct LateralINDIState {
 | 
						|
    active @0 :Bool;
 | 
						|
    steeringAngleDeg @1 :Float32;
 | 
						|
    steeringRateDeg @2 :Float32;
 | 
						|
    steeringAccelDeg @3 :Float32;
 | 
						|
    rateSetPoint @4 :Float32;
 | 
						|
    accelSetPoint @5 :Float32;
 | 
						|
    accelError @6 :Float32;
 | 
						|
    delayedOutput @7 :Float32;
 | 
						|
    delta @8 :Float32;
 | 
						|
    output @9 :Float32;
 | 
						|
    saturated @10 :Bool;
 | 
						|
    steeringAngleDesiredDeg @11 :Float32;
 | 
						|
    steeringRateDesiredDeg @12 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  struct LateralPIDState {
 | 
						|
    active @0 :Bool;
 | 
						|
    steeringAngleDeg @1 :Float32;
 | 
						|
    steeringRateDeg @2 :Float32;
 | 
						|
    angleError @3 :Float32;
 | 
						|
    p @4 :Float32;
 | 
						|
    i @5 :Float32;
 | 
						|
    f @6 :Float32;
 | 
						|
    output @7 :Float32;
 | 
						|
    saturated @8 :Bool;
 | 
						|
    steeringAngleDesiredDeg @9 :Float32;
 | 
						|
   }
 | 
						|
 | 
						|
  struct LateralTorqueState {
 | 
						|
    active @0 :Bool;
 | 
						|
    error @1 :Float32;
 | 
						|
    errorRate @8 :Float32;
 | 
						|
    p @2 :Float32;
 | 
						|
    i @3 :Float32;
 | 
						|
    d @4 :Float32;
 | 
						|
    f @5 :Float32;
 | 
						|
    output @6 :Float32;
 | 
						|
    saturated @7 :Bool;
 | 
						|
    actualLateralAccel @9 :Float32;
 | 
						|
    desiredLateralAccel @10 :Float32;
 | 
						|
   }
 | 
						|
 | 
						|
  struct LateralLQRState {
 | 
						|
    active @0 :Bool;
 | 
						|
    steeringAngleDeg @1 :Float32;
 | 
						|
    i @2 :Float32;
 | 
						|
    output @3 :Float32;
 | 
						|
    lqrOutput @4 :Float32;
 | 
						|
    saturated @5 :Bool;
 | 
						|
    steeringAngleDesiredDeg @6 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  struct LateralAngleState {
 | 
						|
    active @0 :Bool;
 | 
						|
    steeringAngleDeg @1 :Float32;
 | 
						|
    output @2 :Float32;
 | 
						|
    saturated @3 :Bool;
 | 
						|
    steeringAngleDesiredDeg @4 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  struct LateralCurvatureState {
 | 
						|
    active @0 :Bool;
 | 
						|
    actualCurvature @1 :Float32;
 | 
						|
    desiredCurvature @2 :Float32;
 | 
						|
    error @3 :Float32;
 | 
						|
    p @4 :Float32;
 | 
						|
    i @5 :Float32;
 | 
						|
    f @6 :Float32;
 | 
						|
    output @7 :Float32;
 | 
						|
    saturated @8 :Bool;
 | 
						|
  }
 | 
						|
 | 
						|
  struct LateralDebugState {
 | 
						|
    active @0 :Bool;
 | 
						|
    steeringAngleDeg @1 :Float32;
 | 
						|
    output @2 :Float32;
 | 
						|
    saturated @3 :Bool;
 | 
						|
  }
 | 
						|
 | 
						|
  # deprecated
 | 
						|
  vEgoDEPRECATED @0 :Float32;
 | 
						|
  vEgoRawDEPRECATED @32 :Float32;
 | 
						|
  aEgoDEPRECATED @1 :Float32;
 | 
						|
  canMonoTimeDEPRECATED @16 :UInt64;
 | 
						|
  radarStateMonoTimeDEPRECATED @17 :UInt64;
 | 
						|
  mdMonoTimeDEPRECATED @18 :UInt64;
 | 
						|
  yActualDEPRECATED @6 :Float32;
 | 
						|
  yDesDEPRECATED @7 :Float32;
 | 
						|
  upSteerDEPRECATED @8 :Float32;
 | 
						|
  uiSteerDEPRECATED @9 :Float32;
 | 
						|
  ufSteerDEPRECATED @34 :Float32;
 | 
						|
  aTargetMinDEPRECATED @10 :Float32;
 | 
						|
  aTargetMaxDEPRECATED @11 :Float32;
 | 
						|
  rearViewCamDEPRECATED @23 :Bool;
 | 
						|
  driverMonitoringOnDEPRECATED @43 :Bool;
 | 
						|
  hudLeadDEPRECATED @14 :Int32;
 | 
						|
  alertSoundDEPRECATED @45 :Text;
 | 
						|
  angleModelBiasDEPRECATED @27 :Float32;
 | 
						|
  gpsPlannerActiveDEPRECATED @40 :Bool;
 | 
						|
  decelForTurnDEPRECATED @47 :Bool;
 | 
						|
  decelForModelDEPRECATED @54 :Bool;
 | 
						|
  awarenessStatusDEPRECATED @26 :Float32;
 | 
						|
  angleSteersDEPRECATED @13 :Float32;
 | 
						|
  vCurvatureDEPRECATED @46 :Float32;
 | 
						|
  mapValidDEPRECATED @49 :Bool;
 | 
						|
  jerkFactorDEPRECATED @12 :Float32;
 | 
						|
  steerOverrideDEPRECATED @20 :Bool;
 | 
						|
  steeringAngleDesiredDegDEPRECATED @29 :Float32;
 | 
						|
  canMonoTimesDEPRECATED @21 :List(UInt64);
 | 
						|
  desiredCurvatureRateDEPRECATED @62 :Float32;
 | 
						|
  canErrorCounterDEPRECATED @57 :UInt32;
 | 
						|
  vPidDEPRECATED @2 :Float32;
 | 
						|
  alertBlinkingRateDEPRECATED @42 :Float32;
 | 
						|
  alertText1DEPRECATED @24 :Text;
 | 
						|
  alertText2DEPRECATED @25 :Text;
 | 
						|
  alertStatusDEPRECATED @38 :SelfdriveState.AlertStatus;
 | 
						|
  alertSizeDEPRECATED @39 :SelfdriveState.AlertSize;
 | 
						|
  alertTypeDEPRECATED @44 :Text;
 | 
						|
  alertSound2DEPRECATED @56 :Car.CarControl.HUDControl.AudibleAlert;
 | 
						|
  engageableDEPRECATED @41 :Bool;  # can OP be engaged?
 | 
						|
  stateDEPRECATED @31 :SelfdriveState.OpenpilotState;
 | 
						|
  enabledDEPRECATED @19 :Bool;
 | 
						|
  activeDEPRECATED @36 :Bool;
 | 
						|
  experimentalModeDEPRECATED @64 :Bool;
 | 
						|
  personalityDEPRECATED @66 :LongitudinalPersonality;
 | 
						|
  vCruiseDEPRECATED @22 :Float32;  # actual set speed
 | 
						|
  vCruiseClusterDEPRECATED @63 :Float32;  # set speed to display in the UI
 | 
						|
  startMonoTimeDEPRECATED @48 :UInt64;
 | 
						|
  cumLagMsDEPRECATED @15 :Float32;
 | 
						|
  aTargetDEPRECATED @35 :Float32;
 | 
						|
  vTargetLeadDEPRECATED @3 :Float32;
 | 
						|
}
 | 
						|
 | 
						|
struct DrivingModelData {
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  frameIdExtra @1 :UInt32;
 | 
						|
  frameDropPerc @6 :Float32;
 | 
						|
  modelExecutionTime @7 :Float32;
 | 
						|
 | 
						|
  action @2 :ModelDataV2.Action;
 | 
						|
 | 
						|
  laneLineMeta @3 :LaneLineMeta;
 | 
						|
  meta @4 :MetaData;
 | 
						|
 | 
						|
  path @5 :PolyPath;
 | 
						|
 | 
						|
  struct PolyPath {
 | 
						|
    xCoefficients @0 :List(Float32);
 | 
						|
    yCoefficients @1 :List(Float32);
 | 
						|
    zCoefficients @2 :List(Float32);
 | 
						|
  }
 | 
						|
 | 
						|
  struct LaneLineMeta {
 | 
						|
    leftY @0 :Float32;
 | 
						|
    rightY @1 :Float32;
 | 
						|
    leftProb @2 :Float32;
 | 
						|
    rightProb @3 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  struct MetaData {
 | 
						|
    laneChangeState @0 :LaneChangeState;
 | 
						|
    laneChangeDirection @1 :LaneChangeDirection;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
# All SI units and in device frame
 | 
						|
struct XYZTData @0xc3cbae1fd505ae80 {
 | 
						|
  x @0 :List(Float32);
 | 
						|
  y @1 :List(Float32);
 | 
						|
  z @2 :List(Float32);
 | 
						|
  t @3 :List(Float32);
 | 
						|
  xStd @4 :List(Float32);
 | 
						|
  yStd @5 :List(Float32);
 | 
						|
  zStd @6 :List(Float32);
 | 
						|
}
 | 
						|
 | 
						|
struct ModelDataV2 {
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  frameIdExtra @20 :UInt32;
 | 
						|
  frameAge @1 :UInt32;
 | 
						|
  frameDropPerc @2 :Float32;
 | 
						|
  timestampEof @3 :UInt64;
 | 
						|
  modelExecutionTime @15 :Float32;
 | 
						|
  rawPredictions @16 :Data;
 | 
						|
 | 
						|
  # predicted future position, orientation, etc..
 | 
						|
  position @4 :XYZTData;
 | 
						|
  orientation @5 :XYZTData;
 | 
						|
  velocity @6 :XYZTData;
 | 
						|
  orientationRate @7 :XYZTData;
 | 
						|
  acceleration @19 :XYZTData;
 | 
						|
 | 
						|
  # prediction lanelines and road edges
 | 
						|
  laneLines @8 :List(XYZTData);
 | 
						|
  laneLineProbs @9 :List(Float32);
 | 
						|
  laneLineStds @13 :List(Float32);
 | 
						|
  roadEdges @10 :List(XYZTData);
 | 
						|
  roadEdgeStds @14 :List(Float32);
 | 
						|
 | 
						|
  # predicted lead cars
 | 
						|
  leads @11 :List(LeadDataV2);
 | 
						|
  leadsV3 @18 :List(LeadDataV3);
 | 
						|
 | 
						|
  meta @12 :MetaData;
 | 
						|
  confidence @23: ConfidenceClass;
 | 
						|
 | 
						|
  # Model perceived motion
 | 
						|
  temporalPose @21 :Pose;
 | 
						|
 | 
						|
  # e2e lateral planner
 | 
						|
  action @26: Action;
 | 
						|
 | 
						|
  gpuExecutionTimeDEPRECATED @17 :Float32;
 | 
						|
  navEnabledDEPRECATED @22 :Bool;
 | 
						|
  locationMonoTimeDEPRECATED @24 :UInt64;
 | 
						|
  lateralPlannerSolutionDEPRECATED @25: LateralPlannerSolution;
 | 
						|
 | 
						|
  struct LeadDataV2 {
 | 
						|
    prob @0 :Float32; # probability that car is your lead at time t
 | 
						|
    t @1 :Float32;
 | 
						|
 | 
						|
    # x and y are relative position in device frame
 | 
						|
    # v is norm relative speed
 | 
						|
    # a is norm relative acceleration
 | 
						|
    xyva @2 :List(Float32);
 | 
						|
    xyvaStd @3 :List(Float32);
 | 
						|
  }
 | 
						|
 | 
						|
  struct LeadDataV3 {
 | 
						|
    prob @0 :Float32; # probability that car is your lead at time t
 | 
						|
    probTime @1 :Float32;
 | 
						|
    t @2 :List(Float32);
 | 
						|
 | 
						|
    # x and y are relative position in device frame
 | 
						|
    # v absolute norm speed
 | 
						|
    # a is derivative of v
 | 
						|
    x @3 :List(Float32);
 | 
						|
    xStd @4 :List(Float32);
 | 
						|
    y @5 :List(Float32);
 | 
						|
    yStd @6 :List(Float32);
 | 
						|
    v @7 :List(Float32);
 | 
						|
    vStd @8 :List(Float32);
 | 
						|
    a @9 :List(Float32);
 | 
						|
    aStd @10 :List(Float32);
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
  struct MetaData {
 | 
						|
    engagedProb @0 :Float32;
 | 
						|
    desirePrediction @1 :List(Float32);
 | 
						|
    desireState @5 :List(Float32);
 | 
						|
    disengagePredictions @6 :DisengagePredictions;
 | 
						|
    hardBrakePredicted @7 :Bool;
 | 
						|
    laneChangeState @8 :LaneChangeState;
 | 
						|
    laneChangeDirection @9 :LaneChangeDirection;
 | 
						|
 | 
						|
 | 
						|
    # deprecated
 | 
						|
    brakeDisengageProbDEPRECATED @2 :Float32;
 | 
						|
    gasDisengageProbDEPRECATED @3 :Float32;
 | 
						|
    steerOverrideProbDEPRECATED @4 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  enum ConfidenceClass {
 | 
						|
    red @0;
 | 
						|
    yellow @1;
 | 
						|
    green @2;
 | 
						|
  }
 | 
						|
 | 
						|
  struct DisengagePredictions {
 | 
						|
    t @0 :List(Float32);
 | 
						|
    brakeDisengageProbs @1 :List(Float32);
 | 
						|
    gasDisengageProbs @2 :List(Float32);
 | 
						|
    steerOverrideProbs @3 :List(Float32);
 | 
						|
    brake3MetersPerSecondSquaredProbs @4 :List(Float32);
 | 
						|
    brake4MetersPerSecondSquaredProbs @5 :List(Float32);
 | 
						|
    brake5MetersPerSecondSquaredProbs @6 :List(Float32);
 | 
						|
    gasPressProbs @7 :List(Float32);
 | 
						|
    brakePressProbs @8 :List(Float32);
 | 
						|
  }
 | 
						|
 | 
						|
  struct Pose {
 | 
						|
    trans @0 :List(Float32); # m/s in device frame
 | 
						|
    rot @1 :List(Float32); # rad/s in device frame
 | 
						|
    transStd @2 :List(Float32); # std m/s in device frame
 | 
						|
    rotStd @3 :List(Float32); # std rad/s in device frame
 | 
						|
  }
 | 
						|
 | 
						|
  struct LateralPlannerSolution {
 | 
						|
    x @0 :List(Float32);
 | 
						|
    y @1 :List(Float32);
 | 
						|
    yaw @2 :List(Float32);
 | 
						|
    yawRate @3 :List(Float32);
 | 
						|
    xStd @4 :List(Float32);
 | 
						|
    yStd @5 :List(Float32);
 | 
						|
    yawStd @6 :List(Float32);
 | 
						|
    yawRateStd @7 :List(Float32);
 | 
						|
  }
 | 
						|
 | 
						|
  struct Action {
 | 
						|
    desiredCurvature @0 :Float32;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct EncodeIndex {
 | 
						|
  # picture from camera
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  type @1 :Type;
 | 
						|
  # index of encoder from start of route
 | 
						|
  encodeId @2 :UInt32;
 | 
						|
  # minute long segment this frame is in
 | 
						|
  segmentNum @3 :Int32;
 | 
						|
  # index into camera file in segment in presentation order
 | 
						|
  segmentId @4 :UInt32;
 | 
						|
  # index into camera file in segment in encode order
 | 
						|
  segmentIdEncode @5 :UInt32;
 | 
						|
  timestampSof @6 :UInt64;
 | 
						|
  timestampEof @7 :UInt64;
 | 
						|
 | 
						|
  # encoder metadata
 | 
						|
  flags @8 :UInt32;
 | 
						|
  len @9 :UInt32;
 | 
						|
 | 
						|
  enum Type {
 | 
						|
    bigBoxLossless @0;
 | 
						|
    fullHEVC @1;
 | 
						|
    qcameraH264 @6;
 | 
						|
    livestreamH264 @7;
 | 
						|
 | 
						|
    # deprecated
 | 
						|
    bigBoxHEVCDEPRECATED @2;
 | 
						|
    chffrAndroidH264DEPRECATED @3;
 | 
						|
    fullLosslessClipDEPRECATED @4;
 | 
						|
    frontDEPRECATED @5;
 | 
						|
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct AndroidLogEntry {
 | 
						|
  id @0 :UInt8;
 | 
						|
  ts @1 :UInt64;
 | 
						|
  priority @2 :UInt8;
 | 
						|
  pid @3 :Int32;
 | 
						|
  tid @4 :Int32;
 | 
						|
  tag @5 :Text;
 | 
						|
  message @6 :Text;
 | 
						|
}
 | 
						|
 | 
						|
struct DriverAssistance {
 | 
						|
  # Lane Departure Warnings
 | 
						|
  leftLaneDeparture @0 :Bool;
 | 
						|
  rightLaneDeparture @1 :Bool;
 | 
						|
 | 
						|
  # FCW, AEB, etc. will go here
 | 
						|
}
 | 
						|
 | 
						|
struct LongitudinalPlan @0xe00b5b3eba12876c {
 | 
						|
  modelMonoTime @9 :UInt64;
 | 
						|
  hasLead @7 :Bool;
 | 
						|
  fcw @8 :Bool;
 | 
						|
  longitudinalPlanSource @15 :LongitudinalPlanSource;
 | 
						|
  processingDelay @29 :Float32;
 | 
						|
 | 
						|
  # desired speed/accel/jerk over next 2.5s
 | 
						|
  accels @32 :List(Float32);
 | 
						|
  speeds @33 :List(Float32);
 | 
						|
  jerks @34 :List(Float32);
 | 
						|
  aTarget @18 :Float32;
 | 
						|
  shouldStop @37: Bool;
 | 
						|
  allowThrottle @38: Bool;
 | 
						|
  allowBrake @39: Bool;
 | 
						|
 | 
						|
 | 
						|
  solverExecutionTime @35 :Float32;
 | 
						|
 | 
						|
  enum LongitudinalPlanSource {
 | 
						|
    cruise @0;
 | 
						|
    lead0 @1;
 | 
						|
    lead1 @2;
 | 
						|
    lead2 @3;
 | 
						|
    e2e @4;
 | 
						|
  }
 | 
						|
 | 
						|
  # deprecated
 | 
						|
  vCruiseDEPRECATED @16 :Float32;
 | 
						|
  aCruiseDEPRECATED @17 :Float32;
 | 
						|
  vTargetDEPRECATED @3 :Float32;
 | 
						|
  vTargetFutureDEPRECATED @14 :Float32;
 | 
						|
  vStartDEPRECATED @26 :Float32;
 | 
						|
  aStartDEPRECATED @27 :Float32;
 | 
						|
  vMaxDEPRECATED @20 :Float32;
 | 
						|
  radarStateMonoTimeDEPRECATED @10 :UInt64;
 | 
						|
  jerkFactorDEPRECATED @6 :Float32;
 | 
						|
  hasLeftLaneDEPRECATED @23 :Bool;
 | 
						|
  hasRightLaneDEPRECATED @24 :Bool;
 | 
						|
  aTargetMinDEPRECATED @4 :Float32;
 | 
						|
  aTargetMaxDEPRECATED @5 :Float32;
 | 
						|
  lateralValidDEPRECATED @0 :Bool;
 | 
						|
  longitudinalValidDEPRECATED @2 :Bool;
 | 
						|
  dPolyDEPRECATED @1 :List(Float32);
 | 
						|
  laneWidthDEPRECATED @11 :Float32;
 | 
						|
  vCurvatureDEPRECATED @21 :Float32;
 | 
						|
  decelForTurnDEPRECATED @22 :Bool;
 | 
						|
  mapValidDEPRECATED @25 :Bool;
 | 
						|
  radarValidDEPRECATED @28 :Bool;
 | 
						|
  radarCanErrorDEPRECATED @30 :Bool;
 | 
						|
  commIssueDEPRECATED @31 :Bool;
 | 
						|
  eventsDEPRECATED @13 :List(Car.OnroadEventDEPRECATED);
 | 
						|
  gpsTrajectoryDEPRECATED @12 :GpsTrajectory;
 | 
						|
  gpsPlannerActiveDEPRECATED @19 :Bool;
 | 
						|
  personalityDEPRECATED @36 :LongitudinalPersonality;
 | 
						|
 | 
						|
  struct GpsTrajectory {
 | 
						|
    x @0 :List(Float32);
 | 
						|
    y @1 :List(Float32);
 | 
						|
  }
 | 
						|
}
 | 
						|
struct UiPlan {
 | 
						|
  frameId @2 :UInt32;
 | 
						|
  position @0 :XYZTData;
 | 
						|
  accel @1 :List(Float32);
 | 
						|
}
 | 
						|
 | 
						|
struct LateralPlan @0xe1e9318e2ae8b51e {
 | 
						|
  modelMonoTime @31 :UInt64;
 | 
						|
  laneWidthDEPRECATED @0 :Float32;
 | 
						|
  lProbDEPRECATED @5 :Float32;
 | 
						|
  rProbDEPRECATED @7 :Float32;
 | 
						|
  dPathPoints @20 :List(Float32);
 | 
						|
  dProbDEPRECATED @21 :Float32;
 | 
						|
 | 
						|
  mpcSolutionValid @9 :Bool;
 | 
						|
  desire @17 :Desire;
 | 
						|
  laneChangeState @18 :LaneChangeState;
 | 
						|
  laneChangeDirection @19 :LaneChangeDirection;
 | 
						|
  useLaneLines @29 :Bool;
 | 
						|
 | 
						|
  # desired curvatures over next 2.5s in rad/m
 | 
						|
  psis @26 :List(Float32);
 | 
						|
  curvatures @27 :List(Float32);
 | 
						|
  curvatureRates @28 :List(Float32);
 | 
						|
 | 
						|
  solverExecutionTime @30 :Float32;
 | 
						|
  solverCost @32 :Float32;
 | 
						|
  solverState @33 :SolverState;
 | 
						|
 | 
						|
  struct SolverState {
 | 
						|
    x @0 :List(List(Float32));
 | 
						|
    u @1 :List(Float32);
 | 
						|
  }
 | 
						|
 | 
						|
  # deprecated
 | 
						|
  curvatureDEPRECATED @22 :Float32;
 | 
						|
  curvatureRateDEPRECATED @23 :Float32;
 | 
						|
  rawCurvatureDEPRECATED @24 :Float32;
 | 
						|
  rawCurvatureRateDEPRECATED @25 :Float32;
 | 
						|
  cProbDEPRECATED @3 :Float32;
 | 
						|
  dPolyDEPRECATED @1 :List(Float32);
 | 
						|
  cPolyDEPRECATED @2 :List(Float32);
 | 
						|
  lPolyDEPRECATED @4 :List(Float32);
 | 
						|
  rPolyDEPRECATED @6 :List(Float32);
 | 
						|
  modelValidDEPRECATED @12 :Bool;
 | 
						|
  commIssueDEPRECATED @15 :Bool;
 | 
						|
  posenetValidDEPRECATED @16 :Bool;
 | 
						|
  sensorValidDEPRECATED @14 :Bool;
 | 
						|
  paramsValidDEPRECATED @10 :Bool;
 | 
						|
  steeringAngleDegDEPRECATED @8 :Float32; # deg
 | 
						|
  steeringRateDegDEPRECATED @13 :Float32; # deg/s
 | 
						|
  angleOffsetDegDEPRECATED @11 :Float32;
 | 
						|
}
 | 
						|
 | 
						|
struct LiveLocationKalman {
 | 
						|
 | 
						|
  # More info on reference frames:
 | 
						|
  # https://github.com/commaai/openpilot/tree/master/common/transformations
 | 
						|
 | 
						|
  positionECEF @0 : Measurement;
 | 
						|
  positionGeodetic @1 : Measurement;
 | 
						|
  velocityECEF @2 : Measurement;
 | 
						|
  velocityNED @3 : Measurement;
 | 
						|
  velocityDevice @4 : Measurement;
 | 
						|
  accelerationDevice @5: Measurement;
 | 
						|
 | 
						|
 | 
						|
  # These angles are all eulers and roll, pitch, yaw
 | 
						|
  # orientationECEF transforms to rot matrix: ecef_from_device
 | 
						|
  orientationECEF @6 : Measurement;
 | 
						|
  calibratedOrientationECEF @20 : Measurement;
 | 
						|
  orientationNED @7 : Measurement;
 | 
						|
  angularVelocityDevice @8 : Measurement;
 | 
						|
 | 
						|
  # orientationNEDCalibrated transforms to rot matrix: NED_from_calibrated
 | 
						|
  calibratedOrientationNED @9 : Measurement;
 | 
						|
 | 
						|
  # Calibrated frame is simply device frame
 | 
						|
  # aligned with the vehicle
 | 
						|
  velocityCalibrated @10 : Measurement;
 | 
						|
  accelerationCalibrated @11 : Measurement;
 | 
						|
  angularVelocityCalibrated @12 : Measurement;
 | 
						|
 | 
						|
  gpsWeek @13 :Int32;
 | 
						|
  gpsTimeOfWeek @14 :Float64;
 | 
						|
  status @15 :Status;
 | 
						|
  unixTimestampMillis @16 :Int64;
 | 
						|
  inputsOK @17 :Bool = true;
 | 
						|
  posenetOK @18 :Bool = true;
 | 
						|
  gpsOK @19 :Bool = true;
 | 
						|
  sensorsOK @21 :Bool = true;
 | 
						|
  deviceStable @22 :Bool = true;
 | 
						|
  timeSinceReset @23 :Float64;
 | 
						|
  excessiveResets @24 :Bool;
 | 
						|
  timeToFirstFix @25 :Float32;
 | 
						|
 | 
						|
  filterState @26 : Measurement;
 | 
						|
 | 
						|
  enum Status {
 | 
						|
    uninitialized @0;
 | 
						|
    uncalibrated @1;
 | 
						|
    valid @2;
 | 
						|
  }
 | 
						|
 | 
						|
  struct Measurement {
 | 
						|
    value @0 : List(Float64);
 | 
						|
    std @1 : List(Float64);
 | 
						|
    valid @2 : Bool;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
struct LivePose {
 | 
						|
  # More info on reference frames:
 | 
						|
  # https://github.com/commaai/openpilot/tree/master/common/transformations
 | 
						|
  orientationNED @0 :XYZMeasurement;
 | 
						|
  velocityDevice @1 :XYZMeasurement;
 | 
						|
  accelerationDevice @2 :XYZMeasurement;
 | 
						|
  angularVelocityDevice @3 :XYZMeasurement;
 | 
						|
 | 
						|
  inputsOK @4 :Bool = false;
 | 
						|
  posenetOK @5 :Bool = false;
 | 
						|
  sensorsOK @6 :Bool = false;
 | 
						|
 | 
						|
  debugFilterState @7 :FilterState;
 | 
						|
 | 
						|
  struct XYZMeasurement {
 | 
						|
    x @0 :Float32;
 | 
						|
    y @1 :Float32;
 | 
						|
    z @2 :Float32;
 | 
						|
    xStd @3 :Float32;
 | 
						|
    yStd @4 :Float32;
 | 
						|
    zStd @5 :Float32;
 | 
						|
    valid @6 :Bool;
 | 
						|
  }
 | 
						|
 | 
						|
  struct FilterState {
 | 
						|
    value @0 : List(Float64);
 | 
						|
    std @1 : List(Float64);
 | 
						|
    valid @2 : Bool;
 | 
						|
 | 
						|
    observations @3 :List(Observation);
 | 
						|
 | 
						|
    struct Observation {
 | 
						|
      kind @0 :Int32;
 | 
						|
      value @1 :List(Float32);
 | 
						|
      error @2 :List(Float32);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct ProcLog {
 | 
						|
  cpuTimes @0 :List(CPUTimes);
 | 
						|
  mem @1 :Mem;
 | 
						|
  procs @2 :List(Process);
 | 
						|
 | 
						|
  struct Process {
 | 
						|
    pid @0 :Int32;
 | 
						|
    name @1 :Text;
 | 
						|
    state @2 :UInt8;
 | 
						|
    ppid @3 :Int32;
 | 
						|
 | 
						|
    cpuUser @4 :Float32;
 | 
						|
    cpuSystem @5 :Float32;
 | 
						|
    cpuChildrenUser @6 :Float32;
 | 
						|
    cpuChildrenSystem @7 :Float32;
 | 
						|
    priority @8 :Int64;
 | 
						|
    nice @9 :Int32;
 | 
						|
    numThreads @10 :Int32;
 | 
						|
    startTime @11 :Float64;
 | 
						|
 | 
						|
    memVms @12 :UInt64;
 | 
						|
    memRss @13 :UInt64;
 | 
						|
 | 
						|
    processor @14 :Int32;
 | 
						|
 | 
						|
    cmdline @15 :List(Text);
 | 
						|
    exe @16 :Text;
 | 
						|
  }
 | 
						|
 | 
						|
  struct CPUTimes {
 | 
						|
    cpuNum @0 :Int64;
 | 
						|
    user @1 :Float32;
 | 
						|
    nice @2 :Float32;
 | 
						|
    system @3 :Float32;
 | 
						|
    idle @4 :Float32;
 | 
						|
    iowait @5 :Float32;
 | 
						|
    irq @6 :Float32;
 | 
						|
    softirq @7 :Float32;
 | 
						|
  }
 | 
						|
 | 
						|
  struct Mem {
 | 
						|
    total @0 :UInt64;
 | 
						|
    free @1 :UInt64;
 | 
						|
    available @2 :UInt64;
 | 
						|
    buffers @3 :UInt64;
 | 
						|
    cached @4 :UInt64;
 | 
						|
    active @5 :UInt64;
 | 
						|
    inactive @6 :UInt64;
 | 
						|
    shared @7 :UInt64;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct GnssMeasurements {
 | 
						|
  measTime @0 :UInt64;
 | 
						|
  gpsWeek @1 :Int16;
 | 
						|
  gpsTimeOfWeek @2 :Float64;
 | 
						|
 | 
						|
  correctedMeasurements @3 :List(CorrectedMeasurement);
 | 
						|
  ephemerisStatuses @9 :List(EphemerisStatus);
 | 
						|
 | 
						|
  kalmanPositionECEF @4 :LiveLocationKalman.Measurement;
 | 
						|
  kalmanVelocityECEF @5 :LiveLocationKalman.Measurement;
 | 
						|
  positionECEF @6 :LiveLocationKalman.Measurement;
 | 
						|
  velocityECEF @7 :LiveLocationKalman.Measurement;
 | 
						|
  timeToFirstFix @8 :Float32;
 | 
						|
  # Todo sync this with timing pulse of ublox
 | 
						|
 | 
						|
  struct EphemerisStatus {
 | 
						|
    constellationId @0 :ConstellationId;
 | 
						|
    svId @1 :UInt8;
 | 
						|
    type @2 :EphemerisType;
 | 
						|
    source @3 :EphemerisSource;
 | 
						|
    gpsWeek @4 : UInt16;
 | 
						|
    tow @5 :Float64;
 | 
						|
  }
 | 
						|
 | 
						|
  struct CorrectedMeasurement {
 | 
						|
    constellationId @0 :ConstellationId;
 | 
						|
    svId @1 :UInt8;
 | 
						|
    # Is 0 when not Glonass constellation.
 | 
						|
    glonassFrequency @2 :Int8;
 | 
						|
    pseudorange @3 :Float64;
 | 
						|
    pseudorangeStd @4 :Float64;
 | 
						|
    pseudorangeRate @5 :Float64;
 | 
						|
    pseudorangeRateStd @6 :Float64;
 | 
						|
    # Satellite position and velocity [x,y,z]
 | 
						|
    satPos @7 :List(Float64);
 | 
						|
    satVel @8 :List(Float64);
 | 
						|
    ephemerisSourceDEPRECATED @9 :EphemerisSourceDEPRECATED;
 | 
						|
  }
 | 
						|
 | 
						|
  struct EphemerisSourceDEPRECATED {
 | 
						|
    type @0 :EphemerisType;
 | 
						|
    # first epoch in file:
 | 
						|
    gpsWeek @1 :Int16; # -1 if Nav
 | 
						|
    gpsTimeOfWeek @2 :Int32; # -1 if Nav. Integer for seconds is good enough for logs.
 | 
						|
  }
 | 
						|
 | 
						|
  enum ConstellationId {
 | 
						|
    # Satellite Constellation using the Ublox gnssid as index
 | 
						|
    gps @0;
 | 
						|
    sbas @1;
 | 
						|
    galileo @2;
 | 
						|
    beidou @3;
 | 
						|
    imes @4;
 | 
						|
    qznss @5;
 | 
						|
    glonass @6;
 | 
						|
  }
 | 
						|
 | 
						|
  enum EphemerisType {
 | 
						|
    nav @0;
 | 
						|
    # Different ultra-rapid files:
 | 
						|
    nasaUltraRapid @1;
 | 
						|
    glonassIacUltraRapid @2;
 | 
						|
    qcom @3;
 | 
						|
  }
 | 
						|
 | 
						|
  enum EphemerisSource {
 | 
						|
    gnssChip @0;
 | 
						|
    internet @1;
 | 
						|
    cache @2;
 | 
						|
    unknown @3;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct UbloxGnss {
 | 
						|
  union {
 | 
						|
    measurementReport @0 :MeasurementReport;
 | 
						|
    ephemeris @1 :Ephemeris;
 | 
						|
    ionoData @2 :IonoData;
 | 
						|
    hwStatus @3 :HwStatus;
 | 
						|
    hwStatus2 @4 :HwStatus2;
 | 
						|
    glonassEphemeris @5 :GlonassEphemeris;
 | 
						|
    satReport @6 :SatReport;
 | 
						|
  }
 | 
						|
 | 
						|
  struct SatReport {
 | 
						|
    #received time of week in gps time in seconds and gps week
 | 
						|
    iTow @0 :UInt32;
 | 
						|
    svs @1 :List(SatInfo);
 | 
						|
 | 
						|
    struct SatInfo {
 | 
						|
      svId @0 :UInt8;
 | 
						|
      gnssId @1 :UInt8;
 | 
						|
      flagsBitfield @2 :UInt32;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  struct MeasurementReport {
 | 
						|
    #received time of week in gps time in seconds and gps week
 | 
						|
    rcvTow @0 :Float64;
 | 
						|
    gpsWeek @1 :UInt16;
 | 
						|
    # leap seconds in seconds
 | 
						|
    leapSeconds @2 :UInt16;
 | 
						|
    # receiver status
 | 
						|
    receiverStatus @3 :ReceiverStatus;
 | 
						|
    # num of measurements to follow
 | 
						|
    numMeas @4 :UInt8;
 | 
						|
    measurements @5 :List(Measurement);
 | 
						|
 | 
						|
    struct ReceiverStatus {
 | 
						|
      # leap seconds have been determined
 | 
						|
      leapSecValid @0 :Bool;
 | 
						|
      # Clock reset applied
 | 
						|
      clkReset @1 :Bool;
 | 
						|
    }
 | 
						|
 | 
						|
    struct Measurement {
 | 
						|
      svId @0 :UInt8;
 | 
						|
      trackingStatus @1 :TrackingStatus;
 | 
						|
      # pseudorange in meters
 | 
						|
      pseudorange @2 :Float64;
 | 
						|
      # carrier phase measurement in cycles
 | 
						|
      carrierCycles @3 :Float64;
 | 
						|
      # doppler measurement in Hz
 | 
						|
      doppler @4 :Float32;
 | 
						|
      # GNSS id, 0 is gps
 | 
						|
      gnssId @5 :UInt8;
 | 
						|
      glonassFrequencyIndex @6 :UInt8;
 | 
						|
      # carrier phase locktime counter in ms
 | 
						|
      locktime @7 :UInt16;
 | 
						|
      # Carrier-to-noise density ratio (signal strength) in dBHz
 | 
						|
      cno @8 :UInt8;
 | 
						|
      # pseudorange standard deviation in meters
 | 
						|
      pseudorangeStdev @9 :Float32;
 | 
						|
      # carrier phase standard deviation in cycles
 | 
						|
      carrierPhaseStdev @10 :Float32;
 | 
						|
      # doppler standard deviation in Hz
 | 
						|
      dopplerStdev @11 :Float32;
 | 
						|
      sigId @12 :UInt8;
 | 
						|
 | 
						|
      struct TrackingStatus {
 | 
						|
        # pseudorange valid
 | 
						|
        pseudorangeValid @0 :Bool;
 | 
						|
        # carrier phase valid
 | 
						|
        carrierPhaseValid @1 :Bool;
 | 
						|
        # half cycle valid
 | 
						|
        halfCycleValid @2 :Bool;
 | 
						|
        # half cycle subtracted from phase
 | 
						|
        halfCycleSubtracted @3 :Bool;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  struct Ephemeris {
 | 
						|
    # This is according to the rinex (2?) format
 | 
						|
    svId @0 :UInt16;
 | 
						|
    year @1 :UInt16;
 | 
						|
    month @2 :UInt16;
 | 
						|
    day @3 :UInt16;
 | 
						|
    hour @4 :UInt16;
 | 
						|
    minute @5 :UInt16;
 | 
						|
    second @6 :Float32;
 | 
						|
    af0 @7 :Float64;
 | 
						|
    af1 @8 :Float64;
 | 
						|
    af2 @9 :Float64;
 | 
						|
 | 
						|
    iode @10 :Float64;
 | 
						|
    crs @11 :Float64;
 | 
						|
    deltaN @12 :Float64;
 | 
						|
    m0 @13 :Float64;
 | 
						|
 | 
						|
    cuc @14 :Float64;
 | 
						|
    ecc @15 :Float64;
 | 
						|
    cus @16 :Float64;
 | 
						|
    a @17 :Float64; # note that this is not the root!!
 | 
						|
 | 
						|
    toe @18 :Float64;
 | 
						|
    cic @19 :Float64;
 | 
						|
    omega0 @20 :Float64;
 | 
						|
    cis @21 :Float64;
 | 
						|
 | 
						|
    i0 @22 :Float64;
 | 
						|
    crc @23 :Float64;
 | 
						|
    omega @24 :Float64;
 | 
						|
    omegaDot @25 :Float64;
 | 
						|
 | 
						|
    iDot @26 :Float64;
 | 
						|
    codesL2 @27 :Float64;
 | 
						|
    gpsWeekDEPRECATED @28 :Float64;
 | 
						|
    l2 @29 :Float64;
 | 
						|
 | 
						|
    svAcc @30 :Float64;
 | 
						|
    svHealth @31 :Float64;
 | 
						|
    tgd @32 :Float64;
 | 
						|
    iodc @33 :Float64;
 | 
						|
 | 
						|
    transmissionTime @34 :Float64;
 | 
						|
    fitInterval @35 :Float64;
 | 
						|
 | 
						|
    toc @36 :Float64;
 | 
						|
 | 
						|
    ionoCoeffsValid @37 :Bool;
 | 
						|
    ionoAlpha @38 :List(Float64);
 | 
						|
    ionoBeta @39 :List(Float64);
 | 
						|
 | 
						|
    towCount @40 :UInt32;
 | 
						|
    toeWeek @41 :UInt16;
 | 
						|
    tocWeek @42 :UInt16;
 | 
						|
  }
 | 
						|
 | 
						|
  struct IonoData {
 | 
						|
    svHealth @0 :UInt32;
 | 
						|
    tow  @1 :Float64;
 | 
						|
    gpsWeek @2 :Float64;
 | 
						|
 | 
						|
    ionoAlpha @3 :List(Float64);
 | 
						|
    ionoBeta @4 :List(Float64);
 | 
						|
 | 
						|
    healthValid @5 :Bool;
 | 
						|
    ionoCoeffsValid @6 :Bool;
 | 
						|
  }
 | 
						|
 | 
						|
  struct HwStatus {
 | 
						|
    noisePerMS @0 :UInt16;
 | 
						|
    agcCnt @1 :UInt16;
 | 
						|
    aStatus @2 :AntennaSupervisorState;
 | 
						|
    aPower @3 :AntennaPowerStatus;
 | 
						|
    jamInd @4 :UInt8;
 | 
						|
    flags @5 :UInt8;
 | 
						|
 | 
						|
    enum AntennaSupervisorState {
 | 
						|
      init @0;
 | 
						|
      dontknow @1;
 | 
						|
      ok @2;
 | 
						|
      short @3;
 | 
						|
      open @4;
 | 
						|
    }
 | 
						|
 | 
						|
    enum AntennaPowerStatus {
 | 
						|
      off @0;
 | 
						|
      on @1;
 | 
						|
      dontknow @2;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  struct HwStatus2 {
 | 
						|
    ofsI @0 :Int8;
 | 
						|
    magI @1 :UInt8;
 | 
						|
    ofsQ @2 :Int8;
 | 
						|
    magQ @3 :UInt8;
 | 
						|
    cfgSource @4 :ConfigSource;
 | 
						|
    lowLevCfg @5 :UInt32;
 | 
						|
    postStatus @6 :UInt32;
 | 
						|
 | 
						|
    enum ConfigSource {
 | 
						|
      undefined @0;
 | 
						|
      rom @1;
 | 
						|
      otp @2;
 | 
						|
      configpins @3;
 | 
						|
      flash @4;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  struct GlonassEphemeris {
 | 
						|
    svId @0 :UInt16;
 | 
						|
    year @1 :UInt16;
 | 
						|
    dayInYear @2 :UInt16;
 | 
						|
    hour @3 :UInt16;
 | 
						|
    minute @4 :UInt16;
 | 
						|
    second @5 :Float32;
 | 
						|
 | 
						|
    x @6 :Float64;
 | 
						|
    xVel @7 :Float64;
 | 
						|
    xAccel @8 :Float64;
 | 
						|
    y @9 :Float64;
 | 
						|
    yVel @10 :Float64;
 | 
						|
    yAccel @11 :Float64;
 | 
						|
    z @12 :Float64;
 | 
						|
    zVel @13 :Float64;
 | 
						|
    zAccel @14 :Float64;
 | 
						|
 | 
						|
    svType @15 :UInt8;
 | 
						|
    svURA @16 :Float32;
 | 
						|
    age @17 :UInt8;
 | 
						|
 | 
						|
    svHealth @18 :UInt8;
 | 
						|
    tkDEPRECATED @19 :UInt16;
 | 
						|
    tb @20 :UInt16;
 | 
						|
 | 
						|
    tauN @21 :Float64;
 | 
						|
    deltaTauN @22 :Float64;
 | 
						|
    gammaN @23 :Float64;
 | 
						|
 | 
						|
    p1 @24 :UInt8;
 | 
						|
    p2 @25 :UInt8;
 | 
						|
    p3 @26 :UInt8;
 | 
						|
    p4 @27 :UInt8;
 | 
						|
 | 
						|
    freqNumDEPRECATED @28 :UInt32;
 | 
						|
 | 
						|
    n4 @29 :UInt8;
 | 
						|
    nt @30 :UInt16;
 | 
						|
    freqNum @31 :Int16;
 | 
						|
    tkSeconds @32 :UInt32;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct QcomGnss @0xde94674b07ae51c1 {
 | 
						|
  logTs @0 :UInt64;
 | 
						|
  union {
 | 
						|
    measurementReport @1 :MeasurementReport;
 | 
						|
    clockReport @2 :ClockReport;
 | 
						|
    drMeasurementReport @3 :DrMeasurementReport;
 | 
						|
    drSvPoly @4 :DrSvPolyReport;
 | 
						|
    rawLog @5 :Data;
 | 
						|
  }
 | 
						|
 | 
						|
  enum MeasurementSource @0xd71a12b6faada7ee {
 | 
						|
    gps @0;
 | 
						|
    glonass @1;
 | 
						|
    beidou @2;
 | 
						|
    unknown3 @3;
 | 
						|
    unknown4 @4;
 | 
						|
    unknown5 @5;
 | 
						|
    sbas @6;
 | 
						|
  }
 | 
						|
 | 
						|
  enum SVObservationState @0xe81e829a0d6c83e9 {
 | 
						|
    idle @0;
 | 
						|
    search @1;
 | 
						|
    searchVerify @2;
 | 
						|
    bitEdge @3;
 | 
						|
    trackVerify @4;
 | 
						|
    track @5;
 | 
						|
    restart @6;
 | 
						|
    dpo @7;
 | 
						|
    glo10msBe @8;
 | 
						|
    glo10msAt @9;
 | 
						|
  }
 | 
						|
 | 
						|
  struct MeasurementStatus @0xe501010e1bcae83b {
 | 
						|
    subMillisecondIsValid @0 :Bool;
 | 
						|
    subBitTimeIsKnown @1 :Bool;
 | 
						|
    satelliteTimeIsKnown @2 :Bool;
 | 
						|
    bitEdgeConfirmedFromSignal @3 :Bool;
 | 
						|
    measuredVelocity @4 :Bool;
 | 
						|
    fineOrCoarseVelocity @5 :Bool;
 | 
						|
    lockPointValid @6 :Bool;
 | 
						|
    lockPointPositive @7 :Bool;
 | 
						|
    lastUpdateFromDifference @8 :Bool;
 | 
						|
    lastUpdateFromVelocityDifference @9 :Bool;
 | 
						|
    strongIndicationOfCrossCorelation @10 :Bool;
 | 
						|
    tentativeMeasurement @11 :Bool;
 | 
						|
    measurementNotUsable @12 :Bool;
 | 
						|
    sirCheckIsNeeded @13 :Bool;
 | 
						|
    probationMode @14 :Bool;
 | 
						|
 | 
						|
    glonassMeanderBitEdgeValid @15 :Bool;
 | 
						|
    glonassTimeMarkValid @16 :Bool;
 | 
						|
 | 
						|
    gpsRoundRobinRxDiversity @17 :Bool;
 | 
						|
    gpsRxDiversity @18 :Bool;
 | 
						|
    gpsLowBandwidthRxDiversityCombined @19 :Bool;
 | 
						|
    gpsHighBandwidthNu4 @20 :Bool;
 | 
						|
    gpsHighBandwidthNu8 @21 :Bool;
 | 
						|
    gpsHighBandwidthUniform @22 :Bool;
 | 
						|
    multipathIndicator @23 :Bool;
 | 
						|
 | 
						|
    imdJammingIndicator @24 :Bool;
 | 
						|
    lteB13TxJammingIndicator @25 :Bool;
 | 
						|
    freshMeasurementIndicator @26 :Bool;
 | 
						|
 | 
						|
    multipathEstimateIsValid @27 :Bool;
 | 
						|
    directionIsValid @28 :Bool;
 | 
						|
  }
 | 
						|
 | 
						|
  struct MeasurementReport @0xf580d7d86b7b8692 {
 | 
						|
    source @0 :MeasurementSource;
 | 
						|
 | 
						|
    fCount @1 :UInt32;
 | 
						|
 | 
						|
    gpsWeek @2 :UInt16;
 | 
						|
    glonassCycleNumber @3 :UInt8;
 | 
						|
    glonassNumberOfDays @4 :UInt16;
 | 
						|
 | 
						|
    milliseconds @5 :UInt32;
 | 
						|
    timeBias @6 :Float32;
 | 
						|
    clockTimeUncertainty @7 :Float32;
 | 
						|
    clockFrequencyBias @8 :Float32;
 | 
						|
    clockFrequencyUncertainty @9 :Float32;
 | 
						|
 | 
						|
    sv @10 :List(SV);
 | 
						|
 | 
						|
    struct SV @0xf10c595ae7bb2c27 {
 | 
						|
      svId @0 :UInt8;
 | 
						|
      observationState @2 :SVObservationState;
 | 
						|
      observations @3 :UInt8;
 | 
						|
      goodObservations @4 :UInt8;
 | 
						|
      gpsParityErrorCount @5 :UInt16;
 | 
						|
      glonassFrequencyIndex @1 :Int8;
 | 
						|
      glonassHemmingErrorCount @6 :UInt8;
 | 
						|
      filterStages @7 :UInt8;
 | 
						|
      carrierNoise @8 :UInt16;
 | 
						|
      latency @9 :Int16;
 | 
						|
      predetectInterval @10 :UInt8;
 | 
						|
      postdetections @11 :UInt16;
 | 
						|
 | 
						|
      unfilteredMeasurementIntegral @12 :UInt32;
 | 
						|
      unfilteredMeasurementFraction @13 :Float32;
 | 
						|
      unfilteredTimeUncertainty @14 :Float32;
 | 
						|
      unfilteredSpeed @15 :Float32;
 | 
						|
      unfilteredSpeedUncertainty @16 :Float32;
 | 
						|
      measurementStatus @17 :MeasurementStatus;
 | 
						|
      multipathEstimate @18 :UInt32;
 | 
						|
      azimuth @19 :Float32;
 | 
						|
      elevation @20 :Float32;
 | 
						|
      carrierPhaseCyclesIntegral @21 :Int32;
 | 
						|
      carrierPhaseCyclesFraction @22 :UInt16;
 | 
						|
      fineSpeed @23 :Float32;
 | 
						|
      fineSpeedUncertainty @24 :Float32;
 | 
						|
      cycleSlipCount @25 :UInt8;
 | 
						|
    }
 | 
						|
 | 
						|
  }
 | 
						|
 | 
						|
  struct ClockReport @0xca965e4add8f4f0b {
 | 
						|
    hasFCount @0 :Bool;
 | 
						|
    fCount @1 :UInt32;
 | 
						|
 | 
						|
    hasGpsWeek @2 :Bool;
 | 
						|
    gpsWeek @3 :UInt16;
 | 
						|
    hasGpsMilliseconds @4 :Bool;
 | 
						|
    gpsMilliseconds @5 :UInt32;
 | 
						|
    gpsTimeBias @6 :Float32;
 | 
						|
    gpsClockTimeUncertainty @7 :Float32;
 | 
						|
    gpsClockSource @8 :UInt8;
 | 
						|
 | 
						|
    hasGlonassYear @9 :Bool;
 | 
						|
    glonassYear @10 :UInt8;
 | 
						|
    hasGlonassDay @11 :Bool;
 | 
						|
    glonassDay @12 :UInt16;
 | 
						|
    hasGlonassMilliseconds @13 :Bool;
 | 
						|
    glonassMilliseconds @14 :UInt32;
 | 
						|
    glonassTimeBias @15 :Float32;
 | 
						|
    glonassClockTimeUncertainty @16 :Float32;
 | 
						|
    glonassClockSource @17 :UInt8;
 | 
						|
 | 
						|
    bdsWeek @18 :UInt16;
 | 
						|
    bdsMilliseconds @19 :UInt32;
 | 
						|
    bdsTimeBias @20 :Float32;
 | 
						|
    bdsClockTimeUncertainty @21 :Float32;
 | 
						|
    bdsClockSource @22 :UInt8;
 | 
						|
 | 
						|
    galWeek @23 :UInt16;
 | 
						|
    galMilliseconds @24 :UInt32;
 | 
						|
    galTimeBias @25 :Float32;
 | 
						|
    galClockTimeUncertainty @26 :Float32;
 | 
						|
    galClockSource @27 :UInt8;
 | 
						|
 | 
						|
    clockFrequencyBias @28 :Float32;
 | 
						|
    clockFrequencyUncertainty @29 :Float32;
 | 
						|
    frequencySource @30 :UInt8;
 | 
						|
    gpsLeapSeconds @31 :UInt8;
 | 
						|
    gpsLeapSecondsUncertainty @32 :UInt8;
 | 
						|
    gpsLeapSecondsSource @33 :UInt8;
 | 
						|
 | 
						|
    gpsToGlonassTimeBiasMilliseconds @34 :Float32;
 | 
						|
    gpsToGlonassTimeBiasMillisecondsUncertainty @35 :Float32;
 | 
						|
    gpsToBdsTimeBiasMilliseconds @36 :Float32;
 | 
						|
    gpsToBdsTimeBiasMillisecondsUncertainty @37 :Float32;
 | 
						|
    bdsToGloTimeBiasMilliseconds @38 :Float32;
 | 
						|
    bdsToGloTimeBiasMillisecondsUncertainty @39 :Float32;
 | 
						|
    gpsToGalTimeBiasMilliseconds @40 :Float32;
 | 
						|
    gpsToGalTimeBiasMillisecondsUncertainty @41 :Float32;
 | 
						|
    galToGloTimeBiasMilliseconds @42 :Float32;
 | 
						|
    galToGloTimeBiasMillisecondsUncertainty @43 :Float32;
 | 
						|
    galToBdsTimeBiasMilliseconds @44 :Float32;
 | 
						|
    galToBdsTimeBiasMillisecondsUncertainty @45 :Float32;
 | 
						|
 | 
						|
    hasRtcTime @46 :Bool;
 | 
						|
    systemRtcTime @47 :UInt32;
 | 
						|
    fCountOffset @48 :UInt32;
 | 
						|
    lpmRtcCount @49 :UInt32;
 | 
						|
    clockResets @50 :UInt32;
 | 
						|
  }
 | 
						|
 | 
						|
  struct DrMeasurementReport @0x8053c39445c6c75c {
 | 
						|
 | 
						|
    reason @0 :UInt8;
 | 
						|
    seqNum @1 :UInt8;
 | 
						|
    seqMax @2 :UInt8;
 | 
						|
    rfLoss @3 :UInt16;
 | 
						|
 | 
						|
    systemRtcValid @4 :Bool;
 | 
						|
    fCount @5 :UInt32;
 | 
						|
    clockResets @6 :UInt32;
 | 
						|
    systemRtcTime @7 :UInt64;
 | 
						|
 | 
						|
    gpsLeapSeconds @8 :UInt8;
 | 
						|
    gpsLeapSecondsUncertainty @9 :UInt8;
 | 
						|
    gpsToGlonassTimeBiasMilliseconds @10 :Float32;
 | 
						|
    gpsToGlonassTimeBiasMillisecondsUncertainty @11 :Float32;
 | 
						|
 | 
						|
    gpsWeek @12 :UInt16;
 | 
						|
    gpsMilliseconds @13 :UInt32;
 | 
						|
    gpsTimeBiasMs @14 :UInt32;
 | 
						|
    gpsClockTimeUncertaintyMs @15 :UInt32;
 | 
						|
    gpsClockSource @16 :UInt8;
 | 
						|
 | 
						|
    glonassClockSource @17 :UInt8;
 | 
						|
    glonassYear @18 :UInt8;
 | 
						|
    glonassDay @19 :UInt16;
 | 
						|
    glonassMilliseconds @20 :UInt32;
 | 
						|
    glonassTimeBias @21 :Float32;
 | 
						|
    glonassClockTimeUncertainty @22 :Float32;
 | 
						|
 | 
						|
    clockFrequencyBias @23 :Float32;
 | 
						|
    clockFrequencyUncertainty @24 :Float32;
 | 
						|
    frequencySource @25 :UInt8;
 | 
						|
 | 
						|
    source @26 :MeasurementSource;
 | 
						|
 | 
						|
    sv @27 :List(SV);
 | 
						|
 | 
						|
    struct SV @0xf08b81df8cbf459c {
 | 
						|
      svId @0 :UInt8;
 | 
						|
      glonassFrequencyIndex @1 :Int8;
 | 
						|
      observationState @2 :SVObservationState;
 | 
						|
      observations @3 :UInt8;
 | 
						|
      goodObservations @4 :UInt8;
 | 
						|
      filterStages @5 :UInt8;
 | 
						|
      predetectInterval @6 :UInt8;
 | 
						|
      cycleSlipCount @7 :UInt8;
 | 
						|
      postdetections @8 :UInt16;
 | 
						|
 | 
						|
      measurementStatus @9 :MeasurementStatus;
 | 
						|
 | 
						|
      carrierNoise @10 :UInt16;
 | 
						|
      rfLoss @11 :UInt16;
 | 
						|
      latency @12 :Int16;
 | 
						|
 | 
						|
      filteredMeasurementFraction @13 :Float32;
 | 
						|
      filteredMeasurementIntegral @14 :UInt32;
 | 
						|
      filteredTimeUncertainty @15 :Float32;
 | 
						|
      filteredSpeed @16 :Float32;
 | 
						|
      filteredSpeedUncertainty @17 :Float32;
 | 
						|
 | 
						|
      unfilteredMeasurementFraction @18 :Float32;
 | 
						|
      unfilteredMeasurementIntegral @19 :UInt32;
 | 
						|
      unfilteredTimeUncertainty @20 :Float32;
 | 
						|
      unfilteredSpeed @21 :Float32;
 | 
						|
      unfilteredSpeedUncertainty @22 :Float32;
 | 
						|
 | 
						|
      multipathEstimate @23 :UInt32;
 | 
						|
      azimuth @24 :Float32;
 | 
						|
      elevation @25 :Float32;
 | 
						|
      dopplerAcceleration @26 :Float32;
 | 
						|
      fineSpeed @27 :Float32;
 | 
						|
      fineSpeedUncertainty @28 :Float32;
 | 
						|
 | 
						|
      carrierPhase @29 :Float64;
 | 
						|
      fCount @30 :UInt32;
 | 
						|
 | 
						|
      parityErrorCount @31 :UInt16;
 | 
						|
      goodParity @32 :Bool;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  struct DrSvPolyReport @0xb1fb80811a673270 {
 | 
						|
    svId @0 :UInt16;
 | 
						|
    frequencyIndex @1 :Int8;
 | 
						|
 | 
						|
    hasPosition @2 :Bool;
 | 
						|
    hasIono @3 :Bool;
 | 
						|
    hasTropo @4 :Bool;
 | 
						|
    hasElevation @5 :Bool;
 | 
						|
    polyFromXtra @6 :Bool;
 | 
						|
    hasSbasIono @7 :Bool;
 | 
						|
 | 
						|
    iode @8 :UInt16;
 | 
						|
    t0 @9 :Float64;
 | 
						|
    xyz0 @10 :List(Float64);
 | 
						|
    xyzN @11 :List(Float64);
 | 
						|
    other @12 :List(Float32);
 | 
						|
 | 
						|
    positionUncertainty @13 :Float32;
 | 
						|
    ionoDelay @14 :Float32;
 | 
						|
    ionoDot @15 :Float32;
 | 
						|
    sbasIonoDelay @16 :Float32;
 | 
						|
    sbasIonoDot @17 :Float32;
 | 
						|
    tropoDelay @18 :Float32;
 | 
						|
    elevation @19 :Float32;
 | 
						|
    elevationDot @20 :Float32;
 | 
						|
    elevationUncertainty @21 :Float32;
 | 
						|
    velocityCoeff @22 :List(Float64);
 | 
						|
 | 
						|
    gpsWeek @23 :UInt16;
 | 
						|
    gpsTow @24 :Float64;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct Clocks {
 | 
						|
  wallTimeNanos @3 :UInt64;  # unix epoch time
 | 
						|
 | 
						|
  bootTimeNanosDEPRECATED @0 :UInt64;
 | 
						|
  monotonicNanosDEPRECATED @1 :UInt64;
 | 
						|
  monotonicRawNanosDEPRECATD @2 :UInt64;
 | 
						|
  modemUptimeMillisDEPRECATED @4 :UInt64;
 | 
						|
}
 | 
						|
 | 
						|
struct LiveMpcData {
 | 
						|
  x @0 :List(Float32);
 | 
						|
  y @1 :List(Float32);
 | 
						|
  psi @2 :List(Float32);
 | 
						|
  curvature @3 :List(Float32);
 | 
						|
  qpIterations @4 :UInt32;
 | 
						|
  calculationTime @5 :UInt64;
 | 
						|
  cost @6 :Float64;
 | 
						|
}
 | 
						|
 | 
						|
struct LiveLongitudinalMpcData {
 | 
						|
  xEgo @0 :List(Float32);
 | 
						|
  vEgo @1 :List(Float32);
 | 
						|
  aEgo @2 :List(Float32);
 | 
						|
  xLead @3 :List(Float32);
 | 
						|
  vLead @4 :List(Float32);
 | 
						|
  aLead @5 :List(Float32);
 | 
						|
  aLeadTau @6 :Float32;    # lead accel time constant
 | 
						|
  qpIterations @7 :UInt32;
 | 
						|
  mpcId @8 :UInt32;
 | 
						|
  calculationTime @9 :UInt64;
 | 
						|
  cost @10 :Float64;
 | 
						|
}
 | 
						|
 | 
						|
struct Joystick {
 | 
						|
  # convenient for debug and live tuning
 | 
						|
  axes @0: List(Float32);
 | 
						|
  buttons @1: List(Bool);
 | 
						|
}
 | 
						|
 | 
						|
struct DriverStateV2 {
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  modelExecutionTime @1 :Float32;
 | 
						|
  dspExecutionTimeDEPRECATED @2 :Float32;
 | 
						|
  gpuExecutionTime @8 :Float32;
 | 
						|
  rawPredictions @3 :Data;
 | 
						|
 | 
						|
  poorVisionProb @4 :Float32;
 | 
						|
  wheelOnRightProb @5 :Float32;
 | 
						|
 | 
						|
  leftDriverData @6 :DriverData;
 | 
						|
  rightDriverData @7 :DriverData;
 | 
						|
 | 
						|
  struct DriverData {
 | 
						|
    faceOrientation @0 :List(Float32);
 | 
						|
    faceOrientationStd @1 :List(Float32);
 | 
						|
    facePosition @2 :List(Float32);
 | 
						|
    facePositionStd @3 :List(Float32);
 | 
						|
    faceProb @4 :Float32;
 | 
						|
    leftEyeProb @5 :Float32;
 | 
						|
    rightEyeProb @6 :Float32;
 | 
						|
    leftBlinkProb @7 :Float32;
 | 
						|
    rightBlinkProb @8 :Float32;
 | 
						|
    sunglassesProb @9 :Float32;
 | 
						|
    occludedProb @10 :Float32;
 | 
						|
    readyProb @11 :List(Float32);
 | 
						|
    notReadyProb @12 :List(Float32);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct DriverStateDEPRECATED @0xb83c6cc593ed0a00 {
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  modelExecutionTime @14 :Float32;
 | 
						|
  dspExecutionTime @16 :Float32;
 | 
						|
  rawPredictions @15 :Data;
 | 
						|
 | 
						|
  faceOrientation @3 :List(Float32);
 | 
						|
  facePosition @4 :List(Float32);
 | 
						|
  faceProb @5 :Float32;
 | 
						|
  leftEyeProb @6 :Float32;
 | 
						|
  rightEyeProb @7 :Float32;
 | 
						|
  leftBlinkProb @8 :Float32;
 | 
						|
  rightBlinkProb @9 :Float32;
 | 
						|
  faceOrientationStd @11 :List(Float32);
 | 
						|
  facePositionStd @12 :List(Float32);
 | 
						|
  sunglassesProb @13 :Float32;
 | 
						|
  poorVision @17 :Float32;
 | 
						|
  partialFace @18 :Float32;
 | 
						|
  distractedPose @19 :Float32;
 | 
						|
  distractedEyes @20 :Float32;
 | 
						|
  eyesOnRoad @21 :Float32;
 | 
						|
  phoneUse @22 :Float32;
 | 
						|
  occludedProb @23 :Float32;
 | 
						|
 | 
						|
  readyProb @24 :List(Float32);
 | 
						|
  notReadyProb @25 :List(Float32);
 | 
						|
 | 
						|
  irPwrDEPRECATED @10 :Float32;
 | 
						|
  descriptorDEPRECATED @1 :List(Float32);
 | 
						|
  stdDEPRECATED @2 :Float32;
 | 
						|
}
 | 
						|
 | 
						|
struct DriverMonitoringState @0xb83cda094a1da284 {
 | 
						|
  events @18 :List(OnroadEvent);
 | 
						|
  faceDetected @1 :Bool;
 | 
						|
  isDistracted @2 :Bool;
 | 
						|
  distractedType @17 :UInt32;
 | 
						|
  awarenessStatus @3 :Float32;
 | 
						|
  posePitchOffset @6 :Float32;
 | 
						|
  posePitchValidCount @7 :UInt32;
 | 
						|
  poseYawOffset @8 :Float32;
 | 
						|
  poseYawValidCount @9 :UInt32;
 | 
						|
  stepChange @10 :Float32;
 | 
						|
  awarenessActive @11 :Float32;
 | 
						|
  awarenessPassive @12 :Float32;
 | 
						|
  isLowStd @13 :Bool;
 | 
						|
  hiStdCount @14 :UInt32;
 | 
						|
  isActiveMode @16 :Bool;
 | 
						|
  isRHD @4 :Bool;
 | 
						|
 | 
						|
  isPreviewDEPRECATED @15 :Bool;
 | 
						|
  rhdCheckedDEPRECATED @5 :Bool;
 | 
						|
  eventsDEPRECATED @0 :List(Car.OnroadEventDEPRECATED);
 | 
						|
}
 | 
						|
 | 
						|
struct Boot {
 | 
						|
  wallTimeNanos @0 :UInt64;
 | 
						|
  pstore @4 :Map(Text, Data);
 | 
						|
  commands @5 :Map(Text, Data);
 | 
						|
  launchLog @3 :Text;
 | 
						|
 | 
						|
  lastKmsgDEPRECATED @1 :Data;
 | 
						|
  lastPmsgDEPRECATED @2 :Data;
 | 
						|
}
 | 
						|
 | 
						|
struct LiveParametersData {
 | 
						|
  valid @0 :Bool;
 | 
						|
  gyroBias @1 :Float32;
 | 
						|
  angleOffsetDeg @2 :Float32;
 | 
						|
  angleOffsetAverageDeg @3 :Float32;
 | 
						|
  stiffnessFactor @4 :Float32;
 | 
						|
  steerRatio @5 :Float32;
 | 
						|
  sensorValid @6 :Bool;
 | 
						|
  posenetSpeed @8 :Float32;
 | 
						|
  posenetValid @9 :Bool;
 | 
						|
  angleOffsetFastStd @10 :Float32;
 | 
						|
  angleOffsetAverageStd @11 :Float32;
 | 
						|
  stiffnessFactorStd @12 :Float32;
 | 
						|
  steerRatioStd @13 :Float32;
 | 
						|
  roll @14 :Float32;
 | 
						|
  debugFilterState @16 :FilterState;
 | 
						|
 | 
						|
  yawRateDEPRECATED @7 :Float32;
 | 
						|
  filterStateDEPRECATED @15 :LiveLocationKalman.Measurement;
 | 
						|
 | 
						|
  struct FilterState {
 | 
						|
    value @0 : List(Float64);
 | 
						|
    std @1 : List(Float64);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct LiveTorqueParametersData {
 | 
						|
  liveValid @0 :Bool;
 | 
						|
  latAccelFactorRaw @1 :Float32;
 | 
						|
  latAccelOffsetRaw @2 :Float32;
 | 
						|
  frictionCoefficientRaw @3 :Float32;
 | 
						|
  latAccelFactorFiltered @4 :Float32;
 | 
						|
  latAccelOffsetFiltered @5 :Float32;
 | 
						|
  frictionCoefficientFiltered @6 :Float32;
 | 
						|
  totalBucketPoints @7 :Float32;
 | 
						|
  decay @8 :Float32;
 | 
						|
  maxResets @9 :Float32;
 | 
						|
  points @10 :List(List(Float32));
 | 
						|
  version @11 :Int32;
 | 
						|
  useParams @12 :Bool;
 | 
						|
}
 | 
						|
 | 
						|
struct LiveMapDataDEPRECATED {
 | 
						|
  speedLimitValid @0 :Bool;
 | 
						|
  speedLimit @1 :Float32;
 | 
						|
  speedAdvisoryValid @12 :Bool;
 | 
						|
  speedAdvisory @13 :Float32;
 | 
						|
  speedLimitAheadValid @14 :Bool;
 | 
						|
  speedLimitAhead @15 :Float32;
 | 
						|
  speedLimitAheadDistance @16 :Float32;
 | 
						|
  curvatureValid @2 :Bool;
 | 
						|
  curvature @3 :Float32;
 | 
						|
  wayId @4 :UInt64;
 | 
						|
  roadX @5 :List(Float32);
 | 
						|
  roadY @6 :List(Float32);
 | 
						|
  lastGps @7: GpsLocationData;
 | 
						|
  roadCurvatureX @8 :List(Float32);
 | 
						|
  roadCurvature @9 :List(Float32);
 | 
						|
  distToTurn @10 :Float32;
 | 
						|
  mapValid @11 :Bool;
 | 
						|
}
 | 
						|
 | 
						|
struct CameraOdometry {
 | 
						|
  frameId @4 :UInt32;
 | 
						|
  timestampEof @5 :UInt64;
 | 
						|
  trans @0 :List(Float32); # m/s in device frame
 | 
						|
  rot @1 :List(Float32); # rad/s in device frame
 | 
						|
  transStd @2 :List(Float32); # std m/s in device frame
 | 
						|
  rotStd @3 :List(Float32); # std rad/s in device frame
 | 
						|
  wideFromDeviceEuler @6 :List(Float32);
 | 
						|
  wideFromDeviceEulerStd @7 :List(Float32);
 | 
						|
  roadTransformTrans @8 :List(Float32);
 | 
						|
  roadTransformTransStd @9 :List(Float32);
 | 
						|
}
 | 
						|
 | 
						|
struct Sentinel {
 | 
						|
  enum SentinelType {
 | 
						|
    endOfSegment @0;
 | 
						|
    endOfRoute @1;
 | 
						|
    startOfSegment @2;
 | 
						|
    startOfRoute @3;
 | 
						|
  }
 | 
						|
  type @0 :SentinelType;
 | 
						|
  signal @1 :Int32;
 | 
						|
}
 | 
						|
 | 
						|
struct UIDebug {
 | 
						|
  drawTimeMillis @0 :Float32;
 | 
						|
}
 | 
						|
 | 
						|
struct ManagerState {
 | 
						|
  processes @0 :List(ProcessState);
 | 
						|
 | 
						|
  struct ProcessState {
 | 
						|
    name @0 :Text;
 | 
						|
    pid @1 :Int32;
 | 
						|
    running @2 :Bool;
 | 
						|
    shouldBeRunning @4 :Bool;
 | 
						|
    exitCode @3 :Int32;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct UploaderState {
 | 
						|
  immediateQueueSize @0 :UInt32;
 | 
						|
  immediateQueueCount @1 :UInt32;
 | 
						|
  rawQueueSize @2 :UInt32;
 | 
						|
  rawQueueCount @3 :UInt32;
 | 
						|
 | 
						|
  # stats for last successfully uploaded file
 | 
						|
  lastTime @4 :Float32;  # s
 | 
						|
  lastSpeed @5 :Float32; # MB/s
 | 
						|
  lastFilename @6 :Text;
 | 
						|
}
 | 
						|
 | 
						|
struct NavInstruction {
 | 
						|
  maneuverPrimaryText @0 :Text;
 | 
						|
  maneuverSecondaryText @1 :Text;
 | 
						|
  maneuverDistance @2 :Float32;  # m
 | 
						|
  maneuverType @3 :Text; # TODO: Make Enum
 | 
						|
  maneuverModifier @4 :Text; # TODO: Make Enum
 | 
						|
 | 
						|
  distanceRemaining @5 :Float32; # m
 | 
						|
  timeRemaining @6 :Float32; # s
 | 
						|
  timeRemainingTypical @7 :Float32; # s
 | 
						|
 | 
						|
  lanes @8 :List(Lane);
 | 
						|
  showFull @9 :Bool;
 | 
						|
 | 
						|
  speedLimit @10 :Float32; # m/s
 | 
						|
  speedLimitSign @11 :SpeedLimitSign;
 | 
						|
 | 
						|
  allManeuvers @12 :List(Maneuver);
 | 
						|
 | 
						|
  struct Lane {
 | 
						|
    directions @0 :List(Direction);
 | 
						|
    active @1 :Bool;
 | 
						|
    activeDirection @2 :Direction;
 | 
						|
  }
 | 
						|
 | 
						|
  enum Direction {
 | 
						|
    none @0;
 | 
						|
    left @1;
 | 
						|
    right @2;
 | 
						|
    straight @3;
 | 
						|
    slightLeft @4;
 | 
						|
    slightRight @5;
 | 
						|
  }
 | 
						|
 | 
						|
  enum SpeedLimitSign {
 | 
						|
    mutcd @0; # US Style
 | 
						|
    vienna @1; # EU Style
 | 
						|
  }
 | 
						|
 | 
						|
  struct Maneuver {
 | 
						|
    distance @0 :Float32;
 | 
						|
    type @1 :Text;
 | 
						|
    modifier @2 :Text;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct NavRoute {
 | 
						|
  coordinates @0 :List(Coordinate);
 | 
						|
 | 
						|
  struct Coordinate {
 | 
						|
    latitude @0 :Float32;
 | 
						|
    longitude @1 :Float32;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct MapRenderState {
 | 
						|
  locationMonoTime @0 :UInt64;
 | 
						|
  renderTime @1 :Float32;
 | 
						|
  frameId @2: UInt32;
 | 
						|
}
 | 
						|
 | 
						|
struct NavModelData {
 | 
						|
  frameId @0 :UInt32;
 | 
						|
  locationMonoTime @6 :UInt64;
 | 
						|
  modelExecutionTime @1 :Float32;
 | 
						|
  dspExecutionTime @2 :Float32;
 | 
						|
  features @3 :List(Float32);
 | 
						|
  # predicted future position
 | 
						|
  position @4 :XYData;
 | 
						|
  desirePrediction @5 :List(Float32);
 | 
						|
 | 
						|
  # All SI units and in device frame
 | 
						|
  struct XYData {
 | 
						|
    x @0 :List(Float32);
 | 
						|
    y @1 :List(Float32);
 | 
						|
    xStd @2 :List(Float32);
 | 
						|
    yStd @3 :List(Float32);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
struct EncodeData {
 | 
						|
  idx @0 :EncodeIndex;
 | 
						|
  data @1 :Data;
 | 
						|
  header @2 :Data;
 | 
						|
  unixTimestampNanos @3 :UInt64;
 | 
						|
  width @4 :UInt32;
 | 
						|
  height @5 :UInt32;
 | 
						|
}
 | 
						|
 | 
						|
struct DebugAlert {
 | 
						|
  alertText1 @0 :Text;
 | 
						|
  alertText2 @1 :Text;
 | 
						|
}
 | 
						|
 | 
						|
struct UserFlag {
 | 
						|
}
 | 
						|
 | 
						|
struct Microphone {
 | 
						|
  soundPressure @0 :Float32;
 | 
						|
 | 
						|
  # uncalibrated, A-weighted
 | 
						|
  soundPressureWeighted @3 :Float32;
 | 
						|
  soundPressureWeightedDb @1 :Float32;
 | 
						|
  filteredSoundPressureWeightedDb @2 :Float32;
 | 
						|
}
 | 
						|
 | 
						|
struct Event {
 | 
						|
  logMonoTime @0 :UInt64;  # nanoseconds
 | 
						|
  valid @67 :Bool = true;
 | 
						|
 | 
						|
  union {
 | 
						|
    # *********** log metadata ***********
 | 
						|
    initData @1 :InitData;
 | 
						|
    sentinel @73 :Sentinel;
 | 
						|
 | 
						|
    # *********** bootlog ***********
 | 
						|
    boot @60 :Boot;
 | 
						|
 | 
						|
    # ********** openpilot daemon msgs **********
 | 
						|
    gpsNMEA @3 :GPSNMEAData;
 | 
						|
    can @5 :List(CanData);
 | 
						|
    controlsState @7 :ControlsState;
 | 
						|
    selfdriveState @130 :SelfdriveState;
 | 
						|
    gyroscope @99 :SensorEventData;
 | 
						|
    gyroscope2 @100 :SensorEventData;
 | 
						|
    accelerometer @98 :SensorEventData;
 | 
						|
    accelerometer2 @101 :SensorEventData;
 | 
						|
    magnetometer @95 :SensorEventData;
 | 
						|
    lightSensor @96 :SensorEventData;
 | 
						|
    temperatureSensor @97 :SensorEventData;
 | 
						|
    temperatureSensor2 @123 :SensorEventData;
 | 
						|
    pandaStates @81 :List(PandaState);
 | 
						|
    peripheralState @80 :PeripheralState;
 | 
						|
    radarState @13 :RadarState;
 | 
						|
    liveTracks @131 :Car.RadarData;
 | 
						|
    sendcan @17 :List(CanData);
 | 
						|
    liveCalibration @19 :LiveCalibrationData;
 | 
						|
    carState @22 :Car.CarState;
 | 
						|
    carControl @23 :Car.CarControl;
 | 
						|
    carOutput @127 :Car.CarOutput;
 | 
						|
    longitudinalPlan @24 :LongitudinalPlan;
 | 
						|
    driverAssistance @132 :DriverAssistance;
 | 
						|
    ubloxGnss @34 :UbloxGnss;
 | 
						|
    ubloxRaw @39 :Data;
 | 
						|
    qcomGnss @31 :QcomGnss;
 | 
						|
    gpsLocationExternal @48 :GpsLocationData;
 | 
						|
    gpsLocation @21 :GpsLocationData;
 | 
						|
    gnssMeasurements @91 :GnssMeasurements;
 | 
						|
    liveParameters @61 :LiveParametersData;
 | 
						|
    liveTorqueParameters @94 :LiveTorqueParametersData;
 | 
						|
    cameraOdometry @63 :CameraOdometry;
 | 
						|
    thumbnail @66: Thumbnail;
 | 
						|
    onroadEvents @134: List(OnroadEvent);
 | 
						|
    carParams @69: Car.CarParams;
 | 
						|
    driverMonitoringState @71: DriverMonitoringState;
 | 
						|
    livePose @129 :LivePose;
 | 
						|
    modelV2 @75 :ModelDataV2;
 | 
						|
    drivingModelData @128 :DrivingModelData;
 | 
						|
    driverStateV2 @92 :DriverStateV2;
 | 
						|
 | 
						|
    # camera stuff, each camera state has a matching encode idx
 | 
						|
    roadCameraState @2 :FrameData;
 | 
						|
    driverCameraState @70: FrameData;
 | 
						|
    wideRoadCameraState @74: FrameData;
 | 
						|
    roadEncodeIdx @15 :EncodeIndex;
 | 
						|
    driverEncodeIdx @76 :EncodeIndex;
 | 
						|
    wideRoadEncodeIdx @77 :EncodeIndex;
 | 
						|
    qRoadEncodeIdx @90 :EncodeIndex;
 | 
						|
 | 
						|
    livestreamRoadEncodeIdx @117 :EncodeIndex;
 | 
						|
    livestreamWideRoadEncodeIdx @118 :EncodeIndex;
 | 
						|
    livestreamDriverEncodeIdx @119 :EncodeIndex;
 | 
						|
 | 
						|
    # microphone data
 | 
						|
    microphone @103 :Microphone;
 | 
						|
 | 
						|
    # systems stuff
 | 
						|
    androidLog @20 :AndroidLogEntry;
 | 
						|
    managerState @78 :ManagerState;
 | 
						|
    uploaderState @79 :UploaderState;
 | 
						|
    procLog @33 :ProcLog;
 | 
						|
    clocks @35 :Clocks;
 | 
						|
    deviceState @6 :DeviceState;
 | 
						|
    logMessage @18 :Text;
 | 
						|
    errorLogMessage @85 :Text;
 | 
						|
 | 
						|
    # navigation
 | 
						|
    navInstruction @82 :NavInstruction;
 | 
						|
    navRoute @83 :NavRoute;
 | 
						|
    navThumbnail @84: Thumbnail;
 | 
						|
    mapRenderState @105: MapRenderState;
 | 
						|
 | 
						|
    # UI services
 | 
						|
    userFlag @93 :UserFlag;
 | 
						|
    uiDebug @102 :UIDebug;
 | 
						|
 | 
						|
    # *********** debug ***********
 | 
						|
    testJoystick @52 :Joystick;
 | 
						|
    roadEncodeData @86 :EncodeData;
 | 
						|
    driverEncodeData @87 :EncodeData;
 | 
						|
    wideRoadEncodeData @88 :EncodeData;
 | 
						|
    qRoadEncodeData @89 :EncodeData;
 | 
						|
    alertDebug @133 :DebugAlert;
 | 
						|
 | 
						|
    livestreamRoadEncodeData @120 :EncodeData;
 | 
						|
    livestreamWideRoadEncodeData @121 :EncodeData;
 | 
						|
    livestreamDriverEncodeData @122 :EncodeData;
 | 
						|
 | 
						|
    customReservedRawData0 @124 :Data;
 | 
						|
    customReservedRawData1 @125 :Data;
 | 
						|
    customReservedRawData2 @126 :Data;
 | 
						|
 | 
						|
    # *********** Custom: reserved for forks ***********
 | 
						|
    customReserved0 @107 :Custom.CustomReserved0;
 | 
						|
    customReserved1 @108 :Custom.CustomReserved1;
 | 
						|
    customReserved2 @109 :Custom.CustomReserved2;
 | 
						|
    customReserved3 @110 :Custom.CustomReserved3;
 | 
						|
    customReserved4 @111 :Custom.CustomReserved4;
 | 
						|
    customReserved5 @112 :Custom.CustomReserved5;
 | 
						|
    customReserved6 @113 :Custom.CustomReserved6;
 | 
						|
    customReserved7 @114 :Custom.CustomReserved7;
 | 
						|
    customReserved8 @115 :Custom.CustomReserved8;
 | 
						|
    customReserved9 @116 :Custom.CustomReserved9;
 | 
						|
 | 
						|
    # *********** legacy + deprecated ***********
 | 
						|
    model @9 :Legacy.ModelData; # TODO: rename modelV2 and mark this as deprecated
 | 
						|
    liveMpcDEPRECATED @36 :LiveMpcData;
 | 
						|
    liveLongitudinalMpcDEPRECATED @37 :LiveLongitudinalMpcData;
 | 
						|
    liveLocationKalmanLegacyDEPRECATED @51 :Legacy.LiveLocationData;
 | 
						|
    orbslamCorrectionDEPRECATED @45 :Legacy.OrbslamCorrection;
 | 
						|
    liveUIDEPRECATED @14 :Legacy.LiveUI;
 | 
						|
    sensorEventDEPRECATED @4 :SensorEventData;
 | 
						|
    liveEventDEPRECATED @8 :List(Legacy.LiveEventData);
 | 
						|
    liveLocationDEPRECATED @25 :Legacy.LiveLocationData;
 | 
						|
    ethernetDataDEPRECATED @26 :List(Legacy.EthernetPacket);
 | 
						|
    cellInfoDEPRECATED @28 :List(Legacy.CellInfo);
 | 
						|
    wifiScanDEPRECATED @29 :List(Legacy.WifiScan);
 | 
						|
    uiNavigationEventDEPRECATED @50 :Legacy.UiNavigationEvent;
 | 
						|
    liveMapDataDEPRECATED @62 :LiveMapDataDEPRECATED;
 | 
						|
    gpsPlannerPointsDEPRECATED @40 :Legacy.GPSPlannerPoints;
 | 
						|
    gpsPlannerPlanDEPRECATED @41 :Legacy.GPSPlannerPlan;
 | 
						|
    applanixRawDEPRECATED @42 :Data;
 | 
						|
    androidGnssDEPRECATED @30 :Legacy.AndroidGnss;
 | 
						|
    lidarPtsDEPRECATED @32 :Legacy.LidarPts;
 | 
						|
    navStatusDEPRECATED @38 :Legacy.NavStatus;
 | 
						|
    trafficEventsDEPRECATED @43 :List(Legacy.TrafficEvent);
 | 
						|
    liveLocationTimingDEPRECATED @44 :Legacy.LiveLocationData;
 | 
						|
    liveLocationCorrectedDEPRECATED @46 :Legacy.LiveLocationData;
 | 
						|
    navUpdateDEPRECATED @27 :Legacy.NavUpdate;
 | 
						|
    orbObservationDEPRECATED @47 :List(Legacy.OrbObservation);
 | 
						|
    locationDEPRECATED @49 :Legacy.LiveLocationData;
 | 
						|
    orbOdometryDEPRECATED @53 :Legacy.OrbOdometry;
 | 
						|
    orbFeaturesDEPRECATED @54 :Legacy.OrbFeatures;
 | 
						|
    applanixLocationDEPRECATED @55 :Legacy.LiveLocationData;
 | 
						|
    orbKeyFrameDEPRECATED @56 :Legacy.OrbKeyFrame;
 | 
						|
    orbFeaturesSummaryDEPRECATED @58 :Legacy.OrbFeaturesSummary;
 | 
						|
    featuresDEPRECATED @10 :Legacy.CalibrationFeatures;
 | 
						|
    kalmanOdometryDEPRECATED @65 :Legacy.KalmanOdometry;
 | 
						|
    uiLayoutStateDEPRECATED @57 :Legacy.UiLayoutState;
 | 
						|
    pandaStateDEPRECATED @12 :PandaState;
 | 
						|
    driverStateDEPRECATED @59 :DriverStateDEPRECATED;
 | 
						|
    sensorEventsDEPRECATED @11 :List(SensorEventData);
 | 
						|
    lateralPlanDEPRECATED @64 :LateralPlan;
 | 
						|
    navModelDEPRECATED @104 :NavModelData;
 | 
						|
    uiPlanDEPRECATED @106 :UiPlan;
 | 
						|
    liveLocationKalmanDEPRECATED @72 :LiveLocationKalman;
 | 
						|
    liveTracksDEPRECATED @16 :List(LiveTracksDEPRECATED);
 | 
						|
    onroadEventsDEPRECATED @68: List(Car.OnroadEventDEPRECATED);
 | 
						|
  }
 | 
						|
}
 | 
						|
 |