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];
32 IN_MISSION__UNDERWAY__TASK__STATION_KEEP = 120
33 [(jaia.ev).rest_api.presence = GUARANTEED];
34 IN_MISSION__UNDERWAY__TASK__SURFACE_DRIFT = 121
35 [(jaia.ev).rest_api.presence = GUARANTEED];
36 IN_MISSION__UNDERWAY__TASK__DIVE__DIVE_PREP = 123
37 [(jaia.ev).rest_api.presence = GUARANTEED];
38 IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_DESCENT = 124
39 [(jaia.ev).rest_api.presence = GUARANTEED];
40 IN_MISSION__UNDERWAY__TASK__DIVE__HOLD = 125
41 [(jaia.ev).rest_api.presence = GUARANTEED];
42 IN_MISSION__UNDERWAY__TASK__DIVE__UNPOWERED_ASCENT = 126
43 [(jaia.ev).rest_api.presence = GUARANTEED];
44 IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_ASCENT = 127
45 [(jaia.ev).rest_api.presence = GUARANTEED];
46 IN_MISSION__UNDERWAY__TASK__DIVE__REACQUIRE_GPS = 128
47 [(jaia.ev).rest_api.presence = GUARANTEED];
48 IN_MISSION__UNDERWAY__TASK__DIVE__SURFACE_DRIFT = 129
49 [(jaia.ev).rest_api.presence = GUARANTEED];
50 IN_MISSION__UNDERWAY__TASK__DIVE__CONSTANT_HEADING = 130
51 [(jaia.ev).rest_api.presence = GUARANTEED];
52 IN_MISSION__UNDERWAY__TASK__CONSTANT_HEADING = 131
53 [(jaia.ev).rest_api.presence = GUARANTEED];
55 IN_MISSION__UNDERWAY__RECOVERY__TRANSIT = 140
56 [(jaia.ev).rest_api.presence = GUARANTEED];
57 IN_MISSION__UNDERWAY__RECOVERY__STATION_KEEP = 141
58 [(jaia.ev).rest_api.presence = GUARANTEED];
59 IN_MISSION__UNDERWAY__RECOVERY__STOPPED = 142
60 [(jaia.ev).rest_api.presence = GUARANTEED];
62 IN_MISSION__UNDERWAY__ABORT = 150;
64 IN_MISSION__PAUSE__IMU_RESTART = 160;
65 IN_MISSION__PAUSE__REACQUIRE_GPS = 161
66 [(jaia.ev).rest_api.presence = GUARANTEED];
67 IN_MISSION__PAUSE__MANUAL = 162 [(jaia.ev).rest_api.presence = GUARANTEED];
68 IN_MISSION__PAUSE__RESOLVE_NO_FORWARD_PROGRESS = 163;
70 POST_DEPLOYMENT__RECOVERED = 200 [(jaia.ev).rest_api.presence = GUARANTEED];
71 POST_DEPLOYMENT__DATA_OFFLOAD = 202
72 [(jaia.ev).rest_api.presence = GUARANTEED];
73 POST_DEPLOYMENT__IDLE = 203 [(jaia.ev).rest_api.presence = GUARANTEED];
74 POST_DEPLOYMENT__SHUTTING_DOWN = 204
75 [(jaia.ev).rest_api.presence = GUARANTEED];
76 POST_DEPLOYMENT__FAILED = 205 [(jaia.ev).rest_api.presence = GUARANTEED];
85 optional double transit = 1 [
91 units { base_dimensions: "LT^-1" }
94 optional double stationkeep_outer = 2 [
100 units { base_dimensions: "LT^-1" }
105 message BottomDepthSafetyParams
107 option (dccl.msg) = {
111 required double constant_heading = 1 [
117 units { derived_dimensions: "plane_angle" system: "angle::degree" }
121 required int32 constant_heading_time = 2 [
127 units { base_dimensions: "T" }
131 required double constant_heading_speed = 3 [
137 units { base_dimensions: "LT^-1" }
141 required double safety_depth = 4 [
147 units { base_dimensions: "LT^-1" }
152 message MissionReport
154 option (dccl.msg) = {
158 required MissionState state = 10;
159 optional int32 active_goal = 11;
160 optional GeographicCoordinate active_goal_location = 12;
161 optional double distance_to_active_goal = 13 [(dccl.field) = {
165 units: { derived_dimensions: "length" }
167 optional uint32 active_goal_timeout = 14 [(dccl.field) = {
171 units { base_dimensions: "T" }
173 optional int32 data_offload_percentage = 15
174 [(dccl.field) = { min: 0 max: 100 precision: 0 }];
175 optional int32 repeat_index = 16
176 [(dccl.field) = { min: 0 max: 1000 precision: 0 }];
181 option (dccl.msg) = {
187 NONE = 0 [(jaia.ev).rest_api.presence = GUARANTEED];
188 DIVE = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
189 STATION_KEEP = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
190 SURFACE_DRIFT = 3 [(jaia.ev).rest_api.presence = GUARANTEED];
191 CONSTANT_HEADING = 4 [(jaia.ev).rest_api.presence = GUARANTEED];
193 optional TaskType type = 1
194 [default = NONE, (jaia.field).rest_api.presence = GUARANTEED];
196 message DiveParameters
198 optional double max_depth = 1 [
204 units { base_dimensions: "L" }
206 (jaia.field).rest_api.presence = GUARANTEED
208 optional double depth_interval = 2 [
214 units { base_dimensions: "L" }
216 (jaia.field).rest_api.presence = GUARANTEED
218 optional double hold_time = 3 [
224 units { base_dimensions: "T" }
226 (jaia.field).rest_api.presence = GUARANTEED
228 optional bool bottom_dive = 4
229 [default = false, (jaia.field).rest_api.presence = GUARANTEED];
233 optional DiveParameters dive = 2
234 [(jaia.field).rest_api.presence = GUARANTEED];
236 message DriftParameters
238 optional int32 drift_time = 3 [
244 units { base_dimensions: "T" }
246 (jaia.field).rest_api.presence = GUARANTEED
250 // for type == SURFACE_DRIFT and type == DIVE
251 optional DriftParameters surface_drift = 3
252 [(jaia.field).rest_api.presence = GUARANTEED];
254 message ConstantHeadingParameters
256 optional double constant_heading = 1 [
262 derived_dimensions: "plane_angle"
263 system: "angle::degree"
266 (jaia.field).rest_api.presence = GUARANTEED
269 optional int32 constant_heading_time = 2 [
275 units { base_dimensions: "T" }
277 (jaia.field).rest_api.presence = GUARANTEED
280 optional double constant_heading_speed = 3 [
286 units { base_dimensions: "LT^-1" }
288 (jaia.field).rest_api.presence = GUARANTEED
292 // for type == CONSTANT_HEADING
293 optional ConstantHeadingParameters constant_heading = 4
294 [(jaia.field).rest_api.presence = GUARANTEED];
295 optional bool start_echo = 5
296 [default = false, (jaia.field).rest_api.presence = GUARANTEED];
298 message StationKeepParameters
300 optional int32 station_keep_time = 1 [
306 units { base_dimensions: "T" }
308 (jaia.field).rest_api.presence = GUARANTEED
312 // for type == STATION_KEEP
313 optional StationKeepParameters station_keep = 6
314 [(jaia.field).rest_api.presence = GUARANTEED];
319 option (dccl.msg) = {
325 START_IMMEDIATELY = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
326 START_ON_COMMAND = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
327 // START_IN_WATER_DETECT = 3;
328 // START_AFTER_DELAY = 4;
330 optional MissionStart start = 1 [
331 default = START_ON_COMMAND,
332 (jaia.field).rest_api.presence = GUARANTEED
337 TRANSIT = 1 [(jaia.ev).rest_api.presence = GUARANTEED];
338 REMOTE_CONTROL = 2 [(jaia.ev).rest_api.presence = GUARANTEED];
340 optional MovementType movement = 2
341 [default = TRANSIT, (jaia.field).rest_api.presence = GUARANTEED];
345 optional string name = 1 [(dccl.field).omit = true];
346 required GeographicCoordinate location = 2
347 [(jaia.field).rest_api.presence = GUARANTEED];
348 optional MissionTask task = 3
349 [(jaia.field).rest_api.presence = GUARANTEED];
350 optional bool moveWptMode = 4;
353 repeated Goal goal = 3 [
354 (dccl.field).max_repeat = 10,
355 (jaia.field).rest_api.presence = GUARANTEED
360 optional bool recover_at_final_goal = 1
361 [default = true, (jaia.field).rest_api.presence = GUARANTEED];
362 optional GeographicCoordinate location = 2
363 [(jaia.field).rest_api.presence = GUARANTEED];
365 optional Recovery recovery = 4
366 [(jaia.field).rest_api.presence = GUARANTEED];
368 optional Speeds speeds = 5 [(jaia.field).rest_api.presence = GUARANTEED];
369 optional BottomDepthSafetyParams bottom_depth_safety_params = 6
370 [(jaia.field).rest_api.presence = GUARANTEED];
371 optional uint32 fragment_index = 7 [(dccl.field) = { min: 0 max: 2 }];
372 optional uint32 expected_fragments = 8 [(dccl.field) = { min: 1 max: 3 }];
373 optional uint32 repeats = 9 [
375 (jaia.field).rest_api.presence = GUARANTEED,
376 (dccl.field) = { min: 1 max: 100 }
380 message IvPBehaviorUpdate
382 message TransitUpdate
384 // unit dimensions must match those used by MOOS-IvP
385 option (dccl.msg) = {
388 required bool active = 1;
390 optional double x = 2
391 [(dccl.field).units = { base_dimensions: "L" }]; // meters
392 optional double y = 3
393 [(dccl.field).units = { base_dimensions: "L" }]; // meters
394 optional double speed = 4 [
395 (dccl.field).units = { base_dimensions: "LT^-1" }
398 optional int32 slip_radius = 5;
401 message StationkeepUpdate
403 // unit dimensions must match those used by MOOS-IvP
404 option (dccl.msg) = {
408 required bool active = 1;
410 optional double x = 2
411 [(dccl.field).units = { base_dimensions: "L" }]; // meters
412 optional double y = 3
413 [(dccl.field).units = { base_dimensions: "L" }]; // meters
414 optional double outer_speed = 4 [
415 (dccl.field).units = { base_dimensions: "LT^-1" }
417 optional double transit_speed = 5 [
418 (dccl.field).units = { base_dimensions: "LT^-1" }
420 optional bool center_activate = 6 [default = false];
423 message ConstantHeadingUpdate
425 // unit dimensions must match those used by MOOS-IvP
426 option (dccl.msg) = {
430 required bool active = 1;
432 optional double heading = 2 [(dccl.field) = {
436 units { derived_dimensions: "plane_angle" system: "angle::degree" }
440 message ConstantSpeedUpdate
442 // unit dimensions must match those used by MOOS-IvP
443 option (dccl.msg) = {
447 required bool active = 1;
449 optional double speed = 2 [
450 (dccl.field).units = { base_dimensions: "LT^-1" }
456 TransitUpdate transit = 1;
457 StationkeepUpdate stationkeep = 2;
458 ConstantHeadingUpdate constantHeading = 3;
459 ConstantSpeedUpdate constantSpeed = 4;
463 message IvPBehaviorReport
465 message TransitReport
467 optional bool waypoint_reached = 1 [default = false];
472 TransitReport transit = 1;
476 message MissionTpvMeetsGpsReq
478 option (dccl.msg) = {
482 optional goby.middleware.protobuf.gpsd.TimePositionVelocity tpv = 1;