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 ;
}
}
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 ;
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 ;
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 ) ;
}
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 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 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 ;
# 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 {
cumLagMs @15 : Float32 ;
startMonoTime @48 : UInt64 ;
longitudinalPlanMonoTime @28 : UInt64 ;
lateralPlanMonoTime @50 : UInt64 ;
longControlState @30 : Car.CarControl.Actuators.LongControlState ;
vTargetLead @3 : Float32 ;
vCruise @22 : Float32 ; # actual set speed
vCruiseCluster @63 : Float32 ; # set speed to display in the UI
upAccelCmd @4 : Float32 ;
uiAccelCmd @5 : Float32 ;
ufAccelCmd @33 : Float32 ;
aTarget @35 : Float32 ;
curvature @37 : Float32 ; # path curvature from vehicle model
desiredCurvature @61 : Float32 ; # lag adjusted curvatures used by lateral controllers
# TODO: remove these, they're now in selfdriveState
alertText1 @24 : Text ;
alertText2 @25 : Text ;
alertStatus @38 : SelfdriveState.AlertStatus ;
alertSize @39 : SelfdriveState.AlertSize ;
alertType @44 : Text ;
alertSound @56 : Car.CarControl.HUDControl.AudibleAlert ;
engageable @41 : Bool ; # can OP be engaged?
forceDecel @51 : Bool ;
state @31 : SelfdriveState.OpenpilotState ;
enabled @19 : Bool ;
active @36 : Bool ;
experimentalMode @64 : Bool ;
personality @66 : LongitudinalPersonality ;
lateralControlState : union {
indiState @52 : LateralINDIState ;
pidState @53 : LateralPIDState ;
angleState @58 : LateralAngleState ;
debugState @59 : LateralDebugState ;
torqueState @60 : LateralTorqueState ;
curvatureStateDEPRECATED @65 : LateralCurvatureState ;
lqrStateDEPRECATED @55 : LateralLQRState ;
}
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 ;
}
struct DrivingModelData {
frameId @0 : UInt32 ;
frameIdExtra @1 : UInt32 ;
frameDropPerc @6 : 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 ;
gpuExecutionTime @17 : 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 ;
navEnabledDEPRECATED @22 : Bool ;
locationMonoTimeDEPRECATED @24 : UInt64 ;
# e2e lateral planner
lateralPlannerSolutionDEPRECATED @25 : LateralPlannerSolution ;
action @26 : Action ;
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 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.OnroadEvent ) ;
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 ;
filterState @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 ;
}
}
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 ;
dspExecutionTime @2 : 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 @0 : List ( Car.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 ;
}
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 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 @16 : List ( LiveTracks ) ;
sendcan @17 : List ( CanData ) ;
liveCalibration @19 : LiveCalibrationData ;
carState @22 : Car.CarState ;
carControl @23 : Car.CarControl ;
carOutput @127 : Car.CarOutput ;
longitudinalPlan @24 : LongitudinalPlan ;
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 @68 : List ( Car.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 ;
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 ;
}
}