Goby3  3.1.5a
2024.05.23
tool_config.proto
Go to the documentation of this file.
1 syntax = "proto2";
2 import "goby/middleware/protobuf/app_config.proto";
3 import "goby/protobuf/option_extensions.proto";
4 import "goby/zeromq/protobuf/interprocess_config.proto";
5 
6 package goby.apps.zeromq.protobuf;
7 
8 message ZeroMQToolConfig
9 {
10  option (goby.msg).cfg.tool = {
11  is_tool: true
12  has_subtools: true
13  has_help_action: true
14  };
15 
16  optional goby.middleware.protobuf.AppConfig app = 1
17  [(goby.field) = { cfg { action: DEVELOPER } }];
18 
19  enum Action
20  {
21  // tools
22  help = 0 [(goby.ev).cfg = {
23  short_help_msg: "Print usage information",
24  full_help_msg: "Usage: \"goby zmq help [action]\"\n"
25  }];
26  terminate = 2 [(goby.ev).cfg = {
27  short_help_msg: "Terminate Goby applications",
28  external_command: "goby_terminate"
29  }];
30  publish = 3 [(goby.ev).cfg = {
31  short_help_msg: "Publish a message (on interprocess)",
32  }];
33  subscribe = 4 [(goby.ev).cfg = {
34  short_help_msg: "Subscribe to messages (on interprocess)",
35  }];
36  playback = 5 [(goby.ev).cfg = {
37  short_help_msg: "Playback .goby log files",
38  external_command: "goby_playback"
39  }];
40 
41  // core apps pub/sub
42  daemon = 10 [(goby.ev).cfg = {
43  short_help_msg: "Publish/subscribe broker for interprocess and, optionally, intervehicle portal",
44  external_command: "gobyd"
45  }];
46  logger = 11 [(goby.ev).cfg = {
47  short_help_msg: "Binary logger of interprocess messages",
48  external_command: "goby_logger"
49  }];
50  coroner = 12 [(goby.ev).cfg = {
51  short_help_msg: "Monitoring of process health",
52  external_command: "goby_coroner"
53  }];
54  intervehicle_portal = 13 [(goby.ev).cfg = {
55  short_help_msg: "Standalone intervehicle portal",
56  external_command: "goby_intervehicle_portal"
57  }];
58 
59  // sensors
60  gps = 20 [(goby.ev).cfg = {
61  short_help_msg: "GPSD client that publishes data into Goby pub/sub",
62  external_command: "goby_gps"
63  }];
64  frontseat_interface = 21 [(goby.ev).cfg = {
65  short_help_msg: "Interface to vehicle Frontseat system (control system)",
66  external_command: "goby_frontseat_interface"
67  }];
68 
69  // ui
70  geov = 30 [(goby.ev).cfg = {
71  short_help_msg: "Interface to Google Earth via GEOV (https://gobysoft.org/geov/)",
72  external_command: "goby_geov_interface"
73  }];
74  liaison = 31 [(goby.ev).cfg = {
75  short_help_msg: "Web-based UI for control/monitoring of Goby pub/sub",
76  external_command: "goby_liaison"
77  }];
78  opencpn = 32 [(goby.ev).cfg = {
79  short_help_msg: "Interface to the OpenCPN GUI",
80  external_command: "goby_opencpn_interface"
81  }];
82 
83  // external
84  moos_gateway = 40 [(goby.ev).cfg = {
85  short_help_msg: "Gateway to the MOOS middleware",
86  external_command: "goby_moos_gateway"
87  }];
88  }
89  optional Action action = 2 [
90  default = help,
91  (goby.field) = {
92  description: "The action this tool should take [can omit --action if 1st parameter]",
93  cfg { position: { enable: true }, cli_short: "A", action: HIDDEN }
94  }
95  ];
96 }
97 
98 message PublishToolConfig
99 {
100  option (goby.msg).cfg.tool = {
101  is_tool: true
102  has_subtools: false
103  has_help_action: false
104  };
105 
106  optional goby.middleware.protobuf.AppConfig app = 1
107  [(goby.field) = { cfg { action: DEVELOPER } }];
108  optional goby.zeromq.protobuf.InterProcessPortalConfig interprocess = 2
109  [(goby.field) = { cfg { env: "GOBY_INTERPROCESS" } }];
110 
111 
112  required string group = 10 [(goby.field) = {
113  description: "Group as string",
114  cfg { position: { enable: true }, cli_short: "g" }
115  }];
116 
117  required string type = 11 [(goby.field) = {
118  description: "Scheme (as name: PROTOBUF, DCCL, JSON) followed by '/' and type name, if required. For example, 'PROTOBUF/NavigationReport', 'DCCL/NavigationReport', 'JSON/NavigationReport'. For JSON, you can omit '/<typename>' to publish as generic nlohmann::json. If string contains 'protobuf.', you can omit PROTOBUF/; e.g., 'goby.middleware.protobuf.IOData'",
119  cfg { position: { enable: true }, cli_short: "t" }
120  }];
121 
122  required string value = 12 [(goby.field) = {
123  description: "Value as string",
124  cfg { position: { enable: true } }
125  }];
126 
127  repeated string load_shared_library = 20 [(goby.field) = {
128  description: "Load this shared library containing compiled Protobuf/DCCL messages.",
129  cfg { cli_short: "l" env: "GOBY_TOOL_LOAD_SHARED_LIBRARY" }
130  }];
131 }
132 
133 message SubscribeToolConfig
134 {
135  option (goby.msg).cfg.tool = {
136  is_tool: true
137  has_subtools: false
138  has_help_action: false
139  };
140 
141  optional goby.middleware.protobuf.AppConfig app = 1
142  [(goby.field) = { cfg { action: DEVELOPER } }];
143  optional goby.zeromq.protobuf.InterProcessPortalConfig interprocess = 2
144  [(goby.field) = { cfg { env: "GOBY_INTERPROCESS" } }];
145 
146 
147  optional string group_regex = 10 [
148  default = ".*",
149  (goby.field) = {
150  description: "Group as string or regex",
151  cfg { position: { enable: true }, cli_short: "g" }
152  }
153  ];
154 
155  optional string type_regex = 11 [
156  default = ".*",
157  (goby.field) = {
158  description: "Type as string or regex",
159  cfg { position: { enable: true }, cli_short: "t" }
160  }
161  ];
162 
163  optional string scheme = 12 [(goby.field) = {
164  description: "Only subscribe to this marshalling scheme as string or integer [PROTOBUF|1, DCCL|2, JSON|7]. If omitted, all supported schemes are used.",
165  cfg { position: { enable: true }, cli_short: "s" }
166  }];
167 
168  repeated string load_shared_library = 20 [(goby.field) = {
169  description: "Load this shared library containing compiled Protobuf/DCCL messages.",
170  cfg { cli_short: "l" env: "GOBY_TOOL_LOAD_SHARED_LIBRARY" }
171  }];
172 
173  optional bool include_internal_groups = 30 [default = false];
174 }