JaiaBot  1.12.1~beta1
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 
6 package jaiabot.protobuf;
7 
8 enum 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__MISSING_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  ERROR__ARDUINO_CONNECTION_FAILED = 704;
129 }
130 
131 enum Warning
132 {
133  // from jaiabot_fusion
134  WARNING__TOO_MANY_WARNINGS_TO_REPORT_ALL = 0;
135 
136  // from jaiabot_coroner
137  WARNING__NOT_RESPONDING__UNKNOWN_APP = 100;
138  WARNING__NOT_RESPONDING__JAIABOT_ATLAS_SCIENTIFIC_EZO_EC_DRIVER = 101;
139  WARNING__NOT_RESPONDING__JAIABOT_BLUEROBOTICS_PRESSURE_SENSOR_DRIVER = 102;
140  WARNING__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO055_DRIVER = 103;
141  WARNING__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO085_DRIVER = 104;
142  WARNING__NOT_RESPONDING__JAIABOT_ECHO_DRIVER = 105;
143 
144  // from jaiabot_fusion
145  WARNING__MISSING_DATA__PITCH = 200;
146  WARNING__MISSING_DATA__ROLL = 201;
147  WARNING__MISSING_DATA__TEMPERATURE = 202;
148  WARNING__MISSING_DATA__COURSE = 216;
149  WARNING__NOT_CALIBRATED_SYS = 221;
150  WARNING__IMU_ISSUE = 222;
151 
152  // TODO: IMPLEMENT
153  WARNING__TEMPERATURE__ARDUINO_TOO_HIGH = 210;
154  WARNING__TEMPERATURE__LINUX_TOO_HIGH = 211;
155 
156  // TODO: IMPLEMENT
157  // from xbee driver
158  WARNING__COMMS_LOW_SIGNAL_STRENGTH = 300;
159 
160  // from jaiabot_health
161  WARNING__VEHICLE__LOW_BATTERY = 400;
162 
163  WARNING__SYSTEM__NTP_NOT_SYNCHRONIZED = 500;
164  WARNING__SYSTEM__NTP_OFFSET_HIGH = 501;
165  WARNING__SYSTEM__NTP_JITTER_HIGH = 502;
166  WARNING__SYSTEM__RAM_SPACE_LOW = 503;
167  WARNING__SYSTEM__CPU_LOAD_FACTOR_HIGH = 504;
168  WARNING__SYSTEM__ROOTFS_DISK_SPACE_LOW = 505;
169  WARNING__SYSTEM__DATA_DISK_SPACE_LOW = 506;
170 
171  // from jaiabot_mission_manager
172  WARNING__MISSION__INFEASIBLE_MISSION__TRANSIT_MUST_HAVE_A_GOAL = 700;
173  WARNING__MISSION__INFEASIBLE_MISSION__TRANSIT_CANNOT_RECOVER_AT_FINAL_GOAL_WITHOUT_A_GOAL =
174  701;
175  WARNING__MISSION__INFEASIBLE_MISSION__MUST_HAVE_RECOVERY_LOCATION_IF_NOT_RECOVERING_AT_FINAL_GOAL =
176  702;
177  WARNING__MISSION__INFEASIBLE_MISSION__MINIMUM_BOTTOM_DEPTH_REACHED = 703;
178  WARNING__MISSION__INFEASIBLE_MISSION__GOAL_DESIRED_DEPTH_EXCEEDED_MAX = 704;
179  WARNING__VEHICLE__NO_FORWARD_PROGRESS = 705;
180 
181  WARNING__MISSION__DATA_OFFLOAD_FAILED = 720;
182  WARNING__MISSION__DATA__GPS_FIX_DEGRADED = 721;
183  WARNING__MISSION__DATA_PRE_OFFLOAD_FAILED = 722;
184  WARNING__MISSION__DATA_POST_OFFLOAD_FAILED = 723;
185 }
186 
187 message LinuxHardwareStatus
188 {
189  option (dccl.msg) = {
190  unit_system: "si"
191  };
192 
193  message Processor
194  {
195  // from sysinfo
196  message LoadAverages
197  {
198  required float one_min = 1;
199  required float five_min = 2;
200  required float fifteen_min = 3;
201  }
202  optional LoadAverages loads = 10;
203 
204  optional int32 num_processes = 15;
205 
206  // from nproc
207  optional int32 num_processors = 20;
208  }
209 
210  message Information
211  {
212  required uint64 total = 1 [(dccl.field) = {
213  units { prefix: "kilo" unit: "information::byte" }
214  }];
215  required uint64 available = 2 [(dccl.field) = {
216  units { prefix: "kilo" unit: "information::byte" }
217  }];
218  required float use_percent = 3;
219  }
220 
221  message Memory
222  {
223  // from sysinfo
224  required Information ram = 1;
225  required Information swap = 2;
226  }
227 
228  message Disk
229  {
230  // from boost filesystem
231  optional Information rootfs = 1;
232  optional Information data = 2;
233  }
234 
235  message WiFi
236  {
237  required bool is_connected = 1;
238  optional uint32 link_quality = 2;
239  optional uint32 link_quality_percentage = 3;
240  optional int32 signal_level = 4;
241  optional int32 noise_level = 5;
242  }
243 
244  optional int32 uptime = 10
245  [(dccl.field) = { units { base_dimensions: "T" } }];
246  optional Processor processor = 20;
247  optional Memory memory = 30;
248  optional Disk disk = 40;
249  optional WiFi wifi = 50;
250 }
251 
252 message NTPStatus
253 {
254  option (dccl.msg) = {
255  unit_system: "si"
256  };
257  // from ntpq -c rv 0
258  enum SyncSource
259  {
260  SYNC_UNKNOWN = -1;
261  SYNC_UNSPECIFIED = 0;
262  SYNC_PPS = 1;
263  SYNC_LF_RADIO = 2;
264  SYNC_HF_RADIO = 3;
265  SYNC_UHF_RADIO = 4;
266  SYNC_LOCAL = 5;
267  SYNC_NTP = 6;
268  SYNC_OTHER = 7;
269  SYNC_WRISTWATCH = 8;
270  SYNC_TELEPHONE = 9;
271  }
272 
273  optional SyncSource sync_source = 10 [default = SYNC_UNKNOWN];
274 
275  enum LeapIndicator
276  {
277  LEAP_UNKNOWN = -1;
278  LEAP_NONE = 0x00;
279  LEAP_LAST_MINUTE_HAS_61_SECONDS = 0x01;
280  LEAP_LAST_MINUTE_HAS_59_SECONDS = 0x02;
281  LEAP_CLOCK_NOT_SYNCHRONIZED = 0x03;
282  }
283  optional LeapIndicator leap_indicator = 11 [default = LEAP_UNKNOWN];
284  optional int32 system_event_counter = 12 [default = 0];
285  enum NTPSystemEvent
286  {
287  NTP_SYSTEM_EVENT_UNKNOWN = -1;
288  NTP_SYSTEM_EVENT_UNSPECIFIED = 0x0;
289  NTP_SYSTEM_FREQ_NOT_SET = 0x1;
290  NTP_SYSTEM_FREQ_SET = 0x2;
291  NTP_SYSTEM_SPIKE_DETECT = 0x3;
292  NTP_SYSTEM_FREQ_MODE = 0x4;
293  NTP_SYSTEM_CLOCK_SYNC = 0x5;
294  NTP_SYSTEM_RESTART = 0x6;
295  NTP_SYSTEM_PANIC_STOP = 0x7;
296  NTP_SYSTEM_NO_SYSTEM_PEER = 0x8;
297  NTP_SYSTEM_LEAP_ARMED = 0x9;
298  NTP_SYSTEM_LEAP_DISARMED = 0xa;
299  NTP_SYSTEM_LEAP_EVENT = 0xb;
300  NTP_SYSTEM_CLOCK_STEP = 0xc;
301  NTP_SYSTEM_KERNEL_INFO = 0xd;
302  NTP_SYSTEM_LEAPSECOND_VALUES_UPDATE_FROM_FILE = 0xe;
303  NTP_SYSTEM_STALE_LEAPSECOND_VALUES = 0xf;
304  }
305  optional NTPSystemEvent last_system_event = 13
306  [default = NTP_SYSTEM_EVENT_UNKNOWN];
307 
308  // from ntpq -p
309  message NTPPeer
310  {
311  enum TallyCode
312  {
313  PEER_CODE_UNKNOWN = -1;
314  PEER_NOT_VALID = 0x20; // ' '
315  PEER_DISCARDED_BY_INTERSECTION = 0x78; // 'x'
316  PEER_DISCARDED_BY_TABLE_OVERFLOW = 0x2E; // '.'
317  PEER_DISCARDED_BY_CLUSTER_ALGORITHM = 0x2D; // '-'
318  PEER_INCLUDED_IN_COMBINE = 0x2B; // '+'
319  PEER_ALTERNATIVE_BACKUP = 0x23; // '#'
320  PEER_SYSTEM_SYNC_SOURCE = 0x2A; // '*'
321  PEER_PPS_SYNC = 0x6F; // 'o'
322  }
323 
324  required TallyCode tally_code = 1 [default = PEER_CODE_UNKNOWN];
325  required string remote = 2;
326  required string refid = 3;
327  optional int32 stratum = 4 [default = 16];
328  optional int32 when = 5
329  [default = -1, (dccl.field) = { units { base_dimensions: "T" } }];
330  optional int32 poll = 6
331  [default = -1, (dccl.field) = { units { base_dimensions: "T" } }];
332  // bitmask
333  optional int32 reach = 7 [default = 0];
334  optional float delay = 8 [
335  default = nan,
336  (dccl.field) = { units { prefix: "milli" base_dimensions: "T" } }
337  ];
338  optional float offset = 9 [
339  default = nan,
340  (dccl.field) = { units { prefix: "milli" base_dimensions: "T" } }
341  ];
342  optional float jitter = 10 [
343  default = nan,
344  (dccl.field) = { units { prefix: "milli" base_dimensions: "T" } }
345  ];
346  }
347  optional NTPPeer system_sync_peer = 20;
348  repeated NTPPeer peer = 21;
349 }
350 
351 message HelmIVPStatus
352 {
353  option (dccl.msg) = {
354  unit_system: "si"
355  };
356  optional string helm_ivp_state = 1 [default = "PARK"];
357  optional bool helm_ivp_desired_speed = 2 [default = false];
358  optional bool helm_ivp_desired_heading = 3 [default = false];
359  optional bool helm_ivp_desired_depth = 4 [default = false];
360  optional bool helm_ivp_data = 5 [default = false];
361 }
362 
363 message ThreadHealth
364 {
365  repeated Error error = 1;
366  repeated Warning warning = 2;
367 }
368 
369 extend goby.middleware.protobuf.ThreadHealth
370 {
371  optional ThreadHealth jaiabot_thread = 1000;
372 }
373 
374 message VehicleHealth {}
375 
376 extend goby.middleware.protobuf.VehicleHealth
377 {
378  optional VehicleHealth jaiabot_vehicle = 1000;
379 }
380 
381 message SystemdStartReport
382 {
383  required Error clear_error =
384  1; // the corresponding ERROR__FAILED__* to clear (if exists)
385 }
386 
387 message SystemdStopReport
388 {
389  enum ServiceResult
390  {
391  SERVICE_RESULT_UNKNOWN = 0;
392  SERVICE_RESULT_SUCCESS = 1;
393  SERVICE_RESULT_PROTOCOL = 2;
394  SERVICE_RESULT_TIMEOUT = 3;
395  SERVICE_RESULT_EXIT_CODE = 4;
396  SERVICE_RESULT_SIGNAL = 5;
397  SERVICE_RESULT_CORE_DUMP = 6;
398  SERVICE_RESULT_WATCHDOG = 7;
399  SERVICE_RESULT_START_LIMIT_HIT = 8;
400  SERVICE_RESULT_RESOURCES = 9;
401  }
402  required ServiceResult result = 1;
403  required Error error = 2; // the corresponding ERROR__FAILED__*
404  optional string journal_dump_file =
405  3; // if failed, the journal snippet from last boot was written here
406 }
407 
408 message SystemdReportAck
409 {
410  required Error error_ack =
411  1; // which app this relates to, by its corresponding error value
412 }