3 import "dccl/option_extensions.proto";
4 import "jaiabot/messages/bounds.proto";
5 import "jaiabot/messages/echo.proto";
6 import "jaiabot/messages/mission.proto";
7 import "jaiabot/messages/link.proto";
9 package jaiabot.protobuf;
18 optional double target = 1 [(dccl.field) = {
22 units { derived_dimensions: "plane_angle" system: "angle::degree" }
24 optional double Kp = 2
25 [(dccl.field) = { min: 0 max: 100 precision: 8 }];
26 optional double Ki = 3
27 [(dccl.field) = { min: 0 max: 100 precision: 8 }];
28 optional double Kd = 4
29 [(dccl.field) = { min: 0 max: 100 precision: 8 }];
32 optional uint32 timeout = 3 [(dccl.field) = {
36 units { derived_dimensions: "time" }
39 optional double throttle = 4
40 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
42 optional PIDSettings speed = 5;
44 optional double rudder = 6
45 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
47 optional PIDSettings heading = 7;
49 optional double port_elevator = 8
50 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
52 optional double stbd_elevator = 9
53 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
55 optional PIDSettings roll = 10;
57 optional PIDSettings pitch = 11;
59 optional PIDSettings depth = 12;
61 optional bool led_switch_on = 13;
63 optional PIDSettings heading_constant = 14;
68 BotStatusRate_2_Hz = 0;
69 BotStatusRate_1_Hz = 1;
70 BotStatusRate_2_SECONDS = 2;
71 BotStatusRate_5_SECONDS = 3;
72 BotStatusRate_10_SECONDS = 4;
73 BotStatusRate_20_SECONDS = 5;
74 BotStatusRate_40_SECONDS = 6;
75 BotStatusRate_60_SECONDS = 7;
76 BotStatusRate_NO_RF = 8;
79 message GPSRequirements
85 optional double transit_hdop_req = 1 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
87 optional double transit_pdop_req = 2 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
89 optional double after_dive_hdop_req = 3 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
91 optional double after_dive_pdop_req = 4 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
93 optional uint32 transit_gps_fix_checks = 5 [(dccl.field) = { min: 1 max: 100 }];
95 optional uint32 transit_gps_degraded_fix_checks = 6 [(dccl.field) = { min: 1 max: 100 }];
97 optional uint32 after_dive_gps_fix_checks = 7 [(dccl.field) = { min: 1 max: 100 }];
100 message RFDisableOptions
102 optional bool rf_disable = 1 [default = false];
103 optional int32 rf_disable_timeout_mins = 2 [default = 10, (dccl.field) = { min: 1 max: 255 }];
106 message IMUCalibration
108 option (dccl.msg) = {
112 optional bool run_cal = 1 [default = false];
117 option (dccl.msg) = {
121 optional bool start_echo = 1 [default = false];
122 optional bool stop_echo = 2 [default = false];
123 optional EchoState echo_state = 3 [default = BOOTING];
129 Actual maximum size of message: 113 bytes / 904 bits
130 dccl.id head...........................8
131 user head..............................0
132 body.................................889
133 padding to full byte...................7
134 Allowed maximum size of message: 250 bytes / 2000 bits
136 option (dccl.msg) = {
143 required uint32 bot_id = 1 [(dccl.field) = { min: 0 max: 255 }];
144 optional uint64 time = 2 [(dccl.field) = {
146 units { prefix: "micro" derived_dimensions: "time" }
149 optional PIDControl pid_control = 3;
151 optional bool query_engineering_status = 4 [default = false];
153 optional bool query_bot_status = 5 [default = false];
155 optional bool engineering_messages_enabled = 13;
157 optional BotStatusRate bot_status_rate = 14 [default = BotStatusRate_1_Hz];
159 optional GPSRequirements gps_requirements = 15;
161 optional RFDisableOptions rf_disable_options = 16;
163 optional BottomDepthSafetyParams bottom_depth_safety_params = 17;
165 optional IMUCalibration imu_cal = 18;
167 optional Echo echo = 19;
169 // For User flagging of events
170 optional uint32 flag = 100 [(dccl.field) = { min: 0 max: 1024 }];
172 // For calibration/configuration of Arduino motor/rudder bounds
173 optional Bounds bounds = 101;
175 // Special case: not sent in message - written upon receipt based on the Link traversed
176 optional Link link = 200 [(dccl.field).omit = true];