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.
		
		
		
		
			
				
					575 lines
				
				12 KiB
			
		
		
			
		
	
	
					575 lines
				
				12 KiB
			| 
											1 year ago
										 | using Cxx = import "./include/c++.capnp";
 | ||
|  | $Cxx.namespace("cereal");
 | ||
|  | 
 | ||
|  | @0x80ef1ec4889c2a63;
 | ||
|  | 
 | ||
|  | # legacy.capnp: a home for deprecated structs
 | ||
|  | 
 | ||
|  | struct LogRotate @0x9811e1f38f62f2d1 {
 | ||
|  |   segmentNum @0 :Int32;
 | ||
|  |   path @1 :Text;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct LiveUI @0xc08240f996aefced {
 | ||
|  |   rearViewCam @0 :Bool;
 | ||
|  |   alertText1 @1 :Text;
 | ||
|  |   alertText2 @2 :Text;
 | ||
|  |   awarenessStatus @3 :Float32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct UiLayoutState @0x88dcce08ad29dda0 {
 | ||
|  |   activeApp @0 :App;
 | ||
|  |   sidebarCollapsed @1 :Bool;
 | ||
|  |   mapEnabled @2 :Bool;
 | ||
|  |   mockEngaged @3 :Bool;
 | ||
|  | 
 | ||
|  |   enum App @0x9917470acf94d285 {
 | ||
|  |     home @0;
 | ||
|  |     music @1;
 | ||
|  |     nav @2;
 | ||
|  |     settings @3;
 | ||
|  |     none @4;
 | ||
|  |   }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct OrbslamCorrection @0x8afd33dc9b35e1aa {
 | ||
|  |   correctionMonoTime @0 :UInt64;
 | ||
|  |   prePositionECEF @1 :List(Float64);
 | ||
|  |   postPositionECEF @2 :List(Float64);
 | ||
|  |   prePoseQuatECEF @3 :List(Float32);
 | ||
|  |   postPoseQuatECEF @4 :List(Float32);
 | ||
|  |   numInliers @5 :UInt32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct EthernetPacket @0xa99a9d5b33cf5859 {
 | ||
|  |   pkt @0 :Data;
 | ||
|  |   ts @1 :Float32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct CellInfo @0xcff7566681c277ce {
 | ||
|  |   timestamp @0 :UInt64;
 | ||
|  |   repr @1 :Text; # android toString() for now
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct WifiScan @0xd4df5a192382ba0b {
 | ||
|  |   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 @0xcb6a279f015f6b51 {
 | ||
|  |     w20Mhz @0;
 | ||
|  |     w40Mhz @1;
 | ||
|  |     w80Mhz @2;
 | ||
|  |     w160Mhz @3;
 | ||
|  |     w80Plus80Mhz @4;
 | ||
|  |   }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct LiveEventData @0x94b7baa90c5c321e {
 | ||
|  |   name @0 :Text;
 | ||
|  |   value @1 :Int32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct ModelData @0xb8aad62cffef28a9 {
 | ||
|  |   frameId @0 :UInt32;
 | ||
|  |   frameAge @12 :UInt32;
 | ||
|  |   frameDropPerc @13 :Float32;
 | ||
|  |   timestampEof @9 :UInt64;
 | ||
|  |   modelExecutionTime @14 :Float32;
 | ||
|  |   gpuExecutionTime @16 :Float32;
 | ||
|  |   rawPred @15 :Data;
 | ||
|  | 
 | ||
|  |   path @1 :PathData;
 | ||
|  |   leftLane @2 :PathData;
 | ||
|  |   rightLane @3 :PathData;
 | ||
|  |   lead @4 :LeadData;
 | ||
|  |   freePath @6 :List(Float32);
 | ||
|  | 
 | ||
|  |   settings @5 :ModelSettings;
 | ||
|  |   leadFuture @7 :LeadData;
 | ||
|  |   speed @8 :List(Float32);
 | ||
|  |   meta @10 :MetaData;
 | ||
|  |   longitudinal @11 :LongitudinalData;
 | ||
|  | 
 | ||
|  |   struct PathData @0x8817eeea389e9f08 {
 | ||
|  |     points @0 :List(Float32);
 | ||
|  |     prob @1 :Float32;
 | ||
|  |     std @2 :Float32;
 | ||
|  |     stds @3 :List(Float32);
 | ||
|  |     poly @4 :List(Float32);
 | ||
|  |     validLen @5 :Float32;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   struct LeadData @0xd1c9bef96d26fa91 {
 | ||
|  |     dist @0 :Float32;
 | ||
|  |     prob @1 :Float32;
 | ||
|  |     std @2 :Float32;
 | ||
|  |     relVel @3 :Float32;
 | ||
|  |     relVelStd @4 :Float32;
 | ||
|  |     relY @5 :Float32;
 | ||
|  |     relYStd @6 :Float32;
 | ||
|  |     relA @7 :Float32;
 | ||
|  |     relAStd @8 :Float32;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   struct ModelSettings @0xa26e3710efd3e914 {
 | ||
|  |     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 MetaData @0x9744f25fb60f2bf8 {
 | ||
|  |     engagedProb @0 :Float32;
 | ||
|  |     desirePrediction @1 :List(Float32);
 | ||
|  |     brakeDisengageProb @2 :Float32;
 | ||
|  |     gasDisengageProb @3 :Float32;
 | ||
|  |     steerOverrideProb @4 :Float32;
 | ||
|  |     desireState @5 :List(Float32);
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   struct LongitudinalData @0xf98f999c6a071122 {
 | ||
|  |     distances @2 :List(Float32);
 | ||
|  |     speeds @0 :List(Float32);
 | ||
|  |     accelerations @1 :List(Float32);
 | ||
|  |   }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct ECEFPoint @0xc25bbbd524983447 {
 | ||
|  |   x @0 :Float64;
 | ||
|  |   y @1 :Float64;
 | ||
|  |   z @2 :Float64;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct ECEFPointDEPRECATED @0xe10e21168db0c7f7 {
 | ||
|  |   x @0 :Float32;
 | ||
|  |   y @1 :Float32;
 | ||
|  |   z @2 :Float32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct GPSPlannerPoints @0xab54c59699f8f9f3 {
 | ||
|  |   curPosDEPRECATED @0 :ECEFPointDEPRECATED;
 | ||
|  |   pointsDEPRECATED @1 :List(ECEFPointDEPRECATED);
 | ||
|  |   curPos @6 :ECEFPoint;
 | ||
|  |   points @7 :List(ECEFPoint);
 | ||
|  |   valid @2 :Bool;
 | ||
|  |   trackName @3 :Text;
 | ||
|  |   speedLimit @4 :Float32;
 | ||
|  |   accelTarget @5 :Float32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct GPSPlannerPlan @0xf5ad1d90cdc1dd6b {
 | ||
|  |   valid @0 :Bool;
 | ||
|  |   poly @1 :List(Float32);
 | ||
|  |   trackName @2 :Text;
 | ||
|  |   speed @3 :Float32;
 | ||
|  |   acceleration @4 :Float32;
 | ||
|  |   pointsDEPRECATED @5 :List(ECEFPointDEPRECATED);
 | ||
|  |   points @6 :List(ECEFPoint);
 | ||
|  |   xLookahead @7 :Float32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct UiNavigationEvent @0x90c8426c3eaddd3b {
 | ||
|  |   type @0: Type;
 | ||
|  |   status @1: Status;
 | ||
|  |   distanceTo @2: Float32;
 | ||
|  |   endRoadPointDEPRECATED @3: ECEFPointDEPRECATED;
 | ||
|  |   endRoadPoint @4: ECEFPoint;
 | ||
|  | 
 | ||
|  |   enum Type @0xe8db07dcf8fcea05 {
 | ||
|  |     none @0;
 | ||
|  |     laneChangeLeft @1;
 | ||
|  |     laneChangeRight @2;
 | ||
|  |     mergeLeft @3;
 | ||
|  |     mergeRight @4;
 | ||
|  |     turnLeft @5;
 | ||
|  |     turnRight @6;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   enum Status @0xb9aa88c75ef99a1f {
 | ||
|  |     none @0;
 | ||
|  |     passive @1;
 | ||
|  |     approaching @2;
 | ||
|  |     active @3;
 | ||
|  |   }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct LiveLocationData @0xb99b2bc7a57e8128 {
 | ||
|  |   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);
 | ||
|  |   pitchCalibration @20 :Float32;
 | ||
|  |   yawCalibration @21 :Float32;
 | ||
|  |   imuFrame @22 :List(Float32);
 | ||
|  | 
 | ||
|  |   struct Accuracy @0x943dc4625473b03f {
 | ||
|  |     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 @0xc871d3cc252af657 {
 | ||
|  |     applanix @0;
 | ||
|  |     kalman @1;
 | ||
|  |     orbslam @2;
 | ||
|  |     timing @3;
 | ||
|  |     dummy @4;
 | ||
|  |   }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct OrbOdometry @0xd7700859ed1f5b76 {
 | ||
|  |   # timing first
 | ||
|  |   startMonoTime @0 :UInt64;
 | ||
|  |   endMonoTime @1 :UInt64;
 | ||
|  | 
 | ||
|  |   # fundamental matrix and error
 | ||
|  |   f @2: List(Float64);
 | ||
|  |   err @3: Float64;
 | ||
|  | 
 | ||
|  |   # number of inlier points
 | ||
|  |   inliers @4: Int32;
 | ||
|  | 
 | ||
|  |   # for debug only
 | ||
|  |   # indexed by endMonoTime features
 | ||
|  |   # value is startMonoTime feature match
 | ||
|  |   # -1 if no match
 | ||
|  |   matches @5: List(Int16);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct OrbFeatures @0xcd60164a8a0159ef {
 | ||
|  |   timestampEof @0 :UInt64;
 | ||
|  |   # transposed arrays of normalized image coordinates
 | ||
|  |   # len(xs) == len(ys) == len(descriptors) * 32
 | ||
|  |   xs @1 :List(Float32);
 | ||
|  |   ys @2 :List(Float32);
 | ||
|  |   descriptors @3 :Data;
 | ||
|  |   octaves @4 :List(Int8);
 | ||
|  | 
 | ||
|  |   # match index to last OrbFeatures
 | ||
|  |   # -1 if no match
 | ||
|  |   timestampLastEof @5 :UInt64;
 | ||
|  |   matches @6: List(Int16);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct OrbFeaturesSummary @0xd500d30c5803fa4f {
 | ||
|  |   timestampEof @0 :UInt64;
 | ||
|  |   timestampLastEof @1 :UInt64;
 | ||
|  | 
 | ||
|  |   featureCount @2 :UInt16;
 | ||
|  |   matchCount @3 :UInt16;
 | ||
|  |   computeNs @4 :UInt64;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct OrbKeyFrame @0xc8233c0345e27e24 {
 | ||
|  |   # this is a globally unique id for the KeyFrame
 | ||
|  |   id @0: UInt64;
 | ||
|  | 
 | ||
|  |   # this is the location of the KeyFrame
 | ||
|  |   pos @1: ECEFPoint;
 | ||
|  | 
 | ||
|  |   # these are the features in the world
 | ||
|  |   # len(dpos) == len(descriptors) * 32
 | ||
|  |   dpos @2 :List(ECEFPoint);
 | ||
|  |   descriptors @3 :Data;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct KalmanOdometry @0x92e21bb7ea38793a {
 | ||
|  |   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 OrbObservation @0x9b326d4e436afec7 {
 | ||
|  |   observationMonoTime @0 :UInt64;
 | ||
|  |   normalizedCoordinates @1 :List(Float32);
 | ||
|  |   locationECEF @2 :List(Float64);
 | ||
|  |   matchDistance @3: UInt32;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct CalibrationFeatures @0x8fdfadb254ea867a {
 | ||
|  |   frameId @0 :UInt32;
 | ||
|  | 
 | ||
|  |   p0 @1 :List(Float32);
 | ||
|  |   p1 @2 :List(Float32);
 | ||
|  |   status @3 :List(Int8);
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct NavStatus @0xbd8822120928120c {
 | ||
|  |   isNavigating @0 :Bool;
 | ||
|  |   currentAddress @1 :Address;
 | ||
|  | 
 | ||
|  |   struct Address @0xce7cd672cacc7814 {
 | ||
|  |     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 NavUpdate @0xdb98be6565516acb {
 | ||
|  |   isNavigating @0 :Bool;
 | ||
|  |   curSegment @1 :Int32;
 | ||
|  |   segments @2 :List(Segment);
 | ||
|  | 
 | ||
|  |   struct LatLng @0x9eaef9187cadbb9b {
 | ||
|  |     lat @0 :Float64;
 | ||
|  |     lng @1 :Float64;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   struct Segment @0xa5b39b4fc4d7da3f {
 | ||
|  |     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 @0xc5417a637451246f {
 | ||
|  |       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 TrafficEvent @0xacfa74a094e62626 {
 | ||
|  |   type @0 :Type;
 | ||
|  |   distance @1 :Float32;
 | ||
|  |   action @2 :Action;
 | ||
|  |   resuming @3 :Bool;
 | ||
|  | 
 | ||
|  |   enum Type @0xd85d75253435bf4b {
 | ||
|  |     stopSign @0;
 | ||
|  |     lightRed @1;
 | ||
|  |     lightYellow @2;
 | ||
|  |     lightGreen @3;
 | ||
|  |     stopLight @4;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   enum Action @0xa6f6ce72165ccb49 {
 | ||
|  |     none @0;
 | ||
|  |     yield @1;
 | ||
|  |     stop @2;
 | ||
|  |     resumeReady @3;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | struct AndroidGnss @0xdfdf30d03fc485bd {
 | ||
|  |   union {
 | ||
|  |     measurements @0 :Measurements;
 | ||
|  |     navigationMessage @1 :NavigationMessage;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   struct Measurements @0xa20710d4f428d6cd {
 | ||
|  |     clock @0 :Clock;
 | ||
|  |     measurements @1 :List(Measurement);
 | ||
|  | 
 | ||
|  |     struct Clock @0xa0e27b453a38f450 {
 | ||
|  |       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 @0xd949bf717d77614d {
 | ||
|  |       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 @0x9ef1f3ff0deb5ffb {
 | ||
|  |         unknown @0;
 | ||
|  |         gps @1;
 | ||
|  |         sbas @2;
 | ||
|  |         glonass @3;
 | ||
|  |         qzss @4;
 | ||
|  |         beidou @5;
 | ||
|  |         galileo @6;
 | ||
|  |       }
 | ||
|  | 
 | ||
|  |       enum State @0xcbb9490adce12d72 {
 | ||
|  |         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 @0xc04e7b6231d4caa8 {
 | ||
|  |         unknown @0;
 | ||
|  |         detected @1;
 | ||
|  |         notDetected @2;
 | ||
|  |       }
 | ||
|  |     }
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   struct NavigationMessage @0xe2517b083095fd4e {
 | ||
|  |     type @0 :Int32;
 | ||
|  |     svId @1 :Int32;
 | ||
|  |     messageId @2 :Int32;
 | ||
|  |     submessageId @3 :Int32;
 | ||
|  |     data @4 :Data;
 | ||
|  |     status @5 :Status;
 | ||
|  | 
 | ||
|  |     enum Status @0xec1ff7996b35366f {
 | ||
|  |       unknown @0;
 | ||
|  |       parityPassed @1;
 | ||
|  |       parityRebuilt @2;
 | ||
|  |     }
 | ||
|  |   }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | struct LidarPts @0xe3d6685d4e9d8f7a {
 | ||
|  |   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;
 | ||
|  | }
 | ||
|  | 
 | ||
|  | 
 |