Goby3 3.2.3
2025.05.13
Loading...
Searching...
No Matches
tool_config.proto
Go to the documentation of this file.
1syntax = "proto2";
2import "goby/middleware/protobuf/app_config.proto";
3import "goby/protobuf/option_extensions.proto";
4import "goby/zeromq/protobuf/interprocess_config.proto";
5
6package goby.apps.zeromq.protobuf;
7
8message 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
98message 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
133message 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}