cereal/log.capnp

1361 lines
32 KiB
Cap'n Proto

using Cxx = import "./include/c++.capnp";
$Cxx.namespace("cereal");
using Java = import "./include/java.capnp";
$Java.package("ai.comma.openpilot.cereal");
$Java.outerClassname("Log");
using Car = import "car.capnp";
using Legacy = import "legacy.capnp";
@0xf3b1f17e25a4285b;
const logVersion :Int32 = 1;
struct Map(Key, Value) {
entries @0 :List(Entry);
struct Entry {
key @0 :Key;
value @1 :Value;
}
}
struct InitData {
kernelArgs @0 :List(Text);
kernelVersion @15 :Text;
gctx @1 :Text;
dongleId @2 :Text;
deviceType @3 :DeviceType;
version @4 :Text;
gitCommit @10 :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);
enum DeviceType {
unknown @0;
neo @1;
chffrAndroid @2;
chffrIos @3;
tici @4;
pc @5;
}
struct PandaInfo {
hasPanda @0 :Bool;
dongleId @1 :Text;
stVersion @2 :Text;
espVersion @3 :Text;
}
# ***** deprecated stuff *****
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;
encodeId @1 :UInt32; # DEPRECATED
timestampEof @2 :UInt64;
frameLength @3 :Int32;
integLines @4 :Int32;
globalGain @5 :Int32;
lensPos @11 :Int32;
lensSag @12 :Float32;
lensErr @13 :Float32;
lensTruePos @14 :Float32;
image @6 :Data;
gainFrac @15 :Float32;
focusVal @16 :List(Int16);
focusConf @17 :List(UInt8);
sharpnessScore @18 :List(UInt16);
recoverState @19 :Int32;
frameType @7 :FrameType;
timestampSof @8 :UInt64;
transform @10 :List(Float32);
androidCaptureResult @9 :AndroidCaptureResult;
enum FrameType {
unknown @0;
neo @1;
chffrAndroid @2;
front @3;
}
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;
}
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; # accelerometer (c2)
bmp280 @6; # barometer (c2)
mmc3416x @7; # magnetometer (c2)
bmx055 @8;
rpr0521 @9;
}
}
# android struct GpsLocation
struct GpsLocationData {
# Contains GpsLocationFlags bits.
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 accuracy in meters. (presumably 1 sigma?)
accuracy @6 :Float32;
# Timestamp for the location fix.
# Milliseconds since January 1, 1970.
timestamp @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;
enum SensorSource {
android @0;
iOS @1;
car @2;
velodyne @3; # Velodyne IMU
fusion @4;
external @5;
ublox @6;
trimble @7;
}
}
struct CanData {
address @0 :UInt32;
busTime @1 :UInt16;
dat @2 :Data;
src @3 :UInt8;
}
struct DeviceState @0xa4d8b5af2aa492eb {
freeSpacePercent @7 :Float32;
memoryUsagePercent @19 :Int8;
cpuUsagePercent @20 :Int8;
usbOnline @12 :Bool;
networkType @22 :NetworkType;
offroadPowerUsageUwh @23 :UInt32;
networkStrength @24 :NetworkStrength;
carBatteryCapacityUwh @25 :UInt32;
fanSpeedPercentDesired @10 :UInt16;
started @11 :Bool;
startedMonoTime @13 :UInt64;
# power
batteryPercent @8 :Int16;
batteryStatus @9 :Text;
batteryCurrent @15 :Int32;
batteryVoltage @16 :Int32;
chargingError @17 :Bool;
chargingDisabled @18 :Bool;
# device thermals
cpuTempC @26 :List(Float32);
gpuTempC @27 :List(Float32);
memoryTempC @28 :Float32;
batteryTempC @29 :Float32;
ambientTempC @30 :Float32;
thermalStatus @14 :ThermalStatus;
enum ThermalStatus {
green @0;
yellow @1;
red @2;
danger @3;
}
enum NetworkType {
none @0;
wifi @1;
cell2G @2;
cell3G @3;
cell4G @4;
cell5G @5;
}
enum NetworkStrength {
unknown @0;
poor @1;
moderate @2;
good @3;
great @4;
}
# 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;
}
struct PandaState @0xa7649e2575e4591e {
# from can health
voltage @0 :UInt32;
current @1 :UInt32;
ignitionLine @2 :Bool;
controlsAllowed @3 :Bool;
gasInterceptorDetected @4 :Bool;
hasGps @6 :Bool;
canSendErrs @7 :UInt32;
canFwdErrs @8 :UInt32;
canRxErrs @19 :UInt32;
gmlanSendErrs @9 :UInt32;
pandaType @10 :PandaType;
fanSpeedRpm @11 :UInt16;
usbPowerMode @12 :UsbPowerMode;
ignitionCan @13 :Bool;
safetyModel @14 :Car.CarParams.SafetyModel;
safetyParam @20 :Int16;
faultStatus @15 :FaultStatus;
powerSaveEnabled @16 :Bool;
uptime @17 :UInt32;
faults @18 :List(FaultType);
enum FaultStatus {
none @0;
faultTemp @1;
faultPerm @2;
}
enum FaultType {
relayMalfunction @0;
unusedInterruptHandled @1;
interruptRateCan1 @2;
interruptRateCan2 @3;
interruptRateCan3 @4;
interruptRateTach @5;
interruptRateGmlan @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;
interruptRateTim9 @21;
# 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;
}
enum UsbPowerMode {
none @0;
client @1;
cdp @2;
dcp @3;
}
startedSignalDetectedDEPRECATED @5 :Bool;
}
struct RadarState @0x9a185389d6fdd05f {
canMonoTimes @10 :List(UInt64);
mdMonoTime @6 :UInt64;
carStateMonoTime @11 :UInt64;
radarErrors @12 :List(Car.RadarData.Error);
leadOne @3 :LeadData;
leadTwo @4 :LeadData;
cumLagMs @5 :Float32;
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;
aLeadDEPRECATED @5 :Float32;
}
# deprecated
ftMonoTimeDEPRECATED @7 :UInt64;
warpMatrixDEPRECATED @0 :List(Float32);
angleOffsetDEPRECATED @1 :Float32;
calStatusDEPRECATED @2 :Int8;
calCycleDEPRECATED @8 :Int32;
calPercDEPRECATED @9 :Int8;
}
struct LiveCalibrationData {
calStatus @1 :Int8;
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);
warpMatrixDEPRECATED @0 :List(Float32);
warpMatrix2DEPRECATED @5 :List(Float32);
warpMatrixBigDEPRECATED @6 :List(Float32);
}
struct LiveTracks {
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 ControlsState @0x97ff69c53601abf1 {
startMonoTime @48 :UInt64;
canMonoTimes @21 :List(UInt64);
longitudinalPlanMonoTime @28 :UInt64;
lateralPlanMonoTime @50 :UInt64;
state @31 :OpenpilotState;
enabled @19 :Bool;
active @36 :Bool;
longControlState @30 :LongControlState;
vPid @2 :Float32;
vTargetLead @3 :Float32;
vCruise @22 :Float32;
upAccelCmd @4 :Float32;
uiAccelCmd @5 :Float32;
ufAccelCmd @33 :Float32;
aTarget @35 :Float32;
steeringAngleDesiredDeg @29 :Float32;
curvature @37 :Float32; # path curvature from vehicle model
forceDecel @51 :Bool;
# UI alerts
alertText1 @24 :Text;
alertText2 @25 :Text;
alertStatus @38 :AlertStatus;
alertSize @39 :AlertSize;
alertBlinkingRate @42 :Float32;
alertType @44 :Text;
alertSound @56 :Car.CarControl.HUDControl.AudibleAlert;
engageable @41 :Bool; # can OP be engaged?
cumLagMs @15 :Float32;
canErrorCounter @57 :UInt32;
lateralControlState :union {
indiState @52 :LateralINDIState;
pidState @53 :LateralPIDState;
lqrState @55 :LateralLQRState;
angleState @58 :LateralAngleState;
}
enum OpenpilotState @0xdbe58b96d2d1ac61 {
disabled @0;
preEnabled @1;
enabled @2;
softDisabling @3;
}
enum LongControlState {
off @0;
pid @1;
stopping @2;
starting @3;
}
enum AlertStatus {
normal @0; # low priority alert for user's convenience
userPrompt @1; # mid priority alert that might require user intervention
critical @2; # high priority alert that needs immediate user intervention
}
enum AlertSize {
none @0; # don't display the alert
small @1; # small box
mid @2; # mid screen
full @3; # full screen
}
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;
}
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;
}
struct LateralLQRState {
active @0 :Bool;
steeringAngleDeg @1 :Float32;
i @2 :Float32;
output @3 :Float32;
lqrOutput @4 :Float32;
saturated @5 :Bool;
}
struct LateralAngleState {
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;
}
struct ModelDataV2 {
frameId @0 :UInt32;
frameAge @1 :UInt32;
frameDropPerc @2 :Float32;
timestampEof @3 :UInt64;
modelExecutionTime @15 :Float32;
gpuExecutionTime @17 :Float32;
rawPredictions @16 :Data;
# predicted future position, orientation, etc..
position @4 :XYZTData;
orientation @5 :XYZTData;
velocity @6 :XYZTData;
orientationRate @7 :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);
meta @12 :MetaData;
# All SI units and in device frame
struct XYZTData {
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 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 MetaData {
engagedProb @0 :Float32;
desirePrediction @1 :List(Float32);
brakeDisengageProb @2 :Float32;
gasDisengageProb @3 :Float32;
steerOverrideProb @4 :Float32;
desireState @5 :List(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;
enum Type {
bigBoxLossless @0; # rcamera.mkv
fullHEVC @1; # fcamera.hevc
bigBoxHEVC @2; # bcamera.hevc
chffrAndroidH264 @3; # acamera
fullLosslessClip @4; # prcamera.mkv
front @5; # dcamera.hevc
}
}
struct AndroidLogEntry {
id @0 :UInt8;
ts @1 :UInt64;
priority @2 :UInt8;
pid @3 :Int32;
tid @4 :Int32;
tag @5 :Text;
message @6 :Text;
}
struct LongitudinalPlan @0xe00b5b3eba12876c {
mdMonoTime @9 :UInt64;
radarStateMonoTime @10 :UInt64;
vCruise @16 :Float32;
aCruise @17 :Float32;
vTarget @3 :Float32;
vTargetFuture @14 :Float32;
vMax @20 :Float32;
aTarget @18 :Float32;
vStart @26 :Float32;
aStart @27 :Float32;
hasLead @7 :Bool;
fcw @8 :Bool;
longitudinalPlanSource @15 :LongitudinalPlanSource;
processingDelay @29 :Float32;
enum LongitudinalPlanSource {
cruise @0;
mpc1 @1;
mpc2 @2;
mpc3 @3;
model @4;
}
# deprecated
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.CarEvent);
gpsTrajectoryDEPRECATED @12 :GpsTrajectory;
gpsPlannerActiveDEPRECATED @19 :Bool;
struct GpsTrajectory {
x @0 :List(Float32);
y @1 :List(Float32);
}
}
struct LateralPlan @0xe1e9318e2ae8b51e {
laneWidth @0 :Float32;
lProb @5 :Float32;
rProb @7 :Float32;
dPathPoints @20 :List(Float32);
dProb @21 :Float32;
mpcSolutionValid @9 :Bool;
desire @17 :Desire;
laneChangeState @18 :LaneChangeState;
laneChangeDirection @19 :LaneChangeDirection;
# curvature is in rad/m
curvature @22 :Float32;
curvatureRate @23 :Float32;
rawCurvature @24 :Float32;
rawCurvatureRate @25 :Float32;
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;
}
# deprecated
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
orientationNEDCalibrated @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;
enum Status {
uninitialized @0;
uncalibrated @1;
valid @2;
}
struct Measurement {
value @0 : List(Float64);
std @1 : List(Float64);
valid @2 : Bool;
}
}
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 UbloxGnss {
union {
measurementReport @0 :MeasurementReport;
ephemeris @1 :Ephemeris;
ionoData @2 :IonoData;
hwStatus @3 :HwStatus;
hwStatus2 @4 :HwStatus2;
}
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 sycle 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;
gpsWeek @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);
}
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;
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 Clocks {
bootTimeNanos @0 :UInt64;
monotonicNanos @1 :UInt64;
monotonicRawNanos @2 :UInt64;
wallTimeNanos @3 :UInt64;
modemUptimeMillis @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 DriverState {
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;
irPwrDEPRECATED @10 :Float32;
descriptorDEPRECATED @1 :List(Float32);
stdDEPRECATED @2 :Float32;
}
struct DriverMonitoringState @0xb83cda094a1da284 {
events @0 :List(Car.CarEvent);
faceDetected @1 :Bool;
isDistracted @2 :Bool;
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;
isRHDDEPRECATED @4 :Bool;
isPreviewDEPRECATED @15 :Bool;
rhdCheckedDEPRECATED @5 :Bool;
}
struct Boot {
wallTimeNanos @0 :UInt64;
lastKmsg @1 :Data;
lastPmsg @2 :Data;
launchLog @3 :Text;
}
struct LiveParametersData {
valid @0 :Bool;
gyroBias @1 :Float32;
angleOffsetDeg @2 :Float32;
angleOffsetAverageDeg @3 :Float32;
stiffnessFactor @4 :Float32;
steerRatio @5 :Float32;
sensorValid @6 :Bool;
yawRate @7 :Float32;
posenetSpeed @8 :Float32;
posenetValid @9 :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
}
struct Sentinel {
enum SentinelType {
endOfSegment @0;
endOfRoute @1;
startOfSegment @2;
startOfRoute @3;
}
type @0 :SentinelType;
}
struct ManagerState {
processes @0 :List(ProcessState);
struct ProcessState {
name @0 :Text;
pid @1 :Int32;
running @2 :Bool;
exitCode @3 :Int32;
}
}
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;
sensorEvents @11 :List(SensorEventData);
pandaState @12 :PandaState;
radarState @13 :RadarState;
liveTracks @16 :List(LiveTracks);
sendcan @17 :List(CanData);
liveCalibration @19 :LiveCalibrationData;
carState @22 :Car.CarState;
carControl @23 :Car.CarControl;
longitudinalPlan @24 :LongitudinalPlan;
lateralPlan @64 :LateralPlan;
ubloxGnss @34 :UbloxGnss;
liveMpc @36 :LiveMpcData;
liveLongitudinalMpc @37 :LiveLongitudinalMpcData;
ubloxRaw @39 :Data;
gpsLocationExternal @48 :GpsLocationData;
driverState @59 :DriverState;
liveParameters @61 :LiveParametersData;
cameraOdometry @63 :CameraOdometry;
thumbnail @66: Thumbnail;
carEvents @68: List(Car.CarEvent);
carParams @69: Car.CarParams;
driverMonitoringState @71: DriverMonitoringState;
liveLocationKalman @72 :LiveLocationKalman;
modelV2 @75 :ModelDataV2;
# 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;
# systems stuff
androidLog @20 :AndroidLogEntry;
managerState @78 :ManagerState;
procLog @33 :ProcLog;
clocks @35 :Clocks;
deviceState @6 :DeviceState;
logMessage @18 :Text;
# *********** debug ***********
testJoystick @52 :Joystick;
# *********** legacy + deprecated ***********
model @9 :Legacy.ModelData; # TODO: rename modelV2 and mark this as deprecated
liveLocationKalmanDEPRECATED @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;
qcomGnssDEPRECATD @31 :Legacy.QcomGnss;
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;
gpsLocationDEPRECATED @21 :GpsLocationData;
uiLayoutStateDEPRECATED @57 :Legacy.UiLayoutState;
}
}