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.
		
		
		
		
		
			
		
			
				
					
					
						
							1433 lines
						
					
					
						
							31 KiB
						
					
					
				
			
		
		
	
	
							1433 lines
						
					
					
						
							31 KiB
						
					
					
				| using Cxx = import "c++.capnp";
 | |
| $Cxx.namespace("cereal");
 | |
| 
 | |
| using Java = import "java.capnp";
 | |
| $Java.package("ai.comma.openpilot.cereal");
 | |
| $Java.outerClassname("Log");
 | |
| 
 | |
| using Car = import "car.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);
 | |
|   gctx @1 :Text;
 | |
|   dongleId @2 :Text;
 | |
| 
 | |
|   deviceType @3 :DeviceType;
 | |
|   version @4 :Text;
 | |
|   gitCommit @10 :Text;
 | |
|   gitBranch @11 :Text;
 | |
|   gitRemote @13 :Text;
 | |
| 
 | |
|   androidBuildInfo @5 :AndroidBuildInfo;
 | |
|   androidSensors @6 :List(AndroidSensor);
 | |
|   chffrAndroidExtra @7 :ChffrAndroidExtra;
 | |
|   iosBuildInfo @14 :IosBuildInfo;
 | |
| 
 | |
|   pandaInfo @8 :PandaInfo;
 | |
| 
 | |
|   dirty @9 :Bool;
 | |
|   passive @12 :Bool;
 | |
| 
 | |
|   enum DeviceType {
 | |
|     unknown @0;
 | |
|     neo @1;
 | |
|     chffrAndroid @2;
 | |
|     chffrIos @3;
 | |
|   }
 | |
| 
 | |
|   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 PandaInfo {
 | |
|     hasPanda @0 :Bool;
 | |
|     dongleId @1 :Text;
 | |
|     stVersion @2 :Text;
 | |
|     espVersion @3 :Text;
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct FrameData {
 | |
|   frameId @0 :UInt32;
 | |
|   encodeId @1 :UInt32; # DEPRECATED
 | |
|   timestampEof @2 :UInt64;
 | |
|   frameLength @3 :Int32;
 | |
|   integLines @4 :Int32;
 | |
|   globalGain @5 :Int32;
 | |
|   image @6 :Data;
 | |
| 
 | |
|   frameType @7 :FrameType;
 | |
|   timestampSof @8 :UInt64;
 | |
|   transform @10 :List(Float32);
 | |
| 
 | |
|   androidCaptureResult @9 :AndroidCaptureResult;
 | |
| 
 | |
|   enum FrameType {
 | |
|     unknown @0;
 | |
|     neo @1;
 | |
|     chffrAndroid @2;
 | |
|   }
 | |
| 
 | |
|   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 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;
 | |
|   }
 | |
|   source @8 :SensorSource;
 | |
| 
 | |
|   struct SensorVec {
 | |
|     v @0 :List(Float32);
 | |
|     status @1 :Int8;
 | |
|   }
 | |
| 
 | |
|   enum SensorSource {
 | |
|     android @0;
 | |
|     iOS @1;
 | |
|     fiber @2;
 | |
|     velodyne @3;  # Velodyne IMU
 | |
|   }
 | |
| }
 | |
| 
 | |
| # 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.
 | |
|   bearing @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?)
 | |
|   bearingAccuracy @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 ThermalData {
 | |
|   cpu0 @0 :UInt16;
 | |
|   cpu1 @1 :UInt16;
 | |
|   cpu2 @2 :UInt16;
 | |
|   cpu3 @3 :UInt16;
 | |
|   mem @4 :UInt16;
 | |
|   gpu @5 :UInt16;
 | |
|   bat @6 :UInt32;
 | |
| 
 | |
|   # not thermal
 | |
|   freeSpace @7 :Float32;
 | |
|   batteryPercent @8 :Int16;
 | |
|   batteryStatus @9 :Text;
 | |
|   usbOnline @12 :Bool;
 | |
| 
 | |
|   fanSpeed @10 :UInt16;
 | |
|   started @11 :Bool;
 | |
|   startedTs @13 :UInt64;
 | |
| }
 | |
| 
 | |
| struct HealthData {
 | |
|   # from can health
 | |
|   voltage @0 :UInt32;
 | |
|   current @1 :UInt32;
 | |
|   started @2 :Bool;
 | |
|   controlsAllowed @3 :Bool;
 | |
|   gasInterceptorDetected @4 :Bool;
 | |
|   startedSignalDetected @5 :Bool;
 | |
| }
 | |
| 
 | |
| struct LiveUI {
 | |
|   rearViewCam @0 :Bool;
 | |
|   alertText1 @1 :Text;
 | |
|   alertText2 @2 :Text;
 | |
|   awarenessStatus @3 :Float32;
 | |
| }
 | |
| 
 | |
| struct Live20Data {
 | |
|   canMonoTimes @10 :List(UInt64);
 | |
|   mdMonoTime @6 :UInt64;
 | |
|   ftMonoTimeDEPRECATED @7 :UInt64;
 | |
|   l100MonoTime @11 :UInt64;
 | |
|   radarErrors @12 :List(Car.RadarState.Error);
 | |
| 
 | |
|   # all deprecated
 | |
|   warpMatrixDEPRECATED @0 :List(Float32);
 | |
|   angleOffsetDEPRECATED @1 :Float32;
 | |
|   calStatusDEPRECATED @2 :Int8;
 | |
|   calCycleDEPRECATED @8 :Int32;
 | |
|   calPercDEPRECATED @9 :Int8;
 | |
| 
 | |
|   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;
 | |
|     aLeadDEPRECATED @5 :Float32;
 | |
|     dPath @6 :Float32;
 | |
|     vLat @7 :Float32;
 | |
|     vLeadK @8 :Float32;
 | |
|     aLeadK @9 :Float32;
 | |
|     fcw @10 :Bool;
 | |
|     status @11 :Bool;
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct LiveCalibrationData {
 | |
|   warpMatrix @0 :List(Float32);
 | |
|   warpMatrix2 @5 :List(Float32);
 | |
|   calStatus @1 :Int8;
 | |
|   calCycle @2 :Int32;
 | |
|   calPerc @3 :Int8;
 | |
| 
 | |
|   # Maps car space to normalized image space.
 | |
|   extrinsicMatrix @4 :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 Live100Data {
 | |
|   canMonoTimeDEPRECATED @16 :UInt64;
 | |
|   canMonoTimes @21 :List(UInt64);
 | |
|   l20MonoTimeDEPRECATED @17 :UInt64;
 | |
|   mdMonoTimeDEPRECATED @18 :UInt64;
 | |
|   planMonoTime @28 :UInt64;
 | |
| 
 | |
|   state @31 :ControlState;
 | |
|   vEgo @0 :Float32;
 | |
|   vEgoRaw @32 :Float32;
 | |
|   aEgoDEPRECATED @1 :Float32;
 | |
|   longControlState @30 :LongControlState;
 | |
|   vPid @2 :Float32;
 | |
|   vTargetLead @3 :Float32;
 | |
|   upAccelCmd @4 :Float32;
 | |
|   uiAccelCmd @5 :Float32;
 | |
|   ufAccelCmd @33 :Float32;
 | |
|   yActualDEPRECATED @6 :Float32;
 | |
|   yDesDEPRECATED @7 :Float32;
 | |
|   upSteer @8 :Float32;
 | |
|   uiSteer @9 :Float32;
 | |
|   ufSteer @34 :Float32;
 | |
|   aTargetMinDEPRECATED @10 :Float32;
 | |
|   aTargetMaxDEPRECATED @11 :Float32;
 | |
|   aTarget @35 :Float32;
 | |
|   jerkFactor @12 :Float32;
 | |
|   angleSteers @13 :Float32;     # Steering angle in degrees.
 | |
|   angleSteersDes @29 :Float32;
 | |
|   curvature @37 :Float32;       # path curvature from vehicle model
 | |
|   hudLeadDEPRECATED @14 :Int32;
 | |
|   cumLagMs @15 :Float32;
 | |
| 
 | |
|   enabled @19 :Bool;
 | |
|   active @36 :Bool;
 | |
|   steerOverride @20 :Bool;
 | |
| 
 | |
|   vCruise @22 :Float32;
 | |
| 
 | |
|   rearViewCam @23 :Bool;
 | |
|   alertText1 @24 :Text;
 | |
|   alertText2 @25 :Text;
 | |
|   alertStatus @38 :AlertStatus;
 | |
|   alertSize @39 :AlertSize;
 | |
|   awarenessStatus @26 :Float32;
 | |
| 
 | |
|   angleOffset @27 :Float32;
 | |
| 
 | |
|   gpsPlannerActive @40 :Bool;
 | |
| 
 | |
|   enum ControlState {
 | |
|     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 piority 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 LiveEventData {
 | |
|   name @0 :Text;
 | |
|   value @1 :Int32;
 | |
| }
 | |
| 
 | |
| struct ModelData {
 | |
|   frameId @0 :UInt32;
 | |
| 
 | |
|   path @1 :PathData;
 | |
|   leftLane @2 :PathData;
 | |
|   rightLane @3 :PathData;
 | |
|   lead @4 :LeadData;
 | |
|   freePath @6 :List(Float32);
 | |
| 
 | |
|   settings @5 :ModelSettings;
 | |
| 
 | |
|   struct PathData {
 | |
|     points @0 :List(Float32);
 | |
|     prob @1 :Float32;
 | |
|     std @2 :Float32;
 | |
|   }
 | |
| 
 | |
|   struct LeadData {
 | |
|     dist @0 :Float32;
 | |
|     prob @1 :Float32;
 | |
|     std @2 :Float32;
 | |
|   }
 | |
| 
 | |
|   struct ModelSettings {
 | |
|     bigBoxX @0 :UInt16;
 | |
|     bigBoxY @1 :UInt16;
 | |
|     bigBoxWidth @2 :UInt16;
 | |
|     bigBoxHeight @3 :UInt16;
 | |
|     boxProjection @4 :List(Float32);
 | |
|     yuvCorrection @5 :List(Float32);
 | |
|     inputTransform @6 :List(Float32);
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct CalibrationFeatures {
 | |
|   frameId @0 :UInt32;
 | |
| 
 | |
|   p0 @1 :List(Float32);
 | |
|   p1 @2 :List(Float32);
 | |
|   status @3 :List(Int8);
 | |
| }
 | |
| 
 | |
| 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;
 | |
| 
 | |
|   enum Type {
 | |
|     bigBoxLossless @0;   # rcamera.mkv
 | |
|     fullHEVC @1;         # fcamera.hevc
 | |
|     bigBoxHEVC @2;       # bcamera.hevc
 | |
|     chffrAndroidH264 @3; # acamera
 | |
|     fullLosslessClip @4; # prcamera.mkv
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct AndroidLogEntry {
 | |
|   id @0 :UInt8;
 | |
|   ts @1 :UInt64;
 | |
|   priority @2 :UInt8;
 | |
|   pid @3 :Int32;
 | |
|   tid @4 :Int32;
 | |
|   tag @5 :Text;
 | |
|   message @6 :Text;
 | |
| }
 | |
| 
 | |
| struct LogRotate {
 | |
|   segmentNum @0 :Int32;
 | |
|   path @1 :Text;
 | |
| }
 | |
| 
 | |
| struct Plan {
 | |
|   mdMonoTime @9 :UInt64;
 | |
|   l20MonoTime @10 :UInt64;
 | |
|   events @13 :List(Car.CarEvent);
 | |
| 
 | |
|   # lateral, 3rd order polynomial
 | |
|   lateralValid @0 :Bool;
 | |
|   dPoly @1 :List(Float32);
 | |
|   laneWidth @11 :Float32;
 | |
| 
 | |
|   # longitudinal
 | |
|   longitudinalValid @2 :Bool;
 | |
|   vCruise @16 :Float32;
 | |
|   aCruise @17 :Float32;
 | |
|   vTarget @3 :Float32;
 | |
|   vTargetFuture @14 :Float32;
 | |
|   aTargetMinDEPRECATED @4 :Float32;
 | |
|   aTargetMaxDEPRECATED @5 :Float32;
 | |
|   aTarget @18 :Float32;
 | |
|   jerkFactor @6 :Float32;
 | |
|   hasLead @7 :Bool;
 | |
|   fcw @8 :Bool;
 | |
|   longitudinalPlanSource @15 :LongitudinalPlanSource;
 | |
| 
 | |
|   # gps trajectory in car frame
 | |
|   gpsTrajectory @12 :GpsTrajectory;
 | |
| 
 | |
|   gpsPlannerActive @19 :Bool;
 | |
| 
 | |
|   struct GpsTrajectory {
 | |
|     x @0 :List(Float32);
 | |
|     y @1 :List(Float32);
 | |
|   }
 | |
| 
 | |
|   enum LongitudinalPlanSource {
 | |
|     cruise @0;
 | |
|     mpc1 @1;
 | |
|     mpc2 @2;
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct LiveLocationData {
 | |
|   status @0 :UInt8;
 | |
| 
 | |
|   # 3D fix
 | |
|   lat @1 :Float64;
 | |
|   lon @2 :Float64;
 | |
|   alt @3 :Float32;     # m
 | |
| 
 | |
|   # speed
 | |
|   speed @4 :Float32;   # m/s
 | |
| 
 | |
|   # NED velocity components
 | |
|   vNED @5 :List(Float32);
 | |
| 
 | |
|   # roll, pitch, heading (x,y,z)
 | |
|   roll @6 :Float32;     # WRT to center of earth?
 | |
|   pitch @7 :Float32;    # WRT to center of earth?
 | |
|   heading @8 :Float32;  # WRT to north?
 | |
| 
 | |
|   # what are these?
 | |
|   wanderAngle @9 :Float32;
 | |
|   trackAngle @10 :Float32;
 | |
| 
 | |
|   # car frame -- https://upload.wikimedia.org/wikipedia/commons/f/f5/RPY_angles_of_cars.png
 | |
| 
 | |
|   # gyro, in car frame, deg/s
 | |
|   gyro @11 :List(Float32);
 | |
| 
 | |
|   # accel, in car frame, m/s^2
 | |
|   accel @12 :List(Float32);
 | |
| 
 | |
|   accuracy @13 :Accuracy;
 | |
| 
 | |
|   source @14 :SensorSource;
 | |
|   # if we are fixing a location in the past
 | |
|   fixMonoTime @15 :UInt64;
 | |
|   
 | |
|   gpsWeek @16 :Int32;
 | |
|   timeOfWeek @17 :Float64;
 | |
| 
 | |
|   positionECEF @18 :List(Float64);
 | |
|   poseQuatECEF @19 :List(Float32);
 | |
| 
 | |
|   struct Accuracy {
 | |
|     pNEDError @0 :List(Float32);
 | |
|     vNEDError @1 :List(Float32);
 | |
|     rollError @2 :Float32;
 | |
|     pitchError @3 :Float32;
 | |
|     headingError @4 :Float32;
 | |
|     ellipsoidSemiMajorError @5 :Float32;
 | |
|     ellipsoidSemiMinorError @6 :Float32;
 | |
|     ellipsoidOrientationError @7 :Float32;
 | |
|   }
 | |
| 
 | |
|   enum SensorSource {
 | |
|     applanix @0;
 | |
|     kalman @1;
 | |
|     orbslam @2;
 | |
|     timing @3;
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct EthernetPacket {
 | |
|   pkt @0 :Data;
 | |
|   ts @1 :Float32;
 | |
| }
 | |
| 
 | |
| struct NavUpdate {
 | |
|   isNavigating @0 :Bool;
 | |
|   curSegment @1 :Int32;
 | |
|   segments @2 :List(Segment);
 | |
| 
 | |
|   struct LatLng {
 | |
|     lat @0 :Float64;
 | |
|     lng @1 :Float64;
 | |
|   }
 | |
| 
 | |
|   struct Segment {
 | |
|     from @0 :LatLng;
 | |
|     to @1 :LatLng;
 | |
|     updateTime @2 :Int32;
 | |
|     distance @3 :Int32;
 | |
|     crossTime @4 :Int32;
 | |
|     exitNo @5 :Int32;
 | |
|     instruction @6 :Instruction;
 | |
| 
 | |
|     parts @7 :List(LatLng);
 | |
| 
 | |
|     enum Instruction {
 | |
|       turnLeft @0;
 | |
|       turnRight @1;
 | |
|       keepLeft @2;
 | |
|       keepRight @3;
 | |
|       straight @4;
 | |
|       roundaboutExitNumber @5;
 | |
|       roundaboutExit @6;
 | |
|       roundaboutTurnLeft @7;
 | |
|       unkn8 @8;
 | |
|       roundaboutStraight @9;
 | |
|       unkn10 @10;
 | |
|       roundaboutTurnRight @11;
 | |
|       unkn12 @12;
 | |
|       roundaboutUturn @13;
 | |
|       unkn14 @14;
 | |
|       arrive @15;
 | |
|       exitLeft @16;
 | |
|       exitRight @17;
 | |
|       unkn18 @18;
 | |
|       uturn @19;
 | |
|       # ...
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct NavStatus {
 | |
|   isNavigating @0 :Bool;
 | |
|   currentAddress @1 :Address;
 | |
| 
 | |
|   struct Address {
 | |
|     title @0 :Text;
 | |
|     lat @1 :Float64;
 | |
|     lng @2 :Float64;
 | |
|     house @3 :Text;
 | |
|     address @4 :Text;
 | |
|     street @5 :Text;
 | |
|     city @6 :Text;
 | |
|     state @7 :Text;
 | |
|     country @8 :Text;
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct CellInfo {
 | |
|   timestamp @0 :UInt64;
 | |
|   repr @1 :Text; # android toString() for now
 | |
| }
 | |
| 
 | |
| struct WifiScan {
 | |
|   bssid @0 :Text;
 | |
|   ssid @1 :Text;
 | |
|   capabilities @2 :Text;
 | |
|   frequency @3 :Int32;
 | |
|   level @4 :Int32;
 | |
|   timestamp @5 :Int64;
 | |
| 
 | |
|   centerFreq0 @6 :Int32;
 | |
|   centerFreq1 @7 :Int32;
 | |
|   channelWidth @8 :ChannelWidth;
 | |
|   operatorFriendlyName @9 :Text;
 | |
|   venueName @10 :Text;
 | |
|   is80211mcResponder @11 :Bool;
 | |
|   passpoint @12 :Bool;
 | |
| 
 | |
|   distanceCm @13 :Int32;
 | |
|   distanceSdCm @14 :Int32;
 | |
| 
 | |
|   enum ChannelWidth {
 | |
|     w20Mhz @0;
 | |
|     w40Mhz @1;
 | |
|     w80Mhz @2;
 | |
|     w160Mhz @3;
 | |
|     w80Plus80Mhz @4;
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct AndroidGnss {
 | |
|   union {
 | |
|     measurements @0 :Measurements;
 | |
|     navigationMessage @1 :NavigationMessage;
 | |
|   }
 | |
| 
 | |
|   struct Measurements {
 | |
|     clock @0 :Clock;
 | |
|     measurements @1 :List(Measurement);
 | |
| 
 | |
|     struct Clock {
 | |
|       timeNanos @0 :Int64;
 | |
|       hardwareClockDiscontinuityCount @1 :Int32;
 | |
| 
 | |
|       hasTimeUncertaintyNanos @2 :Bool;
 | |
|       timeUncertaintyNanos @3 :Float64;
 | |
| 
 | |
|       hasLeapSecond @4 :Bool;
 | |
|       leapSecond @5 :Int32;
 | |
| 
 | |
|       hasFullBiasNanos @6 :Bool;
 | |
|       fullBiasNanos @7 :Int64;
 | |
| 
 | |
|       hasBiasNanos @8 :Bool;
 | |
|       biasNanos @9 :Float64;
 | |
| 
 | |
|       hasBiasUncertaintyNanos @10 :Bool;
 | |
|       biasUncertaintyNanos @11 :Float64;
 | |
| 
 | |
|       hasDriftNanosPerSecond @12 :Bool;
 | |
|       driftNanosPerSecond @13 :Float64;
 | |
| 
 | |
|       hasDriftUncertaintyNanosPerSecond @14 :Bool;
 | |
|       driftUncertaintyNanosPerSecond @15 :Float64;
 | |
|     }
 | |
| 
 | |
|     struct Measurement {
 | |
|       svId @0 :Int32;
 | |
|       constellation @1 :Constellation;
 | |
| 
 | |
|       timeOffsetNanos @2 :Float64;
 | |
|       state @3 :Int32;
 | |
|       receivedSvTimeNanos @4 :Int64;
 | |
|       receivedSvTimeUncertaintyNanos @5 :Int64;
 | |
|       cn0DbHz @6 :Float64;
 | |
|       pseudorangeRateMetersPerSecond @7 :Float64;
 | |
|       pseudorangeRateUncertaintyMetersPerSecond @8 :Float64;
 | |
|       accumulatedDeltaRangeState @9 :Int32;
 | |
|       accumulatedDeltaRangeMeters @10 :Float64;
 | |
|       accumulatedDeltaRangeUncertaintyMeters @11 :Float64;
 | |
| 
 | |
|       hasCarrierFrequencyHz @12 :Bool;
 | |
|       carrierFrequencyHz @13 :Float32;
 | |
|       hasCarrierCycles @14 :Bool;
 | |
|       carrierCycles @15 :Int64;
 | |
|       hasCarrierPhase @16 :Bool;
 | |
|       carrierPhase @17 :Float64;
 | |
|       hasCarrierPhaseUncertainty @18 :Bool;
 | |
|       carrierPhaseUncertainty @19 :Float64;
 | |
|       hasSnrInDb @20 :Bool;
 | |
|       snrInDb @21 :Float64;
 | |
| 
 | |
|       multipathIndicator @22 :MultipathIndicator;
 | |
| 
 | |
|       enum Constellation {
 | |
|         unknown @0;
 | |
|         gps @1;
 | |
|         sbas @2;
 | |
|         glonass @3;
 | |
|         qzss @4;
 | |
|         beidou @5;
 | |
|         galileo @6;
 | |
|       }
 | |
| 
 | |
|       enum State {
 | |
|         unknown @0;
 | |
|         codeLock @1;
 | |
|         bitSync @2;
 | |
|         subframeSync @3;
 | |
|         towDecoded @4;
 | |
|         msecAmbiguous @5;
 | |
|         symbolSync @6;
 | |
|         gloStringSync @7;
 | |
|         gloTodDecoded @8;
 | |
|         bdsD2BitSync @9;
 | |
|         bdsD2SubframeSync @10;
 | |
|         galE1bcCodeLock @11;
 | |
|         galE1c2ndCodeLock @12;
 | |
|         galE1bPageSync @13;
 | |
|         sbasSync @14;
 | |
|       }
 | |
| 
 | |
|       enum MultipathIndicator {
 | |
|         unknown @0;
 | |
|         detected @1;
 | |
|         notDetected @2;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   struct NavigationMessage {
 | |
|     type @0 :Int32;
 | |
|     svId @1 :Int32;
 | |
|     messageId @2 :Int32;
 | |
|     submessageId @3 :Int32;
 | |
|     data @4 :Data;
 | |
|     status @5 :Status;
 | |
| 
 | |
|     enum Status {
 | |
|       unknown @0;
 | |
|       parityPassed @1;
 | |
|       parityRebuilt @2;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct QcomGnss {
 | |
|   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;
 | |
|   }
 | |
| 
 | |
|   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 {
 | |
|     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 {
 | |
|       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 {
 | |
|     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 {
 | |
| 
 | |
|     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 {
 | |
|       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 {
 | |
|     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);
 | |
| 
 | |
|   }
 | |
| }
 | |
| 
 | |
| struct LidarPts {
 | |
|   r @0 :List(UInt16);        # uint16   m*500.0
 | |
|   theta @1 :List(UInt16);    # uint16 deg*100.0
 | |
|   reflect @2 :List(UInt8);   # uint8      0-255
 | |
| 
 | |
|   # For storing out of file.
 | |
|   idx @3 :UInt64;
 | |
| 
 | |
|   # For storing in file
 | |
|   pkt @4 :Data;
 | |
| }
 | |
| 
 | |
| 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;
 | |
|   }
 | |
| 
 | |
|   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;
 | |
| 
 | |
|       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;
 | |
|   }
 | |
| 
 | |
|   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 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);
 | |
|   delta @3 :List(Float32);
 | |
|   qpIterations @4 :UInt32;
 | |
|   calculationTime @5 :UInt64;
 | |
| }
 | |
| 
 | |
| 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;
 | |
| }
 | |
| 
 | |
| 
 | |
| struct ECEFPoint {
 | |
|   x @0 :Float32;
 | |
|   y @1 :Float32;
 | |
|   z @2 :Float32;
 | |
| }
 | |
| 
 | |
| struct GPSPlannerPoints {
 | |
|   curPos @0 :ECEFPoint;
 | |
|   points @1 :List(ECEFPoint);
 | |
|   valid @2 :Bool;
 | |
|   trackName @3 :Text;
 | |
|   instructionProgress @4 :Float32;
 | |
| }
 | |
| 
 | |
| struct GPSPlannerPlan {
 | |
|   valid @0 :Bool;
 | |
|   poly @1 :List(Float32);
 | |
|   trackName @2 :Text;
 | |
|   speed @3 :Float32;
 | |
| }
 | |
| 
 | |
| struct TrafficSigns {
 | |
|   type @0 :Type;
 | |
|   distance @1 :Float32;
 | |
|   action @2 :Action;
 | |
|   resuming @3 :Bool;
 | |
| 
 | |
|   enum Type {
 | |
|     light @0;
 | |
|   }
 | |
| 
 | |
|   enum Action {
 | |
|     none @0;
 | |
|     yield @1;
 | |
|     stop @2;
 | |
|   }
 | |
| 
 | |
| }
 | |
| 
 | |
| struct OrbslamCorrection {
 | |
|   correctionMonoTime @0 :UInt64;
 | |
|   prePositionECEF @1 :List(Float64);
 | |
|   postPositionECEF @2 :List(Float64);
 | |
|   prePoseQuatECEF @3 :List(Float32);
 | |
|   postPoseQuatECEF @4 :List(Float32);
 | |
|   numInliers @5 :UInt32;
 | |
| }
 | |
| 
 | |
| struct Event {
 | |
|   # in nanoseconds?
 | |
|   logMonoTime @0 :UInt64;
 | |
| 
 | |
|   union {
 | |
|     initData @1 :InitData;
 | |
|     frame @2 :FrameData;
 | |
|     gpsNMEA @3 :GPSNMEAData;
 | |
|     sensorEventDEPRECATED @4 :SensorEventData;
 | |
|     can @5 :List(CanData);
 | |
|     thermal @6 :ThermalData;
 | |
|     live100 @7 :Live100Data;
 | |
|     liveEventDEPRECATED @8 :List(LiveEventData);
 | |
|     model @9 :ModelData;
 | |
|     features @10 :CalibrationFeatures;
 | |
|     sensorEvents @11 :List(SensorEventData);
 | |
|     health @12 :HealthData;
 | |
|     live20 @13 :Live20Data;
 | |
|     liveUIDEPRECATED @14 :LiveUI;
 | |
|     encodeIdx @15 :EncodeIndex;
 | |
|     liveTracks @16 :List(LiveTracks);
 | |
|     sendcan @17 :List(CanData);
 | |
|     logMessage @18 :Text;
 | |
|     liveCalibration @19 :LiveCalibrationData;
 | |
|     androidLogEntry @20 :AndroidLogEntry;
 | |
|     gpsLocation @21 :GpsLocationData;
 | |
|     carState @22 :Car.CarState;
 | |
|     carControl @23 :Car.CarControl;
 | |
|     plan @24 :Plan;
 | |
|     liveLocation @25 :LiveLocationData;
 | |
|     ethernetData @26 :List(EthernetPacket);
 | |
|     navUpdate @27 :NavUpdate;
 | |
|     cellInfo @28 :List(CellInfo);
 | |
|     wifiScan @29 :List(WifiScan);
 | |
|     androidGnss @30 :AndroidGnss;
 | |
|     qcomGnss @31 :QcomGnss;
 | |
|     lidarPts @32 :LidarPts;
 | |
|     procLog @33 :ProcLog;
 | |
|     ubloxGnss @34 :UbloxGnss;
 | |
|     clocks @35 :Clocks;
 | |
|     liveMpc @36 :LiveMpcData;
 | |
|     liveLongitudinalMpc @37 :LiveLongitudinalMpcData;
 | |
|     navStatus @38 :NavStatus;
 | |
|     ubloxRaw @39 :Data;
 | |
|     gpsPlannerPoints @40 :GPSPlannerPoints;
 | |
|     gpsPlannerPlan @41 :GPSPlannerPlan;
 | |
|     applanixRaw @42 :Data;
 | |
|     trafficSigns @43 :List(TrafficSigns);
 | |
|     liveLocationTiming @44 :LiveLocationData;
 | |
|     orbslamCorrection @45 :OrbslamCorrection;
 | |
|     liveLocationCorrected @46 :LiveLocationData;
 | |
|   }
 | |
| }
 | |
| 
 |