2 import "goby/middleware/protobuf/app_config.proto";
3 import "goby/protobuf/option_extensions.proto";
4 import "goby/zeromq/protobuf/interprocess_config.proto";
6 package goby.apps.zeromq.protobuf;
8 message ZeroMQToolConfig
10 option (goby.msg).cfg.tool = {
16 optional goby.middleware.protobuf.AppConfig app = 1
17 [(goby.field) = { cfg { action: DEVELOPER } }];
22 help = 0 [(goby.ev).cfg = {
23 short_help_msg: "Print usage information",
24 full_help_msg: "Usage: \"goby zmq help [action]\"\n"
26 terminate = 2 [(goby.ev).cfg = {
27 short_help_msg: "Terminate Goby applications",
28 external_command: "goby_terminate"
30 publish = 3 [(goby.ev).cfg = {
31 short_help_msg: "Publish a message (on interprocess)",
33 subscribe = 4 [(goby.ev).cfg = {
34 short_help_msg: "Subscribe to messages (on interprocess)",
36 playback = 5 [(goby.ev).cfg = {
37 short_help_msg: "Playback .goby log files",
38 external_command: "goby_playback"
42 daemon = 10 [(goby.ev).cfg = {
43 short_help_msg: "Publish/subscribe broker for interprocess and, optionally, intervehicle portal",
44 external_command: "gobyd"
46 logger = 11 [(goby.ev).cfg = {
47 short_help_msg: "Binary logger of interprocess messages",
48 external_command: "goby_logger"
50 coroner = 12 [(goby.ev).cfg = {
51 short_help_msg: "Monitoring of process health",
52 external_command: "goby_coroner"
54 intervehicle_portal = 13 [(goby.ev).cfg = {
55 short_help_msg: "Standalone intervehicle portal",
56 external_command: "goby_intervehicle_portal"
60 gps = 20 [(goby.ev).cfg = {
61 short_help_msg: "GPSD client that publishes data into Goby pub/sub",
62 external_command: "goby_gps"
64 frontseat_interface = 21 [(goby.ev).cfg = {
65 short_help_msg: "Interface to vehicle Frontseat system (control system)",
66 external_command: "goby_frontseat_interface"
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"
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"
78 opencpn = 32 [(goby.ev).cfg = {
79 short_help_msg: "Interface to the OpenCPN GUI",
80 external_command: "goby_opencpn_interface"
84 moos_gateway = 40 [(goby.ev).cfg = {
85 short_help_msg: "Gateway to the MOOS middleware",
86 external_command: "goby_moos_gateway"
89 optional Action action = 2 [
92 description: "The action this tool should take [can omit --action if 1st parameter]",
93 cfg { position: { enable: true }, cli_short: "A", action: HIDDEN }
98 message PublishToolConfig
100 option (goby.msg).cfg.tool = {
103 has_help_action: false
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" } }];
112 required string group = 10 [(goby.field) = {
113 description: "Group as string",
114 cfg { position: { enable: true }, cli_short: "g" }
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" }
122 required string value = 12 [(goby.field) = {
123 description: "Value as string",
124 cfg { position: { enable: true } }
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" }
133 message SubscribeToolConfig
135 option (goby.msg).cfg.tool = {
138 has_help_action: false
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" } }];
147 optional string group_regex = 10 [
150 description: "Group as string or regex",
151 cfg { position: { enable: true }, cli_short: "g" }
155 optional string type_regex = 11 [
158 description: "Type as string or regex",
159 cfg { position: { enable: true }, cli_short: "t" }
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" }
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" }
173 optional bool include_internal_groups = 30 [default = false];