Compare commits

...

275 commits

Author SHA1 Message Date
Ben Meadors
4d5b500df5
Merge pull request #895 from meshtastic/takv2_geometry
Takv2 geometry (missed commits)
2026-04-16 20:15:41 -05:00
copilot-swe-agent[bot]
793e274f59
Run buf format on atak proto
Agent-Logs-Url: https://github.com/meshtastic/protobufs/sessions/059c2e02-63e3-467d-b032-dc5c15883261

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
2026-04-17 00:56:12 +00:00
Ben Meadors
e5b07ae0b0
Update atak.proto
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-16 19:52:05 -05:00
Ben Meadors
3a398acbff
Update atak.proto
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-16 19:51:52 -05:00
Ben Meadors
3ce7c51068 Rename Environment -> TAKEnvironment to avoid SwiftUI collision
The bare `Environment` message name clashes with SwiftUI's `@Environment`
property wrapper, which is used by every SwiftUI view in an iOS consumer
app. Importing the generated proto module (e.g. `MeshtasticProtobufs`)
made `Environment` ambiguous in all 78 files of Meshtastic-Apple that
reference `@Environment(\.scenePhase)` or similar, breaking the build.

Field name `environment` on TAKPacketV2 stays unchanged — only the
message type is renamed. Wire format is unaffected (proto3 encodes by
tag number, not type name), but all generated code and source-level
references must be regenerated.

The `TAK` prefix matches the convention used by the outer TAKPacketV2
wrapper and is unambiguous across Swift (no SwiftUI/WeatherKit clash),
Kotlin, Python, TypeScript, and C# targets.
2026-04-16 11:01:59 -05:00
Ben Meadors
da33d0ea72 Add Environment and SensorFov annotations to TAKPacketV2
Two new top-level optional fields at tags 25 and 26 that attach to any
payload_variant. Environment carries weather readings from <environment>
CoT detail elements (temperature, wind direction, wind speed). SensorFov
carries the 8 geometry attributes of ATAK-CIV's <sensor> element (type,
azimuth, range, horizontal and vertical FOV, elevation, roll, model),
dropping the 9 display-only attributes (fovAlpha/RGB, strokeColor/Weight,
hideFov, fovLabels, displayMagneticReference, rangeLines) that are
receiver-side render hints.

Units are chosen for compact varint encoding and parity with existing
fields: temperature in deci-degrees Celsius (sint32), wind speed in cm/s
to match TAKPacketV2.speed, all angles as whole degrees.

Tags 27-29 reserved for future annotations before the payload_variant
oneof resumes at tag 30.
2026-04-16 11:01:59 -05:00
Ben Meadors
052a9fa4bf Add v2.x medline extensions and ZMistEntry message to CasevacReport 2026-04-16 11:01:59 -05:00
Ben Meadors
c9067dae4a
Merge pull request #894 from meshtastic/more-remoteshell
Add two more RemoteShell fields
2026-04-15 11:11:39 -05:00
Jonathan Bennett
7900e5d2dd Add two more RemoteShell fields 2026-04-14 18:44:46 -05:00
Thomas Göttgens
940ac382a7
add THINKNODE device IDs (#893) 2026-04-14 14:51:23 +02:00
oscgonfer
a045501ea8
Multiple one wire channels (#886)
* Add DS248X bridge
* One wire temperature for multiple channels
2026-04-14 13:52:08 +02:00
Jonathan Bennett
98e95eeaa2
Remote Shell Protobufs (#892)
* Add initial dmshell
* Remove unused code
* Internally use RemoteShell
* Formatting fix
* Clarify comment for REMOTE_SHELL_APP

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
2026-04-14 12:35:13 +02:00
Ben Meadors
0e5eab17af
Takv2 geometry and other structures (#891) 2026-04-14 12:33:08 +02:00
oscgonfer
a4c649bd3e
Add DS248X bridge (#885) 2026-04-10 13:26:49 +02:00
Ben Meadors
e30092e616
Merge pull request #887 from meshtastic/tak_v2
Add ATAK Plugin TAKPacket V2 protobufs and expand CoT enums
2026-04-08 10:08:17 -05:00
Ben Meadors
60842c1728 Busted 2026-04-08 09:30:59 -05:00
Ben Meadors
1e932be09b Add additional CotType enums for aircraft, ground units, and other data messages 2026-04-08 07:36:27 -05:00
Ben Meadors
dd951d7796 Add ATAK Plugin V2 protobufs and expand CoT enums 2026-04-06 20:32:31 -05:00
Ben Meadors
349c1d5c1e
Merge pull request #884 from SeeedZhangyh/AddHardwareModel
Some checks are pending
Push commit to schema registry / Push to schema registry (push) Waiting to run
Add Hardware Model for T1000-E-Pro
2026-04-03 19:46:58 -05:00
SeeedZhangyh
1cd2e56ca2 Add Hardware Model for T1000-E-Pro 2026-04-03 14:57:52 +08:00
Ben Meadors
cb1f89372a
Merge pull request #878 from Quency-D/mesh-node-t096
Some checks failed
Push commit to schema registry / Push to schema registry (push) Has been cancelled
add heltec-mesh-node-t096 board
2026-03-22 06:34:55 -05:00
Tom Fifield
ee7df89f3e
Merge pull request #879 from danditomaso/fix/update-rust-deps-cve
Update prost dependencies to 0.14.3 to address known CVE
2026-03-21 19:47:19 +11:00
Dan Ditomaso
4c3fe0cf08
Update prost dependencies to 0.14.3 to address known CVE
Bump prost and prost-types from 0.13.3 to 0.14.3 along with
all transitive dependency updates to resolve a known security
vulnerability in the Rust protobuf stack.
2026-03-20 22:30:47 -04:00
Quency-D
45a2d2dc8b Correct the enumeration value. 2026-03-19 17:27:08 +08:00
Quency-D
8436e98fcf add heltec-mesh-node-t096 board 2026-03-19 16:51:46 +08:00
Ben Meadors
eba2d94c8d
Merge pull request #873 from fablabbcn/enhancement/sht-sensor-consolidation
Enhancement/sht sensor consolidation
2026-03-17 13:11:01 -05:00
Ben Meadors
bc8e63833a
Merge pull request #876 from DasAuryn/add-groupalarm-portnum
Add GroupAlarm app portnum
2026-03-17 06:44:16 -05:00
DasAuryn
313b9ee168 Add GroupAlarm app portnum 2026-03-17 09:08:35 +01:00
oscgonfer
29a82c7b63 Add admin command for SHT accuracy setting 2026-03-08 12:37:24 +01:00
oscgonfer
a4234ead1d Add TODO - REMOVE on SHT31, SHT4X, SHT21 and SHTC3 2026-03-08 11:23:46 +01:00
Ben Meadors
cdde2876be
Merge pull request #872 from meshtastic/tdisplay-s3-pro
Add LilyGo T-Display S3 Pro HW-ID
2026-03-07 20:22:00 -06:00
oscgonfer
bfbd52b9fc Add SHTXX TelemetrySensorType 2026-03-07 22:28:17 +01:00
Manuel
0cc9cb224e fix formatting 2026-03-07 17:12:43 +01:00
Manuel
109ea16d17 add LilyGo T-Display S3 Pro 2026-03-07 17:08:37 +01:00
oscgonfer
c45c4eb0cb
Merge pull request #2 from meshtastic/master
[pull] master from meshtastic:master
2026-03-06 19:33:41 +01:00
Ben Meadors
2edc5ab7b1
Merge pull request #871 from meshtastic/LPW-bridge
Add LORAWAN_BRIDGE enum value to portnums.proto
2026-03-05 05:46:01 -06:00
Thomas Göttgens
dee56bac97
Add LORAWAN_BRIDGE enum value to portnums.proto 2026-03-05 11:56:15 +01:00
Quency-D
a229208f29
Add the LORA FEM control variable. (#869) 2026-03-03 10:30:14 +01:00
Ben Meadors
f7f7c8d2e4
Merge pull request #866 from niccellular/feature/tak-atak-config
enhancement: Add ATAKConfig for on-device TAK team/role config
2026-02-24 14:10:04 -06:00
niccellular
03b5089b40 enhancement: Add TAKConfig message for on-device TAK team/role configuration
Add TAKConfig to ModuleConfig with Team and MemberRole fields,
allowing TAK_TRACKER devices to configure ATAK group settings
instead of using hardcoded defaults.

- module_config.proto: TAKConfig message (team, role) at oneof field 16
- localonly.proto: tak field at position 17 in LocalModuleConfig
- admin.proto: TAK_CONFIG = 15 in ModuleConfigType enum

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 09:12:53 -05:00
oscgonfer
589c1cce89
Merge pull request #1 from meshtastic/master
[pull] master from meshtastic:master
2026-02-21 20:06:16 +01:00
Manuel
93bee530c3
add T-mini epaper s3 kit HW id (#863)
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
2026-02-21 08:36:45 +01:00
Ben Meadors
cb07ce2b30
Merge pull request #864 from vidplace7/TBEAM_BPF
Add LilyGo T-Beam BPF
2026-02-20 18:41:31 -06:00
Austin Lane
fe66d9f525 Add LilyGo T-Beam BPF
The first/only 144-148Mhz device (for hams)
2026-02-20 19:35:11 -05:00
oscgonfer
44298d374f
Add SCD30 CO2 sensor (#861) 2026-02-12 19:09:02 +01:00
Ben Meadors
e1a6b3a868
Merge pull request #849 from h3lix1/traffic_management
Add protobufs for a in-development traffic management module.
2026-02-10 14:12:34 -06:00
Clive Blackledge
4eca1c78a8 buf format updates. 2026-02-10 11:49:22 -08:00
Ben Meadors
27591d98c4
Merge pull request #859 from meshtastic/st31
Add STC31 CO2 sensor to TelemetrySensorType enum
2026-02-09 13:46:00 -06:00
Ben Meadors
53d91d47ef Add STC31 CO2 sensor to TelemetrySensorType enum 2026-02-09 13:42:13 -06:00
Ben Meadors
4256cdf4c9
Merge pull request #845 from yarbschris/dev/HDC1080
Add HDC1080 to telemetry protobuf
2026-02-09 13:40:03 -06:00
Ben Meadors
c4f21810b1
Merge branch 'master' into dev/HDC1080 2026-02-09 13:39:54 -06:00
Ben Meadors
1551b2e6e7
Merge pull request #855 from Tomas-Kuchta-FPV/master
Add SHT21 sensor to TelemetrySensorType
2026-02-09 13:39:15 -06:00
Ben Meadors
5dd27945d2
Fix comment formatting for SHT21 sensor 2026-02-09 13:38:59 -06:00
Ben Meadors
e2d1873a6f
Merge pull request #858 from danditomaso/fix/jsr-import-extensions
Fix JSR publish by adding .ts import extensions
2026-02-07 13:43:03 -06:00
Dan D
2062d43158
Fix JSR publish by adding .ts import extensions to protobuf codegen
The bufbuild/es plugin generates imports without file extensions,
which fails JSR's Deno-style module resolution (TS2307). Adding
import_extension=.ts ensures all generated _pb.ts files use
explicit .ts extensions in their relative imports.
2026-02-07 14:22:55 -05:00
Ben Meadors
e80cb2e410
Merge pull request #853 from danditomaso/ci/publish-workflow-updates
Refactor CI publish workflow and remove Rust support
2026-02-06 13:56:07 -06:00
Ben Meadors
cba89ee2e9
Merge pull request #856 from meshtastic/bubbles
Bubbles pref
2026-02-06 08:58:27 -06:00
Ben Meadors
8316651be1 Fmt 2026-02-06 08:51:34 -06:00
Ben Meadors
9f6cf6dcc1 Bubbles pref 2026-02-06 06:45:49 -06:00
yarbschris
862f87835e Fix formatting 2026-02-05 15:55:35 -06:00
Christopher Yarbro
cd38d477ab
Merge branch 'meshtastic:master' into dev/HDC1080 2026-02-05 15:52:57 -06:00
Tomas Kuchta
d8a9f035e5 Add SHT21 sensor to TelemetrySensorType 2026-02-04 14:58:28 +01:00
Dan Ditomaso
491783b164
Update .github/workflows/publish.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-01 09:58:03 -05:00
Dan Ditomaso
518f8e6fb3
Update .github/workflows/publish.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-01 09:57:29 -05:00
Clive Blackledge
2fe13dbe06 Fixed misplaced comment after merge 2026-01-31 09:22:19 -08:00
Clive Blackledge
55a3604fac Same here 2026-01-31 09:17:45 -08:00
Clive Blackledge
780863b1ed Removed dry_run before potential release. There was no easy way to get these metrics. 2026-01-31 09:17:45 -08:00
Clive Blackledge
8b0cdd20f3 Fixing naming for traffic_management.nodeinfo_direct_response_min_hops to traffic_management.nodeinfo_direct_response_max_hops 2026-01-31 09:17:45 -08:00
Clive Blackledge
7a1b5b683d Hopefully last name change 2026-01-31 09:17:45 -08:00
Clive Blackledge
693aaa395b Update zero_hop_telemetry / zero_hop_position 2026-01-31 09:17:45 -08:00
Clive Blackledge
84a2603037 Minor wording updates 2026-01-31 09:17:45 -08:00
Clive Blackledge
542285b5d0 More comments 2026-01-31 09:17:45 -08:00
Clive Blackledge
4fbac7db2b Updated probufs with more comments per submit requirement. 2026-01-31 09:17:45 -08:00
Clive Blackledge
e2daf8d914 Add module traffic_management protobufs 2026-01-31 09:17:45 -08:00
Dan D
9f65fd00e7
Fix comment indentation in telemetry.proto 2026-01-30 15:20:32 -05:00
Dan D
c84d2440ff
Ignore generated protobuf files in packages/ts/lib/ 2026-01-30 15:14:46 -05:00
Ben Meadors
bc63a57f9e
Merge pull request #750 from fablabbcn/feat/sen5x-state-protoa
feat/sen5x-state-proto
2026-01-27 07:34:29 -06:00
Dan D
5fced3fa92
Move generated protobuf files from meshtastic/ to lib/ root 2026-01-22 23:04:17 -05:00
Dan D
cfa561adae
Add debug output to diagnose missing lib files 2026-01-22 23:00:28 -05:00
Dan D
41b270cff0
Remove Rust plugins from buf code generation 2026-01-22 22:48:10 -05:00
Dan D
649568805f
Remove Rust/Cargo publishing from workflow 2026-01-22 22:46:18 -05:00
Dan D
84f8569c9e
Rename ci.yml to schema-registry.yml for clarity 2026-01-22 22:21:08 -05:00
Dan D
441e4b4852
Refactor publish workflow with separate build jobs and dry run support
- Add dry_run input for testing without publishing
- Split into separate jobs: codegen, build-typescript, build-rust
- Add tsdown build step for ESM-only NPM package
- Create release zip artifacts for NPM, JSR, and Rust packages
- Upload zip assets to GitHub releases
- Use OIDC authentication for JSR publishing (npx jsr publish)
- Add explicit permissions for id-token write
2026-01-22 22:19:26 -05:00
Jonathan Bennett
77c8329a59
Add missed StatusMessage protobufs, mainly for config (#847)
* Add missed StatusMessage protobufs, mainly for config

* format fix
2026-01-20 07:54:12 -06:00
oscgonfer
32906d5cdd Format 2026-01-20 10:02:21 +01:00
Ben Meadors
d9003b2b6c
Merge pull request #846 from RCGV1/noise-floor
Add noise_floor float field to LocalStats message
2026-01-19 12:06:27 -06:00
Ben Meadors
3193bab2c9
Change noise_floor type from float to int32 2026-01-19 12:05:33 -06:00
Ben Meadors
bbde30a0b9
Merge pull request #848 from erayd/status-message-config-bugfix
[Bugfix] Use correct option name
2026-01-19 05:43:36 -06:00
Steve Gilberd
152bab3589
Fix option name to prevent build failure in firmware 2026-01-19 18:13:18 +13:00
Jonathan Bennett
19c4833930
Add StatusMessage message and portnum (#835) 2026-01-17 15:50:12 -06:00
Benjamin Faershtein
1b1dc090ef Add noise_floor float field to LocalStats message 2026-01-17 09:53:09 -08:00
oscgonfer
af5d147428 Fix numbering in sensor config 2026-01-17 13:12:01 +01:00
Christopher Yarbro
c42f97a381 Add HDC1080 to telemetry protobuf 2026-01-16 12:27:47 -06:00
oscgonfer
e29cc1c7af Merge branch 'master' into feat/sen5x-state-proto 2026-01-15 13:05:38 +01:00
Ben Meadors
c8d5047b63
Merge pull request #844 from meshtastic/t5s3-hwid
Add T5 S3 ePaper Pro HW-ID
2026-01-13 11:57:55 -06:00
Manuel
6c79c8be71
Add T5 S3 ePaper Pro HW-Id mesh.proto 2026-01-13 16:20:13 +01:00
Tom Fifield
547a7d8033
Merge pull request #843 from compumike/compumike/update-client-base-description-to-router-late
(Updated comment only.) `CLIENT_BASE` now acts as `ROUTER_LATE`, not `ROUTER`
2026-01-13 15:50:52 +11:00
Mike Robbins
e3d3abccc3 (Updated comment only.) CLIENT_BASE now acts as ROUTER_LATE, not ROUTER 2026-01-12 22:19:58 -05:00
Ben Meadors
61219de748
Merge pull request #842 from meshtastic/rcarteraz-patch-2
Add T-Beam 1W
2026-01-12 15:37:21 -06:00
Ben Meadors
786f3bbf98
Fix comment formatting in mesh.proto 2026-01-12 15:36:39 -06:00
rcarteraz
4c82a2f39d
Add T-Beam 1W 2026-01-12 14:02:04 -07:00
Ben Meadors
aa48faf5b5
Merge pull request #841 from DaneEvans/feat/serialModes_LOG
Serial modes - Logging
2026-01-11 05:26:08 -06:00
Dane
76cca14026 formatting 2026-01-11 17:28:18 +11:00
Dane
8816b4715d add logging modes. 2026-01-11 17:26:39 +11:00
Ben Meadors
1a63a3d0d2
Merge pull request #840 from fablabbcn/enhancement/module-config-air-quality-screen
Add module config to enable air quality on screen
2026-01-10 05:17:15 -06:00
Ben Meadors
53911db9a0 Format 2026-01-10 05:16:51 -06:00
Ben Meadors
a7bbad173d Format 2026-01-10 05:16:40 -06:00
Ford Jones
9cb373751b
Mute: Nodes (#838)
* Add tags for toggling mute state

* Adds mute flag to protobuf for use in clients

* Adds mute flag to lite (device only) protobuf

* Prefer bitmask usage over new boolean

* Remove trailing newline in mesh.proto

---------

Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
2026-01-09 11:26:36 -06:00
Ben Meadors
266bc5ab05
Merge branch 'master' into enhancement/module-config-air-quality-screen 2026-01-08 06:03:30 -06:00
Ben Meadors
4ed2d1a35e
Merge pull request #839 from meshtastic/jp-bennett-patch-6
Add MESHSTICK_1262 identifier to mesh.proto
2026-01-08 04:58:17 -06:00
Jonathan Bennett
c4eab768ad
Add MESHSTICK_1262 identifier to mesh.proto 2026-01-07 22:49:52 -06:00
oscgonfer
8f95d7f451 Add module config to enable air quality on screen 2026-01-07 12:35:49 +01:00
Ben Meadors
c2e45a3fc9
Merge pull request #834 from meshtastic/jp-bennett-patch-6
Add PKI_SEND_FAIL_PUBLIC_KEY error code
2026-01-02 05:44:19 -06:00
Jonathan Bennett
8a11244539
Add PKI_SEND_FAIL_PUBLIC_KEY error code
Add new error code for PKI encryption failure due to missing public key.
2026-01-01 22:26:59 -06:00
Ben Meadors
62626b7cc5
Merge pull request #833 from meshtastic/t-echo-plus
T-Echo Plus
2026-01-01 07:01:30 -06:00
Ben Meadors
ef35af8af7 T-Echo Plus 2025-12-31 20:42:24 -06:00
James Rich
96d30609db
Merge pull request #829 from meshtastic/meshtastic-ota 2025-12-30 11:20:09 -06:00
James Rich
64ccad6007
Fix formatting to appease buf 2025-12-30 10:54:27 -06:00
Jonathan Bennett
f78b3f0dcc
Add chain_count field to mesh.proto (#828)
* Add chain_count field to mesh.proto

Added chain_count field to specify message position in LINK_REQUEST.

* Fix formatting in mesh.proto
2025-12-29 07:50:01 -06:00
Jake-B
4b9f104a18 AdminMessage fixes for OTA 2025-12-27 08:16:28 -05:00
Jake-B
c39b564ca6 Added AdminMessage.ota_hash to verify OTA data 2025-12-25 11:59:14 -05:00
Ben Meadors
c474fd3f49
Merge pull request #823 from meshtastic/reboot-ota-mode
Add reboot_ota_mode to AdminMessage for OTA firmware updates
2025-12-20 07:53:37 -06:00
Ben Meadors
f28d17eba1 Buf fixes 2025-12-20 07:14:45 -06:00
Ben Meadors
0ef2bdf6a3 Hopefully fix buf build 2025-12-20 06:41:32 -06:00
Ben Meadors
48ad883120 Add buf ignores 2025-12-19 20:11:20 -06:00
Ben Meadors
8078b27a19 Deprecate 2025-12-19 19:35:46 -06:00
Ben Meadors
f6b116ef65 Add reboot_ota_mode to AdminMessage for OTA firmware updates 2025-12-19 19:29:37 -06:00
Ben Meadors
62ef17b3d1
Merge pull request #822 from meshtastic/sfpp
Add Store and Forward PlusPlus
2025-12-17 15:26:56 -06:00
Jonathan Bennett
fba255d1b2 Add Store and Forward PlusPlus 2025-12-15 23:21:11 -06:00
Ben Meadors
9beb80f1d3
Merge pull request #821 from meshtastic/deprecate-long-slow
Deprecate LONG_SLOW preset
2025-12-15 19:39:44 -06:00
Ben Meadors
aeee7f08e6
Deprecate LONG_SLOW preset
Mark LONG_SLOW as deprecated in the config.proto file.
2025-12-15 19:28:31 -06:00
Ben Meadors
1cf2783bdb
Merge pull request #820 from meshtastic/jp-bennett-patch-4
Add LONG_TURBO preset to config.proto
2025-12-15 16:33:56 -06:00
Jonathan Bennett
2567b7aa4e
Update LONG_TURBO comment in config.proto
Removed comment about legality of 250Khz channels.
2025-12-15 16:08:51 -06:00
Jonathan Bennett
0921984572
Fix typo in config.proto comment 2025-12-15 15:49:54 -06:00
Jonathan Bennett
6f437dd699
Add LONG_TURBO preset to config.proto
Added LONG_TURBO preset for long-range communication.
2025-12-15 15:46:49 -06:00
Ben Meadors
4095e59890
Merge pull request #819 from meshtastic/rcarteraz-patch-2
Rename RESERVED_FRIED_CHICKEN to MUZI_BASE
2025-12-05 10:37:35 -06:00
rcarteraz
45f9a558b1
Rename RESERVED_FRIED_CHICKEN to MUZI_BASE 2025-12-05 09:32:09 -07:00
Thomas Göttgens
52fa252f1e
Add Thinknode M4 and M6 to the equasion (#815) 2025-11-21 10:55:44 +01:00
Ben Meadors
7eb3258fa0
Merge pull request #811 from andrewdavidmackenzie/master
Describe further the "to" field in MeshPacket
2025-11-18 18:45:36 -06:00
Ben Meadors
a34428168d
Merge pull request #812 from meshtastic/jp-bennett-patch-4
Add Device ID for RAK6421 Hat in mesh.proto
2025-11-18 18:45:01 -06:00
Jonathan Bennett
e1b5aaedff
Add Device ID for RAK6421 Hat in mesh.proto 2025-11-18 18:01:08 -06:00
Andrew Mackenzie
29c5f6efdc Describe further the "to" field in MeshPacket, and the special case of when it is set top the maximum value permitted by a 32 bit integer. 2025-11-14 12:05:55 +01:00
Ben Meadors
7654db2e2d
Merge pull request #791 from ford-jones/8226-persisted-favorites
Optionally preserve favorite nodes during a nodedb reset
2025-11-06 06:39:02 -06:00
Ben Meadors
fbe1538c21
Merge pull request #801 from DanielCao0/master
Add WISMESH_TAP_V2 and RAK3401 hardware models to mesh.proto
2025-10-31 05:58:20 -05:00
Daniel
404532984c Add WISMESH_TAP_V2 and RAK3401 hardware models to mesh.proto 2025-10-31 15:51:29 +08:00
ford-jones
83ddaf8b24 Merge branch 'master' of https://github.com/meshtastic/protobufs into 8226-persisted-favorites 2025-10-21 15:32:18 +13:00
Ben Meadors
bf149bbdcc
Merge pull request #796 from meshtastic/jp-bennett-patch-3
Add THINKNODE_M3 identifier to mesh.proto
2025-10-18 18:22:34 -05:00
Jonathan Bennett
29242517f3
Add THINKNODE_M3 identifier to mesh.proto 2025-10-18 13:34:41 -05:00
Tom Fifield
4a618380a0
Merge pull request #795 from pa0lin082/bh1750
Add BH1750 sensor
2025-10-18 09:30:47 +11:00
Paolo Leggio
1f616fff30
Added BH1750 sensor 2025-10-16 13:44:32 +02:00
ford-jones
a916c49299 Merge https://github.com/meshtastic/protobufs into 8226-persisted-favorites 2025-10-13 11:27:38 +13:00
ford-jones
68dee221b2 Convert reset tag to bool in favor of additional settings 2025-10-12 17:01:32 +13:00
ford-jones
38d0665011 Use American-English spelling 2025-10-11 13:47:56 +13:00
Ben Meadors
38638f19f8
Merge pull request #792 from meshtastic/channel_mute_updates
Finalize channel is_muted re-work
2025-10-10 08:26:04 -05:00
Jason P
de145b5211 Finalize channel is_muted work 2025-10-10 08:17:29 -05:00
ford-jones
9adb17d940 New setting for persisting favourite nodes 2025-10-11 00:17:27 +13:00
Ben Meadors
cd5c83a728
Merge pull request #790 from danditomaso/ci/jsr-publish-pipeline
ci: fix publish github action workflow for publishing to JSR, Cargo, …
2025-10-09 20:08:57 -05:00
Dan Ditomaso
caecabe257
Merge branch 'master' into ci/jsr-publish-pipeline 2025-10-09 16:36:52 -04:00
Ben Meadors
ef173e3214
Merge pull request #789 from meshtastic/fix/buf-build 2025-10-08 19:14:16 -05:00
James Rich
1db971af72
Add ignore option for FILE_OPTION_CHANGED
Explicitly ignore that we changed the `java_package` - we know, bro, it was on purpose.

This is to handle the `buf` build errors introduced in #788.
2025-10-08 18:36:10 -05:00
Dan Ditomaso
e925e2b201 ci: fix publish github action workflow for publishing to JSR, Cargo, and NPM 2025-10-08 17:39:16 -04:00
Ben Meadors
fecb769415
Merge pull request #788 from meshtastic/java_package
Change java package to `org.meshtastic.proto`
2025-10-08 11:56:52 -05:00
Phil Oliver
dbbd7f6b04 Change java package to org.meshtastic.proto 2025-10-08 12:33:28 -04:00
Ben Meadors
a1b8c3d171
Merge pull request #787 from GUVWAF/txDrop
Add number of dropped packets to LocalStats
2025-10-04 05:24:27 -05:00
GUVWAF
7f1110dd77 Add number of dropped packets to LocalStats 2025-10-04 12:02:16 +02:00
Ben Meadors
c1e31a9655
Merge pull request #786 from meshtastic/danish
MUI: add danish language enum
2025-10-03 06:08:49 -05:00
mverch67
8885b0d9f2 MUI: add danish language enum 2025-10-03 12:24:14 +02:00
Jonathan Bennett
60c3e6600a
Add manually_verified bit to SharedContact (#785) 2025-10-01 14:40:13 -05:00
Ben Meadors
394268b02e
Merge pull request #784 from meshtastic/t-watch-ultra
add T-Watch Ultra hardware model
2025-09-30 13:43:12 -05:00
mverch67
cea982891f add T-Watch Ultra hardware model 2025-09-30 20:40:14 +02:00
Jonathan Bennett
5fa4c44d91
Rename R1_NEO (#782) 2025-09-30 13:28:36 -05:00
Ben Meadors
082bb7cfeb
Merge pull request #780 from meshtastic/deprecate-repeater
Deprecate REPEATER role
2025-09-28 06:49:31 -05:00
Tom Fifield
805e5e7c00
Merge pull request #769 from ford-jones/7943-mute-target
Mute: channels
2025-09-28 07:12:14 +10:00
Ben Meadors
1a3364a8a0
Deprecate REPEATER role
Mark REPEATER role as deprecated in config.proto
2025-09-26 06:00:16 -05:00
ford-jones
91909ce946 run buf format 2025-09-23 14:59:32 +12:00
ford-jones
c6a06d51ec Merge branch '7943-mute-target' of https://github.com/ford-jones/protobufs into 7943-mute-target 2025-09-23 14:59:10 +12:00
ford-jones
08bd3380e7 run buf format 2025-09-23 14:58:37 +12:00
ford-jones
38f77b20f8 Fix formatting 2025-09-23 12:11:32 +12:00
ford-jones
5157e3702a Merge branch '7943-mute-target' of https://github.com/ford-jones/protobufs into 7943-mute-target 2025-09-23 11:47:06 +12:00
ford-jones
9b3643e4aa Decouple node-mute from channel-mute 2025-09-23 11:46:10 +12:00
ford-jones
cf496532b8 Merge branch 'master' of https://github.com/meshtastic/protobufs into 7943-mute-target 2025-09-22 15:14:06 +12:00
Ben Meadors
46b81e822a
Merge pull request #777 from meshtastic/telemetry-opt-in
Add device_telemetry_enabled to force opt-in of device telemetry broadcasts
2025-09-19 11:09:47 -05:00
Ben Meadors
6a8b80a108 Needs one value 2025-09-19 08:25:43 -05:00
Ben Meadors
0a0c0ab361 Add device_telemetry_enabled to force opt-in of device telemetry broadcasts to the mesh 2025-09-18 18:49:31 -05:00
Ben Meadors
27d9a99bd0
Merge pull request #768 from l0g-lab/node_name_length
add node_name_length option
2025-09-18 18:39:35 -05:00
Ben Meadors
34d31aeea5
Merge pull request #776 from WillyJL/feat/m5stack-cardputer-adv
Add hardwareModel for M5Stack Cardputer Adv
2025-09-18 18:38:49 -05:00
Ben Meadors
d965965c33
Merge pull request #774 from meshtastic/maidenhead_locator
Move GpsCoordinateFormat gps_format And enum GpsCoordinateFormat to Device_UI Protobuf, Add Maidenhead Option
2025-09-18 18:37:59 -05:00
Ben Meadors
1d9082b277 I changed my mind. Let's just deprecate the enum too 2025-09-18 18:37:23 -05:00
Ben Meadors
58e974544d Revert "Finalize move to Device_UI"
This reverts commit 99bdcfdbfe.
2025-09-18 18:34:52 -05:00
Jason P
74b16a5bd3 Add int_size 8 for gps_format 2025-09-16 12:00:47 -05:00
Jason P
375fab79d4 Attempt to fix formatting issues 2025-09-16 08:56:43 -05:00
Jason P
99bdcfdbfe Finalize move to Device_UI 2025-09-16 08:45:08 -05:00
Jason P
804a06ae4e Move from DisplayConfig to Device_UI 2025-09-16 08:22:53 -05:00
ford-jones
dae16e8b42 Merge https://github.com/meshtastic/protobufs into 7943-mute-target 2025-09-16 19:25:39 +12:00
WillyJL
d4d1508708
Add hardwareModel for M5Stack Cardputer Adv 2025-09-15 22:49:58 +02:00
Jonathan Bennett
945b796a98
Add hardwareModel for M5stack c6l (#775)
* Add hardwareModel for M5stack c6l

* Update comment to match enum

* Update mesh.proto
2025-09-15 15:33:11 -05:00
oscgonfer
28f01f2c3c Merge branch 'master' into feat/sen5x-state-proto 2025-09-14 17:13:40 +02:00
ford-jones
314f80bc6f Update comment 2025-09-14 17:41:11 +12:00
Jason P
2fb76bc70b Shorten Protobuf to match others 2025-09-13 18:07:55 -05:00
Jason P
c5af2d77d8 Fix formatting 2025-09-13 18:06:31 -05:00
Jason P
b90ea12cc8 Add Maidenhead Protobuf 2025-09-13 17:18:46 -05:00
ford-jones
e8d10fe478 Remove trailing whitespace 2025-09-13 17:48:58 +12:00
ford-jones
080fd3b0d1 Revert previous commit - this needs it's own proto 2025-09-13 17:44:41 +12:00
ford-jones
e5abb26b83 Make use of pre-existing channel_settings.module_settings.is_client_muted setting 2025-09-13 13:30:54 +12:00
ford-jones
a8f3ee5b01 Merge branch '7943-mute-target' of https://github.com/ford-jones/protobufs into 7943-mute-target 2025-09-11 21:47:58 +12:00
ford-jones
6fa4def971 Added muted state to node info 2025-09-11 20:16:08 +12:00
ford-jones
b7e0ef2ec7 Added mute state to channel settings 2025-09-11 20:11:16 +12:00
ford-jones
638917dea8 Added mute state to nodedb entries 2025-09-11 17:31:36 +12:00
ford-jones
550702a695 Added mute state to channel settings 2025-09-11 14:17:24 +12:00
l0g-lab
bb1a5d09bc add node_name_length option 2025-09-10 18:20:40 -04:00
Ben Meadors
8caf423964
Merge pull request #767 from meshtastic/czech-mui
Add Czech translation enum for MUI
2025-09-08 16:50:32 -05:00
Manuel
96ef7eef7a add Czech translation enum to MUI 2025-09-08 20:19:53 +02:00
Ben Meadors
a84657c220
Merge pull request #763 from compumike/compumike/add-client-base-role
Reserve value 12 for CLIENT_BASE in enum Config.DeviceConfig.Role
2025-09-06 11:28:11 -05:00
Ben Meadors
5c3d52663e
Merge pull request #765 from vidplace7/fix-formatting
Fix formatting
2025-09-06 11:27:38 -05:00
vidplace7
74f7041b1c Fix formatting
Who merged this? :P
2025-09-06 10:44:37 -04:00
Mike Robbins
3347d98f04 Reserve value 12 for CLIENT_BASE in enum Config.DeviceConfig.Role 2025-09-05 13:18:19 -07:00
Ben Meadors
07d6573e10
Merge pull request #761 from Quency-D/heltec-v4
add heltec v4 board.
2025-09-04 06:42:31 -05:00
Quency-D
e0b97d6996 add heltec v4 board. 2025-09-03 13:55:36 +08:00
Ben Meadors
34f0c8115d
Merge pull request #757 from ford-jones/7291-rangeTest-clear
Rangetest cleanup configuration option
2025-09-02 19:05:16 -05:00
ford-jones
6e0e795a83 Improved naming 2025-09-03 12:01:33 +12:00
Ben Meadors
4c4427c4a7
Update renovate.json 2025-08-29 13:47:04 -05:00
oscgonfer
77b00ce690 Minor changes on VOC state array and docs 2025-08-29 15:28:20 +02:00
oscgonfer
51b444ec10 Add config flag for low power mode 2025-08-26 19:03:11 +02:00
ford-jones
c5aeb193ca Rangetest cleanup configuration option 2025-08-21 10:23:46 +12:00
Ben Meadors
8985852d75 Default to non-square SH1107 2025-08-20 05:39:53 -05:00
Ben Meadors
be51376980
Merge pull request #756 from davide125/tsl2561
Add TSL2561 sensor
2025-08-19 05:19:42 -05:00
Davide Cavalca
aa86e284a3 Add TSL2561 sensor 2025-08-18 20:52:33 -07:00
Ben Meadors
5dd723fe6f
Merge pull request #755 from meshtastic/T-Echo-Lite
add Lilygo T-Echo Lite
2025-08-15 14:18:35 -05:00
Thomas Göttgens
87ba3f8704
add Lilygo T-Echo Lite 2025-08-15 13:33:47 +02:00
Jonathan Bennett
e2c0831aa3
Add transport mechanism in MeshPacket (#748) 2025-08-09 08:53:48 -05:00
Ben Meadors
13d8946c6d
Merge pull request #751 from meshtastic/heartbeat-nonce
Add nonce to heartbeat
2025-08-09 08:11:09 -05:00
Ben Meadors
f5f209d998 Add nonce to heartbeat 2025-08-09 08:10:23 -05:00
oscgonfer
06a69c09db Add config message for sen5x 2025-08-08 10:59:31 +02:00
oscgonfer
e44958478b SEN5X State protobuf 2025-08-07 16:05:14 +02:00
oscgonfer
784fd5d733 Merge branch 'master' into feat/sen5x-state-proto 2025-08-05 17:39:36 +02:00
oscgonfer
70950c6aa8 Minor fix in cleaning time type 2025-08-05 17:38:48 +02:00
oscgonfer
d5b96c77e1 Add protobuf for SEN5X state 2025-08-05 14:03:16 +02:00
oscgonfer
e8544c529f Fix protobuf definition for SCD4X 2025-08-04 14:56:54 +02:00
oscgonfer
05eee86c47 Minor fixes on scd4x_config protobuf 2025-08-04 13:23:05 +02:00
oscgonfer
6a26b23faf Add low power and change to SCD4X 2025-08-01 13:38:29 +02:00
Ben Meadors
1ecf94da98
Merge pull request #741 from meshtastic/mark-deprecated
Mark configs as deprecated that are no longer used.
2025-07-30 06:20:52 -05:00
Ben Meadors
057ac675bb
Merge pull request #745 from Quency-D/master
Added HELTEC MeshSolar board.
2025-07-30 06:19:56 -05:00
oscgonfer
27d40f03d2 Add factory reset for scdxx 2025-07-29 14:27:08 +02:00
oscgonfer
e690615951 Admin message for different sensor configs 2025-07-28 21:52:49 +02:00
oscgonfer
ee114d4e89 Add admin commands for SCDXX CO2 sensors 2025-07-28 12:34:53 +02:00
Quency-D
d47de28428 Added HELTEC MeshSolar board. 2025-07-28 16:53:29 +08:00
Ben Meadors
9bac2886f9
Merge pull request #744 from meshtastic/nodedb-count
Add nodedb_count to mynodeinfo
2025-07-26 16:12:26 -05:00
Ben Meadors
5ac10c0746 Add nodedb_count to mynodeinfo 2025-07-26 06:39:04 -05:00
Jonathan Bennett
1c28229e85 Mark configs as deprecated that are no longer used. 2025-07-22 14:20:05 -05:00
Ben Meadors
d31cd890d5
Merge pull request #739 from meshtastic/event-enum
Add event enum to indicate to client if this is event firmware
2025-07-22 13:25:19 -05:00
Jonathan Bennett
d868b86e75 Keep edition smol 2025-07-22 09:05:10 -05:00
Jonathan Bennett
898f06796b
More Whitespace
Co-authored-by: Austin <vidplace7@gmail.com>
2025-07-21 18:36:04 -05:00
Jonathan Bennett
9cc803de0e Further tuning 2025-07-21 12:41:42 -05:00
Jonathan Bennett
b35702d8ae Add Hamvention 2025-07-21 12:27:50 -05:00
Jonathan Bennett
08fbd7b987 Whitespace fixes 2025-07-21 12:06:57 -05:00
Jonathan Bennett
0234126e86 Add event enum to indicate to client if this is event firmware 2025-07-21 12:03:47 -05:00
Thomas Göttgens
fa02e14d8d
fix typos in comments (#738) 2025-07-21 12:06:30 +02:00
oscgonfer
ee4d961776
SEN5X sensor definition (#723)
* Add additional telemetry sensor type to support two ADS1X15 at the same time

* Merge master

* Add metrics and units for SEN5X series

* re-order not to break proto backwards comaptibility

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
2025-07-21 11:56:28 +02:00
Tom Fifield
5f5828a6ed
Add BR_902, Brazil 902MHz-907.5MHz (#737)
As reported by @barbabarros , the Brazilian government has specific support for LoRA[1] across multiple frequencies[2][3].

We currently support Brazil through the ANZ/AU915 band. However, Brazil also has another frequency available for use:

902 - 907.5 MHz , 1W power limit, no duty cycle restrictions


[1]  https://sistemas.anatel.gov.br/anexar-api/publico/anexos/download/a028ab5cc4e3f97442830bba0c8bd1dd
[2] 
https://informacoes.anatel.gov.br/legislacao/resolucoes/2025/2001-resolucao-772
[3] https://informacoes.anatel.gov.br/legislacao/atos-de-certificacao-de-produtos/2017/1139-ato-14448#item10


Fixes https://github.com/meshtastic/firmware/issues/3741

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
2025-07-21 10:28:24 +02:00
Tom Fifield
8b09ca9643
Add Nepal 865 MHz to 868 MHz (#736)
As identified by @WOD-MN , Nepal has a dedicated IoT frequency.

865 MHz to 868 MHz, no power limit, not duty cycle restrictions
Machine to Machine (M2M)/Internet of Things (IoT)  https://www.nta.gov.np/uploads/contents/Radio-Frequency-Policy-2080-English.pdf

Firmware patch: https://github.com/meshtastic/firmware/pull/7380
2025-07-21 10:24:49 +02:00
Ben Meadors
15c1fbde88
Merge pull request #734 from meshtastic/deprecate-gps-format
Deprecate GPS format
2025-07-20 14:30:52 -05:00
Ben Meadors
c916da9060
Merge pull request #735 from meshtastic/routing-error-ratelimite
Add RATE_LIMIT_EXCEEDED routing error
2025-07-20 14:30:40 -05:00
Ben Meadors
c36e296488
Update mesh.proto 2025-07-20 06:51:57 -05:00
Ben Meadors
b2baa3da8a Add RATE_LIMIT_EXCEEDED routing error 2025-07-20 06:47:49 -05:00
Ben Meadors
330a6a1a94
Merge pull request #732 from fablabbcn/feat/add-sfa30
Added formaldehyde sensor values sfa30
2025-07-20 06:47:23 -05:00
Ben Meadors
d238157644 Deprecate GPS format 2025-07-20 06:43:57 -05:00
oscgonfer
1a6df9abfe Minor style change 2025-07-19 12:10:17 +02:00
oscgonfer
bbad395d57 Added formaldehyde sensor values sfa30 2025-07-19 12:08:51 +02:00
oscgonfer
4b1ca40f5e Add additional telemetry sensor type to support two ADS1X15 at the same time 2025-07-19 12:07:41 +02:00
Ben Meadors
f6448be777
Merge pull request #727 from vidplace7/buzzermode-direct_msg_only
Add DIRECT_MSG_ONLY Buzzer mode
2025-07-13 06:10:19 -05:00
vidplace7
27537101a4 Add DIRECT_MSG_ONLY Buzzer mode 2025-07-12 21:37:57 -04:00
Ben Meadors
362c590bc3
Merge pull request #728 from vidplace7/Buf-Actions-Love
Update bufbuild GitHub Actions
2025-07-12 20:07:17 -05:00
vidplace7
e253751637 Update bufbuild GitHub Actions 2025-07-12 19:46:12 -04:00
Ben Meadors
fd19e4caaf
Merge pull request #726 from meshtastic/ThinkNode-M5
Add ThinkNode M5 to mesh.proto
2025-07-10 19:47:23 -05:00
Jonathan Bennett
233961d5fb
Add ThinkNode M5 to mesh.proto 2025-07-10 18:58:13 -05:00
46 changed files with 3692 additions and 268 deletions

View file

@ -58,14 +58,14 @@ jobs:
token: ${{ github.token }}
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1.30.0
uses: bufbuild/buf-action@v1.2.0
with:
github_token: ${{ github.token }}
token: ${{ secrets.BUF_TOKEN }}
setup_only: true
- name: Push to schema registry
# uses: bufbuild/buf-push-action@v1
# with:
# buf_token: ${{ secrets.BUF_TOKEN }}
env:
BUF_TOKEN: ${{ secrets.BUF_TOKEN }}
run: |
export BUF_TOKEN=${{ secrets.BUF_TOKEN }}
buf push --tag ${{ steps.version.outputs.NEW_VERSION }}

View file

@ -1,30 +1,263 @@
name: Push new version to schema registry
permissions:
contents: read
name: Publish to JSR & NPM
on:
push:
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:
push_to_registry:
runs-on: ubuntu-latest
codegen:
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:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1.30.0
uses: bufbuild/buf-setup-action@main
with:
github_token: ${{ github.token }}
- name: Push to schema registry
# uses: bufbuild/buf-push-action@v1
# with:
# buf_token: ${{ secrets.BUF_TOKEN }}
run: |
export BUF_TOKEN=${{ secrets.BUF_TOKEN }}
buf push --tag ${{ github.ref_name }}
env:
BUF_TOKEN: ${{ secrets.BUF_TOKEN }}
run: buf push --tag ${{ needs.codegen.outputs.tag }}
publish-npm:
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

View file

@ -2,6 +2,7 @@ name: pull-request
permissions:
contents: read
pull-requests: write
on: pull_request
jobs:
@ -12,17 +13,11 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1.30.0
- name: Buf PR Checks
uses: bufbuild/buf-action@v1.2.0
with:
github_token: ${{ github.token }}
- name: Lint
uses: bufbuild/buf-lint-action@v1.1.1
- name: Push to schema registry
uses: bufbuild/buf-push-action@v1.2.0
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
with:
buf_token: ${{ secrets.BUF_TOKEN }}
draft: ${{ github.ref_name != 'master'}}
token: ${{ secrets.BUF_TOKEN }}
format: true
lint: true
breaking: true

View file

@ -16,12 +16,9 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1.30.0
- name: Push to schema registry
uses: bufbuild/buf-action@v1.2.0
with:
github_token: ${{ github.token }}
- name: Push to schema registry
uses: bufbuild/buf-push-action@v1.2.0
with:
buf_token: ${{ secrets.BUF_TOKEN }}
token: ${{ secrets.BUF_TOKEN }}
push: true

4
.gitignore vendored
View file

@ -1 +1,5 @@
.DS_Store
# Generated protobuf files
packages/ts/lib/
.bin/

5
buf.gen.yaml Normal file
View 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

View file

@ -1,14 +1,23 @@
version: v1
name: buf.build/meshtastic/protobufs
deps: []
build:
excludes: []
breaking:
use:
- FILE
lint:
ignore_only:
PACKAGE_DEFINED:
- nanopb.proto
use:
- MINIMAL
version: v2
modules:
- path: .
name: buf.build/meshtastic/protobufs
excludes:
- .trunk/
- meshtastic/device_only/
lint:
use:
- MINIMAL
except:
- PACKAGE_NO_IMPORT_CYCLE
ignore_only:
PACKAGE_DEFINED:
- nanopb.proto
disallow_comment_ignores: true
breaking:
use:
- FILE
except:
- EXTENSION_NO_DELETE
- FIELD_SAME_DEFAULT

View file

@ -2,6 +2,8 @@
*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

View file

@ -2,17 +2,18 @@ syntax = "proto3";
package meshtastic;
/* trunk-ignore(buf-lint/COMPILE) */
import "meshtastic/channel.proto";
import "meshtastic/config.proto";
import "meshtastic/connection_status.proto";
import "meshtastic/device_ui.proto";
import "meshtastic/mesh.proto";
import "meshtastic/module_config.proto";
import "meshtastic/device_ui.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "AdminProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -21,7 +22,6 @@ option swift_prefix = "";
* (Prior to 1.2 these operations were done via special ToRadio operations)
*/
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.
@ -152,6 +152,21 @@ message AdminMessage {
* TODO: REPLACE
*/
PAXCOUNTER_CONFIG = 12;
/*
* TODO: REPLACE
*/
STATUSMESSAGE_CONFIG = 13;
/*
* Traffic management module config
*/
TRAFFICMANAGEMENT_CONFIG = 14;
/*
* TAK module config
*/
TAK_CONFIG = 15;
}
enum BackupLocation {
@ -188,6 +203,23 @@ message AdminMessage {
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;
}
/*
* TODO: REPLACE
*/
@ -415,6 +447,11 @@ message AdminMessage {
*/
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
* This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings)
@ -444,8 +481,9 @@ message AdminMessage {
/*
* 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.
* 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.
@ -470,11 +508,42 @@ message AdminMessage {
/*
* 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
*/
@ -527,20 +596,24 @@ message SharedContact {
* Add this contact to the blocked / ignored list
*/
bool should_ignore = 3;
}
/*
* This message is used by a client to initiate or complete a key verification
* 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
*/
* This is the first stage, where a client initiates
*/
INITIATE_VERIFICATION = 0;
/*
@ -548,33 +621,142 @@ message KeyVerificationAdmin {
* 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.
*/
/*
* 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
*/
/*
* This is the cancel path, can be taken at any point
*/
DO_NOT_VERIFY = 3;
}
MessageType message_type = 1;
/*
* The nodenum we're requesting
*/
/*
* The nodenum we're requesting
*/
uint32 remote_nodenum = 2;
/*
* The nonce is used to track the connection
*/
/*
* 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
*/
/*
* 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;
}

View file

@ -8,7 +8,7 @@ import "meshtastic/config.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "AppOnlyProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -5,4 +5,106 @@
*GeoChat.message max_size:200
*GeoChat.to max_size:120
*GeoChat.to_callsign max_size:120
*TAKPacket.detail max_size:220
*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

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "CannedMessageConfigProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -1,11 +1,12 @@
syntax = "proto3";
/* trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) */
package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ChannelProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -98,10 +99,10 @@ message ModuleSettings {
uint32 position_precision = 1;
/*
* Controls whether or not the phone / clients should mute the current channel
* 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_client_muted = 2;
bool is_muted = 2;
}
/*

View file

@ -8,7 +8,7 @@ import "meshtastic/mesh.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ClientOnlyProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -7,7 +7,7 @@ import "meshtastic/device_ui.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ConfigProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
message Config {
@ -48,8 +48,9 @@ message Config {
* 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
* 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.
@ -108,6 +109,14 @@ message Config {
* 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;
}
/*
@ -178,6 +187,13 @@ message Config {
* 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;
}
/*
@ -189,7 +205,7 @@ message Config {
* Disabling this will disable the SerialConsole by not initilizing the StreamAPI
* Moved to SecurityConfig
*/
bool serial_enabled = 2[deprecated = true];
bool serial_enabled = 2 [deprecated = true];
/*
* For boards without a hard wired button, this is the pin number that will be used
@ -224,7 +240,7 @@ message Config {
* Clients should then limit available configuration and administrative options inside the user interface
* Moved to SecurityConfig
*/
bool is_managed = 9[deprecated = true];
bool is_managed = 9 [deprecated = true];
/*
* Disables the triple-press of user button to enable or disable GPS
@ -470,7 +486,7 @@ message Config {
* 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;
uint64 powermon_enables = 32;
}
/*
@ -583,45 +599,10 @@ message Config {
*/
message DisplayConfig {
/*
* How the GPS coordinates are displayed on the OLED screen.
* Deprecated in 2.7.4: Unused
*/
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;
enum DeprecatedGpsCoordinateFormat {
UNUSED = 0;
}
/*
@ -659,14 +640,14 @@ message Config {
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;
/*
* Can not be auto detected but set by proto. Used for 128x64 screens
* Can not be auto detected but set by proto. Used for 128x128 screens
*/
OLED_SH1107_128_64 = 4;
OLED_SH1107_128_128 = 4;
}
/*
@ -676,9 +657,10 @@ message Config {
uint32 screen_on_secs = 1;
/*
* Deprecated in 2.7.4: Unused
* 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.
@ -690,7 +672,7 @@ message Config {
* If this is set, the displayed compass will always point north. if unset, the old behaviour
* (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
@ -783,7 +765,7 @@ message Config {
* 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.
@ -795,6 +777,17 @@ message Config {
* 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;
}
/*
@ -911,19 +904,31 @@ message Config {
* 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;
}
/*
@ -938,8 +943,9 @@ message Config {
/*
* Long Range - Slow
* Deprecated in 2.7: Unpopular slow preset.
*/
LONG_SLOW = 1;
LONG_SLOW = 1 [deprecated = true];
/*
* Very Long Range - Slow
@ -978,6 +984,29 @@ message Config {
* 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;
}
/*
@ -1100,6 +1129,10 @@ message Config {
* 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 {
@ -1137,17 +1170,16 @@ message Config {
}
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.
*/
/*
* 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.
*/
/*
* The private key of the device.
* Used to create a shared key with a remote device.
*/
bytes private_key = 2;
/*

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ConnStatusProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
message DeviceConnectionStatus {

View file

@ -3,9 +3,10 @@
*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
*Map.style max_size:20

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "DeviceUIProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -88,8 +88,60 @@ message DeviceUIConfig {
* 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 {
/*
@ -126,7 +178,6 @@ message NodeFilter {
* Filter based on channel
*/
int32 channel = 7;
}
message NodeHighlight {
@ -154,7 +205,6 @@ message NodeHighlight {
* Highlight nodes by matching name string
*/
string node_name = 5;
}
message GeoPoint {
@ -163,14 +213,14 @@ message GeoPoint {
*/
int32 zoom = 1;
/*
* Coordinate: latitude
*/
/*
* Coordinate: latitude
*/
int32 latitude = 2;
/*
* Coordinate: longitude
*/
/*
* Coordinate: longitude
*/
int32 longitude = 3;
}
@ -317,7 +367,17 @@ enum Language {
*/
BULGARIAN = 17;
/*
/*
* Czech
*/
CZECH = 18;
/*
* Danish
*/
DANISH = 19;
/*
* Simplified Chinese (experimental)
*/
SIMPLIFIED_CHINESE = 30;
@ -326,4 +386,4 @@ enum Language {
* Traditional Chinese (experimental)
*/
TRADITIONAL_CHINESE = 31;
}
}

View file

@ -2,21 +2,21 @@ syntax = "proto3";
package meshtastic;
/* trunk-ignore(buf-lint/COMPILE) */
import "meshtastic/channel.proto";
import "meshtastic/mesh.proto";
import "meshtastic/telemetry.proto";
import "meshtastic/config.proto";
import "meshtastic/localonly.proto";
import "meshtastic/mesh.proto";
import "meshtastic/telemetry.proto";
import "nanopb.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "DeviceOnly";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
option (nanopb_fileopt).include = "<vector>";
/*
* Position with static location information only for NodeDBLite
*/
@ -168,6 +168,7 @@ message NodeInfoLite {
/*
* Bitfield for storing booleans.
* LSB 0 is_key_manually_verified
* LSB 1 is_muted
*/
uint32 bitfield = 13;
}
@ -269,7 +270,7 @@ message ChannelFile {
/*
* The on-disk backup of the node's preferences
*/
message BackupPreferences {
message BackupPreferences {
/*
* The version of the backup
*/

View file

@ -5,16 +5,16 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "InterdeviceProtos";
option java_package = "com.geeksville.mesh";
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
COLLECT_INTERVAL = 160; // in ms
BEEP_ON = 161; // duration ms
BEEP_OFF = 162; // cancel prematurely
SHUTDOWN = 163;
POWER_ON = 164;
SCD41_TEMP = 176;

View file

@ -8,7 +8,7 @@ import "meshtastic/module_config.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "LocalOnlyProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -131,6 +131,21 @@ message LocalModuleConfig {
*/
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
* incompatible changes This integer is set at build time and is private to

View file

@ -31,6 +31,9 @@
*MyNodeInfo.air_period_tx 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
# here because we might need to fill with zeros for padding to encryption block size (16 bytes per block)
*MeshPacket.encrypted max_size:256
@ -66,6 +69,14 @@
*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
# or fixed_length or fixed_count, or max_count
@ -86,4 +97,4 @@
*ChunkedPayload.chunk_count int_size:16
*ChunkedPayload.chunk_index int_size:16
*ChunkedPayload.payload_chunk max_size:228
*ChunkedPayload.payload_chunk max_size:228

View file

@ -4,16 +4,16 @@ package meshtastic;
import "meshtastic/channel.proto";
import "meshtastic/config.proto";
import "meshtastic/device_ui.proto";
import "meshtastic/module_config.proto";
import "meshtastic/portnums.proto";
import "meshtastic/telemetry.proto";
import "meshtastic/xmodem.proto";
import "meshtastic/device_ui.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "MeshProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -388,9 +388,9 @@ enum HardwareModel {
LORA_RELAY_V1 = 32;
/*
* TODO: REPLACE
* T-Echo Plus device from LilyGo
*/
NRF52840DK = 33;
T_ECHO_PLUS = 33;
/*
* TODO: REPLACE
@ -564,22 +564,22 @@ enum HardwareModel {
*/
HELTEC_CAPSULE_SENSOR_V3 = 65;
/*
/*
* Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display
*/
HELTEC_VISION_MASTER_T190 = 66;
/*
/*
* Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display
*/
HELTEC_VISION_MASTER_E213 = 67;
/*
/*
* Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display
*/
HELTEC_VISION_MASTER_E290 = 68;
/*
/*
* Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design,
* specifically adapted for the Meshtatic project
*/
@ -590,7 +590,7 @@ enum HardwareModel {
*/
SENSECAP_INDICATOR = 70;
/*
/*
* Seeed studio T1000-E tracker card. NRF52840 w/ LR1110 radio, GPS, button, buzzer, and sensors.
*/
TRACKER_T1000_E = 71;
@ -611,7 +611,7 @@ enum HardwareModel {
*/
RADIOMASTER_900_BANDIT = 74;
/*
/*
* Minewsemi ME25LS01 (ME25LE01_V1.0). NRF52840 w/ LR1110 radio, buttons and leds and pins.
*/
ME25LS01_4Y10TD = 75;
@ -640,7 +640,7 @@ enum HardwareModel {
/* Seeed XIAO S3 DK*/
SEEED_XIAO_S3 = 81;
/*
/*
* Nordic nRF52840+Semtech SX1262 LoRa BLE Combo Module. nRF52840+SX1262 MS24SF1
*/
MS24SF1 = 82;
@ -680,7 +680,7 @@ enum HardwareModel {
* Seeed XIAO nRF52840 + Wio SX1262 kit
*/
XIAO_NRF52_KIT = 88;
/*
* Elecrow ThinkNode M1 & M2
* https://www.elecrow.com/wiki/ThinkNode-M1_Transceiver_Device(Meshtastic)_Power_By_nRF52840.html
@ -693,17 +693,17 @@ enum HardwareModel {
* Lilygo T-ETH-Elite
*/
T_ETH_ELITE = 91;
/*
* Heltec HRI-3621 industrial probe
*/
HELTEC_SENSOR_HUB = 92;
/*
* Reserved Fried Chicken ID for future use
* Muzi Works Muzi-Base device
*/
RESERVED_FRIED_CHICKEN = 93;
MUZI_BASE = 93;
/*
* Heltec Magnetic Power Bank with Meshtastic compatible
*/
@ -724,52 +724,169 @@ enum HardwareModel {
*/
CROWPANEL = 97;
/**
/*
* Lilygo LINK32 board with sensors
*/
LINK_32 = 98;
/**
/*
* Seeed Tracker L1
*/
SEEED_WIO_TRACKER_L1 = 99;
/**
/*
* Seeed Tracker L1 EINK driver
*/
SEEED_WIO_TRACKER_L1_EINK = 100;
/*
* Reserved ID for future and past use
* Muzi Works R1 Neo
*/
QWANTZ_TINY_ARMS = 101;
/**
MUZI_R1_NEO = 101;
/*
* Lilygo T-Deck Pro
*/
T_DECK_PRO = 102;
/**
/*
* Lilygo TLora Pager
*/
T_LORA_PAGER = 103;
/**
* GAT562 Mesh Trial Tracker
/*
* M5Stack Reserved
*/
M5STACK_RESERVED = 104; // 0x68
/*
* RAKwireless WisMesh Tag
*/
GAT562_MESH_TRIAL_TRACKER = 104;
/**
* RAKwireless WisMesh Tag
*/
WISMESH_TAG = 105;
/**
* RAKwireless WisBlock Core RAK3312 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/
*/
/*
* RAKwireless WisBlock Core RAK3312 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/
*/
RAK3312 = 106;
/*
* Elecrow ThinkNode M5 https://www.elecrow.com/wiki/ThinkNode_M5_Meshtastic_LoRa_Signal_Transceiver_ESP32-S3.html
*/
THINKNODE_M5 = 107;
/*
* MeshSolar is an integrated power management and communication solution designed for outdoor low-power devices.
* https://heltec.org/project/meshsolar/
*/
HELTEC_MESH_SOLAR = 108;
/*
* Lilygo T-Echo Lite
*/
T_ECHO_LITE = 109;
/*
* New Heltec LoRA32 with ESP32-S3 CPU
*/
HELTEC_V4 = 110;
/*
* M5Stack C6L
*/
M5STACK_C6L = 111;
/*
* M5Stack Cardputer Adv
*/
M5STACK_CARDPUTER_ADV = 112;
/*
* ESP32S3 main controller with GPS and TFT screen.
*/
HELTEC_WIRELESS_TRACKER_V2 = 113;
/*
* LilyGo T-Watch Ultra
*/
T_WATCH_ULTRA = 114;
/*
* Elecrow ThinkNode M3
*/
THINKNODE_M3 = 115;
/*
* RAK WISMESH_TAP_V2 with ESP32-S3 CPU
*/
WISMESH_TAP_V2 = 116;
/*
* RAK3401
*/
RAK3401 = 117;
/*
* RAK6421 Hat+
*/
RAK6421 = 118;
/*
* Elecrow ThinkNode M4
*/
THINKNODE_M4 = 119;
/*
* Elecrow ThinkNode M6
*/
THINKNODE_M6 = 120;
/*
* Elecrow Meshstick 1262
*/
MESHSTICK_1262 = 121;
/*
* LilyGo T-Beam 1W
*/
TBEAM_1_WATT = 122;
/*
* LilyGo T5 S3 ePaper Pro (V1 and V2)
*/
T5_S3_EPAPER_PRO = 123;
/*
* LilyGo T-Beam BPF (144-148Mhz)
*/
TBEAM_BPF = 124;
/*
* LilyGo T-Mini E-paper S3 Kit
*/
MINI_EPAPER_S3 = 125;
/*
* LilyGo T-Display S3 Pro LR1121
*/
TDISPLAY_S3_PRO = 126;
/*
* Heltec Mesh Node T096 board features an nRF52840 CPU and a TFT screen.
*/
HELTEC_MESH_NODE_T096 = 127;
/*
* Seeed studio T1000-E Pro tracker card. NRF52840 w/ LR2021 radio,
* GPS, button, buzzer, and sensors.
*/
TRACKER_T1000_E_PRO = 128;
/*
* Elecrow ThinkNode M7, M8 and M9
*/
THINKNODE_M7 = 129;
THINKNODE_M8 = 130;
THINKNODE_M9 = 131;
/*
* ------------------------------------------------------------------------------------------------------------------------------------------
@ -975,6 +1092,18 @@ message Routing {
* Admin packet sent using PKC, but not from a public key on the admin key list
*/
ADMIN_PUBLIC_KEY_UNAUTHORIZED = 37;
/*
* Airtime fairness rate limit exceeded for a packet
* This typically enforced per portnum and is used to prevent a single node from monopolizing airtime
*/
RATE_LIMIT_EXCEEDED = 38;
/*
* PKI encryption failed, due to no public key for the remote node
* This is different from PKI_UNKNOWN_PUBKEY which indicates a failure upon receiving a packet
*/
PKI_SEND_FAIL_PUBLIC_KEY = 39;
}
oneof variant {
@ -1062,7 +1191,6 @@ message Data {
* The actual over-the-mesh message doing KeyVerification
*/
message KeyVerification {
/*
* random value Selected by the requesting node
*/
@ -1080,6 +1208,176 @@ message KeyVerification {
bytes hash2 = 3;
}
/*
* The actual over-the-mesh message doing store and forward++
*/
message StoreForwardPlusPlus {
/*
* Enum of message types
*/
enum SFPP_message_type {
/*
* Send an announcement of the canonical tip of a chain
*/
CANON_ANNOUNCE = 0;
/*
* Query whether a specific link is on the chain
*/
CHAIN_QUERY = 1;
/*
* Request the next link in the chain
*/
LINK_REQUEST = 3;
/*
* Provide a link to add to the chain
*/
LINK_PROVIDE = 4;
/*
* If we must fragment, send the first half
*/
LINK_PROVIDE_FIRSTHALF = 5;
/*
* If we must fragment, send the second half
*/
LINK_PROVIDE_SECONDHALF = 6;
}
/*
* Which message type is this
*/
SFPP_message_type sfpp_message_type = 1;
/*
* The hash of the specific message
*/
bytes message_hash = 2;
/*
* The hash of a link on a chain
*/
bytes commit_hash = 3;
/*
* the root hash of a chain
*/
bytes root_hash = 4;
/*
* The encrypted bytes from a message
*/
bytes message = 5;
/*
* Message ID of the contained message
*/
uint32 encapsulated_id = 6;
/*
* Destination of the contained message
*/
uint32 encapsulated_to = 7;
/*
* Sender of the contained message
*/
uint32 encapsulated_from = 8;
/*
* The receive time of the message in question
*/
uint32 encapsulated_rxtime = 9;
/*
* Used in a LINK_REQUEST to specify the message X spots back from head
*/
uint32 chain_count = 10;
}
/*
* The actual over-the-mesh message doing RemoteShell
*/
message RemoteShell {
/*
* Frame op code for PTY session control and stream transport.
*
* Values 1-63 are client->server requests.
* Values 64-127 are server->client responses/events.
*/
enum OpCode {
OP_UNSET = 0;
// Client -> server
OPEN = 1;
INPUT = 2;
RESIZE = 3;
CLOSE = 4;
PING = 5;
ACK = 6;
// Server -> client
OPEN_OK = 64;
OUTPUT = 65;
CLOSED = 66;
ERROR = 67;
PONG = 68;
}
/*
* Structured frame operation.
*/
OpCode op = 1;
/*
* Logical PTY session identifier.
*/
uint32 session_id = 2;
/*
* Monotonic sequence number for this frame.
*/
uint32 seq = 3;
/*
* Cumulative ack sequence number.
*/
uint32 ack_seq = 4;
/*
* Opaque bytes payload for INPUT/OUTPUT/ERROR and other frame bodies.
*/
bytes payload = 5;
/*
* Terminal size columns used for OPEN/RESIZE signaling.
*/
uint32 cols = 6;
/*
* Terminal size rows used for OPEN/RESIZE signaling.
*/
uint32 rows = 7;
/*
* Bit flags for protocol extensions.
*/
uint32 flags = 8;
/*
* The last sequence number TX'd.
*/
uint32 last_tx_seq = 9;
/*
* The last sequence number RX'd.
*/
uint32 last_rx_seq = 10;
}
/*
* Waypoint message, used to share arbitrary locations across the mesh
*/
@ -1126,6 +1424,13 @@ message Waypoint {
fixed32 icon = 8;
}
/*
* Message for node status
*/
message StatusMessage {
string status = 1;
}
/*
* This message will be proxied over the PhoneAPI for the client to deliver to the MQTT server
*/
@ -1258,6 +1563,51 @@ message MeshPacket {
DELAYED_DIRECT = 2;
}
/*
* Enum to identify which transport mechanism this packet arrived over
*/
enum TransportMechanism {
/*
* The default case is that the node generated a packet itself
*/
TRANSPORT_INTERNAL = 0;
/*
* Arrived via the primary LoRa radio
*/
TRANSPORT_LORA = 1;
/*
* Arrived via a secondary LoRa radio
*/
TRANSPORT_LORA_ALT1 = 2;
/*
* Arrived via a tertiary LoRa radio
*/
TRANSPORT_LORA_ALT2 = 3;
/*
* Arrived via a quaternary LoRa radio
*/
TRANSPORT_LORA_ALT3 = 4;
/*
* Arrived via an MQTT connection
*/
TRANSPORT_MQTT = 5;
/*
* Arrived via Multicast UDP
*/
TRANSPORT_MULTICAST_UDP = 6;
/*
* Arrived via API connection
*/
TRANSPORT_API = 7;
}
/*
* The sending node number.
* Note: Our crypto implementation uses this field as well.
@ -1267,6 +1617,10 @@ message MeshPacket {
/*
* The (immediate) destination for this packet
* If the value is 4,294,967,295 (maximum value of an unsigned 32bit integer), this indicates that the packet was
* not destined for a specific node, but for a channel as indicated by the value of `channel` below.
* If the value is another, this indicates that the packet was destined for a specific
* node (i.e. a kind of "Direct Message" to this node) and not broadcast on a channel.
*/
fixed32 to = 2;
@ -1405,6 +1759,11 @@ message MeshPacket {
* Set by the firmware internally, clients are not supposed to set this.
*/
uint32 tx_after = 20;
/*
* Indicates which transport mechanism this packet arrived over
*/
TransportMechanism transport_mechanism = 21;
}
/*
@ -1535,6 +1894,12 @@ message NodeInfo {
* LSB 0 of the bitfield
*/
bool is_key_manually_verified = 12;
/*
* True if node has been muted
* Persistes between NodeDB internal clean ups
*/
bool is_muted = 13;
}
/*
@ -1619,6 +1984,47 @@ enum CriticalErrorCode {
FLASH_CORRUPTION_UNRECOVERABLE = 13;
}
/*
* Enum to indicate to clients whether this firmware is a special firmware build, like an event.
* The first 16 values are reserved for non-event special firmwares, like the Smart Citizen use case.
*/
enum FirmwareEdition {
/*
* Vanilla firmware
*/
VANILLA = 0;
/*
* Firmware for use in the Smart Citizen environmental monitoring network
*/
SMART_CITIZEN = 1;
/*
* Open Sauce, the maker conference held yearly in CA
*/
OPEN_SAUCE = 16;
/*
* DEFCON, the yearly hacker conference
*/
DEFCON = 17;
/*
* Burning Man, the yearly hippie gathering in the desert
*/
BURNING_MAN = 18;
/*
* Hamvention, the Dayton amateur radio convention
*/
HAMVENTION = 19;
/*
* Placeholder for DIY and unofficial events
*/
DIY_EDITION = 127;
}
/*
* Unique local debugging info for this node
* Note: we don't include position or the user info, because that will come in the
@ -1652,6 +2058,17 @@ message MyNodeInfo {
* The PlatformIO environment used to build this firmware
*/
string pio_env = 13;
/*
* The indicator for whether this device is running event firmware and which
*/
FirmwareEdition firmware_edition = 14;
/*
* The number of nodes in the nodedb.
* This is used by the phone to know how many NodeInfo packets to expect on want_config
*/
uint32 nodedb_count = 15;
}
/*
@ -1896,6 +2313,7 @@ message KeyVerificationFinal {
}
message DuplicatedPublicKey {}
message LowEntropyKey {}
/*
* Individual File info for the device
*/
@ -2169,7 +2587,7 @@ enum ExcludedModules {
*/
PAXCOUNTER_CONFIG = 0x1000;
/*
/*
* Bluetooth config (not technically a module, but used to indicate bluetooth capabilities)
*/
BLUETOOTH_CONFIG = 0x2000;
@ -2184,7 +2602,12 @@ enum ExcludedModules {
* A heartbeat message is sent to the node from the client to keep the connection alive.
* This is currently only needed to keep serial connections alive, but can be used by any PhoneAPI.
*/
message Heartbeat {}
message Heartbeat {
/*
* The nonce of the heartbeat message
*/
uint32 nonce = 1;
}
/*
* RemoteHardwarePins associated with a node
@ -2227,7 +2650,7 @@ message ChunkedPayload {
* Wrapper message for broken repeated oneof support
*/
message resend_chunks {
repeated uint32 chunks = 1;
repeated uint32 chunks = 1;
}
/*

View file

@ -27,3 +27,5 @@
*DetectionSensorConfig.monitor_pin int_size:8
*DetectionSensorConfig.name max_size:20
*DetectionSensorConfig.detection_trigger_type max_size:8
*StatusMessageConfig.node_status max_size:80

View file

@ -2,10 +2,12 @@ syntax = "proto3";
package meshtastic;
import "meshtastic/atak.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ModuleConfigProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -148,7 +150,6 @@ message ModuleConfig {
* Detection Sensor Module Config
*/
message DetectionSensorConfig {
enum TriggerType {
// Event is triggered if pin is low
LOGIC_LOW = 0;
@ -294,7 +295,82 @@ message ModuleConfig {
* 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;
}
/*
@ -339,6 +415,12 @@ message ModuleConfig {
// 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)
}
/*
@ -529,6 +611,12 @@ message ModuleConfig {
* ESP32 Only
*/
bool save = 3;
/*
* Bool indicating that the node should cleanup / destroy it's RangeTest.csv file.
* ESP32 Only
*/
bool clear_on_reboot = 4;
}
/*
@ -608,6 +696,17 @@ message ModuleConfig {
* 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;
}
/*
@ -702,13 +801,13 @@ message ModuleConfig {
/*
* Enable/disable CannedMessageModule.
*/
bool enabled = 9;
bool enabled = 9 [deprecated = true];
/*
* Input event origin accepted by the canned message module.
* 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.
@ -748,6 +847,16 @@ message ModuleConfig {
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
*/
@ -816,6 +925,37 @@ message ModuleConfig {
* TODO: REPLACE
*/
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;
}
}

View file

@ -8,7 +8,7 @@ import "meshtastic/mesh.proto";
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "MQTTProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "PaxcountProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "Portnums";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -115,6 +115,11 @@ enum PortNum {
*/
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.
* Also serves as a small example module.
@ -134,6 +139,22 @@ enum PortNum {
*/
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.
* Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic
@ -211,6 +232,12 @@ enum PortNum {
*/
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
@ -224,6 +251,20 @@ enum PortNum {
*/
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.
* To simplify initial development and testing you can use "PRIVATE_APP"

View file

@ -1,20 +1,20 @@
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 = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
package meshtastic;
/* 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)
*/
* 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.
*/
* If you are making new meshtastic features feel free to add new entries at the end of this definition.
*/
enum State {
None = 0;
@ -22,14 +22,14 @@ message PowerMon {
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 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)
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;
@ -44,22 +44,21 @@ message PowerMon {
Wifi_On = 0x400;
/*
GPS is actively trying to find our location
See GPSPowerState for more details
*/
* 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
* 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 {
/*
@ -69,7 +68,7 @@ message PowerStressMessage {
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
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

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "RemoteHardware";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "RTTTLConfigProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "StoreAndForwardProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*

View file

@ -4,9 +4,11 @@
*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

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "TelemetryProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
/*
@ -130,21 +130,21 @@ message EnvironmentMetrics {
optional float wind_lull = 17;
/*
* Radiation in µR/h
*/
* Radiation in µR/h
*/
optional float radiation = 18;
/*
* Rainfall in the last hour in mm
*/
* Rainfall in the last hour in mm
*/
optional float rainfall_1h = 19;
/*
* Rainfall in the last 24 hours in mm
*/
/*
* Rainfall in the last 24 hours in mm
*/
optional float rainfall_24h = 20;
/*
/*
* Soil moisture measured (% 1-100)
*/
optional uint32 soil_moisture = 21;
@ -153,6 +153,11 @@ message EnvironmentMetrics {
* Soil temperature measured (*C)
*/
optional float soil_temperature = 22;
/*
* One-wire temperature (*C)
*/
repeated float one_wire_temperature = 23;
}
/*
@ -245,62 +250,62 @@ message PowerMetrics {
*/
message AirQualityMetrics {
/*
* Concentration Units Standard PM1.0
* Concentration Units Standard PM1.0 in ug/m3
*/
optional uint32 pm10_standard = 1;
/*
* Concentration Units Standard PM2.5
* Concentration Units Standard PM2.5 in ug/m3
*/
optional uint32 pm25_standard = 2;
/*
* Concentration Units Standard PM10.0
* Concentration Units Standard PM10.0 in ug/m3
*/
optional uint32 pm100_standard = 3;
/*
* Concentration Units Environmental PM1.0
* Concentration Units Environmental PM1.0 in ug/m3
*/
optional uint32 pm10_environmental = 4;
/*
* Concentration Units Environmental PM2.5
* Concentration Units Environmental PM2.5 in ug/m3
*/
optional uint32 pm25_environmental = 5;
/*
* Concentration Units Environmental PM10.0
* Concentration Units Environmental PM10.0 in ug/m3
*/
optional uint32 pm100_environmental = 6;
/*
* 0.3um Particle Count
* 0.3um Particle Count in #/0.1l
*/
optional uint32 particles_03um = 7;
/*
* 0.5um Particle Count
* 0.5um Particle Count in #/0.1l
*/
optional uint32 particles_05um = 8;
/*
* 1.0um Particle Count
* 1.0um Particle Count in #/0.1l
*/
optional uint32 particles_10um = 9;
/*
* 2.5um Particle Count
* 2.5um Particle Count in #/0.1l
*/
optional uint32 particles_25um = 10;
/*
* 5.0um Particle Count
* 5.0um Particle Count in #/0.1l
*/
optional uint32 particles_50um = 11;
/*
* 10.0um Particle Count
* 10.0um Particle Count in #/0.1l
*/
optional uint32 particles_100um = 12;
@ -318,6 +323,56 @@ message AirQualityMetrics {
* 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;
}
/*
@ -388,12 +443,62 @@ message LocalStats {
* 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 {
message HealthMetrics {
/*
* Heart rate (beats per minute)
*/
@ -461,7 +566,6 @@ message HostMetrics {
optional string user_string = 9;
}
/*
* Types of Measurements the telemetry module is equipped to handle
*/
@ -506,6 +610,11 @@ message Telemetry {
* Linux host metrics
*/
HostMetrics host_metrics = 8;
/*
* Traffic management statistics
*/
TrafficManagementStats traffic_management_stats = 9;
}
}
@ -549,7 +658,7 @@ enum TelemetrySensorType {
BMP280 = 6;
/*
* High accuracy temperature and humidity
* TODO - REMOVE High accuracy temperature and humidity
*/
SHTC3 = 7;
@ -574,7 +683,7 @@ enum TelemetrySensorType {
QMC5883L = 11;
/*
* High accuracy temperature and humidity
* TODO - REMOVE High accuracy temperature and humidity
*/
SHT31 = 12;
@ -599,7 +708,7 @@ enum TelemetrySensorType {
RCWL9620 = 16;
/*
* Sensirion High accuracy temperature and humidity
* TODO - REMOVE Sensirion High accuracy temperature and humidity
*/
SHT4X = 17;
@ -717,6 +826,61 @@ enum TelemetrySensorType {
* 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;
}
/*
@ -733,3 +897,38 @@ message Nau7802Config {
*/
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;
}

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "XmodemProtos";
option java_package = "com.geeksville.mesh";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";
message XModem {

105
packages/rust/Cargo.lock generated Normal file
View 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
View 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"

View file

5
packages/rust/src/lib.rs Normal file
View 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
View 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
View 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
View file

20
packages/ts/mod.ts Normal file
View 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
View 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
View file

@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}