mirror of
https://github.com/meshtastic/protobufs.git
synced 2026-04-20 22:13:55 +00:00
Compare commits
717 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d5b500df5 | ||
|
|
793e274f59 | ||
|
|
e5b07ae0b0 | ||
|
|
3a398acbff | ||
|
|
3ce7c51068 | ||
|
|
da33d0ea72 | ||
|
|
052a9fa4bf | ||
|
|
c9067dae4a | ||
|
|
7900e5d2dd | ||
|
|
940ac382a7 | ||
|
|
a045501ea8 | ||
|
|
98e95eeaa2 | ||
|
|
0e5eab17af | ||
|
|
a4c649bd3e | ||
|
|
e30092e616 | ||
|
|
60842c1728 | ||
|
|
1e932be09b | ||
|
|
dd951d7796 | ||
|
|
349c1d5c1e | ||
|
|
1cd2e56ca2 | ||
|
|
cb1f89372a | ||
|
|
ee7df89f3e | ||
|
|
4c3fe0cf08 | ||
|
|
45a2d2dc8b | ||
|
|
8436e98fcf | ||
|
|
eba2d94c8d | ||
|
|
bc8e63833a | ||
|
|
313b9ee168 | ||
|
|
29a82c7b63 | ||
|
|
a4234ead1d | ||
|
|
cdde2876be | ||
|
|
bfbd52b9fc | ||
|
|
0cc9cb224e | ||
|
|
109ea16d17 | ||
|
|
c45c4eb0cb | ||
|
|
2edc5ab7b1 | ||
|
|
dee56bac97 | ||
|
|
a229208f29 | ||
|
|
f7f7c8d2e4 | ||
|
|
03b5089b40 | ||
|
|
589c1cce89 | ||
|
|
93bee530c3 | ||
|
|
cb07ce2b30 | ||
|
|
fe66d9f525 | ||
|
|
44298d374f | ||
|
|
e1a6b3a868 | ||
|
|
4eca1c78a8 | ||
|
|
27591d98c4 | ||
|
|
53d91d47ef | ||
|
|
4256cdf4c9 | ||
|
|
c4f21810b1 | ||
|
|
1551b2e6e7 | ||
|
|
5dd27945d2 | ||
|
|
e2d1873a6f | ||
|
|
2062d43158 | ||
|
|
e80cb2e410 | ||
|
|
cba89ee2e9 | ||
|
|
8316651be1 | ||
|
|
9f6cf6dcc1 | ||
|
|
862f87835e | ||
|
|
cd38d477ab | ||
|
|
d8a9f035e5 | ||
|
|
491783b164 | ||
|
|
518f8e6fb3 | ||
|
|
2fe13dbe06 | ||
|
|
55a3604fac | ||
|
|
780863b1ed | ||
|
|
8b0cdd20f3 | ||
|
|
7a1b5b683d | ||
|
|
693aaa395b | ||
|
|
84a2603037 | ||
|
|
542285b5d0 | ||
|
|
4fbac7db2b | ||
|
|
e2daf8d914 | ||
|
|
9f65fd00e7 | ||
|
|
c84d2440ff | ||
|
|
bc63a57f9e | ||
|
|
5fced3fa92 | ||
|
|
cfa561adae | ||
|
|
41b270cff0 | ||
|
|
649568805f | ||
|
|
84f8569c9e | ||
|
|
441e4b4852 | ||
|
|
77c8329a59 | ||
|
|
32906d5cdd | ||
|
|
d9003b2b6c | ||
|
|
3193bab2c9 | ||
|
|
bbde30a0b9 | ||
|
|
152bab3589 | ||
|
|
19c4833930 | ||
|
|
1b1dc090ef | ||
|
|
af5d147428 | ||
|
|
c42f97a381 | ||
|
|
e29cc1c7af | ||
|
|
c8d5047b63 | ||
|
|
6c79c8be71 | ||
|
|
547a7d8033 | ||
|
|
e3d3abccc3 | ||
|
|
61219de748 | ||
|
|
786f3bbf98 | ||
|
|
4c82a2f39d | ||
|
|
aa48faf5b5 | ||
|
|
76cca14026 | ||
|
|
8816b4715d | ||
|
|
1a63a3d0d2 | ||
|
|
53911db9a0 | ||
|
|
a7bbad173d | ||
|
|
9cb373751b | ||
|
|
266bc5ab05 | ||
|
|
4ed2d1a35e | ||
|
|
c4eab768ad | ||
|
|
8f95d7f451 | ||
|
|
c2e45a3fc9 | ||
|
|
8a11244539 | ||
|
|
62626b7cc5 | ||
|
|
ef35af8af7 | ||
|
|
96d30609db | ||
|
|
64ccad6007 | ||
|
|
f78b3f0dcc | ||
|
|
4b9f104a18 | ||
|
|
c39b564ca6 | ||
|
|
c474fd3f49 | ||
|
|
f28d17eba1 | ||
|
|
0ef2bdf6a3 | ||
|
|
48ad883120 | ||
|
|
8078b27a19 | ||
|
|
f6b116ef65 | ||
|
|
62ef17b3d1 | ||
|
|
fba255d1b2 | ||
|
|
9beb80f1d3 | ||
|
|
aeee7f08e6 | ||
|
|
1cf2783bdb | ||
|
|
2567b7aa4e | ||
|
|
0921984572 | ||
|
|
6f437dd699 | ||
|
|
4095e59890 | ||
|
|
45f9a558b1 | ||
|
|
52fa252f1e | ||
|
|
7eb3258fa0 | ||
|
|
a34428168d | ||
|
|
e1b5aaedff | ||
|
|
29c5f6efdc | ||
|
|
7654db2e2d | ||
|
|
fbe1538c21 | ||
|
|
404532984c | ||
|
|
83ddaf8b24 | ||
|
|
bf149bbdcc | ||
|
|
29242517f3 | ||
|
|
4a618380a0 | ||
|
|
1f616fff30 | ||
|
|
a916c49299 | ||
|
|
68dee221b2 | ||
|
|
38d0665011 | ||
|
|
38638f19f8 | ||
|
|
de145b5211 | ||
|
|
9adb17d940 | ||
|
|
cd5c83a728 | ||
|
|
caecabe257 | ||
|
|
ef173e3214 | ||
|
|
1db971af72 | ||
|
|
e925e2b201 | ||
|
|
fecb769415 | ||
|
|
dbbd7f6b04 | ||
|
|
a1b8c3d171 | ||
|
|
7f1110dd77 | ||
|
|
c1e31a9655 | ||
|
|
8885b0d9f2 | ||
|
|
60c3e6600a | ||
|
|
394268b02e | ||
|
|
cea982891f | ||
|
|
5fa4c44d91 | ||
|
|
082bb7cfeb | ||
|
|
805e5e7c00 | ||
|
|
1a3364a8a0 | ||
|
|
91909ce946 | ||
|
|
c6a06d51ec | ||
|
|
08bd3380e7 | ||
|
|
38f77b20f8 | ||
|
|
5157e3702a | ||
|
|
9b3643e4aa | ||
|
|
cf496532b8 | ||
|
|
46b81e822a | ||
|
|
6a8b80a108 | ||
|
|
0a0c0ab361 | ||
|
|
27d9a99bd0 | ||
|
|
34d31aeea5 | ||
|
|
d965965c33 | ||
|
|
1d9082b277 | ||
|
|
58e974544d | ||
|
|
74b16a5bd3 | ||
|
|
375fab79d4 | ||
|
|
99bdcfdbfe | ||
|
|
804a06ae4e | ||
|
|
dae16e8b42 | ||
|
|
d4d1508708 | ||
|
|
945b796a98 | ||
|
|
28f01f2c3c | ||
|
|
314f80bc6f | ||
|
|
2fb76bc70b | ||
|
|
c5af2d77d8 | ||
|
|
b90ea12cc8 | ||
|
|
e8d10fe478 | ||
|
|
080fd3b0d1 | ||
|
|
e5abb26b83 | ||
|
|
a8f3ee5b01 | ||
|
|
6fa4def971 | ||
|
|
b7e0ef2ec7 | ||
|
|
638917dea8 | ||
|
|
550702a695 | ||
|
|
bb1a5d09bc | ||
|
|
8caf423964 | ||
|
|
96ef7eef7a | ||
|
|
a84657c220 | ||
|
|
5c3d52663e | ||
|
|
74f7041b1c | ||
|
|
3347d98f04 | ||
|
|
07d6573e10 | ||
|
|
e0b97d6996 | ||
|
|
34f0c8115d | ||
|
|
6e0e795a83 | ||
|
|
4c4427c4a7 | ||
|
|
77b00ce690 | ||
|
|
51b444ec10 | ||
|
|
c5aeb193ca | ||
|
|
8985852d75 | ||
|
|
be51376980 | ||
|
|
aa86e284a3 | ||
|
|
5dd723fe6f | ||
|
|
87ba3f8704 | ||
|
|
e2c0831aa3 | ||
|
|
13d8946c6d | ||
|
|
f5f209d998 | ||
|
|
06a69c09db | ||
|
|
e44958478b | ||
|
|
784fd5d733 | ||
|
|
70950c6aa8 | ||
|
|
d5b96c77e1 | ||
|
|
e8544c529f | ||
|
|
05eee86c47 | ||
|
|
6a26b23faf | ||
|
|
1ecf94da98 | ||
|
|
057ac675bb | ||
|
|
27d40f03d2 | ||
|
|
e690615951 | ||
|
|
ee114d4e89 | ||
|
|
d47de28428 | ||
|
|
9bac2886f9 | ||
|
|
5ac10c0746 | ||
|
|
1c28229e85 | ||
|
|
d31cd890d5 | ||
|
|
d868b86e75 | ||
|
|
898f06796b | ||
|
|
9cc803de0e | ||
|
|
b35702d8ae | ||
|
|
08fbd7b987 | ||
|
|
0234126e86 | ||
|
|
fa02e14d8d | ||
|
|
ee4d961776 | ||
|
|
5f5828a6ed | ||
|
|
8b09ca9643 | ||
|
|
15c1fbde88 | ||
|
|
c916da9060 | ||
|
|
c36e296488 | ||
|
|
b2baa3da8a | ||
|
|
330a6a1a94 | ||
|
|
d238157644 | ||
|
|
1a6df9abfe | ||
|
|
bbad395d57 | ||
|
|
4b1ca40f5e | ||
|
|
f6448be777 | ||
|
|
27537101a4 | ||
|
|
362c590bc3 | ||
|
|
e253751637 | ||
|
|
fd19e4caaf | ||
|
|
233961d5fb | ||
|
|
0302caa2bc | ||
|
|
584f0a3a35 | ||
|
|
6c76e4ab61 | ||
|
|
854bb24833 | ||
|
|
95a1ea9230 | ||
|
|
5ef7aec959 | ||
|
|
7069b8570d | ||
|
|
86c738e806 | ||
|
|
32e442a688 | ||
|
|
2097da996c | ||
|
|
1d05974fe4 | ||
|
|
0ca1555b68 | ||
|
|
efd4d5c553 | ||
|
|
386fa53c15 | ||
|
|
6791138f0b | ||
|
|
b818a000ef | ||
|
|
8d3870241b | ||
|
|
c758376d04 | ||
|
|
a1cc3e697d | ||
|
|
9ccc49deaf | ||
|
|
0c112881df | ||
|
|
f45a09fa15 | ||
|
|
579578394c | ||
|
|
07eb2a85ab | ||
|
|
3d34533935 | ||
|
|
20510c79b4 | ||
|
|
f7824eb09d | ||
|
|
53380fce88 | ||
|
|
9468fa3980 | ||
|
|
b448d4a94f | ||
|
|
7c7621a39b | ||
|
|
db60f07ac2 | ||
|
|
abd60b70f0 | ||
|
|
758115714f | ||
|
|
cec9223ae1 | ||
|
|
ebaf8cfede | ||
|
|
81c4d48643 | ||
|
|
f9927457f6 | ||
|
|
24c7a3d287 | ||
|
|
022ea79bad | ||
|
|
0268354426 | ||
|
|
4a108827a9 | ||
|
|
fa4d98594c | ||
|
|
7a256cad53 | ||
|
|
deff1ca54e | ||
|
|
0b815a6f93 | ||
|
|
91484534a5 | ||
|
|
657651891a | ||
|
|
0b32ce24f0 | ||
|
|
117ea15f6f | ||
|
|
08d7a07a4a | ||
|
|
2b59c7f519 | ||
|
|
d8b709aa5d | ||
|
|
475694e62b | ||
|
|
490d0123b5 | ||
|
|
4eb0aebaef | ||
|
|
47ec99aa4c | ||
|
|
f76d353f38 | ||
|
|
3a35144931 | ||
|
|
a8da85a73f | ||
|
|
1e507865aa | ||
|
|
bd3e8b2fc8 | ||
|
|
8cb3e62a0d | ||
|
|
62f86771ef | ||
|
|
af475e6472 | ||
|
|
ca6ea45b52 | ||
|
|
4239bfc2f8 | ||
|
|
3b57a9ca8b | ||
|
|
816595c8bb | ||
|
|
d266887bb2 | ||
|
|
ecdc0a5392 | ||
|
|
078ac8dfbe | ||
|
|
5b3bbb8f6a | ||
|
|
280f9d1bf8 | ||
|
|
81c3153396 | ||
|
|
27fac39141 | ||
|
|
b982b36dfa | ||
|
|
f9aa5cfd08 | ||
|
|
5a5ab103d2 | ||
|
|
5add3bae21 | ||
|
|
13a3e5dcee | ||
|
|
b772c71394 | ||
|
|
484d002a52 | ||
|
|
5e032099be | ||
|
|
2d2ebcd170 | ||
|
|
6da320326b | ||
|
|
f00e96f12d | ||
|
|
6d7c9e6180 | ||
|
|
b4044f8f9f | ||
|
|
306cdbf472 | ||
|
|
b4e24c3a86 | ||
|
|
fbc8234432 | ||
|
|
14ec205865 | ||
|
|
474a5286c9 | ||
|
|
72a2685709 | ||
|
|
dab3668717 | ||
|
|
228276744b | ||
|
|
36dff55e14 | ||
|
|
eedeeecd4a | ||
|
|
327ddc8261 | ||
|
|
3d11dc97ad | ||
|
|
524e78869b | ||
|
|
db4578960e | ||
|
|
035a8017b8 | ||
|
|
2df4770995 | ||
|
|
06572741de | ||
|
|
d9061086e3 | ||
|
|
0c818c0ae8 | ||
|
|
c261bd71aa | ||
|
|
245daac0b2 | ||
|
|
1cddedce83 | ||
|
|
abf3fec604 | ||
|
|
eb42f6d262 | ||
|
|
2a3a67f043 | ||
|
|
79298fcdf0 | ||
|
|
47ff85bb9c | ||
|
|
2f6a133037 | ||
|
|
f3a57add1a | ||
|
|
2a1386b151 | ||
|
|
dee784ab1c | ||
|
|
37cc28889c | ||
|
|
8b87eac4db | ||
|
|
91f73d0326 | ||
|
|
e2790151f0 | ||
|
|
ff6fce923a | ||
|
|
39e0d00d54 | ||
|
|
7f45a7e8d9 | ||
|
|
068646653e | ||
|
|
1095754e1f | ||
|
|
b80785b16b | ||
|
|
edc3a7bab5 | ||
|
|
7f13df0e5f | ||
|
|
fde27e4ef0 | ||
|
|
9c1bf5b384 | ||
|
|
76f806e1bb | ||
|
|
b77d1a3bb7 | ||
|
|
b1ebb963cb | ||
|
|
fe59011ba5 | ||
|
|
c55f120a9c | ||
|
|
2cffaf53e3 | ||
|
|
0f7e562569 | ||
|
|
4a4e81951d | ||
|
|
2b017ba707 | ||
|
|
0c8cdc0efa | ||
|
|
611e399492 | ||
|
|
ae68438473 | ||
|
|
59c4596f33 | ||
|
|
d2cedee0a0 | ||
|
|
55a5c9c139 | ||
|
|
00c9c9932e | ||
|
|
66e7582f85 | ||
|
|
02e6576efa | ||
|
|
5ea20fc1f7 | ||
|
|
c952f8a4c1 | ||
|
|
af7521c3a7 | ||
|
|
c38692bd11 | ||
|
|
4e4b133a4a | ||
|
|
40497bf8d4 | ||
|
|
739a6d4af0 | ||
|
|
52688fdccb | ||
|
|
6de64e1198 | ||
|
|
af2fea10fe | ||
|
|
04ea4b5b15 | ||
|
|
04f21f5c72 | ||
|
|
834915aa04 | ||
|
|
2978b62587 | ||
|
|
c2a3834e24 | ||
|
|
034a181436 | ||
|
|
06cf134e2b | ||
|
|
b399bf0f6a | ||
|
|
0c903c0864 | ||
|
|
e505f6051e | ||
|
|
254fbdac6a | ||
|
|
e8dbfb9660 | ||
|
|
b227a1ca72 | ||
|
|
9f45c61bb7 | ||
|
|
8a38aa93cb | ||
|
|
015202aead | ||
|
|
807236815d | ||
|
|
545ba74f71 | ||
|
|
f0df8545ad | ||
|
|
7dc7a6d219 | ||
|
|
619bd44654 | ||
|
|
7960241ccd | ||
|
|
d91f614dc4 | ||
|
|
2f400a078e | ||
|
|
8686d049c2 | ||
|
|
ea6eb85d6e | ||
|
|
14b2a62879 | ||
|
|
e09bd361a4 | ||
|
|
0fed5c7709 | ||
|
|
1ab8611a31 | ||
|
|
e22381a3c6 | ||
|
|
7e6177dcd6 | ||
|
|
30ba090346 | ||
|
|
f5d95f385b | ||
|
|
1842d2203b | ||
|
|
49ebc47832 | ||
|
|
3990520748 | ||
|
|
fd5760108a | ||
|
|
99280a1a1e | ||
|
|
647081c7fa | ||
|
|
70a52e77d3 | ||
|
|
387d0beea4 | ||
|
|
cb37f8ce61 | ||
|
|
50a87ef3aa | ||
|
|
19993f75ce | ||
|
|
901ce4c1c4 | ||
|
|
c28a677d7d | ||
|
|
27072c0838 | ||
|
|
a4274bcc0b | ||
|
|
c9ae7fd478 | ||
|
|
5df44cf804 | ||
|
|
29b19dfd79 | ||
|
|
d983fef9e4 | ||
|
|
b419706693 | ||
|
|
dd8619f786 | ||
|
|
08876d1c25 | ||
|
|
cd279d19a0 | ||
|
|
b52e08eb97 | ||
|
|
62c4b0081c | ||
|
|
c0708735f5 | ||
|
|
94ef58cbf2 | ||
|
|
61d7ca6565 | ||
|
|
83c78e26e3 | ||
|
|
f6c9aeb4f1 | ||
|
|
6ac91926c2 | ||
|
|
eb915e71fc | ||
|
|
dfccd4fba4 | ||
|
|
b1cad2323e | ||
|
|
fb9a48dae7 | ||
|
|
7ef4ee191a | ||
|
|
206e046e34 | ||
|
|
3be0da8370 | ||
|
|
9651aa59ea | ||
|
|
67f9d80eb2 | ||
|
|
c12bb5beea | ||
|
|
9b84907847 | ||
|
|
9dbb2ae4ef | ||
|
|
db2748c0cb | ||
|
|
a711a17d47 | ||
|
|
3ff3dab75d | ||
|
|
c4636e0232 | ||
|
|
5709c0a05e | ||
|
|
164e598734 | ||
|
|
cc2f12bc7a | ||
|
|
1e212f1135 | ||
|
|
c5108cfd6b | ||
|
|
e8eff71bb0 | ||
|
|
a5cf8b5ac3 | ||
|
|
292538b8fb | ||
|
|
0347af720c | ||
|
|
0c0d061ec5 | ||
|
|
84a60f4e62 | ||
|
|
a883cfe739 | ||
|
|
0acaec6eff | ||
|
|
96b10c0364 | ||
|
|
fce5ab584f | ||
|
|
30eb05a8a9 | ||
|
|
583784692c | ||
|
|
5f7c91adb9 | ||
|
|
90f73ed100 | ||
|
|
28492e88e5 | ||
|
|
77fc95a9ab | ||
|
|
ad62b651f9 | ||
|
|
8c01df356a | ||
|
|
2d5ffbb61f | ||
|
|
7444b00e05 | ||
|
|
b575b137e2 | ||
|
|
431291e673 | ||
|
|
17043d6f3a | ||
|
|
52cfa2c1c2 | ||
|
|
cbd790fed1 | ||
|
|
b15c081cb3 | ||
|
|
183ba970a7 | ||
|
|
56a4355070 | ||
|
|
68b946291e | ||
|
|
e6561cc17c | ||
|
|
b623762940 | ||
|
|
7171332c99 | ||
|
|
fe4496484a | ||
|
|
59d035a37d | ||
|
|
dfce61390d | ||
|
|
8ac99eefe8 | ||
|
|
6a53f766bc | ||
|
|
8da680b690 | ||
|
|
b023abd772 | ||
|
|
4eb4f42517 | ||
|
|
d2a88c9ddc | ||
|
|
ceb1170e2c | ||
|
|
06d7ca5821 | ||
|
|
2d7f6d12d9 | ||
|
|
97cd687e82 | ||
|
|
8b5b2faf66 | ||
|
|
97fa34517f | ||
|
|
f007d1d719 | ||
|
|
f03121f440 | ||
|
|
1ff2e736ca | ||
|
|
000e9dcd38 | ||
|
|
66a6d11f7f | ||
|
|
d7ce4f30fa | ||
|
|
c979c1ac8f | ||
|
|
04a3b65a94 | ||
|
|
684d1faf8e | ||
|
|
6cde2e2672 | ||
|
|
ecc4d42053 | ||
|
|
adb2ff256b | ||
|
|
bc465e6522 | ||
|
|
e9b83744e2 | ||
|
|
a3242bd0b4 | ||
|
|
eed2033cc3 | ||
|
|
666b481ae0 | ||
|
|
5b7a39da33 | ||
|
|
deb05e9514 | ||
|
|
c9ca0dbe9c | ||
|
|
26c144b2ba | ||
|
|
071fd931ec | ||
|
|
a0c758d04b | ||
|
|
d867039e46 | ||
|
|
2fa7d6a4b7 | ||
|
|
d0fe91ab99 | ||
|
|
77ed84c7af | ||
|
|
25df63b0a0 | ||
|
|
4d3efb56d8 | ||
|
|
976748839f | ||
|
|
c4110a4422 | ||
|
|
abd5eaa875 | ||
|
|
9902e65bf2 | ||
|
|
b1a79d5db0 | ||
|
|
ff1aa723d1 | ||
|
|
7f90178f18 | ||
|
|
38a3a4a8bf | ||
|
|
10494bf328 | ||
|
|
7370460a59 | ||
|
|
29f8011bce | ||
|
|
d191975ebc | ||
|
|
b2dd7a5562 | ||
|
|
0fd5023a0a | ||
|
|
940395c81e | ||
|
|
1198b7dbab | ||
|
|
0891eeb9e1 | ||
|
|
e3557e4bcb | ||
|
|
e7327e76bd | ||
|
|
ad8c833bef | ||
|
|
827ed60577 | ||
|
|
57ddb288e8 | ||
|
|
fcf0fddab8 | ||
|
|
17a9637530 | ||
|
|
06ceb3e21d | ||
|
|
9d747b6cf0 | ||
|
|
c25e0c4e0b | ||
|
|
a3030d5ff1 | ||
|
|
bcdef8996c | ||
|
|
4da558d0f7 | ||
|
|
a82df2239a | ||
|
|
97138a78dc | ||
|
|
1c3029f286 | ||
|
|
005d7231e5 | ||
|
|
ad08d08124 | ||
|
|
22c137c269 | ||
|
|
0c90a6814f | ||
|
|
09f453ed87 | ||
|
|
dc066c89f7 | ||
|
|
f168b0a95a | ||
|
|
ab576a4a12 | ||
|
|
c18265dfbf | ||
|
|
260d24318d | ||
|
|
95e94d5af0 | ||
|
|
8f4faf76e5 | ||
|
|
aa08ca2bdc | ||
|
|
8c8048798c | ||
|
|
a641c5ce4f | ||
|
|
e322b716df | ||
|
|
492753200d | ||
|
|
574aeb5b49 | ||
|
|
5d0a75e6ec | ||
|
|
bfbf4a65e2 | ||
|
|
5f879edb72 | ||
|
|
1e8fa54a05 | ||
|
|
a45a6154d0 | ||
|
|
ad3cc2d295 | ||
|
|
9e61b82331 | ||
|
|
7fbaa3c74c | ||
|
|
4ef9dd4000 | ||
|
|
5f78a06c0f | ||
|
|
3cb2b01cf7 | ||
|
|
5e32bcec2c | ||
|
|
bacd654744 | ||
|
|
b5dc871a1b | ||
|
|
7c533e810b | ||
|
|
5cfadd1489 | ||
|
|
1b0b61a76e | ||
|
|
bee9ddc716 | ||
|
|
0a84f48e84 | ||
|
|
ef700a5e2f | ||
|
|
71f3d68db5 | ||
|
|
5f6dc3a1a8 | ||
|
|
1bfe0354d1 | ||
|
|
edbf510ef7 | ||
|
|
24776635ee | ||
|
|
7eab464879 | ||
|
|
df36597cbf | ||
|
|
dd7d64cc03 | ||
|
|
12fd8c7e3f | ||
|
|
e21899aa6b | ||
|
|
112f1fdcd0 | ||
|
|
86640f20db | ||
|
|
ef2502fb3a | ||
|
|
eade2c6bef | ||
|
|
aa0413204f | ||
|
|
6e30bbb482 | ||
|
|
bb07ddba10 | ||
|
|
ea127fcbd8 | ||
|
|
6a8677c293 | ||
|
|
f4be94a7fc | ||
|
|
bd70a9a96e | ||
|
|
0d08acd9c5 | ||
|
|
ecf105f66d | ||
|
|
a650d05aab | ||
|
|
f92900c5f8 | ||
|
|
4051bdbee0 | ||
|
|
22cbd0d4cf | ||
|
|
61de46ab06 | ||
|
|
68720ed8db | ||
|
|
4a77f8bc08 | ||
|
|
6a4da15a16 | ||
|
|
6ae27a2fbf | ||
|
|
6157a57237 | ||
|
|
e5590e7875 | ||
|
|
552e636462 | ||
|
|
9edbb188ed | ||
|
|
42da320406 | ||
|
|
e6b4c590e7 | ||
|
|
2982d3017b | ||
|
|
dea3a82ef2 | ||
|
|
53e1c4f6bd | ||
|
|
ce908d8a45 | ||
|
|
633ac9de71 | ||
|
|
95b0aa07b2 | ||
|
|
539b53dadb | ||
|
|
cd9dddb199 | ||
|
|
c183973317 |
60 changed files with 6489 additions and 818 deletions
18
.github/pull_request_template.md
vendored
18
.github/pull_request_template.md
vendored
|
|
@ -10,3 +10,21 @@
|
||||||
|
|
||||||
- [ ] All top level messages commented
|
- [ ] All top level messages commented
|
||||||
- [ ] All enum members have unique descriptions
|
- [ ] All enum members have unique descriptions
|
||||||
|
|
||||||
|
|
||||||
|
### New Hardware Model Acceptance Policy
|
||||||
|
|
||||||
|
Due to limited availability and ongoing support, new Hardware Models will only be accepted from [Meshtastic Backers and Partners](https://meshtastic.com/). The Meshtastic team reserves the right to make exceptions to this policy.
|
||||||
|
|
||||||
|
#### Alternative for Community Contributors
|
||||||
|
|
||||||
|
You are welcome to use one of the existing DIY hardware models in your PlatformIO environment and create a pull request in the firmware project. Please note the following conditions:
|
||||||
|
|
||||||
|
- The device will **not** be officially supported by the core Meshtastic team.
|
||||||
|
- The device will **not** appear in the [Web Flasher](https://flasher.meshtastic.org/) or Github release assets.
|
||||||
|
- You will be responsible for ongoing maintenance and support.
|
||||||
|
- Community-contributed / DIY hardware models are considered experimental and will likely have limited or no testing.
|
||||||
|
|
||||||
|
#### Getting Official Support
|
||||||
|
|
||||||
|
To have your hardware model officially supported and included in the Meshtastic ecosystem, consider becoming a Meshtastic Backer or Partner. Visit [meshtastic.com](https://meshtastic.com/) for more information about partnership opportunities.
|
||||||
|
|
|
||||||
12
.github/workflows/create_tag.yml
vendored
12
.github/workflows/create_tag.yml
vendored
|
|
@ -50,7 +50,7 @@ jobs:
|
||||||
echo "NEW_VERSION=v$MAJOR.$MINOR.$PATCH" >> $GITHUB_OUTPUT
|
echo "NEW_VERSION=v$MAJOR.$MINOR.$PATCH" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
uses: ncipollo/release-action@v1.13.0
|
uses: ncipollo/release-action@v1
|
||||||
with:
|
with:
|
||||||
name: Meshtastic Protobufs ${{ steps.version.outputs.NEW_VERSION }}
|
name: Meshtastic Protobufs ${{ steps.version.outputs.NEW_VERSION }}
|
||||||
tag: ${{ steps.version.outputs.NEW_VERSION }}
|
tag: ${{ steps.version.outputs.NEW_VERSION }}
|
||||||
|
|
@ -58,14 +58,14 @@ jobs:
|
||||||
token: ${{ github.token }}
|
token: ${{ github.token }}
|
||||||
|
|
||||||
- name: Setup Buf
|
- name: Setup Buf
|
||||||
uses: bufbuild/buf-setup-action@v1.26.1
|
uses: bufbuild/buf-action@v1.2.0
|
||||||
with:
|
with:
|
||||||
github_token: ${{ github.token }}
|
github_token: ${{ github.token }}
|
||||||
|
token: ${{ secrets.BUF_TOKEN }}
|
||||||
|
setup_only: true
|
||||||
|
|
||||||
- name: Push to schema registry
|
- name: Push to schema registry
|
||||||
# uses: bufbuild/buf-push-action@v1
|
env:
|
||||||
# with:
|
BUF_TOKEN: ${{ secrets.BUF_TOKEN }}
|
||||||
# buf_token: ${{ secrets.BUF_TOKEN }}
|
|
||||||
run: |
|
run: |
|
||||||
export BUF_TOKEN=${{ secrets.BUF_TOKEN }}
|
|
||||||
buf push --tag ${{ steps.version.outputs.NEW_VERSION }}
|
buf push --tag ${{ steps.version.outputs.NEW_VERSION }}
|
||||||
|
|
|
||||||
261
.github/workflows/publish.yml
vendored
261
.github/workflows/publish.yml
vendored
|
|
@ -1,30 +1,263 @@
|
||||||
name: Push new version to schema registry
|
name: Publish to JSR & NPM
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- "**"
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "Version to publish (e.g. v1.2.3). Used when manually dispatching."
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
dry_run:
|
||||||
|
description: "Dry run mode - generate artifacts without publishing"
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
push_to_registry:
|
codegen:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
|
outputs:
|
||||||
|
version: ${{ steps.version.outputs.VERSION }}
|
||||||
|
tag: ${{ steps.version.outputs.TAG }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Determine version
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
if [ "${{ github.ref_type }}" = "tag" ]; then
|
||||||
|
TAG="${{ github.ref_name }}"
|
||||||
|
elif [ -n "${{ inputs.version || '' }}" ]; then
|
||||||
|
TAG="${{ inputs.version }}"
|
||||||
|
else
|
||||||
|
echo "No tag ref and no 'version' input. Provide a tag (push a tag) or pass inputs.version." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
VERSION="${TAG#v}"
|
||||||
|
echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "TAG=$TAG" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "Resolved VERSION=$VERSION, TAG=$TAG"
|
||||||
|
|
||||||
|
- name: Setup Buf
|
||||||
|
uses: bufbuild/buf-setup-action@main
|
||||||
|
with:
|
||||||
|
github_token: ${{ github.token }}
|
||||||
|
|
||||||
|
- name: Generate protobuf code
|
||||||
|
run: buf generate
|
||||||
|
|
||||||
|
- name: Move generated files to lib root
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
src_dir="packages/ts/lib/meshtastic"
|
||||||
|
dest_dir="packages/ts/lib"
|
||||||
|
|
||||||
|
if [ ! -d "$src_dir" ]; then
|
||||||
|
echo "Expected source directory '$src_dir' does not exist. 'buf generate' may have failed or changed its output paths." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! compgen -G "$src_dir"/*_pb.ts > /dev/null; then
|
||||||
|
echo "No '*_pb.ts' files found in '$src_dir'. 'buf generate' may have produced no TypeScript files or changed their naming." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "$src_dir"/*_pb.ts "$dest_dir"/
|
||||||
|
- name: Show generated files
|
||||||
|
run: |
|
||||||
|
echo "=== packages/ts contents ==="
|
||||||
|
ls -la packages/ts/
|
||||||
|
echo "=== packages/ts/lib contents ==="
|
||||||
|
ls -la packages/ts/lib/ || echo "lib folder not found"
|
||||||
|
|
||||||
|
- name: Set package versions
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
VERSION="${{ steps.version.outputs.VERSION }}"
|
||||||
|
for f in packages/ts/deno.json packages/ts/package.json; do
|
||||||
|
test -f "$f" || { echo "Missing $f" >&2; exit 1; }
|
||||||
|
sed -i "s/__PACKAGE_VERSION__/${VERSION}/g" "$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Copy license & README
|
||||||
|
run: cp LICENSE README.md packages/ts/
|
||||||
|
|
||||||
|
- name: Upload TypeScript code
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ts_code
|
||||||
|
path: packages/ts
|
||||||
|
|
||||||
|
build-typescript:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
needs: codegen
|
||||||
|
steps:
|
||||||
|
- name: Download TypeScript code
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ts_code
|
||||||
|
|
||||||
|
- name: Show downloaded files
|
||||||
|
run: |
|
||||||
|
echo "=== Working directory ==="
|
||||||
|
pwd
|
||||||
|
echo "=== Contents ==="
|
||||||
|
ls -la
|
||||||
|
echo "=== lib/ contents ==="
|
||||||
|
ls -la lib/ || echo "lib folder not found"
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "22"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Build with tsdown
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Show build output
|
||||||
|
run: |
|
||||||
|
echo "=== Build output ==="
|
||||||
|
ls -la
|
||||||
|
ls -la dist/
|
||||||
|
|
||||||
|
- name: Upload built NPM package
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: npm_package
|
||||||
|
path: |
|
||||||
|
dist/
|
||||||
|
package.json
|
||||||
|
LICENSE
|
||||||
|
README.md
|
||||||
|
|
||||||
|
- name: Upload JSR package
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: jsr_package
|
||||||
|
path: |
|
||||||
|
lib/
|
||||||
|
mod.ts
|
||||||
|
deno.json
|
||||||
|
LICENSE
|
||||||
|
README.md
|
||||||
|
|
||||||
|
create-release-zips:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
needs: [codegen, build-typescript]
|
||||||
|
steps:
|
||||||
|
- name: Download NPM package
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: npm_package
|
||||||
|
path: npm_package
|
||||||
|
|
||||||
|
- name: Download JSR package
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: jsr_package
|
||||||
|
path: jsr_package
|
||||||
|
|
||||||
|
- name: Create zip archives
|
||||||
|
run: |
|
||||||
|
cd npm_package && zip -r ../meshtastic-protobufs-npm.zip . && cd ..
|
||||||
|
cd jsr_package && zip -r ../meshtastic-protobufs-jsr.zip . && cd ..
|
||||||
|
|
||||||
|
- name: Upload release zips
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: release_zips
|
||||||
|
path: |
|
||||||
|
meshtastic-protobufs-npm.zip
|
||||||
|
meshtastic-protobufs-jsr.zip
|
||||||
|
|
||||||
|
upload-release-assets:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
needs: [codegen, create-release-zips]
|
||||||
|
if: ${{ !inputs.dry_run }}
|
||||||
|
steps:
|
||||||
|
- name: Download release zips
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: release_zips
|
||||||
|
|
||||||
|
- name: Upload assets to GitHub release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
tag_name: ${{ needs.codegen.outputs.tag }}
|
||||||
|
files: |
|
||||||
|
meshtastic-protobufs-npm.zip
|
||||||
|
meshtastic-protobufs-jsr.zip
|
||||||
|
|
||||||
|
push-buf-registry:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
needs: codegen
|
||||||
|
if: ${{ !inputs.dry_run }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Buf
|
- name: Setup Buf
|
||||||
uses: bufbuild/buf-setup-action@v1.26.1
|
uses: bufbuild/buf-setup-action@main
|
||||||
with:
|
with:
|
||||||
github_token: ${{ github.token }}
|
github_token: ${{ github.token }}
|
||||||
|
|
||||||
- name: Push to schema registry
|
- name: Push to schema registry
|
||||||
# uses: bufbuild/buf-push-action@v1
|
env:
|
||||||
# with:
|
BUF_TOKEN: ${{ secrets.BUF_TOKEN }}
|
||||||
# buf_token: ${{ secrets.BUF_TOKEN }}
|
run: buf push --tag ${{ needs.codegen.outputs.tag }}
|
||||||
run: |
|
|
||||||
export BUF_TOKEN=${{ secrets.BUF_TOKEN }}
|
publish-npm:
|
||||||
buf push --tag ${{ github.ref_name }}
|
runs-on: ubuntu-24.04
|
||||||
|
needs: [codegen, build-typescript]
|
||||||
|
if: ${{ !inputs.dry_run }}
|
||||||
|
steps:
|
||||||
|
- name: Download NPM package
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: npm_package
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "22"
|
||||||
|
registry-url: "https://registry.npmjs.org"
|
||||||
|
|
||||||
|
- name: Publish to NPM
|
||||||
|
run: npm publish --access public
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
|
||||||
|
publish-jsr:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
needs: [codegen, build-typescript]
|
||||||
|
if: ${{ !inputs.dry_run }}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- name: Download JSR package
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: jsr_package
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "22"
|
||||||
|
|
||||||
|
- name: Publish to JSR
|
||||||
|
run: npx jsr publish
|
||||||
|
|
|
||||||
18
.github/workflows/pull_request.yml
vendored
18
.github/workflows/pull_request.yml
vendored
|
|
@ -2,6 +2,7 @@ name: pull-request
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
on: pull_request
|
on: pull_request
|
||||||
jobs:
|
jobs:
|
||||||
|
|
@ -12,16 +13,11 @@ jobs:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Buf
|
- name: Buf PR Checks
|
||||||
uses: bufbuild/buf-setup-action@v1.26.1
|
uses: bufbuild/buf-action@v1.2.0
|
||||||
with:
|
with:
|
||||||
github_token: ${{ github.token }}
|
github_token: ${{ github.token }}
|
||||||
|
token: ${{ secrets.BUF_TOKEN }}
|
||||||
- name: Lint
|
format: true
|
||||||
uses: bufbuild/buf-lint-action@v1.0.3
|
lint: true
|
||||||
|
breaking: true
|
||||||
- name: Push to schema registry
|
|
||||||
uses: bufbuild/buf-push-action@v1.1.1
|
|
||||||
with:
|
|
||||||
buf_token: ${{ secrets.BUF_TOKEN }}
|
|
||||||
draft: ${{ github.ref_name != 'master'}}
|
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,9 @@ jobs:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Buf
|
- name: Push to schema registry
|
||||||
uses: bufbuild/buf-setup-action@v1.26.1
|
uses: bufbuild/buf-action@v1.2.0
|
||||||
with:
|
with:
|
||||||
github_token: ${{ github.token }}
|
github_token: ${{ github.token }}
|
||||||
|
token: ${{ secrets.BUF_TOKEN }}
|
||||||
- name: Push to schema registry
|
push: true
|
||||||
uses: bufbuild/buf-push-action@v1.1.1
|
|
||||||
with:
|
|
||||||
buf_token: ${{ secrets.BUF_TOKEN }}
|
|
||||||
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Generated protobuf files
|
||||||
|
packages/ts/lib/
|
||||||
|
.bin/
|
||||||
8
.trunk/.gitignore
vendored
8
.trunk/.gitignore
vendored
|
|
@ -1,8 +0,0 @@
|
||||||
*out
|
|
||||||
*logs
|
|
||||||
*actions
|
|
||||||
*notifications
|
|
||||||
*tools
|
|
||||||
plugins
|
|
||||||
user_trunk.yaml
|
|
||||||
user.yaml
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
# Autoformatter friendly markdownlint config (all formatting rules disabled)
|
|
||||||
default: true
|
|
||||||
blank_lines: false
|
|
||||||
bullet: false
|
|
||||||
html: false
|
|
||||||
indentation: false
|
|
||||||
line_length: false
|
|
||||||
spaces: false
|
|
||||||
url: false
|
|
||||||
whitespace: false
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
rules:
|
|
||||||
quoted-strings:
|
|
||||||
required: only-when-needed
|
|
||||||
extra-allowed: ["{|}"]
|
|
||||||
empty-values:
|
|
||||||
forbid-in-block-mappings: true
|
|
||||||
forbid-in-flow-mappings: true
|
|
||||||
key-duplicates: {}
|
|
||||||
octal-values:
|
|
||||||
forbid-implicit-octal: true
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
version: 0.1
|
|
||||||
cli:
|
|
||||||
version: 1.16.2
|
|
||||||
plugins:
|
|
||||||
sources:
|
|
||||||
- id: trunk
|
|
||||||
ref: v1.2.5
|
|
||||||
uri: https://github.com/trunk-io/plugins
|
|
||||||
lint:
|
|
||||||
enabled:
|
|
||||||
- checkov@2.4.9
|
|
||||||
- trivy@0.45.1
|
|
||||||
- trufflehog@3.57.0
|
|
||||||
- yamllint@1.32.0
|
|
||||||
- buf-lint@1.26.1
|
|
||||||
- buf-breaking@1.26.1
|
|
||||||
- actionlint@1.6.26
|
|
||||||
- markdownlint@0.37.0
|
|
||||||
- prettier@3.0.3
|
|
||||||
- gitleaks@8.18.0
|
|
||||||
- git-diff-check
|
|
||||||
runtimes:
|
|
||||||
enabled:
|
|
||||||
- python@3.10.8
|
|
||||||
- go@1.21.0
|
|
||||||
- node@18.12.1
|
|
||||||
actions:
|
|
||||||
disabled:
|
|
||||||
- trunk-announce
|
|
||||||
- trunk-check-pre-push
|
|
||||||
- trunk-fmt-pre-commit
|
|
||||||
enabled:
|
|
||||||
- trunk-upgrade-available
|
|
||||||
2
.vscode/extensions.json
vendored
2
.vscode/extensions.json
vendored
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
"recommendations": ["trunk.io", "pbkit.vscode-pbkit", "bufbuild.vscode-buf"]
|
"recommendations": ["pbkit.vscode-pbkit", "bufbuild.vscode-buf"]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
{
|
{
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"editor.defaultFormatter": "trunk.io"
|
"editor.defaultFormatter": "pbkit.vscode-pbkit"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
buf.gen.yaml
Normal file
5
buf.gen.yaml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
version: v2
|
||||||
|
plugins:
|
||||||
|
- remote: buf.build/bufbuild/es:v2.1.0
|
||||||
|
out: packages/ts/lib
|
||||||
|
opt: target=ts,import_extension=.ts
|
||||||
25
buf.yaml
25
buf.yaml
|
|
@ -1,14 +1,23 @@
|
||||||
version: v1
|
version: v2
|
||||||
|
modules:
|
||||||
|
- path: .
|
||||||
name: buf.build/meshtastic/protobufs
|
name: buf.build/meshtastic/protobufs
|
||||||
deps: []
|
excludes:
|
||||||
build:
|
- .trunk/
|
||||||
excludes: []
|
- meshtastic/device_only/
|
||||||
breaking:
|
|
||||||
use:
|
|
||||||
- FILE
|
|
||||||
lint:
|
lint:
|
||||||
|
use:
|
||||||
|
- MINIMAL
|
||||||
|
except:
|
||||||
|
- PACKAGE_NO_IMPORT_CYCLE
|
||||||
ignore_only:
|
ignore_only:
|
||||||
PACKAGE_DEFINED:
|
PACKAGE_DEFINED:
|
||||||
- nanopb.proto
|
- nanopb.proto
|
||||||
|
disallow_comment_ignores: true
|
||||||
|
breaking:
|
||||||
use:
|
use:
|
||||||
- MINIMAL
|
- FILE
|
||||||
|
except:
|
||||||
|
- EXTENSION_NO_DELETE
|
||||||
|
- FIELD_SAME_DEFAULT
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,14 @@
|
||||||
*AdminMessage.payload_variant anonymous_oneof:true
|
*AdminMessage.payload_variant anonymous_oneof:true
|
||||||
|
|
||||||
|
*AdminMessage.session_passkey max_size:8
|
||||||
|
|
||||||
|
*AdminMessage.OTAEvent.ota_hash max_size:32
|
||||||
|
|
||||||
|
*AdminMessage.InputEvent.event_code int_size:8
|
||||||
|
*AdminMessage.InputEvent.kb_char int_size:8
|
||||||
|
*AdminMessage.InputEvent.touch_x int_size:16
|
||||||
|
*AdminMessage.InputEvent.touch_y int_size:16
|
||||||
|
|
||||||
*AdminMessage.set_canned_message_module_messages max_size:201
|
*AdminMessage.set_canned_message_module_messages max_size:201
|
||||||
*AdminMessage.get_canned_message_module_messages_response max_size:201
|
*AdminMessage.get_canned_message_module_messages_response max_size:201
|
||||||
*AdminMessage.delete_file_request max_size:201
|
*AdminMessage.delete_file_request max_size:201
|
||||||
|
|
@ -8,5 +17,5 @@
|
||||||
*AdminMessage.get_ringtone_response max_size:231
|
*AdminMessage.get_ringtone_response max_size:231
|
||||||
|
|
||||||
*HamParameters.call_sign max_size:8
|
*HamParameters.call_sign max_size:8
|
||||||
*HamParameters.short_name max_size:6
|
*HamParameters.short_name max_size:5
|
||||||
*NodeRemoteHardwarePinsResponse.node_remote_hardware_pins max_count:16
|
*NodeRemoteHardwarePinsResponse.node_remote_hardware_pins max_count:16
|
||||||
|
|
@ -2,17 +2,18 @@ syntax = "proto3";
|
||||||
|
|
||||||
package meshtastic;
|
package meshtastic;
|
||||||
|
|
||||||
|
/* trunk-ignore(buf-lint/COMPILE) */
|
||||||
import "meshtastic/channel.proto";
|
import "meshtastic/channel.proto";
|
||||||
import "meshtastic/config.proto";
|
import "meshtastic/config.proto";
|
||||||
import "meshtastic/connection_status.proto";
|
import "meshtastic/connection_status.proto";
|
||||||
import "meshtastic/deviceonly.proto";
|
import "meshtastic/device_ui.proto";
|
||||||
import "meshtastic/mesh.proto";
|
import "meshtastic/mesh.proto";
|
||||||
import "meshtastic/module_config.proto";
|
import "meshtastic/module_config.proto";
|
||||||
|
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "AdminProtos";
|
option java_outer_classname = "AdminProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -21,6 +22,13 @@ option swift_prefix = "";
|
||||||
* (Prior to 1.2 these operations were done via special ToRadio operations)
|
* (Prior to 1.2 these operations were done via special ToRadio operations)
|
||||||
*/
|
*/
|
||||||
message AdminMessage {
|
message AdminMessage {
|
||||||
|
/*
|
||||||
|
* The node generates this key and sends it with any get_x_response packets.
|
||||||
|
* The client MUST include the same key with any set_x commands. Key expires after 300 seconds.
|
||||||
|
* Prevents replay attacks for admin messages.
|
||||||
|
*/
|
||||||
|
bytes session_passkey = 101;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: REPLACE
|
* TODO: REPLACE
|
||||||
*/
|
*/
|
||||||
|
|
@ -59,6 +67,21 @@ message AdminMessage {
|
||||||
* TODO: REPLACE
|
* TODO: REPLACE
|
||||||
*/
|
*/
|
||||||
BLUETOOTH_CONFIG = 6;
|
BLUETOOTH_CONFIG = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: REPLACE
|
||||||
|
*/
|
||||||
|
SECURITY_CONFIG = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Session key config
|
||||||
|
*/
|
||||||
|
SESSIONKEY_CONFIG = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* device-ui config
|
||||||
|
*/
|
||||||
|
DEVICEUI_CONFIG = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -129,6 +152,72 @@ message AdminMessage {
|
||||||
* TODO: REPLACE
|
* TODO: REPLACE
|
||||||
*/
|
*/
|
||||||
PAXCOUNTER_CONFIG = 12;
|
PAXCOUNTER_CONFIG = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: REPLACE
|
||||||
|
*/
|
||||||
|
STATUSMESSAGE_CONFIG = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Traffic management module config
|
||||||
|
*/
|
||||||
|
TRAFFICMANAGEMENT_CONFIG = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAK module config
|
||||||
|
*/
|
||||||
|
TAK_CONFIG = 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum BackupLocation {
|
||||||
|
/*
|
||||||
|
* Backup to the internal flash
|
||||||
|
*/
|
||||||
|
FLASH = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Backup to the SD card
|
||||||
|
*/
|
||||||
|
SD = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Input event message to be sent to the node.
|
||||||
|
*/
|
||||||
|
message InputEvent {
|
||||||
|
/*
|
||||||
|
* The input event code
|
||||||
|
*/
|
||||||
|
uint32 event_code = 1;
|
||||||
|
/*
|
||||||
|
* Keyboard character code
|
||||||
|
*/
|
||||||
|
uint32 kb_char = 2;
|
||||||
|
/*
|
||||||
|
* The touch X coordinate
|
||||||
|
*/
|
||||||
|
uint32 touch_x = 3;
|
||||||
|
/*
|
||||||
|
* The touch Y coordinate
|
||||||
|
*/
|
||||||
|
uint32 touch_y = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* User is requesting an over the air update.
|
||||||
|
* Node will reboot into the OTA loader
|
||||||
|
*/
|
||||||
|
message OTAEvent {
|
||||||
|
/*
|
||||||
|
* Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now)
|
||||||
|
*/
|
||||||
|
OTAMode reboot_ota_mode = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A 32 byte hash of the OTA firmware.
|
||||||
|
* Used to verify the integrity of the firmware before applying an update.
|
||||||
|
*/
|
||||||
|
bytes ota_hash = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -242,6 +331,32 @@ message AdminMessage {
|
||||||
*/
|
*/
|
||||||
string delete_file_request = 22;
|
string delete_file_request = 22;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set zero and offset for scale chips
|
||||||
|
*/
|
||||||
|
uint32 set_scale = 23;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Backup the node's preferences
|
||||||
|
*/
|
||||||
|
BackupLocation backup_preferences = 24;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Restore the node's preferences
|
||||||
|
*/
|
||||||
|
BackupLocation restore_preferences = 25;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Remove backups of the node's preferences
|
||||||
|
*/
|
||||||
|
BackupLocation remove_backup_preferences = 26;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Send an input event to the node.
|
||||||
|
* This is used to trigger physical input events like button presses, touch events, etc.
|
||||||
|
*/
|
||||||
|
InputEvent send_input_event = 27;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the owner for this node
|
* Set the owner for this node
|
||||||
*/
|
*/
|
||||||
|
|
@ -291,6 +406,52 @@ message AdminMessage {
|
||||||
*/
|
*/
|
||||||
uint32 remove_favorite_node = 40;
|
uint32 remove_favorite_node = 40;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set fixed position data on the node and then set the position.fixed_position = true
|
||||||
|
*/
|
||||||
|
Position set_fixed_position = 41;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clear fixed position coordinates and then set position.fixed_position = false
|
||||||
|
*/
|
||||||
|
bool remove_fixed_position = 42;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set time only on the node
|
||||||
|
* Convenience method to set the time on the node (as Net quality) without any other position data
|
||||||
|
*/
|
||||||
|
fixed32 set_time_only = 43;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the node to send the stored ui data.
|
||||||
|
*/
|
||||||
|
bool get_ui_config_request = 44;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reply stored device ui data.
|
||||||
|
*/
|
||||||
|
DeviceUIConfig get_ui_config_response = 45;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the node to store UI data persistently.
|
||||||
|
*/
|
||||||
|
DeviceUIConfig store_ui_config = 46;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set specified node-num to be ignored on the NodeDB on the device
|
||||||
|
*/
|
||||||
|
uint32 set_ignored_node = 47;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set specified node-num to be un-ignored on the NodeDB on the device
|
||||||
|
*/
|
||||||
|
uint32 remove_ignored_node = 48;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set specified node-num to be muted
|
||||||
|
*/
|
||||||
|
uint32 toggle_muted_node = 49;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Begins an edit transaction for config, module config, owner, and channel settings changes
|
* Begins an edit transaction for config, module config, owner, and channel settings changes
|
||||||
* This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings)
|
* This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings)
|
||||||
|
|
@ -302,11 +463,27 @@ message AdminMessage {
|
||||||
*/
|
*/
|
||||||
bool commit_edit_settings = 65;
|
bool commit_edit_settings = 65;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add a contact (User) to the nodedb
|
||||||
|
*/
|
||||||
|
SharedContact add_contact = 66;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initiate or respond to a key verification request
|
||||||
|
*/
|
||||||
|
KeyVerificationAdmin key_verification = 67;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared.
|
||||||
|
*/
|
||||||
|
int32 factory_reset_device = 94;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot)
|
* Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot)
|
||||||
* Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth.
|
* Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth.
|
||||||
|
* Deprecated in favor of reboot_ota_mode in 2.7.17
|
||||||
*/
|
*/
|
||||||
int32 reboot_ota_seconds = 95;
|
int32 reboot_ota_seconds = 95 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This message is only supported for the simulator Portduino build.
|
* This message is only supported for the simulator Portduino build.
|
||||||
|
|
@ -325,17 +502,48 @@ message AdminMessage {
|
||||||
int32 shutdown_seconds = 98;
|
int32 shutdown_seconds = 98;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tell the node to factory reset, all device settings will be returned to factory defaults.
|
* Tell the node to factory reset config; all device state and configuration will be returned to factory defaults; BLE bonds will be preserved.
|
||||||
*/
|
*/
|
||||||
int32 factory_reset = 99;
|
int32 factory_reset_config = 99;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tell the node to reset the nodedb.
|
* Tell the node to reset the nodedb.
|
||||||
|
* When true, favorites are preserved through reset.
|
||||||
*/
|
*/
|
||||||
int32 nodedb_reset = 100;
|
bool nodedb_reset = 100;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the node to reset into the OTA Loader
|
||||||
|
*/
|
||||||
|
OTAEvent ota_request = 102;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parameters and sensor configuration
|
||||||
|
*/
|
||||||
|
SensorConfig sensor_config = 103;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Firmware update mode for OTA updates
|
||||||
|
*/
|
||||||
|
enum OTAMode {
|
||||||
|
/*
|
||||||
|
* Do not reboot into OTA mode
|
||||||
|
*/
|
||||||
|
NO_REBOOT_OTA = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reboot into OTA mode for BLE firmware update
|
||||||
|
*/
|
||||||
|
OTA_BLE = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reboot into OTA mode for WiFi firmware update
|
||||||
|
*/
|
||||||
|
OTA_WIFI = 2;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parameters for setting up Meshtastic for ameteur radio usage
|
* Parameters for setting up Meshtastic for ameteur radio usage
|
||||||
*/
|
*/
|
||||||
|
|
@ -372,3 +580,183 @@ message NodeRemoteHardwarePinsResponse {
|
||||||
*/
|
*/
|
||||||
repeated NodeRemoteHardwarePin node_remote_hardware_pins = 1;
|
repeated NodeRemoteHardwarePin node_remote_hardware_pins = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message SharedContact {
|
||||||
|
/*
|
||||||
|
* The node number of the contact
|
||||||
|
*/
|
||||||
|
uint32 node_num = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The User of the contact
|
||||||
|
*/
|
||||||
|
User user = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add this contact to the blocked / ignored list
|
||||||
|
*/
|
||||||
|
bool should_ignore = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the IS_KEY_MANUALLY_VERIFIED bit
|
||||||
|
*/
|
||||||
|
bool manually_verified = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This message is used by a client to initiate or complete a key verification
|
||||||
|
*/
|
||||||
|
message KeyVerificationAdmin {
|
||||||
|
/*
|
||||||
|
* Three stages of this request.
|
||||||
|
*/
|
||||||
|
enum MessageType {
|
||||||
|
/*
|
||||||
|
* This is the first stage, where a client initiates
|
||||||
|
*/
|
||||||
|
INITIATE_VERIFICATION = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After the nonce has been returned over the mesh, the client prompts for the security number
|
||||||
|
* And uses this message to provide it to the node.
|
||||||
|
*/
|
||||||
|
PROVIDE_SECURITY_NUMBER = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Once the user has compared the verification message, this message notifies the node.
|
||||||
|
*/
|
||||||
|
DO_VERIFY = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the cancel path, can be taken at any point
|
||||||
|
*/
|
||||||
|
DO_NOT_VERIFY = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageType message_type = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The nodenum we're requesting
|
||||||
|
*/
|
||||||
|
uint32 remote_nodenum = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The nonce is used to track the connection
|
||||||
|
*/
|
||||||
|
uint64 nonce = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The 4 digit code generated by the remote node, and communicated outside the mesh
|
||||||
|
*/
|
||||||
|
optional uint32 security_number = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SensorConfig {
|
||||||
|
/*
|
||||||
|
* SCD4X CO2 Sensor configuration
|
||||||
|
*/
|
||||||
|
SCD4X_config scd4x_config = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SEN5X PM Sensor configuration
|
||||||
|
*/
|
||||||
|
SEN5X_config sen5x_config = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SCD30 CO2 Sensor configuration
|
||||||
|
*/
|
||||||
|
SCD30_config scd30_config = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHTXX temperature and relative humidity sensor configuration
|
||||||
|
*/
|
||||||
|
SHTXX_config shtxx_config = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SCD4X_config {
|
||||||
|
/*
|
||||||
|
* Set Automatic self-calibration enabled
|
||||||
|
*/
|
||||||
|
optional bool set_asc = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Recalibration target CO2 concentration in ppm (FRC or ASC)
|
||||||
|
*/
|
||||||
|
optional uint32 set_target_co2_conc = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reference temperature in degC
|
||||||
|
*/
|
||||||
|
optional float set_temperature = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure)
|
||||||
|
*/
|
||||||
|
optional uint32 set_altitude = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude)
|
||||||
|
*/
|
||||||
|
optional uint32 set_ambient_pressure = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform a factory reset of the sensor
|
||||||
|
*/
|
||||||
|
optional bool factory_reset = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Power mode for sensor (true for low power, false for normal)
|
||||||
|
*/
|
||||||
|
optional bool set_power_mode = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SEN5X_config {
|
||||||
|
/*
|
||||||
|
* Reference temperature in degC
|
||||||
|
*/
|
||||||
|
optional float set_temperature = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* One-shot mode (true for low power - one-shot mode, false for normal - continuous mode)
|
||||||
|
*/
|
||||||
|
optional bool set_one_shot_mode = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SCD30_config {
|
||||||
|
/*
|
||||||
|
* Set Automatic self-calibration enabled
|
||||||
|
*/
|
||||||
|
optional bool set_asc = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Recalibration target CO2 concentration in ppm (FRC or ASC)
|
||||||
|
*/
|
||||||
|
optional uint32 set_target_co2_conc = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reference temperature in degC
|
||||||
|
*/
|
||||||
|
optional float set_temperature = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure)
|
||||||
|
*/
|
||||||
|
optional uint32 set_altitude = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Power mode for sensor (true for low power, false for normal)
|
||||||
|
*/
|
||||||
|
optional uint32 set_measurement_interval = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform a factory reset of the sensor
|
||||||
|
*/
|
||||||
|
optional bool soft_reset = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SHTXX_config {
|
||||||
|
/*
|
||||||
|
* Accuracy mode (0 = low, 1 = medium, 2 = high)
|
||||||
|
*/
|
||||||
|
optional uint32 set_accuracy = 1;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import "meshtastic/config.proto";
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "AppOnlyProtos";
|
option java_outer_classname = "AppOnlyProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,107 @@
|
||||||
*PLI.course int_size:16
|
*PLI.course int_size:16
|
||||||
*GeoChat.message max_size:200
|
*GeoChat.message max_size:200
|
||||||
*GeoChat.to max_size:120
|
*GeoChat.to max_size:120
|
||||||
|
*GeoChat.to_callsign max_size:120
|
||||||
|
*TAKPacket.detail max_size:220
|
||||||
|
*TAKPacketV2.cot_type_str max_size:32
|
||||||
|
*TAKPacketV2.callsign max_size:120
|
||||||
|
*TAKPacketV2.uid max_size:48
|
||||||
|
*TAKPacketV2.device_callsign max_size:120
|
||||||
|
*TAKPacketV2.tak_version max_size:64
|
||||||
|
*TAKPacketV2.tak_device max_size:32
|
||||||
|
*TAKPacketV2.tak_platform max_size:32
|
||||||
|
*TAKPacketV2.tak_os max_size:16
|
||||||
|
*TAKPacketV2.endpoint max_size:32
|
||||||
|
*TAKPacketV2.phone max_size:20
|
||||||
|
*TAKPacketV2.raw_detail max_size:220
|
||||||
|
*TAKPacketV2.stale_seconds int_size:16
|
||||||
|
*TAKPacketV2.battery int_size:8
|
||||||
|
*TAKPacketV2.course int_size:16
|
||||||
|
*AircraftTrack.icao max_size:8
|
||||||
|
*AircraftTrack.registration max_size:16
|
||||||
|
*AircraftTrack.flight max_size:16
|
||||||
|
*AircraftTrack.aircraft_type max_size:8
|
||||||
|
*AircraftTrack.squawk int_size:16
|
||||||
|
*AircraftTrack.category max_size:4
|
||||||
|
*AircraftTrack.cot_host_id max_size:64
|
||||||
|
|
||||||
|
# --- Typed geometry payloads (v2 protocol extension) ---
|
||||||
|
#
|
||||||
|
# CotGeoPoint: sint32 deltas from the enclosing event's latitude_i/longitude_i.
|
||||||
|
# For nearby vertices (telestrations, small rectangles) the varint+zigzag
|
||||||
|
# encoding is 2-3 bytes per field, cutting telestration vertex data in half
|
||||||
|
# versus sfixed32. int_size:32 keeps the C type a plain int32.
|
||||||
|
# Named with a `Cot` prefix to avoid a collision with `meshtastic.GeoPoint`
|
||||||
|
# in device_ui.proto, which is an unrelated zoom/latitude/longitude type.
|
||||||
|
*CotGeoPoint.lat_delta_i int_size:32
|
||||||
|
*CotGeoPoint.lon_delta_i int_size:32
|
||||||
|
#
|
||||||
|
# DrawnShape pool sizing. `kind` and `style` are varint enums (no int_size
|
||||||
|
# needed). stroke_color / fill_color are Team enum, also varint. stroke_argb
|
||||||
|
# / fill_argb are fixed32 (always 4 bytes on the wire). Vertex pool is 32
|
||||||
|
# entries x ~12B each ~= 384B worst case. Telestrations beyond 32 vertices
|
||||||
|
# MUST be pre-truncated by the sender with `truncated = true`.
|
||||||
|
*DrawnShape.vertices max_count:32
|
||||||
|
*DrawnShape.major_cm int_size:32
|
||||||
|
*DrawnShape.minor_cm int_size:32
|
||||||
|
*DrawnShape.angle_deg int_size:16
|
||||||
|
*DrawnShape.stroke_weight_x10 int_size:16
|
||||||
|
*DrawnShape.bullseye_distance_dm int_size:32
|
||||||
|
*DrawnShape.bullseye_bearing_ref int_size:8
|
||||||
|
*DrawnShape.bullseye_flags int_size:8
|
||||||
|
*DrawnShape.bullseye_uid_ref max_size:48
|
||||||
|
|
||||||
|
# Marker pool sizing. Strings bounded tight to keep fixed pool small on
|
||||||
|
# ESP32 nanopb. parent_uid matches existing TAKPacketV2.uid cap (48).
|
||||||
|
# iconset fits "f7f71666-8b28-4b57-9fbb-e38e61d33b79/Google/hiker.png"
|
||||||
|
# (~52 chars) with slack.
|
||||||
|
*Marker.parent_uid max_size:48
|
||||||
|
*Marker.parent_type max_size:24
|
||||||
|
*Marker.parent_callsign max_size:24
|
||||||
|
*Marker.iconset max_size:80
|
||||||
|
|
||||||
|
# RangeAndBearing pool sizing.
|
||||||
|
*RangeAndBearing.anchor_uid max_size:48
|
||||||
|
*RangeAndBearing.range_cm int_size:32
|
||||||
|
*RangeAndBearing.bearing_cdeg int_size:16
|
||||||
|
*RangeAndBearing.stroke_weight_x10 int_size:16
|
||||||
|
|
||||||
|
# Route pool sizing. 16 links x ~24B each ~= 384B worst case. prefix is
|
||||||
|
# ATAK's short waypoint name prefix ("CP", "RP", etc.) — 8 chars is plenty.
|
||||||
|
*Route.links max_count:16
|
||||||
|
*Route.prefix max_size:8
|
||||||
|
*Route.stroke_weight_x10 int_size:16
|
||||||
|
*Route.Link.uid max_size:48
|
||||||
|
*Route.Link.callsign max_size:16
|
||||||
|
*Route.Link.link_type int_size:8
|
||||||
|
|
||||||
|
# GeoChat receipt extension. receipt_for_uid matches TAKPacketV2.uid caps.
|
||||||
|
*GeoChat.receipt_for_uid max_size:48
|
||||||
|
|
||||||
|
# CasevacReport pool sizing. All numeric fields are small (0..255 for
|
||||||
|
# patient counts, 1 byte for flags bitfields); strings are short.
|
||||||
|
*CasevacReport.equipment_flags int_size:8
|
||||||
|
*CasevacReport.terrain_flags int_size:8
|
||||||
|
*CasevacReport.litter_patients int_size:8
|
||||||
|
*CasevacReport.ambulatory_patients int_size:8
|
||||||
|
*CasevacReport.us_military int_size:8
|
||||||
|
*CasevacReport.us_civilian int_size:8
|
||||||
|
*CasevacReport.non_us_military int_size:8
|
||||||
|
*CasevacReport.non_us_civilian int_size:8
|
||||||
|
*CasevacReport.epw int_size:8
|
||||||
|
*CasevacReport.child int_size:8
|
||||||
|
*CasevacReport.zone_marker max_size:16
|
||||||
|
*CasevacReport.frequency max_size:16
|
||||||
|
|
||||||
|
# EmergencyAlert pool sizing. UIDs match TAKPacketV2.uid caps (48).
|
||||||
|
*EmergencyAlert.authoring_uid max_size:48
|
||||||
|
*EmergencyAlert.cancel_reference_uid max_size:48
|
||||||
|
|
||||||
|
# TaskRequest pool sizing. All four strings are capped tight so the
|
||||||
|
# worst-case wire size stays under the LoRa MTU with headroom. task_type
|
||||||
|
# is a short category tag; target_uid/assignee_uid match TAKPacketV2.uid
|
||||||
|
# conventions; note is the one user-entered field.
|
||||||
|
*TaskRequest.task_type max_size:12
|
||||||
|
*TaskRequest.target_uid max_size:32
|
||||||
|
*TaskRequest.assignee_uid max_size:32
|
||||||
|
*TaskRequest.note max_size:48
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "CannedMessageConfigProtos";
|
option java_outer_classname = "CannedMessageConfigProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
|
/* trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) */
|
||||||
package meshtastic;
|
package meshtastic;
|
||||||
|
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "ChannelProtos";
|
option java_outer_classname = "ChannelProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -96,6 +97,12 @@ message ModuleSettings {
|
||||||
* Bits of precision for the location sent in position packets.
|
* Bits of precision for the location sent in position packets.
|
||||||
*/
|
*/
|
||||||
uint32 position_precision = 1;
|
uint32 position_precision = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Controls whether or not the client / device should mute the current channel
|
||||||
|
* Useful for noisy public channels you don't necessarily want to disable
|
||||||
|
*/
|
||||||
|
bool is_muted = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,4 @@
|
||||||
*DeviceProfile.long_name max_size:40
|
*DeviceProfile.long_name max_size:40
|
||||||
*DeviceProfile.short_name max_size:5
|
*DeviceProfile.short_name max_size:5
|
||||||
|
*DeviceProfile.ringtone max_size:231
|
||||||
|
*DeviceProfile.canned_messages max_size:201
|
||||||
|
|
@ -3,11 +3,12 @@ syntax = "proto3";
|
||||||
package meshtastic;
|
package meshtastic;
|
||||||
|
|
||||||
import "meshtastic/localonly.proto";
|
import "meshtastic/localonly.proto";
|
||||||
|
import "meshtastic/mesh.proto";
|
||||||
|
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "ClientOnlyProtos";
|
option java_outer_classname = "ClientOnlyProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -39,4 +40,19 @@ message DeviceProfile {
|
||||||
* The ModuleConfig of the node
|
* The ModuleConfig of the node
|
||||||
*/
|
*/
|
||||||
optional LocalModuleConfig module_config = 5;
|
optional LocalModuleConfig module_config = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fixed position data
|
||||||
|
*/
|
||||||
|
optional Position fixed_position = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ringtone for ExternalNotification
|
||||||
|
*/
|
||||||
|
optional string ringtone = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Predefined messages for CannedMessage
|
||||||
|
*/
|
||||||
|
optional string canned_messages = 8;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
# longest current is 45 chars, plan with a bit of buffer
|
||||||
|
*DeviceConfig.tzdef max_size:65
|
||||||
|
*DeviceConfig.buzzer_mode int_size:8
|
||||||
|
|
||||||
|
|
||||||
*NetworkConfig.wifi_ssid max_size:33
|
*NetworkConfig.wifi_ssid max_size:33
|
||||||
*NetworkConfig.wifi_psk max_size:65
|
*NetworkConfig.wifi_psk max_size:65
|
||||||
*NetworkConfig.ntp_server max_size:33
|
*NetworkConfig.ntp_server max_size:33
|
||||||
|
|
@ -12,3 +17,8 @@
|
||||||
*LoRaConfig.channel_num int_size:16
|
*LoRaConfig.channel_num int_size:16
|
||||||
|
|
||||||
*PowerConfig.device_battery_ina_address int_size:8
|
*PowerConfig.device_battery_ina_address int_size:8
|
||||||
|
|
||||||
|
*SecurityConfig.public_key max_size:32
|
||||||
|
*SecurityConfig.private_key max_size:32
|
||||||
|
*SecurityConfig.admin_key max_size:32
|
||||||
|
*SecurityConfig.admin_key max_count:3
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@ syntax = "proto3";
|
||||||
|
|
||||||
package meshtastic;
|
package meshtastic;
|
||||||
|
|
||||||
|
import "meshtastic/device_ui.proto";
|
||||||
|
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "ConfigProtos";
|
option java_outer_classname = "ConfigProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
message Config {
|
message Config {
|
||||||
|
|
@ -37,15 +39,18 @@ message Config {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Description: Combination of both ROUTER and CLIENT. Not for mobile devices.
|
* Description: Combination of both ROUTER and CLIENT. Not for mobile devices.
|
||||||
|
* Deprecated in v2.3.15 because improper usage is impacting public meshes: Use ROUTER or CLIENT instead.
|
||||||
*/
|
*/
|
||||||
ROUTER_CLIENT = 3;
|
|
||||||
|
ROUTER_CLIENT = 3 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
* Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
||||||
* Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
* Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
||||||
* or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
* or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
||||||
|
* Deprecated in v2.7.11 because it creates "holes" in the mesh rebroadcast chain.
|
||||||
*/
|
*/
|
||||||
REPEATER = 4;
|
REPEATER = 4 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Description: Broadcasts GPS position packets as priority.
|
* Description: Broadcasts GPS position packets as priority.
|
||||||
|
|
@ -95,6 +100,23 @@ message Config {
|
||||||
* Uses position module configuration to determine TAK PLI broadcast interval.
|
* Uses position module configuration to determine TAK PLI broadcast interval.
|
||||||
*/
|
*/
|
||||||
TAK_TRACKER = 10;
|
TAK_TRACKER = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: Will always rebroadcast packets, but will do so after all other modes.
|
||||||
|
* Technical Details: Used for router nodes that are intended to provide additional coverage
|
||||||
|
* in areas not already covered by other routers, or to bridge around problematic terrain,
|
||||||
|
* but should not be given priority over other routers in order to avoid unnecessaraily
|
||||||
|
* consuming hops.
|
||||||
|
*/
|
||||||
|
ROUTER_LATE = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: Treats packets from or to favorited nodes as ROUTER_LATE, and all other packets as CLIENT.
|
||||||
|
* Technical Details: Used for stronger attic/roof nodes to distribute messages more widely
|
||||||
|
* from weaker, indoor, or less-well-positioned nodes. Recommended for users with multiple nodes
|
||||||
|
* where one CLIENT_BASE acts as a more powerful base station, such as an attic/roof node.
|
||||||
|
*/
|
||||||
|
CLIENT_BASE = 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -124,6 +146,54 @@ message Config {
|
||||||
* but takes it step further by also ignoring messages from nodenums not in the node's known list (NodeDB)
|
* but takes it step further by also ignoring messages from nodenums not in the node's known list (NodeDB)
|
||||||
*/
|
*/
|
||||||
KNOWN_ONLY = 3;
|
KNOWN_ONLY = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only permitted for SENSOR, TRACKER and TAK_TRACKER roles, this will inhibit all rebroadcasts, not unlike CLIENT_MUTE role.
|
||||||
|
*/
|
||||||
|
NONE = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ignores packets from non-standard portnums such as: TAK, RangeTest, PaxCounter, etc.
|
||||||
|
* Only rebroadcasts packets with standard portnums: NodeInfo, Text, Position, Telemetry, and Routing.
|
||||||
|
*/
|
||||||
|
CORE_PORTNUMS_ONLY = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defines buzzer behavior for audio feedback
|
||||||
|
*/
|
||||||
|
enum BuzzerMode {
|
||||||
|
/*
|
||||||
|
* Default behavior.
|
||||||
|
* Buzzer is enabled for all audio feedback including button presses and alerts.
|
||||||
|
*/
|
||||||
|
ALL_ENABLED = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disabled.
|
||||||
|
* All buzzer audio feedback is disabled.
|
||||||
|
*/
|
||||||
|
DISABLED = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Notifications Only.
|
||||||
|
* Buzzer is enabled only for notifications and alerts, but not for button presses.
|
||||||
|
* External notification config determines the specifics of the notification behavior.
|
||||||
|
*/
|
||||||
|
NOTIFICATIONS_ONLY = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Non-notification system buzzer tones only.
|
||||||
|
* Buzzer is enabled only for non-notification tones such as button presses, startup, shutdown, but not for alerts.
|
||||||
|
*/
|
||||||
|
SYSTEM_ONLY = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Direct Message notifications only.
|
||||||
|
* Buzzer is enabled only for direct messages and alerts, but not for button presses.
|
||||||
|
* External notification config determines the specifics of the notification behavior.
|
||||||
|
*/
|
||||||
|
DIRECT_MSG_ONLY = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -133,14 +203,9 @@ message Config {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disabling this will disable the SerialConsole by not initilizing the StreamAPI
|
* Disabling this will disable the SerialConsole by not initilizing the StreamAPI
|
||||||
|
* Moved to SecurityConfig
|
||||||
*/
|
*/
|
||||||
bool serial_enabled = 2;
|
bool serial_enabled = 2 [deprecated = true];
|
||||||
|
|
||||||
/*
|
|
||||||
* By default we turn off logging as soon as an API client connects (to keep shared serial link quiet).
|
|
||||||
* Set this to true to leave the debug log outputting even when API is active.
|
|
||||||
*/
|
|
||||||
bool debug_log_enabled = 3;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For boards without a hard wired button, this is the pin number that will be used
|
* For boards without a hard wired button, this is the pin number that will be used
|
||||||
|
|
@ -173,13 +238,30 @@ message Config {
|
||||||
/*
|
/*
|
||||||
* If true, device is considered to be "managed" by a mesh administrator
|
* If true, device is considered to be "managed" by a mesh administrator
|
||||||
* Clients should then limit available configuration and administrative options inside the user interface
|
* Clients should then limit available configuration and administrative options inside the user interface
|
||||||
|
* Moved to SecurityConfig
|
||||||
*/
|
*/
|
||||||
bool is_managed = 9;
|
bool is_managed = 9 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disables the triple-press of user button to enable or disable GPS
|
* Disables the triple-press of user button to enable or disable GPS
|
||||||
*/
|
*/
|
||||||
bool disable_triple_click = 10;
|
bool disable_triple_click = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* POSIX Timezone definition string from https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv.
|
||||||
|
*/
|
||||||
|
string tzdef = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If true, disable the default blinking LED (LED_PIN) behavior on the device
|
||||||
|
*/
|
||||||
|
bool led_heartbeat_disabled = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Controls buzzer behavior for audio feedback
|
||||||
|
* Defaults to ENABLED
|
||||||
|
*/
|
||||||
|
BuzzerMode buzzer_mode = 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -350,30 +432,28 @@ message Config {
|
||||||
*/
|
*/
|
||||||
message PowerConfig {
|
message PowerConfig {
|
||||||
/*
|
/*
|
||||||
* If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in
|
* Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio.
|
||||||
* we should try to minimize power consumption as much as possible.
|
* Don't use this setting if you want to use your device with the phone apps or are using a device without a user button.
|
||||||
* YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case).
|
* Technical Details: Works for ESP32 devices and NRF52 devices in the Sensor or Tracker roles
|
||||||
* Advanced Option
|
|
||||||
*/
|
*/
|
||||||
bool is_power_saving = 1;
|
bool is_power_saving = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If non-zero, the device will fully power off this many seconds after external power is removed.
|
* Description: If non-zero, the device will fully power off this many seconds after external power is removed.
|
||||||
*/
|
*/
|
||||||
uint32 on_battery_shutdown_after_secs = 2;
|
uint32 on_battery_shutdown_after_secs = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k)
|
* Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k)
|
||||||
* Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation.
|
* Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation.
|
||||||
* Should be set to floating point value between 2 and 4
|
* https://meshtastic.org/docs/configuration/radio/power/#adc-multiplier-override
|
||||||
* Fixes issues on Heltec v2
|
* Should be set to floating point value between 2 and 6
|
||||||
*/
|
*/
|
||||||
float adc_multiplier_override = 3;
|
float adc_multiplier_override = 3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wait Bluetooth Seconds
|
* Description: The number of seconds for to wait before turning off BLE in No Bluetooth states
|
||||||
* The number of seconds for to wait before turning off BLE in No Bluetooth states
|
* Technical Details: ESP32 Only 0 for default of 1 minute
|
||||||
* 0 for default of 1 minute
|
|
||||||
*/
|
*/
|
||||||
uint32 wait_bluetooth_secs = 4;
|
uint32 wait_bluetooth_secs = 4;
|
||||||
|
|
||||||
|
|
@ -386,17 +466,14 @@ message Config {
|
||||||
uint32 sds_secs = 6;
|
uint32 sds_secs = 6;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Light Sleep Seconds
|
* Description: In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
|
||||||
* In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
|
* Technical Details: ESP32 Only 0 for default of 300
|
||||||
* ESP32 Only
|
|
||||||
* 0 for default of 300
|
|
||||||
*/
|
*/
|
||||||
uint32 ls_secs = 7;
|
uint32 ls_secs = 7;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Minimum Wake Seconds
|
* Description: While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
|
||||||
* While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
|
* Technical Details: ESP32 Only 0 for default of 10 seconds
|
||||||
* 0 for default of 10 seconds
|
|
||||||
*/
|
*/
|
||||||
uint32 min_wake_secs = 8;
|
uint32 min_wake_secs = 8;
|
||||||
|
|
||||||
|
|
@ -404,6 +481,12 @@ message Config {
|
||||||
* I2C address of INA_2XX to use for reading device battery voltage
|
* I2C address of INA_2XX to use for reading device battery voltage
|
||||||
*/
|
*/
|
||||||
uint32 device_battery_ina_address = 9;
|
uint32 device_battery_ina_address = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If non-zero, we want powermon log outputs. With the particular (bitfield) sources enabled.
|
||||||
|
* Note: we picked an ID of 32 so that lower more efficient IDs can be used for more frequently used options.
|
||||||
|
*/
|
||||||
|
uint64 powermon_enables = 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -461,7 +544,7 @@ message Config {
|
||||||
string wifi_psk = 4;
|
string wifi_psk = 4;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NTP server to use if WiFi is conneced, defaults to `0.pool.ntp.org`
|
* NTP server to use if WiFi is conneced, defaults to `meshtastic.pool.ntp.org`
|
||||||
*/
|
*/
|
||||||
string ntp_server = 5;
|
string ntp_server = 5;
|
||||||
|
|
||||||
|
|
@ -484,6 +567,31 @@ message Config {
|
||||||
* rsyslog Server and Port
|
* rsyslog Server and Port
|
||||||
*/
|
*/
|
||||||
string rsyslog_server = 9;
|
string rsyslog_server = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flags for enabling/disabling network protocols
|
||||||
|
*/
|
||||||
|
uint32 enabled_protocols = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable/Disable ipv6 support
|
||||||
|
*/
|
||||||
|
bool ipv6_enabled = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Available flags auxiliary network protocols
|
||||||
|
*/
|
||||||
|
enum ProtocolFlags {
|
||||||
|
/*
|
||||||
|
* Do not broadcast packets over any network protocol
|
||||||
|
*/
|
||||||
|
NO_BROADCAST = 0x0000;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable broadcasting packets via UDP over the local network
|
||||||
|
*/
|
||||||
|
UDP_BROADCAST = 0x0001;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -491,45 +599,10 @@ message Config {
|
||||||
*/
|
*/
|
||||||
message DisplayConfig {
|
message DisplayConfig {
|
||||||
/*
|
/*
|
||||||
* How the GPS coordinates are displayed on the OLED screen.
|
* Deprecated in 2.7.4: Unused
|
||||||
*/
|
*/
|
||||||
enum GpsCoordinateFormat {
|
enum DeprecatedGpsCoordinateFormat {
|
||||||
/*
|
UNUSED = 0;
|
||||||
* GPS coordinates are displayed in the normal decimal degrees format:
|
|
||||||
* DD.DDDDDD DDD.DDDDDD
|
|
||||||
*/
|
|
||||||
DEC = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GPS coordinates are displayed in the degrees minutes seconds format:
|
|
||||||
* DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
|
||||||
*/
|
|
||||||
DMS = 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Universal Transverse Mercator format:
|
|
||||||
* ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
|
||||||
*/
|
|
||||||
UTM = 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Military Grid Reference System format:
|
|
||||||
* ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
|
||||||
* E is easting, N is northing
|
|
||||||
*/
|
|
||||||
MGRS = 3;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Open Location Code (aka Plus Codes).
|
|
||||||
*/
|
|
||||||
OLC = 4;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Ordnance Survey Grid Reference (the National Grid System of the UK).
|
|
||||||
* Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
|
||||||
* E is the easting, N is the northing
|
|
||||||
*/
|
|
||||||
OSGR = 5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -552,24 +625,29 @@ message Config {
|
||||||
*/
|
*/
|
||||||
enum OledType {
|
enum OledType {
|
||||||
/*
|
/*
|
||||||
* Default / Auto
|
* Default / Autodetect
|
||||||
*/
|
*/
|
||||||
OLED_AUTO = 0;
|
OLED_AUTO = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default / Auto
|
* Default / Autodetect
|
||||||
*/
|
*/
|
||||||
OLED_SSD1306 = 1;
|
OLED_SSD1306 = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default / Auto
|
* Default / Autodetect
|
||||||
*/
|
*/
|
||||||
OLED_SH1106 = 2;
|
OLED_SH1106 = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Can not be auto detected but set by proto. Used for 128x128 screens
|
* Can not be auto detected but set by proto. Used for 128x64 screens
|
||||||
*/
|
*/
|
||||||
OLED_SH1107 = 3;
|
OLED_SH1107 = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Can not be auto detected but set by proto. Used for 128x128 screens
|
||||||
|
*/
|
||||||
|
OLED_SH1107_128_128 = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -579,9 +657,10 @@ message Config {
|
||||||
uint32 screen_on_secs = 1;
|
uint32 screen_on_secs = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* Deprecated in 2.7.4: Unused
|
||||||
* How the GPS coordinates are formatted on the OLED screen.
|
* How the GPS coordinates are formatted on the OLED screen.
|
||||||
*/
|
*/
|
||||||
GpsCoordinateFormat gps_format = 2;
|
DeprecatedGpsCoordinateFormat gps_format = 2 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
|
* Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
|
||||||
|
|
@ -593,7 +672,7 @@ message Config {
|
||||||
* If this is set, the displayed compass will always point north. if unset, the old behaviour
|
* If this is set, the displayed compass will always point north. if unset, the old behaviour
|
||||||
* (top of display is heading direction) is used.
|
* (top of display is heading direction) is used.
|
||||||
*/
|
*/
|
||||||
bool compass_north_top = 4;
|
bool compass_north_top = 4 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flip screen vertically, for cases that mount the screen upside down
|
* Flip screen vertically, for cases that mount the screen upside down
|
||||||
|
|
@ -645,6 +724,70 @@ message Config {
|
||||||
* Should we wake the screen up on accelerometer detected motion or tap
|
* Should we wake the screen up on accelerometer detected motion or tap
|
||||||
*/
|
*/
|
||||||
bool wake_on_tap_or_motion = 10;
|
bool wake_on_tap_or_motion = 10;
|
||||||
|
|
||||||
|
enum CompassOrientation {
|
||||||
|
/*
|
||||||
|
* The compass and the display are in the same orientation.
|
||||||
|
*/
|
||||||
|
DEGREES_0 = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rotate the compass by 90 degrees.
|
||||||
|
*/
|
||||||
|
DEGREES_90 = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rotate the compass by 180 degrees.
|
||||||
|
*/
|
||||||
|
DEGREES_180 = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rotate the compass by 270 degrees.
|
||||||
|
*/
|
||||||
|
DEGREES_270 = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't rotate the compass, but invert the result.
|
||||||
|
*/
|
||||||
|
DEGREES_0_INVERTED = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rotate the compass by 90 degrees and invert.
|
||||||
|
*/
|
||||||
|
DEGREES_90_INVERTED = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rotate the compass by 180 degrees and invert.
|
||||||
|
*/
|
||||||
|
DEGREES_180_INVERTED = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rotate the compass by 270 degrees and invert.
|
||||||
|
*/
|
||||||
|
DEGREES_270_INVERTED = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Indicates how to rotate or invert the compass output to accurate display on the display.
|
||||||
|
*/
|
||||||
|
CompassOrientation compass_orientation = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If false (default), the device will display the time in 24-hour format on screen.
|
||||||
|
* If true, the device will display the time in 12-hour format on screen.
|
||||||
|
*/
|
||||||
|
bool use_12h_clock = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If false (default), the device will use short names for various display screens.
|
||||||
|
* If true, node names will show in long format
|
||||||
|
*/
|
||||||
|
bool use_long_node_name = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If true, the device will display message bubbles on screen.
|
||||||
|
*/
|
||||||
|
bool enable_message_bubbles = 14;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -746,6 +889,46 @@ message Config {
|
||||||
* Singapore 923mhz
|
* Singapore 923mhz
|
||||||
*/
|
*/
|
||||||
SG_923 = 18;
|
SG_923 = 18;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Philippines 433mhz
|
||||||
|
*/
|
||||||
|
PH_433 = 19;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Philippines 868mhz
|
||||||
|
*/
|
||||||
|
PH_868 = 20;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Philippines 915mhz
|
||||||
|
*/
|
||||||
|
PH_915 = 21;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Australia / New Zealand 433MHz
|
||||||
|
*/
|
||||||
|
ANZ_433 = 22;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Kazakhstan 433MHz
|
||||||
|
*/
|
||||||
|
KZ_433 = 23;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Kazakhstan 863MHz
|
||||||
|
*/
|
||||||
|
KZ_863 = 24;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Nepal 865MHz
|
||||||
|
*/
|
||||||
|
NP_865 = 25;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Brazil 902MHz
|
||||||
|
*/
|
||||||
|
BR_902 = 26;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -760,13 +943,15 @@ message Config {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Long Range - Slow
|
* Long Range - Slow
|
||||||
|
* Deprecated in 2.7: Unpopular slow preset.
|
||||||
*/
|
*/
|
||||||
LONG_SLOW = 1;
|
LONG_SLOW = 1 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Very Long Range - Slow
|
* Very Long Range - Slow
|
||||||
|
* Deprecated in 2.5: Works only with txco and is unusably slow
|
||||||
*/
|
*/
|
||||||
VERY_LONG_SLOW = 2;
|
VERY_LONG_SLOW = 2 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Medium Range - Slow
|
* Medium Range - Slow
|
||||||
|
|
@ -792,6 +977,36 @@ message Config {
|
||||||
* Long Range - Moderately Fast
|
* Long Range - Moderately Fast
|
||||||
*/
|
*/
|
||||||
LONG_MODERATE = 7;
|
LONG_MODERATE = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Short Range - Turbo
|
||||||
|
* This is the fastest preset and the only one with 500kHz bandwidth.
|
||||||
|
* It is not legal to use in all regions due to this wider bandwidth.
|
||||||
|
*/
|
||||||
|
SHORT_TURBO = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Long Range - Turbo
|
||||||
|
* This preset performs similarly to LongFast, but with 500Khz bandwidth.
|
||||||
|
*/
|
||||||
|
LONG_TURBO = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum FEM_LNA_Mode {
|
||||||
|
/*
|
||||||
|
* FEM_LNA is present but disabled
|
||||||
|
*/
|
||||||
|
DISABLED = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FEM_LNA is present and enabled
|
||||||
|
*/
|
||||||
|
ENABLED = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FEM_LNA is not present on the device
|
||||||
|
*/
|
||||||
|
NOT_PRESENT = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -893,6 +1108,11 @@ message Config {
|
||||||
*/
|
*/
|
||||||
float override_frequency = 14;
|
float override_frequency = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If true, disable the build-in PA FAN using pin define in RF95_FAN_EN.
|
||||||
|
*/
|
||||||
|
bool pa_fan_disabled = 15;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For testing it is useful sometimes to force a node to never listen to
|
* For testing it is useful sometimes to force a node to never listen to
|
||||||
* particular other nodes (simulating radio out of range). All nodenums listed
|
* particular other nodes (simulating radio out of range). All nodenums listed
|
||||||
|
|
@ -904,6 +1124,15 @@ message Config {
|
||||||
* If true, the device will not process any packets received via LoRa that passed via MQTT anywhere on the path towards it.
|
* If true, the device will not process any packets received via LoRa that passed via MQTT anywhere on the path towards it.
|
||||||
*/
|
*/
|
||||||
bool ignore_mqtt = 104;
|
bool ignore_mqtt = 104;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sets the ok_to_mqtt bit on outgoing packets
|
||||||
|
*/
|
||||||
|
bool config_ok_to_mqtt = 105;
|
||||||
|
/*
|
||||||
|
* Set where LORA FEM is enabled, disabled, or not present
|
||||||
|
*/
|
||||||
|
FEM_LNA_Mode fem_lna_mode = 106;
|
||||||
}
|
}
|
||||||
|
|
||||||
message BluetoothConfig {
|
message BluetoothConfig {
|
||||||
|
|
@ -940,6 +1169,52 @@ message Config {
|
||||||
uint32 fixed_pin = 3;
|
uint32 fixed_pin = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message SecurityConfig {
|
||||||
|
/*
|
||||||
|
* The public key of the user's device.
|
||||||
|
* Sent out to other nodes on the mesh to allow them to compute a shared secret key.
|
||||||
|
*/
|
||||||
|
bytes public_key = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The private key of the device.
|
||||||
|
* Used to create a shared key with a remote device.
|
||||||
|
*/
|
||||||
|
bytes private_key = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The public key authorized to send admin messages to this node.
|
||||||
|
*/
|
||||||
|
repeated bytes admin_key = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If true, device is considered to be "managed" by a mesh administrator via admin messages
|
||||||
|
* Device is managed by a mesh administrator.
|
||||||
|
*/
|
||||||
|
bool is_managed = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Serial Console over the Stream API."
|
||||||
|
*/
|
||||||
|
bool serial_enabled = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* By default we turn off logging as soon as an API client connects (to keep shared serial link quiet).
|
||||||
|
* Output live debug logging over serial or bluetooth is set to true.
|
||||||
|
*/
|
||||||
|
bool debug_log_api_enabled = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allow incoming device control over the insecure legacy admin channel.
|
||||||
|
*/
|
||||||
|
bool admin_channel_enabled = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Blank config request, strictly for getting the session key
|
||||||
|
*/
|
||||||
|
message SessionkeyConfig {}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Payload Variant
|
* Payload Variant
|
||||||
*/
|
*/
|
||||||
|
|
@ -951,5 +1226,8 @@ message Config {
|
||||||
DisplayConfig display = 5;
|
DisplayConfig display = 5;
|
||||||
LoRaConfig lora = 6;
|
LoRaConfig lora = 6;
|
||||||
BluetoothConfig bluetooth = 7;
|
BluetoothConfig bluetooth = 7;
|
||||||
|
SecurityConfig security = 8;
|
||||||
|
SessionkeyConfig sessionkey = 9;
|
||||||
|
DeviceUIConfig device_ui = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "ConnStatusProtos";
|
option java_outer_classname = "ConnStatusProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
message DeviceConnectionStatus {
|
message DeviceConnectionStatus {
|
||||||
|
|
|
||||||
12
meshtastic/device_ui.options
Normal file
12
meshtastic/device_ui.options
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
*DeviceUIConfig.screen_brightness int_size:8
|
||||||
|
*DeviceUIConfig.screen_timeout int_size:16
|
||||||
|
*DeviceUIConfig.ring_tone_id int_size:8
|
||||||
|
*DeviceUIConfig.calibration_data max_size:16
|
||||||
|
*DeviceUIConfig.compass_mode int_size:8
|
||||||
|
*DeviceUIConfig.gps_format int_size:8
|
||||||
|
*NodeFilter.node_name max_size:16
|
||||||
|
*NodeFilter.hops_away int_size:8
|
||||||
|
*NodeFilter.channel int_size:8
|
||||||
|
*NodeHighlight.node_name max_size:16
|
||||||
|
*GeoPoint.zoom int_size:8
|
||||||
|
*Map.style max_size:20
|
||||||
389
meshtastic/device_ui.proto
Normal file
389
meshtastic/device_ui.proto
Normal file
|
|
@ -0,0 +1,389 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package meshtastic;
|
||||||
|
|
||||||
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
|
option java_outer_classname = "DeviceUIProtos";
|
||||||
|
option java_package = "org.meshtastic.proto";
|
||||||
|
option swift_prefix = "";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Protobuf structures for device-ui persistency
|
||||||
|
*/
|
||||||
|
|
||||||
|
message DeviceUIConfig {
|
||||||
|
/*
|
||||||
|
* A version integer used to invalidate saved files when we make incompatible changes.
|
||||||
|
*/
|
||||||
|
uint32 version = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TFT display brightness 1..255
|
||||||
|
*/
|
||||||
|
uint32 screen_brightness = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Screen timeout 0..900
|
||||||
|
*/
|
||||||
|
uint32 screen_timeout = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Screen/Settings lock enabled
|
||||||
|
*/
|
||||||
|
bool screen_lock = 4;
|
||||||
|
bool settings_lock = 5;
|
||||||
|
uint32 pin_code = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Color theme
|
||||||
|
*/
|
||||||
|
Theme theme = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Audible message, banner and ring tone
|
||||||
|
*/
|
||||||
|
bool alert_enabled = 8;
|
||||||
|
bool banner_enabled = 9;
|
||||||
|
uint32 ring_tone_id = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Localization
|
||||||
|
*/
|
||||||
|
Language language = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Node list filter
|
||||||
|
*/
|
||||||
|
NodeFilter node_filter = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Node list highlightening
|
||||||
|
*/
|
||||||
|
NodeHighlight node_highlight = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 8 integers for screen calibration data
|
||||||
|
*/
|
||||||
|
bytes calibration_data = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Map related data
|
||||||
|
*/
|
||||||
|
Map map_data = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compass mode
|
||||||
|
*/
|
||||||
|
CompassMode compass_mode = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RGB color for BaseUI
|
||||||
|
* 0xRRGGBB format, e.g. 0xFF0000 for red
|
||||||
|
*/
|
||||||
|
uint32 screen_rgb_color = 17;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clockface analog style
|
||||||
|
* true for analog clockface, false for digital clockface
|
||||||
|
*/
|
||||||
|
bool is_clockface_analog = 18;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* How the GPS coordinates are formatted on the OLED screen.
|
||||||
|
*/
|
||||||
|
GpsCoordinateFormat gps_format = 19;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* How the GPS coordinates are displayed on the OLED screen.
|
||||||
|
*/
|
||||||
|
enum GpsCoordinateFormat {
|
||||||
|
/*
|
||||||
|
* GPS coordinates are displayed in the normal decimal degrees format:
|
||||||
|
* DD.DDDDDD DDD.DDDDDD
|
||||||
|
*/
|
||||||
|
DEC = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPS coordinates are displayed in the degrees minutes seconds format:
|
||||||
|
* DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
||||||
|
*/
|
||||||
|
DMS = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Universal Transverse Mercator format:
|
||||||
|
* ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
||||||
|
*/
|
||||||
|
UTM = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Military Grid Reference System format:
|
||||||
|
* ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
||||||
|
* E is easting, N is northing
|
||||||
|
*/
|
||||||
|
MGRS = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Open Location Code (aka Plus Codes).
|
||||||
|
*/
|
||||||
|
OLC = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ordnance Survey Grid Reference (the National Grid System of the UK).
|
||||||
|
* Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
||||||
|
* E is the easting, N is the northing
|
||||||
|
*/
|
||||||
|
OSGR = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maidenhead Locator System
|
||||||
|
* Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System
|
||||||
|
*/
|
||||||
|
MLS = 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message NodeFilter {
|
||||||
|
/*
|
||||||
|
* Filter unknown nodes
|
||||||
|
*/
|
||||||
|
bool unknown_switch = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filter offline nodes
|
||||||
|
*/
|
||||||
|
bool offline_switch = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filter nodes w/o public key
|
||||||
|
*/
|
||||||
|
bool public_key_switch = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filter based on hops away
|
||||||
|
*/
|
||||||
|
int32 hops_away = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filter nodes w/o position
|
||||||
|
*/
|
||||||
|
bool position_switch = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filter nodes by matching name string
|
||||||
|
*/
|
||||||
|
string node_name = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filter based on channel
|
||||||
|
*/
|
||||||
|
int32 channel = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NodeHighlight {
|
||||||
|
/*
|
||||||
|
* Hightlight nodes w/ active chat
|
||||||
|
*/
|
||||||
|
bool chat_switch = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Highlight nodes w/ position
|
||||||
|
*/
|
||||||
|
bool position_switch = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Highlight nodes w/ telemetry data
|
||||||
|
*/
|
||||||
|
bool telemetry_switch = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Highlight nodes w/ iaq data
|
||||||
|
*/
|
||||||
|
bool iaq_switch = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Highlight nodes by matching name string
|
||||||
|
*/
|
||||||
|
string node_name = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GeoPoint {
|
||||||
|
/*
|
||||||
|
* Zoom level
|
||||||
|
*/
|
||||||
|
int32 zoom = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Coordinate: latitude
|
||||||
|
*/
|
||||||
|
int32 latitude = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Coordinate: longitude
|
||||||
|
*/
|
||||||
|
int32 longitude = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Map {
|
||||||
|
/*
|
||||||
|
* Home coordinates
|
||||||
|
*/
|
||||||
|
GeoPoint home = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Map tile style
|
||||||
|
*/
|
||||||
|
string style = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Map scroll follows GPS
|
||||||
|
*/
|
||||||
|
bool follow_gps = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum CompassMode {
|
||||||
|
/*
|
||||||
|
* Compass with dynamic ring and heading
|
||||||
|
*/
|
||||||
|
DYNAMIC = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compass with fixed ring and heading
|
||||||
|
*/
|
||||||
|
FIXED_RING = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compass with heading and freeze option
|
||||||
|
*/
|
||||||
|
FREEZE_HEADING = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Theme {
|
||||||
|
/*
|
||||||
|
* Dark
|
||||||
|
*/
|
||||||
|
DARK = 0;
|
||||||
|
/*
|
||||||
|
* Light
|
||||||
|
*/
|
||||||
|
LIGHT = 1;
|
||||||
|
/*
|
||||||
|
* Red
|
||||||
|
*/
|
||||||
|
RED = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Localization
|
||||||
|
*/
|
||||||
|
enum Language {
|
||||||
|
/*
|
||||||
|
* English
|
||||||
|
*/
|
||||||
|
ENGLISH = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* French
|
||||||
|
*/
|
||||||
|
FRENCH = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* German
|
||||||
|
*/
|
||||||
|
GERMAN = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Italian
|
||||||
|
*/
|
||||||
|
ITALIAN = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Portuguese
|
||||||
|
*/
|
||||||
|
PORTUGUESE = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Spanish
|
||||||
|
*/
|
||||||
|
SPANISH = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Swedish
|
||||||
|
*/
|
||||||
|
SWEDISH = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Finnish
|
||||||
|
*/
|
||||||
|
FINNISH = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Polish
|
||||||
|
*/
|
||||||
|
POLISH = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Turkish
|
||||||
|
*/
|
||||||
|
TURKISH = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Serbian
|
||||||
|
*/
|
||||||
|
SERBIAN = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Russian
|
||||||
|
*/
|
||||||
|
RUSSIAN = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dutch
|
||||||
|
*/
|
||||||
|
DUTCH = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Greek
|
||||||
|
*/
|
||||||
|
GREEK = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Norwegian
|
||||||
|
*/
|
||||||
|
NORWEGIAN = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Slovenian
|
||||||
|
*/
|
||||||
|
SLOVENIAN = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ukrainian
|
||||||
|
*/
|
||||||
|
UKRAINIAN = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Bulgarian
|
||||||
|
*/
|
||||||
|
BULGARIAN = 17;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Czech
|
||||||
|
*/
|
||||||
|
CZECH = 18;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Danish
|
||||||
|
*/
|
||||||
|
DANISH = 19;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Simplified Chinese (experimental)
|
||||||
|
*/
|
||||||
|
SIMPLIFIED_CHINESE = 30;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Traditional Chinese (experimental)
|
||||||
|
*/
|
||||||
|
TRADITIONAL_CHINESE = 31;
|
||||||
|
}
|
||||||
|
|
@ -6,11 +6,13 @@
|
||||||
|
|
||||||
*ChannelFile.channels max_count:8
|
*ChannelFile.channels max_count:8
|
||||||
|
|
||||||
*OEMStore.oem_text max_size:40
|
|
||||||
*OEMStore.oem_icon_bits max_size:2048
|
|
||||||
*OEMStore.oem_aes_key max_size:32
|
|
||||||
|
|
||||||
*DeviceState.node_remote_hardware_pins max_count:12
|
*DeviceState.node_remote_hardware_pins max_count:12
|
||||||
|
|
||||||
*NodeInfoLite.channel int_size:8
|
*NodeInfoLite.channel int_size:8
|
||||||
*NodeInfoLite.hops_away int_size:8
|
*NodeInfoLite.hops_away int_size:8
|
||||||
|
*NodeInfoLite.next_hop int_size:8
|
||||||
|
|
||||||
|
*UserLite.long_name max_size:40
|
||||||
|
*UserLite.short_name max_size:5
|
||||||
|
*UserLite.public_key max_size:32 # public key
|
||||||
|
*UserLite.macaddr max_size:6 fixed_length:true
|
||||||
|
|
@ -2,20 +2,177 @@ syntax = "proto3";
|
||||||
|
|
||||||
package meshtastic;
|
package meshtastic;
|
||||||
|
|
||||||
|
/* trunk-ignore(buf-lint/COMPILE) */
|
||||||
import "meshtastic/channel.proto";
|
import "meshtastic/channel.proto";
|
||||||
|
import "meshtastic/config.proto";
|
||||||
import "meshtastic/localonly.proto";
|
import "meshtastic/localonly.proto";
|
||||||
import "meshtastic/mesh.proto";
|
import "meshtastic/mesh.proto";
|
||||||
import "meshtastic/telemetry.proto";
|
import "meshtastic/telemetry.proto";
|
||||||
import "meshtastic/module_config.proto";
|
|
||||||
import "nanopb.proto";
|
import "nanopb.proto";
|
||||||
|
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "DeviceOnly";
|
option java_outer_classname = "DeviceOnly";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
option (nanopb_fileopt).include = "<vector>";
|
option (nanopb_fileopt).include = "<vector>";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Position with static location information only for NodeDBLite
|
||||||
|
*/
|
||||||
|
message PositionLite {
|
||||||
|
/*
|
||||||
|
* The new preferred location encoding, multiply by 1e-7 to get degrees
|
||||||
|
* in floating point
|
||||||
|
*/
|
||||||
|
sfixed32 latitude_i = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: REPLACE
|
||||||
|
*/
|
||||||
|
sfixed32 longitude_i = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In meters above MSL (but see issue #359)
|
||||||
|
*/
|
||||||
|
int32 altitude = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is usually not sent over the mesh (to save space), but it is sent
|
||||||
|
* from the phone so that the local device can set its RTC If it is sent over
|
||||||
|
* the mesh (because there are devices on the mesh without GPS), it will only
|
||||||
|
* be sent by devices which has a hardware GPS clock.
|
||||||
|
* seconds since 1970
|
||||||
|
*/
|
||||||
|
fixed32 time = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: REPLACE
|
||||||
|
*/
|
||||||
|
Position.LocSource location_source = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UserLite {
|
||||||
|
/*
|
||||||
|
* This is the addr of the radio.
|
||||||
|
*/
|
||||||
|
bytes macaddr = 1 [deprecated = true];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A full name for this user, i.e. "Kevin Hester"
|
||||||
|
*/
|
||||||
|
string long_name = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A VERY short name, ideally two characters.
|
||||||
|
* Suitable for a tiny OLED screen
|
||||||
|
*/
|
||||||
|
string short_name = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TBEAM, HELTEC, etc...
|
||||||
|
* Starting in 1.2.11 moved to hw_model enum in the NodeInfo object.
|
||||||
|
* Apps will still need the string here for older builds
|
||||||
|
* (so OTA update can find the right image), but if the enum is available it will be used instead.
|
||||||
|
*/
|
||||||
|
HardwareModel hw_model = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In some regions Ham radio operators have different bandwidth limitations than others.
|
||||||
|
* If this user is a licensed operator, set this flag.
|
||||||
|
* Also, "long_name" should be their licence number.
|
||||||
|
*/
|
||||||
|
bool is_licensed = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Indicates that the user's role in the mesh
|
||||||
|
*/
|
||||||
|
Config.DeviceConfig.Role role = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The public key of the user's device.
|
||||||
|
* This is sent out to other nodes on the mesh to allow them to compute a shared secret key.
|
||||||
|
*/
|
||||||
|
bytes public_key = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Whether or not the node can be messaged
|
||||||
|
*/
|
||||||
|
optional bool is_unmessagable = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NodeInfoLite {
|
||||||
|
/*
|
||||||
|
* The node number
|
||||||
|
*/
|
||||||
|
uint32 num = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The user info for this node
|
||||||
|
*/
|
||||||
|
UserLite user = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true.
|
||||||
|
* Position.time now indicates the last time we received a POSITION from that node.
|
||||||
|
*/
|
||||||
|
PositionLite position = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the Signal-to-noise ratio (SNR) of the last received message,
|
||||||
|
* as measured by the receiver. Return SNR of the last received message in dB
|
||||||
|
*/
|
||||||
|
float snr = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set to indicate the last time we received a packet from this node
|
||||||
|
*/
|
||||||
|
fixed32 last_heard = 5;
|
||||||
|
/*
|
||||||
|
* The latest device metrics for the node.
|
||||||
|
*/
|
||||||
|
DeviceMetrics device_metrics = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* local channel index we heard that node on. Only populated if its not the default channel.
|
||||||
|
*/
|
||||||
|
uint32 channel = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* True if we witnessed the node over MQTT instead of LoRA transport
|
||||||
|
*/
|
||||||
|
bool via_mqtt = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of hops away from us this node is (0 if direct neighbor)
|
||||||
|
*/
|
||||||
|
optional uint32 hops_away = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* True if node is in our favorites list
|
||||||
|
* Persists between NodeDB internal clean ups
|
||||||
|
*/
|
||||||
|
bool is_favorite = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* True if node is in our ignored list
|
||||||
|
* Persists between NodeDB internal clean ups
|
||||||
|
*/
|
||||||
|
bool is_ignored = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Last byte of the node number of the node that should be used as the next hop to reach this node.
|
||||||
|
*/
|
||||||
|
uint32 next_hop = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Bitfield for storing booleans.
|
||||||
|
* LSB 0 is_key_manually_verified
|
||||||
|
* LSB 1 is_muted
|
||||||
|
*/
|
||||||
|
uint32 bitfield = 13;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This message is never sent over the wire, but it is used for serializing DB
|
* This message is never sent over the wire, but it is used for serializing DB
|
||||||
* state to flash in the device code
|
* state to flash in the device code
|
||||||
|
|
@ -61,9 +218,10 @@ message DeviceState {
|
||||||
bool no_save = 9 [deprecated = true];
|
bool no_save = 9 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset.
|
* Previously used to manage GPS factory resets.
|
||||||
|
* Deprecated in 2.5.23
|
||||||
*/
|
*/
|
||||||
bool did_gps_reset = 11;
|
bool did_gps_reset = 11 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We keep the last received waypoint stored in the device flash,
|
* We keep the last received waypoint stored in the device flash,
|
||||||
|
|
@ -76,100 +234,20 @@ message DeviceState {
|
||||||
* The mesh's nodes with their available gpio pins for RemoteHardware module
|
* The mesh's nodes with their available gpio pins for RemoteHardware module
|
||||||
*/
|
*/
|
||||||
repeated NodeRemoteHardwarePin node_remote_hardware_pins = 13;
|
repeated NodeRemoteHardwarePin node_remote_hardware_pins = 13;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NodeDatabase {
|
||||||
|
/*
|
||||||
|
* A version integer used to invalidate old save files when we make
|
||||||
|
* incompatible changes This integer is set at build time and is private to
|
||||||
|
* NodeDB.cpp in the device code.
|
||||||
|
*/
|
||||||
|
uint32 version = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* New lite version of NodeDB to decrease memory footprint
|
* New lite version of NodeDB to decrease memory footprint
|
||||||
*/
|
*/
|
||||||
repeated NodeInfoLite node_db_lite = 14 [(nanopb).callback_datatype="std::vector<meshtastic_NodeInfoLite>"];
|
repeated NodeInfoLite nodes = 2 [(nanopb).callback_datatype = "std::vector<meshtastic_NodeInfoLite>"];
|
||||||
}
|
|
||||||
|
|
||||||
message NodeInfoLite {
|
|
||||||
/*
|
|
||||||
* The node number
|
|
||||||
*/
|
|
||||||
uint32 num = 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The user info for this node
|
|
||||||
*/
|
|
||||||
User user = 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true.
|
|
||||||
* Position.time now indicates the last time we received a POSITION from that node.
|
|
||||||
*/
|
|
||||||
PositionLite position = 3;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns the Signal-to-noise ratio (SNR) of the last received message,
|
|
||||||
* as measured by the receiver. Return SNR of the last received message in dB
|
|
||||||
*/
|
|
||||||
float snr = 4;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set to indicate the last time we received a packet from this node
|
|
||||||
*/
|
|
||||||
fixed32 last_heard = 5;
|
|
||||||
/*
|
|
||||||
* The latest device metrics for the node.
|
|
||||||
*/
|
|
||||||
DeviceMetrics device_metrics = 6;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* local channel index we heard that node on. Only populated if its not the default channel.
|
|
||||||
*/
|
|
||||||
uint32 channel = 7;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* True if we witnessed the node over MQTT instead of LoRA transport
|
|
||||||
*/
|
|
||||||
bool via_mqtt = 8;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Number of hops away from us this node is (0 if adjacent)
|
|
||||||
*/
|
|
||||||
uint32 hops_away = 9;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* True if node is in our favorites list
|
|
||||||
* Persists between NodeDB internal clean ups
|
|
||||||
*/
|
|
||||||
bool is_favorite = 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Position with static location information only for NodeDBLite
|
|
||||||
*/
|
|
||||||
message PositionLite {
|
|
||||||
/*
|
|
||||||
* The new preferred location encoding, multiply by 1e-7 to get degrees
|
|
||||||
* in floating point
|
|
||||||
*/
|
|
||||||
sfixed32 latitude_i = 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* TODO: REPLACE
|
|
||||||
*/
|
|
||||||
sfixed32 longitude_i = 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* In meters above MSL (but see issue #359)
|
|
||||||
*/
|
|
||||||
int32 altitude = 3;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is usually not sent over the mesh (to save space), but it is sent
|
|
||||||
* from the phone so that the local device can set its RTC If it is sent over
|
|
||||||
* the mesh (because there are devices on the mesh without GPS), it will only
|
|
||||||
* be sent by devices which has a hardware GPS clock.
|
|
||||||
* seconds since 1970
|
|
||||||
*/
|
|
||||||
fixed32 time = 4;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* TODO: REPLACE
|
|
||||||
*/
|
|
||||||
Position.LocSource location_source = 5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -190,82 +268,36 @@ message ChannelFile {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: REPLACE
|
* The on-disk backup of the node's preferences
|
||||||
*/
|
*/
|
||||||
enum ScreenFonts {
|
message BackupPreferences {
|
||||||
/*
|
/*
|
||||||
* TODO: REPLACE
|
* The version of the backup
|
||||||
*/
|
*/
|
||||||
FONT_SMALL = 0;
|
uint32 version = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: REPLACE
|
* The timestamp of the backup (if node has time)
|
||||||
*/
|
*/
|
||||||
FONT_MEDIUM = 1;
|
fixed32 timestamp = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: REPLACE
|
* The node's configuration
|
||||||
*/
|
*/
|
||||||
FONT_LARGE = 2;
|
LocalConfig config = 3;
|
||||||
}
|
|
||||||
|
/*
|
||||||
/*
|
* The node's module configuration
|
||||||
* This can be used for customizing the firmware distribution. If populated,
|
*/
|
||||||
* show a secondary bootup screen with custom logo and text for 2.5 seconds.
|
LocalModuleConfig module_config = 4;
|
||||||
*/
|
|
||||||
message OEMStore {
|
/*
|
||||||
/*
|
* The node's channels
|
||||||
* The Logo width in Px
|
*/
|
||||||
*/
|
ChannelFile channels = 5;
|
||||||
uint32 oem_icon_width = 1;
|
|
||||||
|
/*
|
||||||
/*
|
* The node's user (owner) information
|
||||||
* The Logo height in Px
|
*/
|
||||||
*/
|
User owner = 6;
|
||||||
uint32 oem_icon_height = 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The Logo in XBM bytechar format
|
|
||||||
*/
|
|
||||||
bytes oem_icon_bits = 3;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Use this font for the OEM text.
|
|
||||||
*/
|
|
||||||
ScreenFonts oem_font = 4;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Use this font for the OEM text.
|
|
||||||
*/
|
|
||||||
string oem_text = 5;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The default device encryption key, 16 or 32 byte
|
|
||||||
*/
|
|
||||||
bytes oem_aes_key = 6;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* A Preset LocalConfig to apply during factory reset
|
|
||||||
*/
|
|
||||||
LocalConfig oem_local_config = 7;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* A Preset LocalModuleConfig to apply during factory reset
|
|
||||||
*/
|
|
||||||
LocalModuleConfig oem_local_module_config = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* RemoteHardwarePins associated with a node
|
|
||||||
*/
|
|
||||||
message NodeRemoteHardwarePin {
|
|
||||||
/*
|
|
||||||
* The node_num exposing the available gpio pin
|
|
||||||
*/
|
|
||||||
uint32 node_num = 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The the available gpio pin for usage with RemoteHardware module
|
|
||||||
*/
|
|
||||||
RemoteHardwarePin pin = 2;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1
meshtastic/interdevice.options
Normal file
1
meshtastic/interdevice.options
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
*InterdeviceMessage.nmea max_size:1024
|
||||||
44
meshtastic/interdevice.proto
Normal file
44
meshtastic/interdevice.proto
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package meshtastic;
|
||||||
|
|
||||||
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
|
option java_outer_classname = "InterdeviceProtos";
|
||||||
|
option java_package = "org.meshtastic.proto";
|
||||||
|
option swift_prefix = "";
|
||||||
|
|
||||||
|
// encapsulate up to 1k of NMEA string data
|
||||||
|
|
||||||
|
enum MessageType {
|
||||||
|
ACK = 0;
|
||||||
|
COLLECT_INTERVAL = 160; // in ms
|
||||||
|
BEEP_ON = 161; // duration ms
|
||||||
|
BEEP_OFF = 162; // cancel prematurely
|
||||||
|
SHUTDOWN = 163;
|
||||||
|
POWER_ON = 164;
|
||||||
|
SCD41_TEMP = 176;
|
||||||
|
SCD41_HUMIDITY = 177;
|
||||||
|
SCD41_CO2 = 178;
|
||||||
|
AHT20_TEMP = 179;
|
||||||
|
AHT20_HUMIDITY = 180;
|
||||||
|
TVOC_INDEX = 181;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SensorData {
|
||||||
|
// The message type
|
||||||
|
MessageType type = 1;
|
||||||
|
// The sensor data, either as a float or an uint32
|
||||||
|
oneof data {
|
||||||
|
float float_value = 2;
|
||||||
|
uint32 uint32_value = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message InterdeviceMessage {
|
||||||
|
// The message data
|
||||||
|
oneof data {
|
||||||
|
string nmea = 1;
|
||||||
|
SensorData sensor = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8,7 +8,7 @@ import "meshtastic/module_config.proto";
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "LocalOnlyProtos";
|
option java_outer_classname = "LocalOnlyProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -58,6 +58,11 @@ message LocalConfig {
|
||||||
* NodeDB.cpp in the device code.
|
* NodeDB.cpp in the device code.
|
||||||
*/
|
*/
|
||||||
uint32 version = 8;
|
uint32 version = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The part of the config that is specific to Security settings
|
||||||
|
*/
|
||||||
|
Config.SecurityConfig security = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
message LocalModuleConfig {
|
message LocalModuleConfig {
|
||||||
|
|
@ -126,6 +131,21 @@ message LocalModuleConfig {
|
||||||
*/
|
*/
|
||||||
ModuleConfig.PaxcounterConfig paxcounter = 14;
|
ModuleConfig.PaxcounterConfig paxcounter = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* StatusMessage Config
|
||||||
|
*/
|
||||||
|
ModuleConfig.StatusMessageConfig statusmessage = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The part of the config that is specific to the Traffic Management module
|
||||||
|
*/
|
||||||
|
ModuleConfig.TrafficManagementConfig traffic_management = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAK Config
|
||||||
|
*/
|
||||||
|
ModuleConfig.TAKConfig tak = 17;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A version integer used to invalidate old save files when we make
|
* A version integer used to invalidate old save files when we make
|
||||||
* incompatible changes This integer is set at build time and is private to
|
* incompatible changes This integer is set at build time and is private to
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,37 @@
|
||||||
|
|
||||||
*macaddr max_size:6 fixed_length:true # macaddrs
|
*macaddr max_size:6 fixed_length:true # macaddrs
|
||||||
*id max_size:16 # node id strings
|
*id max_size:16 # node id strings
|
||||||
|
*public_key max_size:32 # public key
|
||||||
|
|
||||||
*User.long_name max_size:40
|
*User.long_name max_size:40
|
||||||
*User.short_name max_size:5
|
*User.short_name max_size:5
|
||||||
|
|
||||||
*RouteDiscovery.route max_count:8
|
*RouteDiscovery.route max_count:8
|
||||||
|
*RouteDiscovery.snr_towards max_count:8
|
||||||
|
*RouteDiscovery.snr_towards int_size:8
|
||||||
|
*RouteDiscovery.route_back max_count:8
|
||||||
|
*RouteDiscovery.snr_back max_count:8
|
||||||
|
*RouteDiscovery.snr_back int_size:8
|
||||||
|
|
||||||
# note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is
|
# note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is
|
||||||
# outside of this envelope
|
# outside of this envelope
|
||||||
*Data.payload max_size:237
|
*Data.payload max_size:233
|
||||||
|
*Data.bitfield int_size:8
|
||||||
|
|
||||||
*NodeInfo.channel int_size:8
|
*NodeInfo.channel int_size:8
|
||||||
*NodeInfo.hops_away int_size:8
|
*NodeInfo.hops_away int_size:8
|
||||||
|
|
||||||
# Big enough for 1.2.28.568032c-d
|
# Big enough for 1.2.28.568032c-d
|
||||||
*MyNodeInfo.firmware_version max_size:18
|
*MyNodeInfo.firmware_version max_size:18
|
||||||
|
*MyNodeInfo.device_id max_size:16
|
||||||
|
*MyNodeInfo.pio_env max_size:40
|
||||||
|
|
||||||
*MyNodeInfo.air_period_tx max_count:8
|
*MyNodeInfo.air_period_tx max_count:8
|
||||||
*MyNodeInfo.air_period_rx max_count:8
|
*MyNodeInfo.air_period_rx max_count:8
|
||||||
|
|
||||||
|
*MyNodeInfo.firmware_edition int_size:8
|
||||||
|
*MyNodeInfo.nodedb_count int_size:16
|
||||||
|
|
||||||
# Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256
|
# Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256
|
||||||
# here because we might need to fill with zeros for padding to encryption block size (16 bytes per block)
|
# here because we might need to fill with zeros for padding to encryption block size (16 bytes per block)
|
||||||
*MeshPacket.encrypted max_size:256
|
*MeshPacket.encrypted max_size:256
|
||||||
|
|
@ -29,6 +41,8 @@
|
||||||
*MeshPacket.hop_limit int_size:8
|
*MeshPacket.hop_limit int_size:8
|
||||||
*MeshPacket.hop_start int_size:8
|
*MeshPacket.hop_start int_size:8
|
||||||
*MeshPacket.channel int_size:8
|
*MeshPacket.channel int_size:8
|
||||||
|
*MeshPacket.next_hop int_size:8
|
||||||
|
*MeshPacket.relay_node int_size:8
|
||||||
|
|
||||||
*QueueStatus.res int_size:8
|
*QueueStatus.res int_size:8
|
||||||
*QueueStatus.free int_size:8
|
*QueueStatus.free int_size:8
|
||||||
|
|
@ -40,14 +54,35 @@
|
||||||
|
|
||||||
*Routing.variant anonymous_oneof:true
|
*Routing.variant anonymous_oneof:true
|
||||||
|
|
||||||
*LogRecord.message max_size:64
|
*LogRecord.message max_size:384
|
||||||
*LogRecord.source max_size:8
|
*LogRecord.source max_size:32
|
||||||
|
|
||||||
|
*FileInfo.file_name max_size:228
|
||||||
|
|
||||||
|
*ClientNotification.message max_size:400
|
||||||
|
|
||||||
|
*KeyVerificationNumberInform.remote_longname max_size:40
|
||||||
|
*KeyVerificationNumberRequest.remote_longname max_size:40
|
||||||
|
*KeyVerificationFinal.remote_longname max_size:40
|
||||||
|
*KeyVerificationFinal.verification_characters max_size:10
|
||||||
|
|
||||||
|
*KeyVerification.hash1 max_size:32
|
||||||
|
*KeyVerification.hash2 max_size:32
|
||||||
|
|
||||||
|
*StoreForwardPlusPlus.message_hash max_size:32
|
||||||
|
*StoreForwardPlusPlus.commit_hash max_size:32
|
||||||
|
*StoreForwardPlusPlus.root_hash max_size:32
|
||||||
|
*StoreForwardPlusPlus.message max_size:240
|
||||||
|
|
||||||
|
*RemoteShell.payload max_size:200
|
||||||
|
|
||||||
|
*StatusMessage.status max_size:80
|
||||||
|
|
||||||
# MyMessage.name max_size:40
|
# MyMessage.name max_size:40
|
||||||
# or fixed_length or fixed_count, or max_count
|
# or fixed_length or fixed_count, or max_count
|
||||||
|
|
||||||
#This value may want to be a few bytes smaller to compensate for the parent fields.
|
#This value may want to be a few bytes smaller to compensate for the parent fields.
|
||||||
*Compressed.data max_size:237
|
*Compressed.data max_size:233
|
||||||
|
|
||||||
*Waypoint.name max_size:30
|
*Waypoint.name max_size:30
|
||||||
*Waypoint.description max_size:100
|
*Waypoint.description max_size:100
|
||||||
|
|
@ -59,3 +94,7 @@
|
||||||
*MqttClientProxyMessage.topic max_size:60
|
*MqttClientProxyMessage.topic max_size:60
|
||||||
*MqttClientProxyMessage.data max_size:435
|
*MqttClientProxyMessage.data max_size:435
|
||||||
*MqttClientProxyMessage.text max_size:435
|
*MqttClientProxyMessage.text max_size:435
|
||||||
|
|
||||||
|
*ChunkedPayload.chunk_count int_size:16
|
||||||
|
*ChunkedPayload.chunk_index int_size:16
|
||||||
|
*ChunkedPayload.payload_chunk max_size:228
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
*MQTTConfig.address max_size:64
|
*MQTTConfig.address max_size:64
|
||||||
*MQTTConfig.username max_size:64
|
*MQTTConfig.username max_size:64
|
||||||
*MQTTConfig.password max_size:64
|
*MQTTConfig.password max_size:32
|
||||||
*MQTTConfig.root max_size:32
|
*MQTTConfig.root max_size:32
|
||||||
|
|
||||||
*AudioConfig.ptt_pin int_size:8
|
*AudioConfig.ptt_pin int_size:8
|
||||||
|
|
@ -26,3 +26,6 @@
|
||||||
|
|
||||||
*DetectionSensorConfig.monitor_pin int_size:8
|
*DetectionSensorConfig.monitor_pin int_size:8
|
||||||
*DetectionSensorConfig.name max_size:20
|
*DetectionSensorConfig.name max_size:20
|
||||||
|
*DetectionSensorConfig.detection_trigger_type max_size:8
|
||||||
|
|
||||||
|
*StatusMessageConfig.node_status max_size:80
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@ syntax = "proto3";
|
||||||
|
|
||||||
package meshtastic;
|
package meshtastic;
|
||||||
|
|
||||||
|
import "meshtastic/atak.proto";
|
||||||
|
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "ModuleConfigProtos";
|
option java_outer_classname = "ModuleConfigProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -95,6 +97,11 @@ message ModuleConfig {
|
||||||
* Bits of precision for the location sent (default of 32 is full precision).
|
* Bits of precision for the location sent (default of 32 is full precision).
|
||||||
*/
|
*/
|
||||||
uint32 position_precision = 2;
|
uint32 position_precision = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Whether we have opted-in to report our location to the map
|
||||||
|
*/
|
||||||
|
bool should_report_location = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -128,31 +135,56 @@ message ModuleConfig {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interval in seconds of how often we should try to send our
|
* Interval in seconds of how often we should try to send our
|
||||||
* Neighbor Info to the mesh
|
* Neighbor Info (minimum is 14400, i.e., 4 hours)
|
||||||
*/
|
*/
|
||||||
uint32 update_interval = 2;
|
uint32 update_interval = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Whether in addition to sending it to MQTT and the PhoneAPI, our NeighborInfo should be transmitted over LoRa.
|
||||||
|
* Note that this is not available on a channel with default key and name.
|
||||||
|
*/
|
||||||
|
bool transmit_over_lora = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Detection Sensor Module Config
|
* Detection Sensor Module Config
|
||||||
*/
|
*/
|
||||||
message DetectionSensorConfig {
|
message DetectionSensorConfig {
|
||||||
|
enum TriggerType {
|
||||||
|
// Event is triggered if pin is low
|
||||||
|
LOGIC_LOW = 0;
|
||||||
|
// Event is triggered if pin is high
|
||||||
|
LOGIC_HIGH = 1;
|
||||||
|
// Event is triggered when pin goes high to low
|
||||||
|
FALLING_EDGE = 2;
|
||||||
|
// Event is triggered when pin goes low to high
|
||||||
|
RISING_EDGE = 3;
|
||||||
|
// Event is triggered on every pin state change, low is considered to be
|
||||||
|
// "active"
|
||||||
|
EITHER_EDGE_ACTIVE_LOW = 4;
|
||||||
|
// Event is triggered on every pin state change, high is considered to be
|
||||||
|
// "active"
|
||||||
|
EITHER_EDGE_ACTIVE_HIGH = 5;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Whether the Module is enabled
|
* Whether the Module is enabled
|
||||||
*/
|
*/
|
||||||
bool enabled = 1;
|
bool enabled = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interval in seconds of how often we can send a message to the mesh when a state change is detected
|
* Interval in seconds of how often we can send a message to the mesh when a
|
||||||
|
* trigger event is detected
|
||||||
*/
|
*/
|
||||||
uint32 minimum_broadcast_secs = 2;
|
uint32 minimum_broadcast_secs = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interval in seconds of how often we should send a message to the mesh with the current state regardless of changes
|
* Interval in seconds of how often we should send a message to the mesh
|
||||||
* When set to 0, only state changes will be broadcasted
|
* with the current state regardless of trigger events When set to 0, only
|
||||||
* Works as a sort of status heartbeat for peace of mind
|
* trigger events will be broadcasted Works as a sort of status heartbeat
|
||||||
|
* for peace of mind
|
||||||
*/
|
*/
|
||||||
uint32 state_broadcast_secs = 3;
|
uint32 state_broadcast_secs = 3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send ASCII bell with alert message
|
* Send ASCII bell with alert message
|
||||||
* Useful for triggering ext. notification on bell
|
* Useful for triggering ext. notification on bell
|
||||||
|
|
@ -172,10 +204,9 @@ message ModuleConfig {
|
||||||
uint32 monitor_pin = 6;
|
uint32 monitor_pin = 6;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Whether or not the GPIO pin state detection is triggered on HIGH (1)
|
* The type of trigger event to be used
|
||||||
* Otherwise LOW (0)
|
|
||||||
*/
|
*/
|
||||||
bool detection_triggered_high = 7;
|
TriggerType detection_trigger_type = 7;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Whether or not use INPUT_PULLUP mode for GPIO pin
|
* Whether or not use INPUT_PULLUP mode for GPIO pin
|
||||||
|
|
@ -254,6 +285,92 @@ message ModuleConfig {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32 paxcounter_update_interval = 2;
|
uint32 paxcounter_update_interval = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* WiFi RSSI threshold. Defaults to -80
|
||||||
|
*/
|
||||||
|
int32 wifi_threshold = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BLE RSSI threshold. Defaults to -80
|
||||||
|
*/
|
||||||
|
int32 ble_threshold = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Config for the Traffic Management module.
|
||||||
|
* Provides packet inspection and traffic shaping to help reduce channel utilization
|
||||||
|
*/
|
||||||
|
message TrafficManagementConfig {
|
||||||
|
/*
|
||||||
|
* Master enable for traffic management module
|
||||||
|
*/
|
||||||
|
bool enabled = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable position deduplication to drop redundant position broadcasts
|
||||||
|
*/
|
||||||
|
bool position_dedup_enabled = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of bits of precision for position deduplication (0-32)
|
||||||
|
*/
|
||||||
|
uint32 position_precision_bits = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Minimum interval in seconds between position updates from the same node
|
||||||
|
*/
|
||||||
|
uint32 position_min_interval_secs = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable direct response to NodeInfo requests from local cache
|
||||||
|
*/
|
||||||
|
bool nodeinfo_direct_response = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Minimum hop distance from requestor before responding to NodeInfo requests
|
||||||
|
*/
|
||||||
|
uint32 nodeinfo_direct_response_max_hops = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable per-node rate limiting to throttle chatty nodes
|
||||||
|
*/
|
||||||
|
bool rate_limit_enabled = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Time window in seconds for rate limiting calculations
|
||||||
|
*/
|
||||||
|
uint32 rate_limit_window_secs = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maximum packets allowed per node within the rate limit window
|
||||||
|
*/
|
||||||
|
uint32 rate_limit_max_packets = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable dropping of unknown/undecryptable packets per rate_limit_window_secs
|
||||||
|
*/
|
||||||
|
bool drop_unknown_enabled = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of unknown packets before dropping from a node
|
||||||
|
*/
|
||||||
|
uint32 unknown_packet_threshold = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set hop_limit to 0 for relayed telemetry broadcasts (own packets unaffected)
|
||||||
|
*/
|
||||||
|
bool exhaust_hop_telemetry = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set hop_limit to 0 for relayed position broadcasts (own packets unaffected)
|
||||||
|
*/
|
||||||
|
bool exhaust_hop_position = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Preserve hop_limit for router-to-router traffic
|
||||||
|
*/
|
||||||
|
bool router_preserve_hops = 14;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -293,6 +410,17 @@ message ModuleConfig {
|
||||||
NMEA = 4;
|
NMEA = 4;
|
||||||
// NMEA messages specifically tailored for CalTopo
|
// NMEA messages specifically tailored for CalTopo
|
||||||
CALTOPO = 5;
|
CALTOPO = 5;
|
||||||
|
// Ecowitt WS85 weather station
|
||||||
|
WS85 = 6;
|
||||||
|
// VE.Direct is a serial protocol used by Victron Energy products
|
||||||
|
// https://beta.ivc.no/wiki/index.php/Victron_VE_Direct_DIY_Cable
|
||||||
|
VE_DIRECT = 7;
|
||||||
|
// Used to configure and view some parameters of MeshSolar.
|
||||||
|
// https://heltec.org/project/meshsolar/
|
||||||
|
MS_CONFIG = 8;
|
||||||
|
// Logs mesh traffic to the serial pins, ideal for logging via openLog or similar.
|
||||||
|
LOG = 9; // includes other packets
|
||||||
|
LOGTEXT = 10; // only text (channel & DM)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -457,6 +585,11 @@ message ModuleConfig {
|
||||||
* TODO: REPLACE
|
* TODO: REPLACE
|
||||||
*/
|
*/
|
||||||
uint32 history_return_window = 5;
|
uint32 history_return_window = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set to true to let this node act as a server that stores received messages and resends them upon request.
|
||||||
|
*/
|
||||||
|
bool is_server = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -478,6 +611,12 @@ message ModuleConfig {
|
||||||
* ESP32 Only
|
* ESP32 Only
|
||||||
*/
|
*/
|
||||||
bool save = 3;
|
bool save = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Bool indicating that the node should cleanup / destroy it's RangeTest.csv file.
|
||||||
|
* ESP32 Only
|
||||||
|
*/
|
||||||
|
bool clear_on_reboot = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -526,35 +665,52 @@ message ModuleConfig {
|
||||||
uint32 air_quality_interval = 7;
|
uint32 air_quality_interval = 7;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interval in seconds of how often we should try to send our
|
* Enable/disable Power metrics
|
||||||
* air quality metrics to the mesh
|
|
||||||
*/
|
*/
|
||||||
bool power_measurement_enabled = 8;
|
bool power_measurement_enabled = 8;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interval in seconds of how often we should try to send our
|
* Interval in seconds of how often we should try to send our
|
||||||
* air quality metrics to the mesh
|
* power metrics to the mesh
|
||||||
*/
|
*/
|
||||||
uint32 power_update_interval = 9;
|
uint32 power_update_interval = 9;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interval in seconds of how often we should try to send our
|
* Enable/Disable the power measurement module on-device display
|
||||||
* air quality metrics to the mesh
|
|
||||||
*/
|
*/
|
||||||
bool power_screen_enabled = 10;
|
bool power_screen_enabled = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Preferences for the (Health) Telemetry Module
|
||||||
|
* Enable/Disable the telemetry measurement module measurement collection
|
||||||
|
*/
|
||||||
|
bool health_measurement_enabled = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Interval in seconds of how often we should try to send our
|
||||||
|
* health metrics to the mesh
|
||||||
|
*/
|
||||||
|
uint32 health_update_interval = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable/Disable the health telemetry module on-device display
|
||||||
|
*/
|
||||||
|
bool health_screen_enabled = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable/Disable the device telemetry module to send metrics to the mesh
|
||||||
|
* Note: We will still send telemtry to the connected phone / client every minute over the API
|
||||||
|
*/
|
||||||
|
bool device_telemetry_enabled = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable/Disable the air quality telemetry measurement module on-device display
|
||||||
|
*/
|
||||||
|
bool air_quality_screen_enabled = 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: REPLACE
|
* Canned Messages Module Config
|
||||||
*/
|
*/
|
||||||
message CannedMessageConfig {
|
message CannedMessageConfig {
|
||||||
/*
|
/*
|
||||||
|
|
@ -645,13 +801,13 @@ message ModuleConfig {
|
||||||
/*
|
/*
|
||||||
* Enable/disable CannedMessageModule.
|
* Enable/disable CannedMessageModule.
|
||||||
*/
|
*/
|
||||||
bool enabled = 9;
|
bool enabled = 9 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Input event origin accepted by the canned message module.
|
* Input event origin accepted by the canned message module.
|
||||||
* Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any"
|
* Can be e.g. "rotEnc1", "upDownEnc1", "scanAndSelect", "cardkb", "serialkb", or keyword "_any"
|
||||||
*/
|
*/
|
||||||
string allow_input_source = 10;
|
string allow_input_source = 10 [deprecated = true];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CannedMessageModule also sends a bell character with the messages.
|
* CannedMessageModule also sends a bell character with the messages.
|
||||||
|
|
@ -665,7 +821,6 @@ message ModuleConfig {
|
||||||
Initially created for the RAK14001 RGB LED module.
|
Initially created for the RAK14001 RGB LED module.
|
||||||
*/
|
*/
|
||||||
message AmbientLightingConfig {
|
message AmbientLightingConfig {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets LED to on or off.
|
* Sets LED to on or off.
|
||||||
*/
|
*/
|
||||||
|
|
@ -692,6 +847,16 @@ message ModuleConfig {
|
||||||
uint32 blue = 5;
|
uint32 blue = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* StatusMessage config - Allows setting a status message for a node to periodically rebroadcast
|
||||||
|
*/
|
||||||
|
message StatusMessageConfig {
|
||||||
|
/*
|
||||||
|
* The actual status string
|
||||||
|
*/
|
||||||
|
string node_status = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: REPLACE
|
* TODO: REPLACE
|
||||||
*/
|
*/
|
||||||
|
|
@ -760,6 +925,37 @@ message ModuleConfig {
|
||||||
* TODO: REPLACE
|
* TODO: REPLACE
|
||||||
*/
|
*/
|
||||||
PaxcounterConfig paxcounter = 13;
|
PaxcounterConfig paxcounter = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: REPLACE
|
||||||
|
*/
|
||||||
|
StatusMessageConfig statusmessage = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Traffic management module config for mesh network optimization
|
||||||
|
*/
|
||||||
|
TrafficManagementConfig traffic_management = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAK team/role configuration for TAK_TRACKER
|
||||||
|
*/
|
||||||
|
TAKConfig tak = 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAK team/role configuration
|
||||||
|
*/
|
||||||
|
message TAKConfig {
|
||||||
|
/*
|
||||||
|
* Team color.
|
||||||
|
* Default Unspecifed_Color -> firmware uses Cyan
|
||||||
|
*/
|
||||||
|
Team team = 1;
|
||||||
|
/*
|
||||||
|
* Member role.
|
||||||
|
* Default Unspecifed -> firmware uses TeamMember
|
||||||
|
*/
|
||||||
|
MemberRole role = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@ syntax = "proto3";
|
||||||
|
|
||||||
package meshtastic;
|
package meshtastic;
|
||||||
|
|
||||||
import "meshtastic/mesh.proto";
|
|
||||||
import "meshtastic/config.proto";
|
import "meshtastic/config.proto";
|
||||||
|
import "meshtastic/mesh.proto";
|
||||||
|
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "MQTTProtos";
|
option java_outer_classname = "MQTTProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -103,4 +103,10 @@ message MapReport {
|
||||||
* Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT)
|
* Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT)
|
||||||
*/
|
*/
|
||||||
uint32 num_online_local_nodes = 13;
|
uint32 num_online_local_nodes = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* User has opted in to share their location (map report) with the mqtt server
|
||||||
|
* Controlled by map_report.should_report_location
|
||||||
|
*/
|
||||||
|
bool has_opted_report_location = 14;
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "PaxcountProtos";
|
option java_outer_classname = "PaxcountProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "Portnums";
|
option java_outer_classname = "Portnums";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -105,6 +105,21 @@ enum PortNum {
|
||||||
*/
|
*/
|
||||||
DETECTION_SENSOR_APP = 10;
|
DETECTION_SENSOR_APP = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Same as Text Message but used for critical alerts.
|
||||||
|
*/
|
||||||
|
ALERT_APP = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Module/port for handling key verification requests.
|
||||||
|
*/
|
||||||
|
KEY_VERIFICATION_APP = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Module/port for handling primitive remote shell access.
|
||||||
|
*/
|
||||||
|
REMOTE_SHELL_APP = 13;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Provides a 'ping' service that replies to any packet it receives.
|
* Provides a 'ping' service that replies to any packet it receives.
|
||||||
* Also serves as a small example module.
|
* Also serves as a small example module.
|
||||||
|
|
@ -124,6 +139,22 @@ enum PortNum {
|
||||||
*/
|
*/
|
||||||
PAXCOUNTER_APP = 34;
|
PAXCOUNTER_APP = 34;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Store and Forward++ module included in the firmware
|
||||||
|
* ENCODING: protobuf
|
||||||
|
* This module is specifically for Native Linux nodes, and provides a Git-style
|
||||||
|
* chain of messages.
|
||||||
|
*/
|
||||||
|
STORE_FORWARD_PLUSPLUS_APP = 35;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Node Status module
|
||||||
|
* ENCODING: protobuf
|
||||||
|
* This module allows setting an extra string of status for a node.
|
||||||
|
* Broadcasts on change and on a timer, possibly once a day.
|
||||||
|
*/
|
||||||
|
NODE_STATUS_APP = 36;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Provides a hardware serial interface to send and receive from the Meshtastic network.
|
* Provides a hardware serial interface to send and receive from the Meshtastic network.
|
||||||
* Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic
|
* Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic
|
||||||
|
|
@ -174,7 +205,7 @@ enum PortNum {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Provides a traceroute functionality to show the route a packet towards
|
* Provides a traceroute functionality to show the route a packet towards
|
||||||
* a certain destination would take on the mesh.
|
* a certain destination would take on the mesh. Contains a RouteDiscovery message as payload.
|
||||||
* ENCODING: Protobuf
|
* ENCODING: Protobuf
|
||||||
*/
|
*/
|
||||||
TRACEROUTE_APP = 70;
|
TRACEROUTE_APP = 70;
|
||||||
|
|
@ -196,6 +227,44 @@ enum PortNum {
|
||||||
*/
|
*/
|
||||||
MAP_REPORT_APP = 73;
|
MAP_REPORT_APP = 73;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PowerStress based monitoring support (for automated power consumption testing)
|
||||||
|
*/
|
||||||
|
POWERSTRESS_APP = 74;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LoraWAN Payload Transport
|
||||||
|
* ENCODING: compact binary LoRaWAN uplink (10-byte RF metadata + PHY payload) - see LoRaWANBridgeModule
|
||||||
|
*/
|
||||||
|
LORAWAN_BRIDGE = 75;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reticulum Network Stack Tunnel App
|
||||||
|
* ENCODING: Fragmented RNS Packet. Handled by Meshtastic RNS interface
|
||||||
|
*/
|
||||||
|
RETICULUM_TUNNEL_APP = 76;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* App for transporting Cayenne Low Power Payload, popular for LoRaWAN sensor nodes. Offers ability to send
|
||||||
|
* arbitrary telemetry over meshtastic that is not covered by telemetry.proto
|
||||||
|
* ENCODING: CayenneLLP
|
||||||
|
*/
|
||||||
|
CAYENNE_APP = 77;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ATAK Plugin V2
|
||||||
|
* Portnum for payloads from the official Meshtastic ATAK plugin using
|
||||||
|
* TAKPacketV2 with zstd dictionary compression.
|
||||||
|
*/
|
||||||
|
ATAK_PLUGIN_V2 = 78;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GroupAlarm integration
|
||||||
|
* Used for transporting GroupAlarm-related messages between Meshtastic nodes
|
||||||
|
* and companion applications/services.
|
||||||
|
*/
|
||||||
|
GROUPALARM_APP = 112;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Private applications should use portnums >= 256.
|
* Private applications should use portnums >= 256.
|
||||||
* To simplify initial development and testing you can use "PRIVATE_APP"
|
* To simplify initial development and testing you can use "PRIVATE_APP"
|
||||||
|
|
|
||||||
103
meshtastic/powermon.proto
Normal file
103
meshtastic/powermon.proto
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package meshtastic;
|
||||||
|
|
||||||
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
|
option java_outer_classname = "PowerMonProtos";
|
||||||
|
option java_package = "org.meshtastic.proto";
|
||||||
|
option swift_prefix = "";
|
||||||
|
|
||||||
|
/* Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs).
|
||||||
|
* But we wrap our State enum in this message to effectively nest a namespace (without our linter yelling at us)
|
||||||
|
*/
|
||||||
|
message PowerMon {
|
||||||
|
/* Any significant power changing event in meshtastic should be tagged with a powermon state transition.
|
||||||
|
* If you are making new meshtastic features feel free to add new entries at the end of this definition.
|
||||||
|
*/
|
||||||
|
enum State {
|
||||||
|
None = 0;
|
||||||
|
|
||||||
|
CPU_DeepSleep = 0x01;
|
||||||
|
CPU_LightSleep = 0x02;
|
||||||
|
|
||||||
|
/*
|
||||||
|
The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only
|
||||||
|
occasionally. In cases where that rail has multiple devices on it we usually want to have logging on
|
||||||
|
the state of that rail as an independent record.
|
||||||
|
For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen.
|
||||||
|
|
||||||
|
The log messages will be short and complete (see PowerMon.Event in the protobufs for details).
|
||||||
|
something like "S:PM:C,0x00001234,REASON" where the hex number is the bitmask of all current states.
|
||||||
|
(We use a bitmask for states so that if a log message gets lost it won't be fatal)
|
||||||
|
*/
|
||||||
|
Vext1_On = 0x04;
|
||||||
|
|
||||||
|
Lora_RXOn = 0x08;
|
||||||
|
Lora_TXOn = 0x10;
|
||||||
|
Lora_RXActive = 0x20;
|
||||||
|
BT_On = 0x40;
|
||||||
|
LED_On = 0x80;
|
||||||
|
|
||||||
|
Screen_On = 0x100;
|
||||||
|
Screen_Drawing = 0x200;
|
||||||
|
Wifi_On = 0x400;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPS is actively trying to find our location
|
||||||
|
* See GPSPowerState for more details
|
||||||
|
*/
|
||||||
|
GPS_Active = 0x800;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PowerStress testing support via the C++ PowerStress module
|
||||||
|
*/
|
||||||
|
message PowerStressMessage {
|
||||||
|
/*
|
||||||
|
* What operation would we like the UUT to perform.
|
||||||
|
* note: senders should probably set want_response in their request packets, so that they can know when the state
|
||||||
|
* machine has started processing their request
|
||||||
|
*/
|
||||||
|
enum Opcode {
|
||||||
|
/*
|
||||||
|
* Unset/unused
|
||||||
|
*/
|
||||||
|
UNSET = 0;
|
||||||
|
|
||||||
|
PRINT_INFO = 1; // Print board version slog and send an ack that we are alive and ready to process commands
|
||||||
|
FORCE_QUIET = 2; // Try to turn off all automatic processing of packets, screen, sleeping, etc (to make it easier to measure in isolation)
|
||||||
|
END_QUIET = 3; // Stop powerstress processing - probably by just rebooting the board
|
||||||
|
|
||||||
|
SCREEN_ON = 16; // Turn the screen on
|
||||||
|
SCREEN_OFF = 17; // Turn the screen off
|
||||||
|
|
||||||
|
CPU_IDLE = 32; // Let the CPU run but we assume mostly idling for num_seconds
|
||||||
|
CPU_DEEPSLEEP = 33; // Force deep sleep for FIXME seconds
|
||||||
|
CPU_FULLON = 34; // Spin the CPU as fast as possible for num_seconds
|
||||||
|
|
||||||
|
LED_ON = 48; // Turn the LED on for num_seconds (and leave it on - for baseline power measurement purposes)
|
||||||
|
LED_OFF = 49; // Force the LED off for num_seconds
|
||||||
|
|
||||||
|
LORA_OFF = 64; // Completely turn off the LORA radio for num_seconds
|
||||||
|
LORA_TX = 65; // Send Lora packets for num_seconds
|
||||||
|
LORA_RX = 66; // Receive Lora packets for num_seconds (node will be mostly just listening, unless an external agent is helping stress this by sending packets on the current channel)
|
||||||
|
|
||||||
|
BT_OFF = 80; // Turn off the BT radio for num_seconds
|
||||||
|
BT_ON = 81; // Turn on the BT radio for num_seconds
|
||||||
|
|
||||||
|
WIFI_OFF = 96; // Turn off the WIFI radio for num_seconds
|
||||||
|
WIFI_ON = 97; // Turn on the WIFI radio for num_seconds
|
||||||
|
|
||||||
|
GPS_OFF = 112; // Turn off the GPS radio for num_seconds
|
||||||
|
GPS_ON = 113; // Turn on the GPS radio for num_seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* What type of HardwareMessage is this?
|
||||||
|
*/
|
||||||
|
Opcode cmd = 1;
|
||||||
|
|
||||||
|
float num_seconds = 2;
|
||||||
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "RemoteHardware";
|
option java_outer_classname = "RemoteHardware";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
*RTTTLConfig.ringtone max_size:230
|
*RTTTLConfig.ringtone max_size:231
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "RTTTLConfigProtos";
|
option java_outer_classname = "RTTTLConfigProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
*StoreAndForward.text max_size:237
|
*StoreAndForward.text max_size:233
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "StoreAndForwardProtos";
|
option java_outer_classname = "StoreAndForwardProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,19 @@
|
||||||
# options for nanopb
|
# options for nanopb
|
||||||
# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
|
# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
|
||||||
|
|
||||||
|
*EnvironmentMetrics.iaq int_size:16
|
||||||
|
*EnvironmentMetrics.wind_direction int_size:16
|
||||||
|
*EnvironmentMetrics.soil_moisture int_size:8
|
||||||
|
*EnvironmentMetrics.one_wire_temperature max_count:8
|
||||||
|
|
||||||
|
*LocalStats.num_online_nodes int_size:16
|
||||||
|
*LocalStats.num_total_nodes int_size:16
|
||||||
|
*LocalStats.num_tx_dropped int_size:16
|
||||||
|
|
||||||
|
*HealthMetrics.heart_bpm int_size:8
|
||||||
|
*HealthMetrics.spO2 int_size:8
|
||||||
|
|
||||||
|
*HostMetrics.load1 int_size:16
|
||||||
|
*HostMetrics.load5 int_size:16
|
||||||
|
*HostMetrics.load15 int_size:16
|
||||||
|
*HostMetrics.user_string max_size:200
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "TelemetryProtos";
|
option java_outer_classname = "TelemetryProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -15,22 +15,27 @@ message DeviceMetrics {
|
||||||
/*
|
/*
|
||||||
* 0-100 (>100 means powered)
|
* 0-100 (>100 means powered)
|
||||||
*/
|
*/
|
||||||
uint32 battery_level = 1;
|
optional uint32 battery_level = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Voltage measured
|
* Voltage measured
|
||||||
*/
|
*/
|
||||||
float voltage = 2;
|
optional float voltage = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
|
* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
|
||||||
*/
|
*/
|
||||||
float channel_utilization = 3;
|
optional float channel_utilization = 3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Percent of airtime for transmission used within the last hour.
|
* Percent of airtime for transmission used within the last hour.
|
||||||
*/
|
*/
|
||||||
float air_util_tx = 4;
|
optional float air_util_tx = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* How long the device has been running since the last reboot (in seconds)
|
||||||
|
*/
|
||||||
|
optional uint32 uptime_seconds = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -40,32 +45,119 @@ message EnvironmentMetrics {
|
||||||
/*
|
/*
|
||||||
* Temperature measured
|
* Temperature measured
|
||||||
*/
|
*/
|
||||||
float temperature = 1;
|
optional float temperature = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Relative humidity percent measured
|
* Relative humidity percent measured
|
||||||
*/
|
*/
|
||||||
float relative_humidity = 2;
|
optional float relative_humidity = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Barometric pressure in hPA measured
|
* Barometric pressure in hPA measured
|
||||||
*/
|
*/
|
||||||
float barometric_pressure = 3;
|
optional float barometric_pressure = 3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gas resistance in MOhm measured
|
* Gas resistance in MOhm measured
|
||||||
*/
|
*/
|
||||||
float gas_resistance = 4;
|
optional float gas_resistance = 4;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
|
* Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
|
||||||
*/
|
*/
|
||||||
float voltage = 5;
|
optional float voltage = 5;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
|
* Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
|
||||||
*/
|
*/
|
||||||
float current = 6;
|
optional float current = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* relative scale IAQ value as measured by Bosch BME680 . value 0-500.
|
||||||
|
* Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
|
||||||
|
*/
|
||||||
|
optional uint32 iaq = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
|
||||||
|
*/
|
||||||
|
optional float distance = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
|
||||||
|
*/
|
||||||
|
optional float lux = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
|
||||||
|
*/
|
||||||
|
optional float white_lux = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Infrared lux
|
||||||
|
*/
|
||||||
|
optional float ir_lux = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ultraviolet lux
|
||||||
|
*/
|
||||||
|
optional float uv_lux = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wind direction in degrees
|
||||||
|
* 0 degrees = North, 90 = East, etc...
|
||||||
|
*/
|
||||||
|
optional uint32 wind_direction = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wind speed in m/s
|
||||||
|
*/
|
||||||
|
optional float wind_speed = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Weight in KG
|
||||||
|
*/
|
||||||
|
optional float weight = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wind gust in m/s
|
||||||
|
*/
|
||||||
|
optional float wind_gust = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wind lull in m/s
|
||||||
|
*/
|
||||||
|
optional float wind_lull = 17;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Radiation in µR/h
|
||||||
|
*/
|
||||||
|
optional float radiation = 18;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rainfall in the last hour in mm
|
||||||
|
*/
|
||||||
|
optional float rainfall_1h = 19;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rainfall in the last 24 hours in mm
|
||||||
|
*/
|
||||||
|
optional float rainfall_24h = 20;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Soil moisture measured (% 1-100)
|
||||||
|
*/
|
||||||
|
optional uint32 soil_moisture = 21;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Soil temperature measured (*C)
|
||||||
|
*/
|
||||||
|
optional float soil_temperature = 22;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* One-wire temperature (*C)
|
||||||
|
*/
|
||||||
|
repeated float one_wire_temperature = 23;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -75,32 +167,82 @@ message PowerMetrics {
|
||||||
/*
|
/*
|
||||||
* Voltage (Ch1)
|
* Voltage (Ch1)
|
||||||
*/
|
*/
|
||||||
float ch1_voltage = 1;
|
optional float ch1_voltage = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Current (Ch1)
|
* Current (Ch1)
|
||||||
*/
|
*/
|
||||||
float ch1_current = 2;
|
optional float ch1_current = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Voltage (Ch2)
|
* Voltage (Ch2)
|
||||||
*/
|
*/
|
||||||
float ch2_voltage = 3;
|
optional float ch2_voltage = 3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Current (Ch2)
|
* Current (Ch2)
|
||||||
*/
|
*/
|
||||||
float ch2_current = 4;
|
optional float ch2_current = 4;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Voltage (Ch3)
|
* Voltage (Ch3)
|
||||||
*/
|
*/
|
||||||
float ch3_voltage = 5;
|
optional float ch3_voltage = 5;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Current (Ch3)
|
* Current (Ch3)
|
||||||
*/
|
*/
|
||||||
float ch3_current = 6;
|
optional float ch3_current = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Voltage (Ch4)
|
||||||
|
*/
|
||||||
|
optional float ch4_voltage = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Current (Ch4)
|
||||||
|
*/
|
||||||
|
optional float ch4_current = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Voltage (Ch5)
|
||||||
|
*/
|
||||||
|
optional float ch5_voltage = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Current (Ch5)
|
||||||
|
*/
|
||||||
|
optional float ch5_current = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Voltage (Ch6)
|
||||||
|
*/
|
||||||
|
optional float ch6_voltage = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Current (Ch6)
|
||||||
|
*/
|
||||||
|
optional float ch6_current = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Voltage (Ch7)
|
||||||
|
*/
|
||||||
|
optional float ch7_voltage = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Current (Ch7)
|
||||||
|
*/
|
||||||
|
optional float ch7_current = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Voltage (Ch8)
|
||||||
|
*/
|
||||||
|
optional float ch8_voltage = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Current (Ch8)
|
||||||
|
*/
|
||||||
|
optional float ch8_current = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -108,64 +250,320 @@ message PowerMetrics {
|
||||||
*/
|
*/
|
||||||
message AirQualityMetrics {
|
message AirQualityMetrics {
|
||||||
/*
|
/*
|
||||||
* Concentration Units Standard PM1.0
|
* Concentration Units Standard PM1.0 in ug/m3
|
||||||
*/
|
*/
|
||||||
uint32 pm10_standard = 1;
|
optional uint32 pm10_standard = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Concentration Units Standard PM2.5
|
* Concentration Units Standard PM2.5 in ug/m3
|
||||||
*/
|
*/
|
||||||
uint32 pm25_standard = 2;
|
optional uint32 pm25_standard = 2;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Concentration Units Standard PM10.0
|
* Concentration Units Standard PM10.0 in ug/m3
|
||||||
*/
|
*/
|
||||||
uint32 pm100_standard = 3;
|
optional uint32 pm100_standard = 3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Concentration Units Environmental PM1.0
|
* Concentration Units Environmental PM1.0 in ug/m3
|
||||||
*/
|
*/
|
||||||
uint32 pm10_environmental = 4;
|
optional uint32 pm10_environmental = 4;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Concentration Units Environmental PM2.5
|
* Concentration Units Environmental PM2.5 in ug/m3
|
||||||
*/
|
*/
|
||||||
uint32 pm25_environmental = 5;
|
optional uint32 pm25_environmental = 5;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Concentration Units Environmental PM10.0
|
* Concentration Units Environmental PM10.0 in ug/m3
|
||||||
*/
|
*/
|
||||||
uint32 pm100_environmental = 6;
|
optional uint32 pm100_environmental = 6;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 0.3um Particle Count
|
* 0.3um Particle Count in #/0.1l
|
||||||
*/
|
*/
|
||||||
uint32 particles_03um = 7;
|
optional uint32 particles_03um = 7;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 0.5um Particle Count
|
* 0.5um Particle Count in #/0.1l
|
||||||
*/
|
*/
|
||||||
uint32 particles_05um = 8;
|
optional uint32 particles_05um = 8;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 1.0um Particle Count
|
* 1.0um Particle Count in #/0.1l
|
||||||
*/
|
*/
|
||||||
uint32 particles_10um = 9;
|
optional uint32 particles_10um = 9;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 2.5um Particle Count
|
* 2.5um Particle Count in #/0.1l
|
||||||
*/
|
*/
|
||||||
uint32 particles_25um = 10;
|
optional uint32 particles_25um = 10;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 5.0um Particle Count
|
* 5.0um Particle Count in #/0.1l
|
||||||
*/
|
*/
|
||||||
uint32 particles_50um = 11;
|
optional uint32 particles_50um = 11;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 10.0um Particle Count
|
* 10.0um Particle Count in #/0.1l
|
||||||
*/
|
*/
|
||||||
uint32 particles_100um = 12;
|
optional uint32 particles_100um = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CO2 concentration in ppm
|
||||||
|
*/
|
||||||
|
optional uint32 co2 = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CO2 sensor temperature in degC
|
||||||
|
*/
|
||||||
|
optional float co2_temperature = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CO2 sensor relative humidity in %
|
||||||
|
*/
|
||||||
|
optional float co2_humidity = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Formaldehyde sensor formaldehyde concentration in ppb
|
||||||
|
*/
|
||||||
|
optional float form_formaldehyde = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Formaldehyde sensor relative humidity in %RH
|
||||||
|
*/
|
||||||
|
optional float form_humidity = 17;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Formaldehyde sensor temperature in degrees Celsius
|
||||||
|
*/
|
||||||
|
optional float form_temperature = 18;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Concentration Units Standard PM4.0 in ug/m3
|
||||||
|
*/
|
||||||
|
optional uint32 pm40_standard = 19;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 4.0um Particle Count in #/0.1l
|
||||||
|
*/
|
||||||
|
optional uint32 particles_40um = 20;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PM Sensor Temperature
|
||||||
|
*/
|
||||||
|
optional float pm_temperature = 21;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PM Sensor humidity
|
||||||
|
*/
|
||||||
|
optional float pm_humidity = 22;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PM Sensor VOC Index
|
||||||
|
*/
|
||||||
|
optional float pm_voc_idx = 23;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PM Sensor NOx Index
|
||||||
|
*/
|
||||||
|
optional float pm_nox_idx = 24;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Typical Particle Size in um
|
||||||
|
*/
|
||||||
|
optional float particles_tps = 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Local device mesh statistics
|
||||||
|
*/
|
||||||
|
message LocalStats {
|
||||||
|
/*
|
||||||
|
* How long the device has been running since the last reboot (in seconds)
|
||||||
|
*/
|
||||||
|
uint32 uptime_seconds = 1;
|
||||||
|
/*
|
||||||
|
* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
|
||||||
|
*/
|
||||||
|
float channel_utilization = 2;
|
||||||
|
/*
|
||||||
|
* Percent of airtime for transmission used within the last hour.
|
||||||
|
*/
|
||||||
|
float air_util_tx = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of packets sent
|
||||||
|
*/
|
||||||
|
uint32 num_packets_tx = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of packets received (both good and bad)
|
||||||
|
*/
|
||||||
|
uint32 num_packets_rx = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of packets received that are malformed or violate the protocol
|
||||||
|
*/
|
||||||
|
uint32 num_packets_rx_bad = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of nodes online (in the past 2 hours)
|
||||||
|
*/
|
||||||
|
uint32 num_online_nodes = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of nodes total
|
||||||
|
*/
|
||||||
|
uint32 num_total_nodes = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of received packets that were duplicates (due to multiple nodes relaying).
|
||||||
|
* If this number is high, there are nodes in the mesh relaying packets when it's unnecessary, for example due to the ROUTER/REPEATER role.
|
||||||
|
*/
|
||||||
|
uint32 num_rx_dupe = 9;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of packets we transmitted that were a relay for others (not originating from ourselves).
|
||||||
|
*/
|
||||||
|
uint32 num_tx_relay = 10;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of times we canceled a packet to be relayed, because someone else did it before us.
|
||||||
|
* This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you.
|
||||||
|
*/
|
||||||
|
uint32 num_tx_relay_canceled = 11;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of bytes used in the heap
|
||||||
|
*/
|
||||||
|
uint32 heap_total_bytes = 12;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of bytes free in the heap
|
||||||
|
*/
|
||||||
|
uint32 heap_free_bytes = 13;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of packets that were dropped because the transmit queue was full.
|
||||||
|
*/
|
||||||
|
uint32 num_tx_dropped = 14;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Noise floor value measured in dBm
|
||||||
|
*/
|
||||||
|
int32 noise_floor = 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Traffic management statistics for mesh network optimization
|
||||||
|
*/
|
||||||
|
message TrafficManagementStats {
|
||||||
|
/*
|
||||||
|
* Total number of packets inspected by traffic management
|
||||||
|
*/
|
||||||
|
uint32 packets_inspected = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of position packets dropped due to deduplication
|
||||||
|
*/
|
||||||
|
uint32 position_dedup_drops = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of NodeInfo requests answered from cache
|
||||||
|
*/
|
||||||
|
uint32 nodeinfo_cache_hits = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of packets dropped due to rate limiting
|
||||||
|
*/
|
||||||
|
uint32 rate_limit_drops = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of unknown/undecryptable packets dropped
|
||||||
|
*/
|
||||||
|
uint32 unknown_packet_drops = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of packets with hop_limit exhausted for local-only broadcast
|
||||||
|
*/
|
||||||
|
uint32 hop_exhausted_packets = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of times router hop preservation was applied
|
||||||
|
*/
|
||||||
|
uint32 router_hops_preserved = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Health telemetry metrics
|
||||||
|
*/
|
||||||
|
message HealthMetrics {
|
||||||
|
/*
|
||||||
|
* Heart rate (beats per minute)
|
||||||
|
*/
|
||||||
|
optional uint32 heart_bpm = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SpO2 (blood oxygen saturation) level
|
||||||
|
*/
|
||||||
|
optional uint32 spO2 = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Body temperature in degrees Celsius
|
||||||
|
*/
|
||||||
|
optional float temperature = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Linux host metrics
|
||||||
|
*/
|
||||||
|
message HostMetrics {
|
||||||
|
/*
|
||||||
|
* Host system uptime
|
||||||
|
*/
|
||||||
|
uint32 uptime_seconds = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Host system free memory
|
||||||
|
*/
|
||||||
|
uint64 freemem_bytes = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Host system disk space free for /
|
||||||
|
*/
|
||||||
|
uint64 diskfree1_bytes = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Secondary system disk space free
|
||||||
|
*/
|
||||||
|
optional uint64 diskfree2_bytes = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tertiary disk space free
|
||||||
|
*/
|
||||||
|
optional uint64 diskfree3_bytes = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Host system one minute load in 1/100ths
|
||||||
|
*/
|
||||||
|
uint32 load1 = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Host system five minute load in 1/100ths
|
||||||
|
*/
|
||||||
|
uint32 load5 = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Host system fifteen minute load in 1/100ths
|
||||||
|
*/
|
||||||
|
uint32 load15 = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Optional User-provided string for arbitrary host system information
|
||||||
|
* that doesn't make sense as a dedicated entry.
|
||||||
|
*/
|
||||||
|
optional string user_string = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -197,6 +595,26 @@ message Telemetry {
|
||||||
* Power Metrics
|
* Power Metrics
|
||||||
*/
|
*/
|
||||||
PowerMetrics power_metrics = 5;
|
PowerMetrics power_metrics = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Local device mesh statistics
|
||||||
|
*/
|
||||||
|
LocalStats local_stats = 6;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Health telemetry metrics
|
||||||
|
*/
|
||||||
|
HealthMetrics health_metrics = 7;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Linux host metrics
|
||||||
|
*/
|
||||||
|
HostMetrics host_metrics = 8;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Traffic management statistics
|
||||||
|
*/
|
||||||
|
TrafficManagementStats traffic_management_stats = 9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -240,7 +658,7 @@ enum TelemetrySensorType {
|
||||||
BMP280 = 6;
|
BMP280 = 6;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* High accuracy temperature and humidity
|
* TODO - REMOVE High accuracy temperature and humidity
|
||||||
*/
|
*/
|
||||||
SHTC3 = 7;
|
SHTC3 = 7;
|
||||||
|
|
||||||
|
|
@ -265,7 +683,7 @@ enum TelemetrySensorType {
|
||||||
QMC5883L = 11;
|
QMC5883L = 11;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* High accuracy temperature and humidity
|
* TODO - REMOVE High accuracy temperature and humidity
|
||||||
*/
|
*/
|
||||||
SHT31 = 12;
|
SHT31 = 12;
|
||||||
|
|
||||||
|
|
@ -284,4 +702,233 @@ enum TelemetrySensorType {
|
||||||
*/
|
*/
|
||||||
BMP085 = 15;
|
BMP085 = 15;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
|
||||||
|
*/
|
||||||
|
RCWL9620 = 16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO - REMOVE Sensirion High accuracy temperature and humidity
|
||||||
|
*/
|
||||||
|
SHT4X = 17;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
|
||||||
|
*/
|
||||||
|
VEML7700 = 18;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MLX90632 non-contact IR temperature sensor.
|
||||||
|
*/
|
||||||
|
MLX90632 = 19;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TI OPT3001 Ambient Light Sensor
|
||||||
|
*/
|
||||||
|
OPT3001 = 20;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Lite On LTR-390UV-01 UV Light Sensor
|
||||||
|
*/
|
||||||
|
LTR390UV = 21;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AMS TSL25911FN RGB Light Sensor
|
||||||
|
*/
|
||||||
|
TSL25911FN = 22;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AHT10 Integrated temperature and humidity sensor
|
||||||
|
*/
|
||||||
|
AHT10 = 23;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction)
|
||||||
|
*/
|
||||||
|
DFROBOT_LARK = 24;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NAU7802 Scale Chip or compatible
|
||||||
|
*/
|
||||||
|
NAU7802 = 25;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BMP3XX High accuracy temperature and pressure
|
||||||
|
*/
|
||||||
|
BMP3XX = 26;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ICM-20948 9-Axis digital motion processor
|
||||||
|
*/
|
||||||
|
ICM20948 = 27;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MAX17048 1S lipo battery sensor (voltage, state of charge, time to go)
|
||||||
|
*/
|
||||||
|
MAX17048 = 28;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor
|
||||||
|
*/
|
||||||
|
CUSTOM_SENSOR = 29;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MAX30102 Pulse Oximeter and Heart-Rate Sensor
|
||||||
|
*/
|
||||||
|
MAX30102 = 30;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MLX90614 non-contact IR temperature sensor
|
||||||
|
*/
|
||||||
|
MLX90614 = 31;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SCD40/SCD41 CO2, humidity, temperature sensor
|
||||||
|
*/
|
||||||
|
SCD4X = 32;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ClimateGuard RadSens, radiation, Geiger-Muller Tube
|
||||||
|
*/
|
||||||
|
RADSENS = 33;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* High accuracy current and voltage
|
||||||
|
*/
|
||||||
|
INA226 = 34;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DFRobot Gravity tipping bucket rain gauge
|
||||||
|
*/
|
||||||
|
DFROBOT_RAIN = 35;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Infineon DPS310 High accuracy pressure and temperature
|
||||||
|
*/
|
||||||
|
DPS310 = 36;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RAKWireless RAK12035 Soil Moisture Sensor Module
|
||||||
|
*/
|
||||||
|
RAK12035 = 37;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MAX17261 lipo battery gauge
|
||||||
|
*/
|
||||||
|
MAX17261 = 38;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PCT2075 Temperature Sensor
|
||||||
|
*/
|
||||||
|
PCT2075 = 39;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ADS1X15 ADC
|
||||||
|
*/
|
||||||
|
ADS1X15 = 40;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ADS1X15 ADC_ALT
|
||||||
|
*/
|
||||||
|
ADS1X15_ALT = 41;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sensirion SFA30 Formaldehyde sensor
|
||||||
|
*/
|
||||||
|
SFA30 = 42;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SEN5X PM SENSORS
|
||||||
|
*/
|
||||||
|
SEN5X = 43;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TSL2561 light sensor
|
||||||
|
*/
|
||||||
|
TSL2561 = 44;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BH1750 light sensor
|
||||||
|
*/
|
||||||
|
BH1750 = 45;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HDC1080 Temperature and Humidity Sensor
|
||||||
|
*/
|
||||||
|
HDC1080 = 46;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO - REMOVE STH21 Temperature and R. Humidity sensor
|
||||||
|
*/
|
||||||
|
SHT21 = 47;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sensirion STC31 CO2 sensor
|
||||||
|
*/
|
||||||
|
STC31 = 48;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SCD30 CO2, humidity, temperature sensor
|
||||||
|
*/
|
||||||
|
SCD30 = 49;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHT family of sensors for temperature and humidity
|
||||||
|
*/
|
||||||
|
SHTXX = 50;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DS248X Bridge for one-wire temperature sensors
|
||||||
|
*/
|
||||||
|
DS248X = 51;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NAU7802 Telemetry configuration, for saving to flash
|
||||||
|
*/
|
||||||
|
message Nau7802Config {
|
||||||
|
/*
|
||||||
|
* The offset setting for the NAU7802
|
||||||
|
*/
|
||||||
|
int32 zeroOffset = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The calibration factor for the NAU7802
|
||||||
|
*/
|
||||||
|
float calibrationFactor = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SEN5X State, for saving to flash
|
||||||
|
*/
|
||||||
|
message SEN5XState {
|
||||||
|
/*
|
||||||
|
* Last cleaning time for SEN5X
|
||||||
|
*/
|
||||||
|
uint32 last_cleaning_time = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Last cleaning time for SEN5X - valid flag
|
||||||
|
*/
|
||||||
|
bool last_cleaning_valid = 2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Config flag for one-shot mode (see admin.proto)
|
||||||
|
*/
|
||||||
|
bool one_shot_mode = 3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Last VOC state time for SEN55
|
||||||
|
*/
|
||||||
|
optional uint32 voc_state_time = 4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Last VOC state validity flag for SEN55
|
||||||
|
*/
|
||||||
|
optional bool voc_state_valid = 5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VOC state array (8x uint8t) for SEN55
|
||||||
|
*/
|
||||||
|
optional fixed64 voc_state_array = 6;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ package meshtastic;
|
||||||
option csharp_namespace = "Meshtastic.Protobufs";
|
option csharp_namespace = "Meshtastic.Protobufs";
|
||||||
option go_package = "github.com/meshtastic/go/generated";
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_outer_classname = "XmodemProtos";
|
option java_outer_classname = "XmodemProtos";
|
||||||
option java_package = "com.geeksville.mesh";
|
option java_package = "org.meshtastic.proto";
|
||||||
option swift_prefix = "";
|
option swift_prefix = "";
|
||||||
|
|
||||||
message XModem {
|
message XModem {
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,10 @@
|
||||||
// for memory-limited environments.
|
// for memory-limited environments.
|
||||||
|
|
||||||
syntax = "proto2";
|
syntax = "proto2";
|
||||||
|
|
||||||
import "google/protobuf/descriptor.proto";
|
import "google/protobuf/descriptor.proto";
|
||||||
|
|
||||||
|
option go_package = "github.com/meshtastic/go/generated";
|
||||||
option java_package = "fi.kapsi.koti.jpa.nanopb";
|
option java_package = "fi.kapsi.koti.jpa.nanopb";
|
||||||
|
|
||||||
enum FieldType {
|
enum FieldType {
|
||||||
|
|
@ -181,5 +183,3 @@ extend google.protobuf.EnumOptions {
|
||||||
extend google.protobuf.FieldOptions {
|
extend google.protobuf.FieldOptions {
|
||||||
optional NanoPBOptions nanopb = 1010;
|
optional NanoPBOptions nanopb = 1010;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
105
packages/rust/Cargo.lock
generated
Normal file
105
packages/rust/Cargo.lock
generated
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.102"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bytes"
|
||||||
|
version = "1.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.15.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "meshtastic_protobufs"
|
||||||
|
version = "2.5.5"
|
||||||
|
dependencies = [
|
||||||
|
"prost",
|
||||||
|
"prost-types",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.106"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "prost"
|
||||||
|
version = "0.14.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568"
|
||||||
|
dependencies = [
|
||||||
|
"bytes",
|
||||||
|
"prost-derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "prost-derive"
|
||||||
|
version = "0.14.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"itertools",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "prost-types"
|
||||||
|
version = "0.14.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7"
|
||||||
|
dependencies = [
|
||||||
|
"prost",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.45"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.117"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.24"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
||||||
15
packages/rust/Cargo.toml
Normal file
15
packages/rust/Cargo.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
[package]
|
||||||
|
name = "meshtastic_protobufs"
|
||||||
|
edition = "2021"
|
||||||
|
version = "__PACKAGE_VERSION__"
|
||||||
|
description = "Meshtastic Protobuf definitions"
|
||||||
|
repository = "https://github.com/meshtastic/protobufs"
|
||||||
|
license-file = "LICENSE"
|
||||||
|
include = [
|
||||||
|
"**/*.rs",
|
||||||
|
"Cargo.toml",
|
||||||
|
]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
prost = "0.14.3"
|
||||||
|
prost-types = "0.14.3"
|
||||||
0
packages/rust/src/generated/.gitkeep
Normal file
0
packages/rust/src/generated/.gitkeep
Normal file
5
packages/rust/src/lib.rs
Normal file
5
packages/rust/src/lib.rs
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
extern crate prost;
|
||||||
|
extern crate core;
|
||||||
|
extern crate prost_types;
|
||||||
|
|
||||||
|
include!("generated/mod.rs");
|
||||||
15
packages/ts/deno.json
Normal file
15
packages/ts/deno.json
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"name": "@meshtastic/protobufs",
|
||||||
|
"version": "__PACKAGE_VERSION__",
|
||||||
|
"exports": {
|
||||||
|
".": "./mod.ts"
|
||||||
|
},
|
||||||
|
"imports": {
|
||||||
|
"@bufbuild/protobuf": "npm:@bufbuild/protobuf@^2.2.3"
|
||||||
|
},
|
||||||
|
"publish": {
|
||||||
|
"exclude": [
|
||||||
|
"!lib"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
16
packages/ts/deno.lock
generated
Normal file
16
packages/ts/deno.lock
generated
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"version": "4",
|
||||||
|
"specifiers": {
|
||||||
|
"npm:@bufbuild/protobuf@^2.2.3": "2.2.3"
|
||||||
|
},
|
||||||
|
"npm": {
|
||||||
|
"@bufbuild/protobuf@2.2.3": {
|
||||||
|
"integrity": "sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg=="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"workspace": {
|
||||||
|
"dependencies": [
|
||||||
|
"npm:@bufbuild/protobuf@^2.2.3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
0
packages/ts/lib/.gitkeep
Normal file
0
packages/ts/lib/.gitkeep
Normal file
20
packages/ts/mod.ts
Normal file
20
packages/ts/mod.ts
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
export * as Admin from "./lib/admin_pb.ts";
|
||||||
|
export * as AppOnly from "./lib/apponly_pb.ts";
|
||||||
|
export * as ATAK from "./lib/atak_pb.ts";
|
||||||
|
export * as CannedMessages from "./lib/cannedmessages_pb.ts";
|
||||||
|
export * as Channel from "./lib/channel_pb.ts";
|
||||||
|
export * as ClientOnly from "./lib/clientonly_pb.ts";
|
||||||
|
export * as Config from "./lib/config_pb.ts";
|
||||||
|
export * as ConnectionStatus from "./lib/connection_status_pb.ts";
|
||||||
|
export * as LocalOnly from "./lib/localonly_pb.ts";
|
||||||
|
export * as Mesh from "./lib/mesh_pb.ts";
|
||||||
|
export * as ModuleConfig from "./lib/module_config_pb.ts";
|
||||||
|
export * as Mqtt from "./lib/mqtt_pb.ts";
|
||||||
|
export * as PaxCount from "./lib/paxcount_pb.ts";
|
||||||
|
export * as Portnums from "./lib/portnums_pb.ts";
|
||||||
|
export * as PowerMon from "./lib/powermon_pb.ts";
|
||||||
|
export * as RemoteHardware from "./lib/remote_hardware_pb.ts";
|
||||||
|
export * as Rtttl from "./lib/rtttl_pb.ts";
|
||||||
|
export * as StoreForward from "./lib/storeforward_pb.ts";
|
||||||
|
export * as Telemetry from "./lib/telemetry_pb.ts";
|
||||||
|
export * as Xmodem from "./lib/xmodem_pb.ts";
|
||||||
32
packages/ts/package.json
Executable file
32
packages/ts/package.json
Executable file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"name": "@meshtastic/protobufs",
|
||||||
|
"description": "Protobuf definitions for the Meshtastic project",
|
||||||
|
"version": "__PACKAGE_VERSION__",
|
||||||
|
"homepage": "https://github.com/meshtastic/protobufs",
|
||||||
|
"license": "GPLV3",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"type": "module",
|
||||||
|
"main": "./dist/mod.js",
|
||||||
|
"module": "./dist/mod.js",
|
||||||
|
"types": "./dist/mod.d.ts",
|
||||||
|
"dependencies": {
|
||||||
|
"@bufbuild/protobuf": "^2.2.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"tsdown": "^0.13.4",
|
||||||
|
"typescript": "^5.8.3"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsdown"
|
||||||
|
},
|
||||||
|
"tsdown": {
|
||||||
|
"entry": "mod.ts",
|
||||||
|
"dts": true,
|
||||||
|
"format": [
|
||||||
|
"esm"
|
||||||
|
],
|
||||||
|
"splitting": false
|
||||||
|
}
|
||||||
|
}
|
||||||
6
renovate.json
Normal file
6
renovate.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"config:recommended"
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue