JaiaBot 1.10.0+14+g8dbf2589
JaiaBot micro-AUV software
 
Loading...
Searching...
No Matches
health.proto
Go to the documentation of this file.
1syntax = "proto2";
2
3import "dccl/option_extensions.proto";
4import "goby/middleware/protobuf/coroner.proto";
5
6package jaiabot.protobuf;
7
8enum Error
9{
10 // from jaiabot_fusion
11 ERROR__TOO_MANY_ERRORS_TO_REPORT_ALL = 0;
12
13 // Directly from systemd
14 ERROR__FAILED__UNKNOWN = 1;
15 ERROR__FAILED__GOBYD = 2;
16 ERROR__FAILED__GOBY_LIAISON = 3;
17 ERROR__FAILED__GOBY_GPS = 4;
18 ERROR__FAILED__GOBY_LOGGER = 5;
19 ERROR__FAILED__GOBY_CORONER = 6;
20 ERROR__FAILED__GOBY_MOOS_GATEWAY = 7;
21 ERROR__FAILED__JAIABOT_HEALTH = 8;
22 ERROR__FAILED__JAIABOT_METADATA = 9;
23 ERROR__FAILED__JAIABOT_HUB_MANAGER = 10;
24 ERROR__FAILED__JAIABOT_WEB_PORTAL = 11;
25 ERROR__FAILED__JAIABOT_FUSION = 12;
26 ERROR__FAILED__JAIABOT_MISSION_MANAGER = 13;
27 ERROR__FAILED__JAIABOT_PID_CONTROL = 14;
28 ERROR__FAILED__JAIABOT_BLUEROBOTICS_PRESSURE_SENSOR_DRIVER = 15;
29 ERROR__FAILED__JAIABOT_ATLAS_SCIENTIFIC_EZO_EC_DRIVER = 16;
30 ERROR__FAILED__JAIABOT_ADAFRUIT_BNO055_DRIVER = 17;
31 ERROR__FAILED__JAIABOT_DRIVER_ARDUINO = 18;
32 ERROR__FAILED__JAIABOT_ENGINEERING = 19;
33 ERROR__FAILED__MOOS_MOOSDB = 20;
34 ERROR__FAILED__MOOS_PHELMIVP = 21;
35 ERROR__FAILED__MOOS_UPROCESSWATCH = 22;
36 ERROR__FAILED__MOOS_PNODEREPORTER = 23;
37 ERROR__FAILED__PYTHON_JAIABOT_WEB_APP = 24;
38 ERROR__FAILED__PYTHON_JAIABOT_IMU = 25;
39 ERROR__FAILED__PYTHON_JAIABOT_PRESSURE_SENSOR = 26;
40 ERROR__FAILED__PYTHON_JAIABOT_AS_EZO_EC = 27;
41 ERROR__FAILED__JAIABOT_LOG_CONVERTER = 28;
42 ERROR__FAILED__JAIABOT_DATA_VISION = 29;
43 ERROR__FAILED__JAIABOT_SIMULATOR = 30;
44 ERROR__FAILED__MOOS_SIM_MOOSDB = 31;
45 ERROR__FAILED__MOOS_SIM_USIMMARINE = 32;
46 ERROR__FAILED__GOBY_INTERVEHICLE_PORTAL = 33;
47 ERROR__FAILED__JAIABOT_ADAFRUIT_BNO085_DRIVER = 34;
48 ERROR__FAILED__JAIABOT_ECHO_DRIVER = 35;
49 ERROR__FAILED__PYTHON_JAIABOT_ECHO = 36;
50
51 // from goby_coroner
52 // must be "ERROR__NOT_RESPONDING__" + uppercase(application name)
53 ERROR__NOT_RESPONDING__UNKNOWN_APP = 100;
54 ERROR__NOT_RESPONDING__GOBYD = 101;
55 ERROR__NOT_RESPONDING__GOBY_LIAISON = 102;
56 ERROR__NOT_RESPONDING__GOBY_GPS = 103;
57 ERROR__NOT_RESPONDING__GOBY_LOGGER = 104;
58 ERROR__NOT_RESPONDING__GOBY_CORONER = 105;
59 ERROR__NOT_RESPONDING__JAIABOT_HEALTH = 106;
60 ERROR__NOT_RESPONDING__JAIABOT_METADATA = 107;
61 ERROR__NOT_RESPONDING__JAIABOT_HUB_MANAGER = 108;
62 ERROR__NOT_RESPONDING__JAIABOT_WEB_PORTAL = 109;
63 ERROR__NOT_RESPONDING__JAIABOT_FUSION = 110;
64 ERROR__NOT_RESPONDING__GOBY_MOOS_GATEWAY = 111;
65 ERROR__NOT_RESPONDING__JAIABOT_MISSION_MANAGER = 112;
66 ERROR__NOT_RESPONDING__JAIABOT_PID_CONTROL = 113;
67 ERROR__NOT_RESPONDING__JAIABOT_BLUEROBOTICS_PRESSURE_SENSOR_DRIVER = 114;
68 ERROR__NOT_RESPONDING__JAIABOT_ATLAS_SCIENTIFIC_EZO_EC_DRIVER = 115;
69 ERROR__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO055_DRIVER = 116;
70 ERROR__NOT_RESPONDING__JAIABOT_DRIVER_ARDUINO = 117;
71 ERROR__NOT_RESPONDING__JAIABOT_ENGINEERING = 118;
72 ERROR__NOT_RESPONDING__JAIABOT_SINGLE_THREAD_PATTERN = 119;
73 ERROR__NOT_RESPONDING__JAIABOT_MULTI_THREAD_PATTERN = 120;
74 ERROR__NOT_RESPONDING__JAIABOT_SIMULATOR = 121;
75 ERROR__NOT_RESPONDING__GOBY_INTERVEHICLE_PORTAL = 122;
76 ERROR__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO085_DRIVER = 123;
77 ERROR__NOT_RESPONDING__JAIABOT_ECHO_DRIVER = 124;
78
79 // from jaiabot_fusion
80 ERROR__MISSING_DATA__GPS_FIX = 200;
81 ERROR__MISSING_DATA__GPS_POSITION = 201;
82 ERROR__MISSING_DATA__PRESSURE = 210;
83 ERROR__MISSING_DATA__HEADING = 212;
84 ERROR__MISSING_DATA__SPEED = 215;
85 ERROR__MISSING_DATA__COURSE = 216;
86 ERROR__MISSING_DATA__CALIBRATION_SYS = 217;
87 ERROR__MISSING_DATA__CALIBRATION_GYRO = 218;
88 ERROR__MISSING_DATA__CALIBRATION_ACCEL = 219;
89 ERROR__MISSING_DATA__CALIBRATION_MAG = 220;
90 ERROR__NOT_CALIBRATED_SYS = 221;
91 ERROR__NOT_CALIBRATED_GYRO = 222;
92 ERROR__NOT_CALIBRATED_ACCEL = 223;
93 ERROR__NOT_CALIBRATED_MAG = 224;
94 ERROR__NOT_CALIBRATED_IMU = 225;
95
96 // TODO: IMPLEMENT
97 // from xbee driver
98 ERROR__COMMS__NO_XBEE = 300;
99
100 // from goby_moos_gateway
101 ERROR__MOOS__HELMIVP_STATE_NOT_DRIVE = 400;
102 ERROR__MOOS__HELMIVP_NO_DESIRED_DATA = 401;
103 ERROR__MOOS__NO_DATA = 402;
104
105 // from jaiabot_health
106 ERROR__SYSTEM__CANNOT_READ_MEMINFO = 500;
107 ERROR__SYSTEM__RAM_SPACE_CRITICAL = 501;
108
109 ERROR__SYSTEM__CANNOT_READ_SYSINFO = 502;
110 ERROR__SYSTEM__CPU_LOAD_FACTOR_CRITICAL = 503;
111
112 ERROR__SYSTEM__CANNOT_READ_DISK_USAGE = 504;
113 ERROR__SYSTEM__ROOTFS_DISK_SPACE_CRITICAL = 505;
114 ERROR__SYSTEM__DATA_DISK_SPACE_CRITICAL = 506;
115
116 ERROR__SYSTEM__NTP_PEERS_QUERY_FAILED = 510;
117 ERROR__SYSTEM__NTP_STATUS_QUERY_FAILED = 511;
118
119 ERROR__VEHICLE__VERY_LOW_BATTERY = 600;
120 ERROR__VEHICLE__CRITICALLY_LOW_BATTERY = 601;
121 ERROR__VEHICLE__MISSING_DATA_BATTERY = 602;
122
123 // arduino driver
124 ERROR__VERSION__MISMATCH_ARDUINO = 700;
125 ERROR__MISSION_DATA__ARDUINO_REPORT = 701;
126 ERROR__VERSION__MISMATCH_INTERVEHICLE__UPGRADE_HUB = 702; // INTERVEHICLE_API_VERSION_mismatch - hub version < bot_version
127 ERROR__VERSION__MISMATCH_INTERVEHICLE__UPGRADE_BOT = 703; // INTERVEHICLE_API_VERSION_mismatch - hub_version > bot_version
128}
129
130enum Warning
131{
132 // from jaiabot_fusion
133 WARNING__TOO_MANY_WARNINGS_TO_REPORT_ALL = 0;
134
135 // from jaiabot_coroner
136 WARNING__NOT_RESPONDING__UNKNOWN_APP = 100;
137 WARNING__NOT_RESPONDING__JAIABOT_ATLAS_SCIENTIFIC_EZO_EC_DRIVER = 101;
138 WARNING__NOT_RESPONDING__JAIABOT_BLUEROBOTICS_PRESSURE_SENSOR_DRIVER = 102;
139 WARNING__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO055_DRIVER = 103;
140 WARNING__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO085_DRIVER = 104;
141 WARNING__NOT_RESPONDING__JAIABOT_ECHO_DRIVER = 105;
142
143 // from jaiabot_fusion
144 WARNING__MISSING_DATA__PITCH = 200;
145 WARNING__MISSING_DATA__ROLL = 201;
146 WARNING__MISSING_DATA__TEMPERATURE = 202;
147 WARNING__MISSING_DATA__COURSE = 216;
148 WARNING__NOT_CALIBRATED_SYS = 221;
149 WARNING__IMU_ISSUE = 222;
150
151 // TODO: IMPLEMENT
152 WARNING__TEMPERATURE__ARDUINO_TOO_HIGH = 210;
153 WARNING__TEMPERATURE__LINUX_TOO_HIGH = 211;
154
155 // TODO: IMPLEMENT
156 // from xbee driver
157 WARNING__COMMS_LOW_SIGNAL_STRENGTH = 300;
158
159 // from jaiabot_health
160 WARNING__VEHICLE__LOW_BATTERY = 400;
161
162 WARNING__SYSTEM__NTP_NOT_SYNCHRONIZED = 500;
163 WARNING__SYSTEM__NTP_OFFSET_HIGH = 501;
164 WARNING__SYSTEM__NTP_JITTER_HIGH = 502;
165 WARNING__SYSTEM__RAM_SPACE_LOW = 503;
166 WARNING__SYSTEM__CPU_LOAD_FACTOR_HIGH = 504;
167 WARNING__SYSTEM__ROOTFS_DISK_SPACE_LOW = 505;
168 WARNING__SYSTEM__DATA_DISK_SPACE_LOW = 506;
169
170 // from jaiabot_mission_manager
171 WARNING__MISSION__INFEASIBLE_MISSION__TRANSIT_MUST_HAVE_A_GOAL = 700;
172 WARNING__MISSION__INFEASIBLE_MISSION__TRANSIT_CANNOT_RECOVER_AT_FINAL_GOAL_WITHOUT_A_GOAL =
173 701;
174 WARNING__MISSION__INFEASIBLE_MISSION__MUST_HAVE_RECOVERY_LOCATION_IF_NOT_RECOVERING_AT_FINAL_GOAL =
175 702;
176 WARNING__MISSION__INFEASIBLE_MISSION__MINIMUM_BOTTOM_DEPTH_REACHED = 703;
177 WARNING__MISSION__INFEASIBLE_MISSION__GOAL_DESIRED_DEPTH_EXCEEDED_MAX = 704;
178 WARNING__VEHICLE__NO_FORWARD_PROGRESS = 705;
179
180 // WARNING__MISSION__DATA_OFFLOAD_FAILED = 720;
181 WARNING__MISSION__DATA__GPS_FIX_DEGRADED = 721;
182 WARNING__MISSION__DATA_PRE_OFFLOAD_FAILED = 722;
183 WARNING__MISSION__DATA_POST_OFFLOAD_FAILED = 723;
184}
185
186message LinuxHardwareStatus
187{
188 option (dccl.msg) = {
189 unit_system: "si"
190 };
191
192 message Processor
193 {
194 // from sysinfo
195 message LoadAverages
196 {
197 required float one_min = 1;
198 required float five_min = 2;
199 required float fifteen_min = 3;
200 }
201 optional LoadAverages loads = 10;
202
203 optional int32 num_processes = 15;
204
205 // from nproc
206 optional int32 num_processors = 20;
207 }
208
209 message Information
210 {
211 required uint64 total = 1 [(dccl.field) = {
212 units { prefix: "kilo" unit: "information::byte" }
213 }];
214 required uint64 available = 2 [(dccl.field) = {
215 units { prefix: "kilo" unit: "information::byte" }
216 }];
217 required float use_percent = 3;
218 }
219
220 message Memory
221 {
222 // from sysinfo
223 required Information ram = 1;
224 required Information swap = 2;
225 }
226
227 message Disk
228 {
229 // from boost filesystem
230 optional Information rootfs = 1;
231 optional Information data = 2;
232 }
233
234 message WiFi
235 {
236 required bool is_connected = 1;
237 optional uint32 link_quality = 2;
238 optional uint32 link_quality_percentage = 3;
239 optional int32 signal_level = 4;
240 optional int32 noise_level = 5;
241 }
242
243 optional int32 uptime = 10
244 [(dccl.field) = { units { base_dimensions: "T" } }];
245 optional Processor processor = 20;
246 optional Memory memory = 30;
247 optional Disk disk = 40;
248 optional WiFi wifi = 50;
249}
250
251message NTPStatus
252{
253 option (dccl.msg) = {
254 unit_system: "si"
255 };
256 // from ntpq -c rv 0
257 enum SyncSource
258 {
259 SYNC_UNKNOWN = -1;
260 SYNC_UNSPECIFIED = 0;
261 SYNC_PPS = 1;
262 SYNC_LF_RADIO = 2;
263 SYNC_HF_RADIO = 3;
264 SYNC_UHF_RADIO = 4;
265 SYNC_LOCAL = 5;
266 SYNC_NTP = 6;
267 SYNC_OTHER = 7;
268 SYNC_WRISTWATCH = 8;
269 SYNC_TELEPHONE = 9;
270 }
271
272 optional SyncSource sync_source = 10 [default = SYNC_UNKNOWN];
273
274 enum LeapIndicator
275 {
276 LEAP_UNKNOWN = -1;
277 LEAP_NONE = 0x00;
278 LEAP_LAST_MINUTE_HAS_61_SECONDS = 0x01;
279 LEAP_LAST_MINUTE_HAS_59_SECONDS = 0x02;
280 LEAP_CLOCK_NOT_SYNCHRONIZED = 0x03;
281 }
282 optional LeapIndicator leap_indicator = 11 [default = LEAP_UNKNOWN];
283 optional int32 system_event_counter = 12 [default = 0];
284 enum NTPSystemEvent
285 {
286 NTP_SYSTEM_EVENT_UNKNOWN = -1;
287 NTP_SYSTEM_EVENT_UNSPECIFIED = 0x0;
288 NTP_SYSTEM_FREQ_NOT_SET = 0x1;
289 NTP_SYSTEM_FREQ_SET = 0x2;
290 NTP_SYSTEM_SPIKE_DETECT = 0x3;
291 NTP_SYSTEM_FREQ_MODE = 0x4;
292 NTP_SYSTEM_CLOCK_SYNC = 0x5;
293 NTP_SYSTEM_RESTART = 0x6;
294 NTP_SYSTEM_PANIC_STOP = 0x7;
295 NTP_SYSTEM_NO_SYSTEM_PEER = 0x8;
296 NTP_SYSTEM_LEAP_ARMED = 0x9;
297 NTP_SYSTEM_LEAP_DISARMED = 0xa;
298 NTP_SYSTEM_LEAP_EVENT = 0xb;
299 NTP_SYSTEM_CLOCK_STEP = 0xc;
300 NTP_SYSTEM_KERNEL_INFO = 0xd;
301 NTP_SYSTEM_LEAPSECOND_VALUES_UPDATE_FROM_FILE = 0xe;
302 NTP_SYSTEM_STALE_LEAPSECOND_VALUES = 0xf;
303 }
304 optional NTPSystemEvent last_system_event = 13
305 [default = NTP_SYSTEM_EVENT_UNKNOWN];
306
307 // from ntpq -p
308 message NTPPeer
309 {
310 enum TallyCode
311 {
312 PEER_CODE_UNKNOWN = -1;
313 PEER_NOT_VALID = 0x20; // ' '
314 PEER_DISCARDED_BY_INTERSECTION = 0x78; // 'x'
315 PEER_DISCARDED_BY_TABLE_OVERFLOW = 0x2E; // '.'
316 PEER_DISCARDED_BY_CLUSTER_ALGORITHM = 0x2D; // '-'
317 PEER_INCLUDED_IN_COMBINE = 0x2B; // '+'
318 PEER_ALTERNATIVE_BACKUP = 0x23; // '#'
319 PEER_SYSTEM_SYNC_SOURCE = 0x2A; // '*'
320 PEER_PPS_SYNC = 0x6F; // 'o'
321 }
322
323 required TallyCode tally_code = 1 [default = PEER_CODE_UNKNOWN];
324 required string remote = 2;
325 required string refid = 3;
326 optional int32 stratum = 4 [default = 16];
327 optional int32 when = 5
328 [default = -1, (dccl.field) = { units { base_dimensions: "T" } }];
329 optional int32 poll = 6
330 [default = -1, (dccl.field) = { units { base_dimensions: "T" } }];
331 // bitmask
332 optional int32 reach = 7 [default = 0];
333 optional float delay = 8 [
334 default = nan,
335 (dccl.field) = { units { prefix: "milli" base_dimensions: "T" } }
336 ];
337 optional float offset = 9 [
338 default = nan,
339 (dccl.field) = { units { prefix: "milli" base_dimensions: "T" } }
340 ];
341 optional float jitter = 10 [
342 default = nan,
343 (dccl.field) = { units { prefix: "milli" base_dimensions: "T" } }
344 ];
345 }
346 optional NTPPeer system_sync_peer = 20;
347 repeated NTPPeer peer = 21;
348}
349
350message HelmIVPStatus
351{
352 option (dccl.msg) = {
353 unit_system: "si"
354 };
355 optional string helm_ivp_state = 1 [default = "PARK"];
356 optional bool helm_ivp_desired_speed = 2 [default = false];
357 optional bool helm_ivp_desired_heading = 3 [default = false];
358 optional bool helm_ivp_desired_depth = 4 [default = false];
359 optional bool helm_ivp_data = 5 [default = false];
360}
361
362message ThreadHealth
363{
364 repeated Error error = 1;
365 repeated Warning warning = 2;
366}
367
368extend goby.middleware.protobuf.ThreadHealth
369{
370 optional ThreadHealth jaiabot_thread = 1000;
371}
372
373message VehicleHealth {}
374
375extend goby.middleware.protobuf.VehicleHealth
376{
377 optional VehicleHealth jaiabot_vehicle = 1000;
378}
379
380message SystemdStartReport
381{
382 required Error clear_error =
383 1; // the corresponding ERROR__FAILED__* to clear (if exists)
384}
385
386message SystemdStopReport
387{
388 enum ServiceResult
389 {
390 SERVICE_RESULT_UNKNOWN = 0;
391 SERVICE_RESULT_SUCCESS = 1;
392 SERVICE_RESULT_PROTOCOL = 2;
393 SERVICE_RESULT_TIMEOUT = 3;
394 SERVICE_RESULT_EXIT_CODE = 4;
395 SERVICE_RESULT_SIGNAL = 5;
396 SERVICE_RESULT_CORE_DUMP = 6;
397 SERVICE_RESULT_WATCHDOG = 7;
398 SERVICE_RESULT_START_LIMIT_HIT = 8;
399 SERVICE_RESULT_RESOURCES = 9;
400 }
401 required ServiceResult result = 1;
402 required Error error = 2; // the corresponding ERROR__FAILED__*
403 optional string journal_dump_file =
404 3; // if failed, the journal snippet from last boot was written here
405}
406
407message SystemdReportAck
408{
409 required Error error_ack =
410 1; // which app this relates to, by its corresponding error value
411}