Goby3 3.7.0
2026.11.12
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/zenoh/protobuf/interprocess_config.proto";
5
6package goby.zenoh.protobuf;
7
8message ZenohToolConfig
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 zenoh help [action]\"\n"
25 }];
26 publish = 1 [(goby.ev).cfg = {
27 short_help_msg: "Publish a message (on interprocess)",
28 }];
29 subscribe = 2 [(goby.ev).cfg = {
30 short_help_msg: "Subscribe to messages (on interprocess)",
31 }];
32 }
33 optional Action action = 2 [
34 default = help,
35 (goby.field) = {
36 description: "The action this tool should take [can omit --action if 1st parameter]",
37 cfg { position: { enable: true }, cli_short: "A", action: HIDDEN }
38 }
39 ];
40}
41
42message PublishToolConfig
43{
44 option (goby.msg).cfg.tool = {
45 is_tool: true
46 has_subtools: false
47 has_help_action: false
48 };
49
50 optional goby.middleware.protobuf.AppConfig app = 1
51 [(goby.field) = { cfg { action: DEVELOPER } }];
52 optional InterProcessPortalConfig interprocess = 2
53 [(goby.field) = { cfg { env: "GOBY_INTERPROCESS" } }];
54
55 required string group = 10 [(goby.field) = {
56 description: "Group as string",
57 cfg { position: { enable: true }, cli_short: "g" }
58 }];
59
60 required string type = 11 [(goby.field) = {
61 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'",
62 cfg { position: { enable: true }, cli_short: "t" }
63 }];
64
65 required string value = 12 [(goby.field) = {
66 description: "Value as string",
67 cfg { position: { enable: true } }
68 }];
69
70 repeated string load_shared_library = 20 [(goby.field) = {
71 description: "Load this shared library containing compiled Protobuf/DCCL messages.",
72 cfg { cli_short: "l" env: "GOBY_TOOL_LOAD_SHARED_LIBRARY" }
73 }];
74
75 optional double settle_seconds = 30 [
76 default = 1,
77 (goby.field) = {
78 description: "Seconds to wait before publishing, so that the subscribers discovered meanwhile receive the message: Zenoh routes a publication only to the subscribers its session already knows of"
79 }
80 ];
81}
82
83message SubscribeToolConfig
84{
85 option (goby.msg).cfg.tool = {
86 is_tool: true
87 has_subtools: false
88 has_help_action: false
89 };
90
91 optional goby.middleware.protobuf.AppConfig app = 1
92 [(goby.field) = { cfg { action: DEVELOPER } }];
93 optional InterProcessPortalConfig interprocess = 2
94 [(goby.field) = { cfg { env: "GOBY_INTERPROCESS" } }];
95
96 optional string group_regex = 10 [
97 default = ".*",
98 (goby.field) = {
99 description: "Group as string or regex",
100 cfg { position: { enable: true }, cli_short: "g" }
101 }
102 ];
103
104 optional string type_regex = 11 [
105 default = ".*",
106 (goby.field) = {
107 description: "Type as string or regex",
108 cfg { position: { enable: true }, cli_short: "t" }
109 }
110 ];
111
112 optional string scheme = 12 [(goby.field) = {
113 description: "Only subscribe to this marshalling scheme as string or integer [PROTOBUF|1, DCCL|2, JSON|7]. If omitted, all supported schemes are used.",
114 cfg { position: { enable: true }, cli_short: "s" }
115 }];
116
117 repeated string load_shared_library = 20 [(goby.field) = {
118 description: "Load this shared library containing compiled Protobuf/DCCL messages.",
119 cfg { cli_short: "l" env: "GOBY_TOOL_LOAD_SHARED_LIBRARY" }
120 }];
121
122 optional bool include_internal_groups = 30 [default = false];
123}