1 // Copyright 2019-2022:
2 // GobySoft, LLC (2013-)
3 // Community contributors (see AUTHORS file)
5 // Toby Schneider <toby@gobysoft.org>
6 // Davide Fenucci <davfen@noc.ac.uk>
9 // This file is part of the Dynamic Compact Control Language Library
12 // DCCL is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU Lesser General Public License as published by
14 // the Free Software Foundation, either version 2.1 of the License, or
15 // (at your option) any later version.
17 // DCCL is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU Lesser General Public License for more details.
22 // You should have received a copy of the GNU Lesser General Public License
23 // along with DCCL. If not, see <http://www.gnu.org/licenses/>.
26 import "dccl/option_extensions.proto";
32 optional double val = 1 [
34 (dccl.field).max = 126,
35 (dccl.field).precision = 3
41 option (dccl.msg).id = 2;
42 option (dccl.msg).max_bytes = 32;
43 option (dccl.msg).codec_version = 4;
53 [default = 1.5, (dccl.field) = { min: 0, max: 10, precision: 1 }];
57 double double_oneof1 = 118 [
58 (dccl.field).min = -100,
59 (dccl.field).max = 126,
60 (dccl.field).precision = 2
63 EmbeddedMsg1 msg_oneof1 = 119;
68 int32 int32_oneof2 = 120
69 [(dccl.field).min = -20, (dccl.field).max = 3000];
70 EmbeddedMsg1 msg_oneof2 = 121;
73 optional uint32 hash_opt = 200 [
74 (dccl.field).codec = "dccl.hash",
75 (dccl.field).max = 0xFFFF // 16 bits
77 required uint32 hash_req = 201 [
78 (dccl.field).codec = "dccl.hash",
79 (dccl.field).max = 0xFFFFFFFF // 32 bits
83 message TestMsgNoHashableChanges
85 option (dccl.msg).id = 2;
86 option (dccl.msg).max_bytes = 64;
87 option (dccl.msg).codec_version = 4;
97 [default = 2.5, (dccl.field) = { min: 0, max: 10, precision: 1 }];
101 double double_oneof1 = 118 [
102 (dccl.field).min = -100,
103 (dccl.field).max = 126,
104 (dccl.field).precision = 2
107 EmbeddedMsg1 msg_oneof1 = 119;
112 int32 int32_oneof2 = 120
113 [(dccl.field).min = -20, (dccl.field).max = 3000];
114 EmbeddedMsg1 msg_oneof2 = 121;
116 optional uint32 hash_opt = 200 [
117 (dccl.field).codec = "dccl.hash",
118 (dccl.field).max = 0xFFFF // 16 bits
120 required uint32 hash_req = 201 [
121 (dccl.field).codec = "dccl.hash",
122 (dccl.field).max = 0xFFFFFFFF // 32 bits
128 option (dccl.msg).id = 3;
129 option (dccl.msg).max_bytes = 32;
130 option (dccl.msg).codec_version = 4;
139 optional double d = 6
140 [default = 1.5, (dccl.field) = { min: 0, max: 10, precision: 1 }];
144 double double_oneof1 = 118 [
145 (dccl.field).min = -100,
146 (dccl.field).max = 126,
147 (dccl.field).precision = 2
150 EmbeddedMsg1 msg_oneof1 = 119;
155 int32 int32_oneof2 = 120
156 [(dccl.field).min = -20, (dccl.field).max = 3000];
157 EmbeddedMsg1 msg_oneof2 = 121;
159 optional uint32 hash_opt = 200 [
160 (dccl.field).codec = "dccl.hash",
161 (dccl.field).max = 0xFFFF // 16 bits
163 required uint32 hash_req = 201 [
164 (dccl.field).codec = "dccl.hash",
165 (dccl.field).max = 0xFFFFFFFF // 32 bits
169 message TestMsgNewEnum
171 option (dccl.msg).id = 2;
172 option (dccl.msg).max_bytes = 32;
173 option (dccl.msg).codec_version = 4;
183 optional double d = 6
184 [default = 1.5, (dccl.field) = { min: 0, max: 10, precision: 1 }];
188 double double_oneof1 = 118 [
189 (dccl.field).min = -100,
190 (dccl.field).max = 126,
191 (dccl.field).precision = 2
194 EmbeddedMsg1 msg_oneof1 = 119;
199 int32 int32_oneof2 = 120
200 [(dccl.field).min = -20, (dccl.field).max = 3000];
201 EmbeddedMsg1 msg_oneof2 = 121;
203 optional uint32 hash_opt = 200 [
204 (dccl.field).codec = "dccl.hash",
205 (dccl.field).max = 0xFFFF // 16 bits
207 required uint32 hash_req = 201 [
208 (dccl.field).codec = "dccl.hash",
209 (dccl.field).max = 0xFFFFFFFF // 32 bits
213 message TestMsgNewBounds
215 option (dccl.msg).id = 2;
216 option (dccl.msg).max_bytes = 32;
217 option (dccl.msg).codec_version = 4;
226 optional double d = 6
227 [default = 1.5, (dccl.field) = { min: -1, max: 10, precision: 1 }];
231 double double_oneof1 = 118 [
232 (dccl.field).min = -100,
233 (dccl.field).max = 126,
234 (dccl.field).precision = 2
237 EmbeddedMsg1 msg_oneof1 = 119;
242 int32 int32_oneof2 = 120
243 [(dccl.field).min = -20, (dccl.field).max = 3000];
244 EmbeddedMsg1 msg_oneof2 = 121;
247 optional uint32 hash_opt = 200 [
248 (dccl.field).codec = "dccl.hash",
249 (dccl.field).max = 0xFFFF // 16 bits
251 required uint32 hash_req = 201 [
252 (dccl.field).codec = "dccl.hash",
253 (dccl.field).max = 0xFFFFFFFF // 32 bits
259 option (dccl.msg).id = 2;
260 option (dccl.msg).max_bytes = 32;
261 option (dccl.msg).codec_version = 2;
270 optional double d = 6
271 [default = 1.5, (dccl.field) = { min: 0, max: 10, precision: 1 }];
276 option (dccl.msg).id = 2;
277 option (dccl.msg).max_bytes = 32;
278 option (dccl.msg).codec_version = 3;
287 optional double d = 6
288 [default = 1.5, (dccl.field) = { min: 0, max: 10, precision: 1 }];
293 option (dccl.msg).id = 2;
294 option (dccl.msg).max_bytes = 32;
295 option (dccl.msg).codec_version = 4;
304 optional double d = 6
305 [default = 1.5, (dccl.field) = { min: 0, max: 10, precision: 1 }];
308 message TestMsgMultiHash
310 option (dccl.msg).id = 3;
311 option (dccl.msg).max_bytes = 32;
312 option (dccl.msg).codec_version = 4;
314 // selection of odd sized hashes
316 optional uint32 hash4 = 1
317 [(dccl.field).codec = "dccl.hash", (dccl.field).max = 0xF];
319 optional uint32 hash6 = 2
320 [(dccl.field).codec = "dccl.hash", (dccl.field).max = 0x3F];
322 optional uint32 hash8 = 3
323 [(dccl.field).codec = "dccl.hash", (dccl.field).max = 0xFF];
325 optional uint32 hash13 = 4
326 [(dccl.field).codec = "dccl.hash", (dccl.field).max = 0x1FFF];
328 optional uint32 hash26 = 5
329 [(dccl.field).codec = "dccl.hash", (dccl.field).max = 0X3ffffff];
332 message TestMsgHashMaxTooLarge
334 option (dccl.msg).id = 3;
335 option (dccl.msg).max_bytes = 32;
336 option (dccl.msg).codec_version = 4;
339 optional uint32 hash34 = 1
340 [(dccl.field).codec = "dccl.hash", (dccl.field).max = 17179869183];