2// GobySoft, LLC (2013-)
3// Community contributors (see AUTHORS file)
5// Toby Schneider <toby@gobysoft.org>
8// This file is part of the Goby Underwater Autonomy Project Libraries
9// ("The Goby Libraries").
11// The Goby Libraries are free software: you can redistribute them and/or modify
12// them under the terms of the GNU Lesser General Public License as published by
13// the Free Software Foundation, either version 2.1 of the License, or
14// (at your option) any later version.
16// The Goby Libraries are distributed in the hope that they will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Lesser General Public License for more details.
21// You should have received a copy of the GNU Lesser General Public License
22// along with Goby. If not, see <http://www.gnu.org/licenses/>.
25import "goby/middleware/protobuf/app_config.proto";
26import "goby/protobuf/option_extensions.proto";
27import "goby/udpm/protobuf/interprocess_config.proto";
29package goby.middleware.protobuf;
31message PublishToolConfig
33 option (goby.msg).cfg.tool = {
36 has_help_action: false
39 optional goby.middleware.protobuf.AppConfig app = 1
40 [(goby.field) = { cfg { action: DEVELOPER } }];
41 optional goby.udpm.protobuf.InterProcessPortalConfig interprocess = 2
42 [(goby.field) = { cfg { env: "GOBY_INTERPROCESS" } }];
44 required string group = 10 [(goby.field) = {
45 description: "Group as string",
46 cfg { position: { enable: true }, cli_short: "g" }
49 required string type = 11 [(goby.field) = {
50 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'",
51 cfg { position: { enable: true }, cli_short: "t" }
54 required string value = 12 [(goby.field) = {
55 description: "Value as string",
56 cfg { position: { enable: true } }
59 repeated string load_shared_library = 20 [(goby.field) = {
60 description: "Load this shared library containing compiled Protobuf/DCCL messages.",
61 cfg { cli_short: "l" env: "GOBY_TOOL_LOAD_SHARED_LIBRARY" }
65message SubscribeToolConfig
67 option (goby.msg).cfg.tool = {
70 has_help_action: false
73 optional goby.middleware.protobuf.AppConfig app = 1
74 [(goby.field) = { cfg { action: DEVELOPER } }];
75 optional goby.udpm.protobuf.InterProcessPortalConfig interprocess = 2
76 [(goby.field) = { cfg { env: "GOBY_INTERPROCESS" } }];
78 optional string group_regex = 10 [
81 description: "Group as string or regex",
82 cfg { position: { enable: true }, cli_short: "g" }
86 optional string type_regex = 11 [
89 description: "Type as string or regex",
90 cfg { position: { enable: true }, cli_short: "t" }
94 optional string scheme = 12 [(goby.field) = {
95 description: "Only subscribe to this marshalling scheme as string or integer [PROTOBUF|1, DCCL|2, JSON|7]. If omitted, all supported schemes are used.",
96 cfg { position: { enable: true }, cli_short: "s" }
99 repeated string load_shared_library = 20 [(goby.field) = {
100 description: "Load this shared library containing compiled Protobuf/DCCL messages.",
101 cfg { cli_short: "l" env: "GOBY_TOOL_LOAD_SHARED_LIBRARY" }
104 optional bool include_internal_groups = 30 [default = false];