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