3import "dccl/option_extensions.proto";
4import "jaiabot/messages/mission.proto";
5import "jaiabot/messages/geographic_coordinate.proto";
6import "jaiabot/messages/high_control.proto";
7import "goby/middleware/protobuf/coroner.proto";
8import "jaiabot/messages/health.proto";
9import "jaiabot/messages/imu.proto";
11package jaiabot.protobuf;
16 Actual maximum size of message: 179 bytes / 1432 bits
17 dccl.id head...........................8
18 user head..............................0
19 body................................1423
20 padding to full byte...................1
21 Allowed maximum size of message: 250 bytes / 2000 bits
30 required uint32 bot_id = 1 [(dccl.field) = { min: 0 max: 255 }];
31 required uint64 time = 2 [(dccl.field) = {
33 units { prefix: "micro" derived_dimensions: "time" }
34 precision: -6 // second precision
43 MISSION_PLAN_FRAGMENT = 4;
52 // during remote control mission
53 REMOTE_CONTROL_SETPOINT = 20;
54 REMOTE_CONTROL_TASK = 21;
55 REMOTE_CONTROL_RESUME_MOVEMENT = 22;
60 RETRY_DATA_OFFLOAD = 32;
61 DATA_OFFLOAD_COMPLETE = 33;
62 DATA_OFFLOAD_FAILED = 34;
64 // debugging low level commands
65 RESTART_ALL_SERVICES = 40;
67 SHUTDOWN_COMPUTER = 42;
70 required CommandType type = 10;
74 // required for type == MISSION_PLAN
75 MissionPlan plan = 20;
77 // required for type == REMOTE_CONTROL_SETPOINT
78 RemoteControl rc = 30;
80 // required for type == REMOTE_CONTROL_TASK
81 MissionTask rc_task = 31;
91 required uint32 hub_id = 1;
92 required uint64 time = 2 [
93 (dccl.field) = { units { prefix: "micro" derived_dimensions: "time" } }
100 // debugging low level commands
101 RESTART_ALL_SERVICES = 40;
102 REBOOT_COMPUTER = 41;
103 SHUTDOWN_COMPUTER = 42;
106 required HubCommandType type = 10;
107 optional uint32 scan_for_bot_id = 11;
113 Actual maximum size of message: 53 bytes / 424 bits
114 dccl.id head...........................8
115 user head..............................0
116 body.................................415
117 padding to full byte...................1
118 Allowed maximum size of message: 250 bytes / 2000 bits
120 option (dccl.msg) = {
127 required uint32 bot_id = 1 [(dccl.field) = { min: 0 max: 255 }];
128 required uint64 time = 2 [(dccl.field) = {
130 units { prefix: "micro" derived_dimensions: "time" }
132 optional uint64 last_command_time = 3 [(dccl.field) = {
134 units { prefix: "micro" derived_dimensions: "time" }
137 optional goby.middleware.protobuf.HealthState health_state = 4;
138 repeated Error error = 5 [(dccl.field).max_repeat = 5];
139 repeated Warning warning = 6 [(dccl.field).max_repeat = 5];
145 optional BotType bot_type = 7;
147 optional GeographicCoordinate location = 10;
149 optional double depth = 11 [(dccl.field) = {
153 units: { derived_dimensions: "length" }
158 optional double roll = 1 [(dccl.field) = {
162 units { derived_dimensions: "plane_angle" system: "angle::degree" }
164 optional double pitch = 2 [(dccl.field) = {
168 units { derived_dimensions: "plane_angle" system: "angle::degree" }
170 optional double heading = 3 [(dccl.field) = {
174 units { derived_dimensions: "plane_angle" system: "angle::degree" }
176 optional double course_over_ground = 4 [(dccl.field) = {
180 units { derived_dimensions: "plane_angle" system: "angle::degree" }
183 optional Attitude attitude = 20;
187 optional double over_ground = 1 [(dccl.field) = {
191 units { derived_dimensions: "velocity" }
193 optional double over_water = 2 [(dccl.field) = {
197 units { derived_dimensions: "velocity" }
200 optional Speed speed = 30;
202 optional MissionState mission_state = 40;
204 // bounds should match MissionPlan.goal max_repeat value *
205 // expected_fragments max
206 optional int32 active_goal = 41 [(dccl.field) = { min: 0 max: 29 }];
207 optional double distance_to_active_goal = 42 [(dccl.field) = {
211 units: { derived_dimensions: "length" }
213 optional uint32 active_goal_timeout = 43 [(dccl.field) = {
217 units { base_dimensions: "T" }
219 optional int32 repeat_index = 44
220 [(dccl.field) = { min: 0 max: 1000 precision: 0 }];
222 optional double salinity = 51
223 [(dccl.field) = { min: 0 max: 100 precision: 1 }];
225 optional double temperature = 52 [(dccl.field) = {
229 units { derived_dimensions: "temperature" system: "celsius" }
232 optional double thermocouple_temperature = 53 [(dccl.field) = {
236 units { derived_dimensions: "temperature" system: "celsius" }
239 optional double vv_current = 54 [(dccl.field) = {
243 units { derived_dimensions: "current" }
246 optional double vcc_current = 55 [(dccl.field) = {
250 units { derived_dimensions: "current" }
253 optional double vcc_voltage = 56 [(dccl.field) = {
257 units { derived_dimensions: "electric_potential" system: "si" }
260 optional double battery_percent = 57
261 [(dccl.field) = { min: 0 max: 100 precision: 0 }];
263 optional int32 calibration_status = 58 [(dccl.field) = { min: 0 max: 3 }];
265 optional IMUCalibrationState calibration_state = 59;
267 optional double hdop = 60 [(dccl.field) = { min: 0 max: 100 precision: 2 }];
269 optional double pdop = 61 [(dccl.field) = { min: 0 max: 100 precision: 2 }];
271 optional int32 wifi_link_quality_percentage = 62
272 [(dccl.field) = { min: 0 max: 100 precision: 0 }];
277 option (dccl.msg) = {
281 optional int32 drift_duration = 1 [
287 units { base_dimensions: "T" }
291 message EstimatedDrift
293 required double speed = 1 [(dccl.field) = {
297 units { derived_dimensions: "velocity" }
300 optional double heading = 3 [(dccl.field) = {
304 units { derived_dimensions: "plane_angle" system: "angle::degree" }
308 // should correspond to ocean current velocity
309 optional EstimatedDrift estimated_drift = 10;
312 optional GeographicCoordinate start_location = 11;
314 optional GeographicCoordinate end_location = 12;
316 // Significant wave height is defined as the average wave height,
317 // from trough to crest, of the highest one-third of the waves
318 optional double significant_wave_height = 13 [(dccl.field) = {
322 units: { derived_dimensions: "length" }
328 option (dccl.msg) = {
332 required double dive_rate = 10 [(dccl.field) = {
336 units { derived_dimensions: "velocity" }
339 optional double unpowered_rise_rate = 11 [(dccl.field) = {
343 units { derived_dimensions: "velocity" }
346 optional double powered_rise_rate = 12 [(dccl.field) = {
350 units { derived_dimensions: "velocity" }
353 required double depth_achieved = 13 [(dccl.field) = {
357 units: { derived_dimensions: "length" }
362 optional double mean_depth = 1 [(dccl.field) = {
366 units: { derived_dimensions: "length" }
369 optional double mean_temperature = 2 [(dccl.field) = {
373 units { derived_dimensions: "temperature" system: "celsius" }
376 optional double mean_salinity = 3
377 [(dccl.field) = { min: 0 max: 45 precision: 1 }];
380 repeated Measurements measurement = 14 [(dccl.field) = { max_repeat: 50 }];
383 optional GeographicCoordinate start_location = 15;
385 optional double duration_to_acquire_gps = 16 [(dccl.field) = {
389 units { base_dimensions: "T" }
392 // Did we reach seafloor?
393 optional bool bottom_dive = 17 [default = false];
395 // Did we reach min depth?
396 optional bool reached_min_depth = 18 [default = false];
398 // If we reached bottom, what was the bottom type
405 optional BottomType bottom_type = 19;
407 // For bottom characterization
408 optional double max_acceleration = 20 [(dccl.field) = {
412 units { derived_dimensions: "acceleration" }
419 Actual maximum size of message: 218 bytes / 1744 bits
420 dccl.id head..........................16
421 user head..............................0
422 body................................1728
423 padding to full byte...................0
424 Allowed maximum size of message: 250 bytes / 2000 bits
426 option (dccl.msg) = {
433 required uint32 bot_id = 1 [(dccl.field) = { min: 0 max: 255 }];
434 required uint64 start_time = 2 [(dccl.field) = {
436 units { prefix: "micro" derived_dimensions: "time" }
438 required uint64 end_time = 3 [(dccl.field) = {
440 units { prefix: "micro" derived_dimensions: "time" }
442 required MissionTask.TaskType type = 4;
444 optional DivePacket dive = 10;
445 optional DriftPacket drift = 11;