3import "jaiabot/messages/geographic_coordinate.proto";
4import "dccl/option_extensions.proto";
5import "goby/middleware/protobuf/gpsd.proto";
6import "jaiabot/messages/option_extensions.proto";
8package jaiabot.protobuf;
12 PRE_DEPLOYMENT__STARTING_UP = 0 [(jaia.ev).rest_api.presence = GUARANTEED];
13 PRE_DEPLOYMENT__IDLE = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
14 PRE_DEPLOYMENT__SELF_TEST = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
15 PRE_DEPLOYMENT__FAILED = 3 [(jaia.ev).rest_api.presence = GUARANTEED];
16 PRE_DEPLOYMENT__WAIT_FOR_MISSION_PLAN = 4
17 [(jaia.ev).rest_api.presence = GUARANTEED];
18 PRE_DEPLOYMENT__READY = 5 [(jaia.ev).rest_api.presence = GUARANTEED];
20 IN_MISSION__UNDERWAY__REPLAN = 100
21 [(jaia.ev).rest_api.presence = GUARANTEED];
23 IN_MISSION__UNDERWAY__MOVEMENT__TRANSIT = 110
24 [(jaia.ev).rest_api.presence = GUARANTEED];
25 IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__SETPOINT = 112
26 [(jaia.ev).rest_api.presence = GUARANTEED];
27 IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__STATION_KEEP = 113
28 [(jaia.ev).rest_api.presence = GUARANTEED];
29 IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__SURFACE_DRIFT = 114
30 [(jaia.ev).rest_api.presence = GUARANTEED];
31 IN_MISSION__UNDERWAY__MOVEMENT__TRAIL = 115
32 [(jaia.ev).rest_api.presence = GUARANTEED];
34 IN_MISSION__UNDERWAY__TASK__STATION_KEEP = 120
35 [(jaia.ev).rest_api.presence = GUARANTEED];
36 IN_MISSION__UNDERWAY__TASK__SURFACE_DRIFT = 121
37 [(jaia.ev).rest_api.presence = GUARANTEED];
38 IN_MISSION__UNDERWAY__TASK__DIVE__DIVE_PREP = 123
39 [(jaia.ev).rest_api.presence = GUARANTEED];
40 IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_DESCENT = 124
41 [(jaia.ev).rest_api.presence = GUARANTEED];
42 IN_MISSION__UNDERWAY__TASK__DIVE__HOLD = 125
43 [(jaia.ev).rest_api.presence = GUARANTEED];
44 IN_MISSION__UNDERWAY__TASK__DIVE__UNPOWERED_ASCENT = 126
45 [(jaia.ev).rest_api.presence = GUARANTEED];
46 IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_ASCENT = 127
47 [(jaia.ev).rest_api.presence = GUARANTEED];
48 IN_MISSION__UNDERWAY__TASK__DIVE__REACQUIRE_GPS = 128
49 [(jaia.ev).rest_api.presence = GUARANTEED];
50 IN_MISSION__UNDERWAY__TASK__DIVE__SURFACE_DRIFT = 129
51 [(jaia.ev).rest_api.presence = GUARANTEED];
52 IN_MISSION__UNDERWAY__TASK__DIVE__CONSTANT_HEADING = 130
53 [(jaia.ev).rest_api.presence = GUARANTEED];
54 IN_MISSION__UNDERWAY__TASK__CONSTANT_HEADING = 131
55 [(jaia.ev).rest_api.presence = GUARANTEED];
57 IN_MISSION__UNDERWAY__RECOVERY__TRANSIT = 140
58 [(jaia.ev).rest_api.presence = GUARANTEED];
59 IN_MISSION__UNDERWAY__RECOVERY__STATION_KEEP = 141
60 [(jaia.ev).rest_api.presence = GUARANTEED];
61 IN_MISSION__UNDERWAY__RECOVERY__STOPPED = 142
62 [(jaia.ev).rest_api.presence = GUARANTEED];
64 IN_MISSION__UNDERWAY__ABORT = 150;
66 IN_MISSION__PAUSE__IMU_RESTART = 160;
67 IN_MISSION__PAUSE__REACQUIRE_GPS = 161
68 [(jaia.ev).rest_api.presence = GUARANTEED];
69 IN_MISSION__PAUSE__MANUAL = 162 [(jaia.ev).rest_api.presence = GUARANTEED];
70 IN_MISSION__PAUSE__RESOLVE_NO_FORWARD_PROGRESS = 163;
72 POST_DEPLOYMENT__RECOVERED = 200 [(jaia.ev).rest_api.presence = GUARANTEED];
73 POST_DEPLOYMENT__DATA_OFFLOAD = 202
74 [(jaia.ev).rest_api.presence = GUARANTEED];
75 POST_DEPLOYMENT__IDLE = 203 [(jaia.ev).rest_api.presence = GUARANTEED];
76 POST_DEPLOYMENT__SHUTTING_DOWN = 204
77 [(jaia.ev).rest_api.presence = GUARANTEED];
78 POST_DEPLOYMENT__FAILED = 205 [(jaia.ev).rest_api.presence = GUARANTEED];
87 optional double transit = 1 [
93 units { base_dimensions: "LT^-1" }
96 optional double stationkeep_outer = 2 [
102 units { base_dimensions: "LT^-1" }
107message BottomDepthSafetyParams
109 option (dccl.msg) = {
113 required double constant_heading = 1 [
119 units { derived_dimensions: "plane_angle" system: "angle::degree" }
123 required int32 constant_heading_time = 2 [
129 units { base_dimensions: "T" }
133 required double constant_heading_speed = 3 [
139 units { base_dimensions: "LT^-1" }
143 required double safety_depth = 4 [
149 units { base_dimensions: "LT^-1" }
156 option (dccl.msg) = {
160 required MissionState state = 10;
161 optional int32 active_goal = 11;
162 optional GeographicCoordinate active_goal_location = 12;
163 optional double distance_to_active_goal = 13 [(dccl.field) = {
167 units: { derived_dimensions: "length" }
169 optional uint32 active_goal_timeout = 14 [(dccl.field) = {
173 units { base_dimensions: "T" }
175 optional int32 data_offload_percentage = 15
176 [(dccl.field) = { min: 0 max: 100 precision: 0 }];
177 optional int32 repeat_index = 16
178 [(dccl.field) = { min: 0 max: 1000 precision: 0 }];
179 optional uint32 command_from_hub_id = 70
180 [(dccl.field) = { min: 0 max: 30 }];
181 optional uint64 mission_command_time = 71 [
184 units { prefix: "micro" derived_dimensions: "time" },
191 option (dccl.msg) = {
197 NONE = 0 [(jaia.ev).rest_api.presence = GUARANTEED];
198 DIVE = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
199 STATION_KEEP = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
200 SURFACE_DRIFT = 3 [(jaia.ev).rest_api.presence = GUARANTEED];
201 CONSTANT_HEADING = 4 [(jaia.ev).rest_api.presence = GUARANTEED];
203 optional TaskType type = 1
204 [default = NONE, (jaia.field).rest_api.presence = GUARANTEED];
206 message DiveParameters
208 optional double max_depth = 1 [
214 units { base_dimensions: "L" }
216 (jaia.field).rest_api.presence = GUARANTEED
218 optional double depth_interval = 2 [
224 units { base_dimensions: "L" }
226 (jaia.field).rest_api.presence = GUARANTEED
228 optional double hold_time = 3 [
234 units { base_dimensions: "T" }
236 (jaia.field).rest_api.presence = GUARANTEED
238 optional bool bottom_dive = 4
239 [default = false, (jaia.field).rest_api.presence = GUARANTEED];
243 optional DiveParameters dive = 2
244 [(jaia.field).rest_api.presence = GUARANTEED];
246 message DriftParameters
248 optional int32 drift_time = 3 [
254 units { base_dimensions: "T" }
256 (jaia.field).rest_api.presence = GUARANTEED
260 // for type == SURFACE_DRIFT and type == DIVE
261 optional DriftParameters surface_drift = 3
262 [(jaia.field).rest_api.presence = GUARANTEED];
264 message ConstantHeadingParameters
266 optional double constant_heading = 1 [
272 derived_dimensions: "plane_angle"
273 system: "angle::degree"
276 (jaia.field).rest_api.presence = GUARANTEED
279 optional int32 constant_heading_time = 2 [
285 units { base_dimensions: "T" }
287 (jaia.field).rest_api.presence = GUARANTEED
290 optional double constant_heading_speed = 3 [
296 units { base_dimensions: "LT^-1" }
298 (jaia.field).rest_api.presence = GUARANTEED
302 // for type == CONSTANT_HEADING
303 optional ConstantHeadingParameters constant_heading = 4
304 [(jaia.field).rest_api.presence = GUARANTEED];
305 optional bool start_echo = 5
306 [default = false, (jaia.field).rest_api.presence = GUARANTEED];
308 message StationKeepParameters
310 optional int32 station_keep_time = 1 [
316 units { base_dimensions: "T" }
318 (jaia.field).rest_api.presence = GUARANTEED
322 // for type == STATION_KEEP
323 optional StationKeepParameters station_keep = 6
324 [(jaia.field).rest_api.presence = GUARANTEED];
329 option (dccl.msg) = {
335 START_IMMEDIATELY = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
336 START_ON_COMMAND = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
337 // START_IN_WATER_DETECT = 3;
338 // START_AFTER_DELAY = 4;
340 optional MissionStart start = 1 [
341 default = START_ON_COMMAND,
342 (jaia.field).rest_api.presence = GUARANTEED
347 TRANSIT = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
348 REMOTE_CONTROL = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
349 TRAIL = 3 [(jaia.ev).rest_api.presence = GUARANTEED];
351 optional MovementType movement = 2
352 [default = TRANSIT, (jaia.field).rest_api.presence = GUARANTEED];
356 optional string name = 1 [(dccl.field).omit = true];
357 required GeographicCoordinate location = 2
358 [(jaia.field).rest_api.presence = GUARANTEED];
359 optional MissionTask task = 3
360 [(jaia.field).rest_api.presence = GUARANTEED];
361 optional bool moveWptMode = 4;
364 repeated Goal goal = 3 [
365 (dccl.field).max_repeat = 10,
366 (jaia.field).rest_api.presence = GUARANTEED
371 optional bool recover_at_final_goal = 1
372 [default = true, (jaia.field).rest_api.presence = GUARANTEED];
373 optional GeographicCoordinate location = 2
374 [(jaia.field).rest_api.presence = GUARANTEED];
376 optional Recovery recovery = 4
377 [(jaia.field).rest_api.presence = GUARANTEED];
379 optional Speeds speeds = 5 [(jaia.field).rest_api.presence = GUARANTEED];
380 optional BottomDepthSafetyParams bottom_depth_safety_params = 6
381 [(jaia.field).rest_api.presence = GUARANTEED];
382 optional uint32 fragment_index = 7 [(dccl.field) = { min: 0 max: 7 }];
383 optional uint32 expected_fragments = 8 [(dccl.field) = { min: 1 max: 8 }];
387 option (dccl.msg) = {
391 optional int32 contact = 1
392 [default = 0, (dccl.field) = { min: 0, max: 7 }];
394 optional double angle = 2 [
401 derived_dimensions: "plane_angle"
402 system: "angle::degree"
406 optional bool angle_relative = 3 [default = true];
407 optional double range = 4 [
413 units: { derived_dimensions: "length" }
418 oneof movement_params
420 TrailParam trail = 10;
423 optional uint32 repeats = 9 [
425 (jaia.field).rest_api.presence = GUARANTEED,
426 (dccl.field) = { min: 1 max: 100 }
429 optional string mission_name = 11 [(dccl.field).omit = true]; // not sent over radio, only saved to the hub
433message IvPBehaviorUpdate
435 message TransitUpdate
437 // unit dimensions must match those used by MOOS-IvP
438 option (dccl.msg) = {
441 required bool active = 1;
443 optional double x = 2
444 [(dccl.field).units = { base_dimensions: "L" }]; // meters
445 optional double y = 3
446 [(dccl.field).units = { base_dimensions: "L" }]; // meters
447 optional double speed = 4 [
448 (dccl.field).units = { base_dimensions: "LT^-1" }
451 optional int32 slip_radius = 5;
454 message StationkeepUpdate
456 // unit dimensions must match those used by MOOS-IvP
457 option (dccl.msg) = {
461 required bool active = 1;
463 optional double x = 2
464 [(dccl.field).units = { base_dimensions: "L" }]; // meters
465 optional double y = 3
466 [(dccl.field).units = { base_dimensions: "L" }]; // meters
467 optional double outer_speed = 4 [
468 (dccl.field).units = { base_dimensions: "LT^-1" }
470 optional double transit_speed = 5 [
471 (dccl.field).units = { base_dimensions: "LT^-1" }
473 optional bool center_activate = 6 [default = false];
476 message ConstantHeadingUpdate
478 // unit dimensions must match those used by MOOS-IvP
479 option (dccl.msg) = {
483 required bool active = 1;
485 optional double heading = 2 [(dccl.field) = {
489 units { derived_dimensions: "plane_angle" system: "angle::degree" }
493 message ConstantSpeedUpdate
495 // unit dimensions must match those used by MOOS-IvP
496 option (dccl.msg) = {
500 required bool active = 1;
502 optional double speed = 2 [
503 (dccl.field).units = { base_dimensions: "LT^-1" }
509 // unit dimensions must match those used by MOOS-IvP
510 option (dccl.msg) = {
514 required bool active = 1;
516 optional MissionPlan.TrailParam param = 2;
519 message ContactUpdate
521 // unit dimensions must match those used by MOOS-IvP
522 option (dccl.msg) = {
525 optional int32 contact = 1;
526 optional double x = 2
527 [(dccl.field).units = { base_dimensions: "L" }]; // meters
528 optional double y = 3
529 [(dccl.field).units = { base_dimensions: "L" }]; // meters
530 optional double speed = 4 [
531 (dccl.field).units = { base_dimensions: "LT^-1" }
533 optional double heading_or_cog = 5 [(dccl.field).units = {
534 derived_dimensions: "plane_angle"
535 system: "angle::degree"
541 TransitUpdate transit = 1;
542 StationkeepUpdate stationkeep = 2;
543 ConstantHeadingUpdate constantHeading = 3;
544 ConstantSpeedUpdate constantSpeed = 4;
545 TrailUpdate trail = 5;
546 ContactUpdate contact = 6;
550message IvPBehaviorReport
552 message TransitReport
554 optional bool waypoint_reached = 1 [default = false];
559 TransitReport transit = 1;
563message MissionTpvMeetsGpsReq
565 option (dccl.msg) = {
569 optional goby.middleware.protobuf.gpsd.TimePositionVelocity tpv = 1;
572// Represents a summary of a mission, for use in mission querying results.
573message MissionSummary
575 optional string mission_name = 1;
576 optional uint64 start_time = 2;
577 optional uint64 end_time = 3;
578 optional uint32 task_packet_count = 4;