2 import "dccl/option_extensions.proto";
3 import "goby/middleware/protobuf/geographic.proto";
5 package goby.middleware.frontseat.protobuf;
13 required double time = 1 [(dccl.field).units.derived_dimensions = "time"];
14 optional string name = 2;
15 optional VehicleType type = 3;
18 required .goby.middleware.protobuf.LatLonPoint global_fix = 10;
19 // x, y, z on local cartesian grid
20 optional CartesianCoordinate local_fix = 11;
23 required EulerAngles pose = 20;
25 required Speed speed = 30;
27 optional Source source = 40;
29 extensions 1000 to max;
34 option (dccl.msg).unit_system = "si";
36 required double time = 1 [(dccl.field).units.derived_dimensions = "time"];
37 optional double heading = 2 [
39 (dccl.field).units.derived_dimensions = "plane_angle",
40 (dccl.field).units.system = "angle::degree"
42 optional double speed = 3
43 [default = 0, (dccl.field).units.derived_dimensions = "length/time"];
44 optional double depth = 4
45 [default = 0, (dccl.field).units.derived_dimensions = "length"];
46 optional double pitch = 5 [
48 (dccl.field).units.derived_dimensions = "plane_angle",
49 (dccl.field).units.system = "angle::degree"
52 optional double roll = 6 [
54 (dccl.field).units.derived_dimensions = "plane_angle",
55 (dccl.field).units.system = "angle::degree"
58 optional double z_rate = 7
59 [default = 0, (dccl.field).units.derived_dimensions = "length/time"];
60 optional double altitude = 8
61 [default = 10, (dccl.field).units.derived_dimensions = "length"];
63 extensions 1000 to max;
66 // Type of vehicle for a given node
83 MOORING_SUBSURFACE = 62;
98 INERTIAL_NAVIGATION_SYSTEM = 4;
105 MAGNETIC_COMPASS = 40;
108 optional Sensor position = 1;
109 optional Sensor depth = 2;
110 optional Sensor speed = 3;
111 optional Sensor heading = 4;
113 extensions 1000 to max;
116 // computed from LatLonPoint
117 message CartesianCoordinate
119 option (dccl.msg).unit_system = "si";
121 required double x = 1 [(dccl.field).units.derived_dimensions = "length"];
122 required double y = 2 [(dccl.field).units.derived_dimensions = "length"];
123 optional double z = 3
124 [(dccl.field).units.derived_dimensions = "length", default = 0];
126 extensions 1000 to max;
131 option (dccl.msg).unit_system = "si";
133 optional double roll = 1 [(dccl.field) = {
134 units { derived_dimensions: "plane_angle" system: "angle::degree" }
136 optional double pitch = 2 [(dccl.field) = {
137 units { derived_dimensions: "plane_angle" system: "angle::degree" }
139 optional double heading = 3 [(dccl.field) = {
140 units { derived_dimensions: "plane_angle" system: "angle::degree" }
142 optional double course_over_ground = 4 [(dccl.field) = {
143 units { derived_dimensions: "plane_angle" system: "angle::degree" }
146 optional double roll_rate = 10 [(dccl.field) = {
147 units { derived_dimensions: "plane_angle/time" system: "angle::degree" }
149 optional double pitch_rate = 11 [(dccl.field) = {
150 units { derived_dimensions: "plane_angle/time" system: "angle::degree" }
152 optional double heading_rate = 12 [(dccl.field) = {
153 units { derived_dimensions: "plane_angle/time" system: "angle::degree" }
156 extensions 1000 to max;
161 option (dccl.msg).unit_system = "si";
163 required double over_ground = 1
164 [(dccl.field).units.derived_dimensions = "length/time"];
165 optional double over_water = 2
166 [(dccl.field).units.derived_dimensions = "length/time"];
168 extensions 1000 to max;
173 option (dccl.msg).unit_system = "si";
175 required double time = 2 [(dccl.field).units.base_dimensions = "T"];
177 // required "primary" measurements
178 optional double conductivity = 10
179 [(dccl.field).units = { derived_dimensions: "conductivity" }];
180 required double temperature = 11 [(dccl.field).units = {
182 derived_dimensions: "temperature"
185 required double pressure = 12
186 [(dccl.field).units = { base_dimensions: "M L^-1 T^-2" }];
188 // required "secondary" or calculated quantities (can be calculated
189 // from "primary" measurements alone using empirical formulas).
190 required double salinity = 20
191 [(dccl.field).units = { base_dimensions: "-" }];
192 required double sound_speed = 21
193 [(dccl.field).units = { base_dimensions: "L T^-1" }];
194 required double density = 22
195 [(dccl.field).units = { base_dimensions: "M L^-3" }];
197 required .goby.middleware.protobuf.LatLonPoint global_fix = 23;
199 // algorithm used for secondary quantities
200 enum SalinityAlgorithm
202 SAL_ALGORITHM_UNKNOWN = 0;
203 UNESCO_44_PREKIN_AND_LEWIS_1980 = 1;
205 optional SalinityAlgorithm salinity_algorithm = 30
206 [default = SAL_ALGORITHM_UNKNOWN];
208 enum SoundSpeedAlgorithm
210 SS_ALGORITHM_UNKNOWN = 0;
211 UNESCO_44_CHEN_AND_MILLERO_1977 = 1;
215 optional SoundSpeedAlgorithm sound_speed_algorithm = 31
216 [default = SS_ALGORITHM_UNKNOWN];
218 enum DensityAlgorithm
220 DENSITY_ALGORITHM_UNKNOWN = 0;
221 UNESCO_38_MILLERO_AND_POISSON_1981 = 1;
223 optional DensityAlgorithm density_algorithm = 32
224 [default = DENSITY_ALGORITHM_UNKNOWN];
226 extensions 1000 to max;
231 option (dccl.msg) = {
235 required .goby.middleware.protobuf.LatLonPoint datum = 1;