3 import "jaiabot/messages/geographic_coordinate.proto";
4 import "dccl/option_extensions.proto";
5 import "goby/middleware/protobuf/gpsd.proto";
6 import "jaiabot/messages/option_extensions.proto";
8 package 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" }
107 message 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" }
154 message MissionReport
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 }];
183 option (dccl.msg) = {
189 NONE = 0 [(jaia.ev).rest_api.presence = GUARANTEED];
190 DIVE = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
191 STATION_KEEP = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
192 SURFACE_DRIFT = 3 [(jaia.ev).rest_api.presence = GUARANTEED];
193 CONSTANT_HEADING = 4 [(jaia.ev).rest_api.presence = GUARANTEED];
195 optional TaskType type = 1
196 [default = NONE, (jaia.field).rest_api.presence = GUARANTEED];
198 message DiveParameters
200 optional double max_depth = 1 [
206 units { base_dimensions: "L" }
208 (jaia.field).rest_api.presence = GUARANTEED
210 optional double depth_interval = 2 [
216 units { base_dimensions: "L" }
218 (jaia.field).rest_api.presence = GUARANTEED
220 optional double hold_time = 3 [
226 units { base_dimensions: "T" }
228 (jaia.field).rest_api.presence = GUARANTEED
230 optional bool bottom_dive = 4
231 [default = false, (jaia.field).rest_api.presence = GUARANTEED];
235 optional DiveParameters dive = 2
236 [(jaia.field).rest_api.presence = GUARANTEED];
238 message DriftParameters
240 optional int32 drift_time = 3 [
246 units { base_dimensions: "T" }
248 (jaia.field).rest_api.presence = GUARANTEED
252 // for type == SURFACE_DRIFT and type == DIVE
253 optional DriftParameters surface_drift = 3
254 [(jaia.field).rest_api.presence = GUARANTEED];
256 message ConstantHeadingParameters
258 optional double constant_heading = 1 [
264 derived_dimensions: "plane_angle"
265 system: "angle::degree"
268 (jaia.field).rest_api.presence = GUARANTEED
271 optional int32 constant_heading_time = 2 [
277 units { base_dimensions: "T" }
279 (jaia.field).rest_api.presence = GUARANTEED
282 optional double constant_heading_speed = 3 [
288 units { base_dimensions: "LT^-1" }
290 (jaia.field).rest_api.presence = GUARANTEED
294 // for type == CONSTANT_HEADING
295 optional ConstantHeadingParameters constant_heading = 4
296 [(jaia.field).rest_api.presence = GUARANTEED];
297 optional bool start_echo = 5
298 [default = false, (jaia.field).rest_api.presence = GUARANTEED];
300 message StationKeepParameters
302 optional int32 station_keep_time = 1 [
308 units { base_dimensions: "T" }
310 (jaia.field).rest_api.presence = GUARANTEED
314 // for type == STATION_KEEP
315 optional StationKeepParameters station_keep = 6
316 [(jaia.field).rest_api.presence = GUARANTEED];
321 option (dccl.msg) = {
327 START_IMMEDIATELY = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
328 START_ON_COMMAND = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
329 // START_IN_WATER_DETECT = 3;
330 // START_AFTER_DELAY = 4;
332 optional MissionStart start = 1 [
333 default = START_ON_COMMAND,
334 (jaia.field).rest_api.presence = GUARANTEED
339 TRANSIT = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
340 REMOTE_CONTROL = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
341 TRAIL = 3 [(jaia.ev).rest_api.presence = GUARANTEED];
343 optional MovementType movement = 2
344 [default = TRANSIT, (jaia.field).rest_api.presence = GUARANTEED];
348 optional string name = 1 [(dccl.field).omit = true];
349 required GeographicCoordinate location = 2
350 [(jaia.field).rest_api.presence = GUARANTEED];
351 optional MissionTask task = 3
352 [(jaia.field).rest_api.presence = GUARANTEED];
353 optional bool moveWptMode = 4;
356 repeated Goal goal = 3 [
357 (dccl.field).max_repeat = 10,
358 (jaia.field).rest_api.presence = GUARANTEED
363 optional bool recover_at_final_goal = 1
364 [default = true, (jaia.field).rest_api.presence = GUARANTEED];
365 optional GeographicCoordinate location = 2
366 [(jaia.field).rest_api.presence = GUARANTEED];
368 optional Recovery recovery = 4
369 [(jaia.field).rest_api.presence = GUARANTEED];
371 optional Speeds speeds = 5 [(jaia.field).rest_api.presence = GUARANTEED];
372 optional BottomDepthSafetyParams bottom_depth_safety_params = 6
373 [(jaia.field).rest_api.presence = GUARANTEED];
374 optional uint32 fragment_index = 7 [(dccl.field) = { min: 0 max: 2 }];
375 optional uint32 expected_fragments = 8 [(dccl.field) = { min: 1 max: 3 }];
379 option (dccl.msg) = {
383 optional int32 contact = 1
384 [default = 0, (dccl.field) = { min: 0, max: 7 }];
386 optional double angle = 2 [
393 derived_dimensions: "plane_angle"
394 system: "angle::degree"
398 optional bool angle_relative = 3 [default = true];
399 optional double range = 4 [
405 units: { derived_dimensions: "length" }
410 oneof movement_params
412 TrailParam trail = 10;
415 optional uint32 repeats = 9 [
417 (jaia.field).rest_api.presence = GUARANTEED,
418 (dccl.field) = { min: 1 max: 100 }
423 message IvPBehaviorUpdate
425 message TransitUpdate
427 // unit dimensions must match those used by MOOS-IvP
428 option (dccl.msg) = {
431 required bool active = 1;
433 optional double x = 2
434 [(dccl.field).units = { base_dimensions: "L" }]; // meters
435 optional double y = 3
436 [(dccl.field).units = { base_dimensions: "L" }]; // meters
437 optional double speed = 4 [
438 (dccl.field).units = { base_dimensions: "LT^-1" }
441 optional int32 slip_radius = 5;
444 message StationkeepUpdate
446 // unit dimensions must match those used by MOOS-IvP
447 option (dccl.msg) = {
451 required bool active = 1;
453 optional double x = 2
454 [(dccl.field).units = { base_dimensions: "L" }]; // meters
455 optional double y = 3
456 [(dccl.field).units = { base_dimensions: "L" }]; // meters
457 optional double outer_speed = 4 [
458 (dccl.field).units = { base_dimensions: "LT^-1" }
460 optional double transit_speed = 5 [
461 (dccl.field).units = { base_dimensions: "LT^-1" }
463 optional bool center_activate = 6 [default = false];
466 message ConstantHeadingUpdate
468 // unit dimensions must match those used by MOOS-IvP
469 option (dccl.msg) = {
473 required bool active = 1;
475 optional double heading = 2 [(dccl.field) = {
479 units { derived_dimensions: "plane_angle" system: "angle::degree" }
483 message ConstantSpeedUpdate
485 // unit dimensions must match those used by MOOS-IvP
486 option (dccl.msg) = {
490 required bool active = 1;
492 optional double speed = 2 [
493 (dccl.field).units = { base_dimensions: "LT^-1" }
499 // unit dimensions must match those used by MOOS-IvP
500 option (dccl.msg) = {
504 required bool active = 1;
506 optional MissionPlan.TrailParam param = 2;
509 message ContactUpdate
511 // unit dimensions must match those used by MOOS-IvP
512 option (dccl.msg) = {
515 optional int32 contact = 1;
516 optional double x = 2
517 [(dccl.field).units = { base_dimensions: "L" }]; // meters
518 optional double y = 3
519 [(dccl.field).units = { base_dimensions: "L" }]; // meters
520 optional double speed = 4 [
521 (dccl.field).units = { base_dimensions: "LT^-1" }
523 optional double heading_or_cog = 5 [(dccl.field).units = {
524 derived_dimensions: "plane_angle"
525 system: "angle::degree"
531 TransitUpdate transit = 1;
532 StationkeepUpdate stationkeep = 2;
533 ConstantHeadingUpdate constantHeading = 3;
534 ConstantSpeedUpdate constantSpeed = 4;
535 TrailUpdate trail = 5;
536 ContactUpdate contact = 6;
540 message IvPBehaviorReport
542 message TransitReport
544 optional bool waypoint_reached = 1 [default = false];
549 TransitReport transit = 1;
553 message MissionTpvMeetsGpsReq
555 option (dccl.msg) = {
559 optional goby.middleware.protobuf.gpsd.TimePositionVelocity tpv = 1;