Compare commits

...

367 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
Ben Meadors
0302caa2bc
Update README.md 2025-07-07 19:42:40 -05:00
Ben Meadors
584f0a3a35
Merge pull request #722 from meshtastic/KZ
Add Kazakhstan frequencies
2025-07-03 06:58:19 -05:00
Tom Fifield
6c76e4ab61
Add Kazakhstan frequencies
As reported by @KZ1R , Kazakhstan has frequencies in use for Lora
devices that are not covered by our existing band selections.

This adds
* KZ_433 433.075 - 434.775 MHz <10 mW EIRP, Low Powered Devices (LPD)
* KZ_863 863 - 868 MHz <25 mW EIRP, 500kHz channels allowed, must not be used at airfields

Legal ref provided in https://github.com/meshtastic/firmware/issues/7204 and verified.

https://www.gov.kz/memleket/entities/mdai/press/article/details/6128
Order of the Ministry of Investments and Development of the Republic of Kazakhstan No. 34 dated January 21, 2015.
 Published on 01 July 2024 19:03 Updated on 01 July 2024

Fixes https://github.com/meshtastic/firmware/issues/7204
2025-07-03 11:20:41 +10:00
Ben Meadors
854bb24833
Merge pull request #720 from meshtastic/rcarteraz-patch-1
should be from, not by
2025-07-02 13:51:11 -05:00
rcarteraz
95a1ea9230
should be from, not by 2025-07-02 11:43:48 -07:00
Ben Meadors
5ef7aec959
Merge pull request #719 from fablabbcn/feat/co2-sensor-metrics
Add CO2 sensor temperature and relative humidity
2025-07-02 05:52:07 -05:00
oscgonfer
7069b8570d Add CO2 sensor temperature and relative humidity 2025-07-02 11:46:25 +02:00
Ben Meadors
86c738e806
Merge pull request #718 from meshtastic/baseui-display-configs
Base UI display config settings
2025-07-01 20:15:47 -05:00
Ben Meadors
32e442a688 Base UI display config settings 2025-07-01 20:11:29 -05:00
Ben Meadors
2097da996c Update regarding hw_model policies 2025-06-26 19:36:14 -05:00
Daniel.Cao
1d05974fe4
feat: add support for RAKwireless wiscore RAK3312 and Wismeshtag (#714)
* Add RAKwireless hardware models 1.RAK3112  2.Wismeshtag
* Rename RAKwireless RAK3112 to RAK3312 in HardwareModel enum
* keep ID's in sequence

---------

Co-authored-by: Daniel.Cao <daniel.cao@rakwireless.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
2025-06-26 15:23:52 +02:00
Ben Meadors
0ca1555b68
Merge pull request #716 from meshtastic/caveman99-patch-1
bring back port 77 accidentally removed
2025-06-26 08:16:48 -05:00
Thomas Göttgens
efd4d5c553
bring back port 77 accidentally removed 2025-06-26 15:12:24 +02:00
oscgonfer
386fa53c15
Add ADS1X15 voltage metrics (#711)
* Add ADS1X15 voltage metrics
* Add 8 channels to allow for daisy chaining of ADS1X15
2025-06-25 20:05:19 +02:00
Ben Meadors
6791138f0b
Update README.md 2025-06-20 19:31:33 -05:00
Ben Meadors
b818a000ef
Merge pull request #704 from fifieldt/ANZ_433
Add ANZ_433 Region
2025-06-19 18:54:24 -05:00
Ben Meadors
8d3870241b
Update README.md 2025-06-19 18:26:10 -05:00
Ben Meadors
c758376d04
Merge pull request #705 from meshtastic/add_contact_ignore
Add ability to block Shared contacts
2025-06-15 06:26:29 -05:00
Ben Meadors
a1cc3e697d Add ability to block Shared contacts 2025-06-15 06:23:36 -05:00
Tom Fifield
9ccc49deaf
As reported by @monkeypants, the MY_433 region is not legal in ANZ
due to power limits being too high. This patch introduced an ANZ_433
region to match the requirements in Australia and New Zealand.

433.05 - 434.79 MHz, 25mW EIRP max, No duty cycle restrictions
AU Low Interference Potential https://www.acma.gov.au/licences/low-interference-potential-devices-lipd-class-licence
NZ General User Radio Licence for Short Range Devices https://gazette.govt.nz/notice/id/2022-go3100

Fixes https://github.com/meshtastic/firmware/issues/7032
2025-06-14 10:29:43 +10:00
Ben Meadors
0c112881df Int size 2025-06-11 19:10:00 -05:00
Ben Meadors
f45a09fa15
Merge pull request #702 from meshtastic/send_input_event
Implement send_input_event
2025-06-11 19:07:12 -05:00
Ben Meadors
579578394c
Update meshtastic/admin.proto
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-11 19:07:05 -05:00
Ben Meadors
07eb2a85ab
Update admin.options 2025-06-11 18:59:36 -05:00
Ben Meadors
3d34533935
Update meshtastic/admin.options
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-11 18:59:12 -05:00
Ben Meadors
20510c79b4
Update meshtastic/admin.options
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-11 18:58:40 -05:00
Ben Meadors
f7824eb09d Implement send_input_event 2025-06-11 17:27:19 -05:00
Ben Meadors
53380fce88
Merge pull request #701 from meshtastic/notificationTest
Add blank messages for ClientNotification oneof
2025-06-11 17:12:16 -05:00
Jonathan Bennett
9468fa3980 Add blank messages for ClientNotification oneof 2025-06-11 12:39:51 -05:00
Tom Fifield
b448d4a94f
Merge pull request #699 from csrutil/add-device-gat562_mesh_trial_tracker
Add GAT562 Mesh Trial Tracker HW model ID
2025-06-10 13:57:19 +10:00
csrutil
7c7621a39b add protobufs for GAT562 Mesh Trial Tracker 2025-06-08 16:29:12 +08:00
Ben Meadors
db60f07ac2
Merge pull request #698 from meshtastic/buzzer_mode
Added buzzer mode
2025-06-07 06:43:49 -05:00
Ben Meadors
abd60b70f0 Annotation 2025-06-07 06:33:59 -05:00
Ben Meadors
758115714f Added buzzer mode 2025-06-07 06:32:08 -05:00
Ben Meadors
cec9223ae1
Merge pull request #696 from meshtastic/device-ui-bulgarian
device-ui: bulgarian language support
2025-06-05 12:30:08 -05:00
Ben Meadors
ebaf8cfede
Merge pull request #697 from meshtastic/hw-model
add T-Deck Pro and TLora Pager HW model IDs
2025-06-05 12:29:51 -05:00
mverch67
81c4d48643 add T-Deck Pro and TLora Pager HW model IDs 2025-06-05 18:16:24 +02:00
mverch67
f9927457f6 bulgarian language support 2025-06-05 18:06:04 +02:00
Ben Meadors
24c7a3d287 WIO 2025-05-28 06:13:31 -05:00
Ben Meadors
022ea79bad
Merge pull request #694 from meshtastic/add-hwid
new HWID's
2025-05-27 15:38:57 -05:00
Jonathan Bennett
0268354426
Key validation messages (#690)
* Add the transport messages for a key validation protocol
2025-05-27 15:33:19 -05:00
Thomas Göttgens
4a108827a9
Add another one 2025-05-27 22:18:06 +02:00
Thomas Göttgens
fa4d98594c
Update meshtastic/mesh.proto
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-27 22:06:41 +02:00
Thomas Göttgens
7a256cad53
Update meshtastic/mesh.proto
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-27 22:06:12 +02:00
Thomas Göttgens
deff1ca54e
new HWID's 2025-05-27 21:34:41 +02:00
Xavier horwood
0b815a6f93
Add Ipv6 Option (#692) 2025-05-27 18:37:07 +02:00
Ben Meadors
91484534a5
Merge pull request #693 from meshtastic/heap-stats
Add heap free and total to local stats telemetry message
2025-05-25 06:30:18 -05:00
Ben Meadors
657651891a Add heap free and total to local stats telemetry message 2025-05-24 06:51:16 -05:00
Ben Meadors
0b32ce24f0
Merge pull request #689 from meshtastic/key-validation
add nodeinfo bool/bitfield for is_manually_validated
2025-05-20 19:42:17 -05:00
Ben Meadors
117ea15f6f
Update mesh.proto 2025-05-20 19:41:21 -05:00
Jonathan Bennett
08d7a07a4a Better name for is_key_manually_verified 2025-05-20 19:25:52 -05:00
Jonathan Bennett
2b59c7f519 add nodeinfo bool/bitfield for is_manually_validated 2025-05-20 18:22:37 -05:00
Jonathan Bennett
d8b709aa5d
Add missed max_size for optional HostMetrics string (#688) 2025-05-17 12:28:08 -05:00
Michael Cullen
475694e62b
Add PCT2075 sensor (#687)
This is a temperature sensor
2025-05-17 10:27:03 -05:00
Jonathan Bennett
490d0123b5
Add the user_string to HostMetrics (#686) 2025-05-17 10:23:47 -05:00
Jonathan Bennett
4eb0aebaef
Add Linux Host Metrics (#685)
* Add Linux Host Metrics

* Tweak to load values
2025-05-14 16:58:20 -05:00
Ben Meadors
47ec99aa4c
Merge pull request #684 from meshtastic/map-report-opt-in
Explicit map report opt-in
2025-05-14 14:13:58 -05:00
Ben Meadors
f76d353f38
Update module_config.proto 2025-05-14 14:13:51 -05:00
Ben Meadors
3a35144931
Update module_config.proto 2025-05-14 14:13:12 -05:00
Ben Meadors
a8da85a73f Clarification 2025-05-14 13:32:22 -05:00
Ben Meadors
1e507865aa Clarification 2025-05-14 13:31:31 -05:00
Ben Meadors
bd3e8b2fc8 Explicit map report opt-in 2025-05-14 13:28:57 -05:00
Ben Meadors
8cb3e62a0d Optional 2025-05-14 13:23:41 -05:00
Ben Meadors
62f86771ef
Merge pull request #667 from meshtastic/attended-state
Add is_unmessagable to User
2025-05-14 10:47:46 -05:00
Ben Meadors
af475e6472 Also add to UserLite 2025-05-14 10:44:33 -05:00
Ben Meadors
ca6ea45b52
Update mesh.proto 2025-05-14 10:40:52 -05:00
Ben Meadors
4239bfc2f8
Remove attended 2025-05-14 10:38:53 -05:00
Ben Meadors
3b57a9ca8b
Merge pull request #682 from BegoonLab/add_max17261_lipo_battery_gauge
Add MAX17261 lipo battery gauge
2025-05-14 06:50:31 -05:00
Ben Meadors
816595c8bb Name it 2025-05-12 19:46:27 -05:00
Ben Meadors
d266887bb2 Add contact admin message 2025-05-12 19:27:32 -05:00
Alexander Begoon
ecdc0a5392
Add MAX17261 lipo battery gauge 2025-05-10 00:35:39 +02:00
Ben Meadors
078ac8dfbe
Merge pull request #680 from meshtastic/ve-direct
VE.Direct serial mode
2025-05-04 08:37:24 -05:00
Ben Meadors
5b3bbb8f6a VE.Direct serial mode 2025-05-04 08:36:40 -05:00
Ben Meadors
280f9d1bf8 Name 2025-05-04 06:34:23 -05:00
Ben Meadors
81c3153396 Add dsstore 2025-04-29 06:15:31 -05:00
Thomas Göttgens
27fac39141
add more hwid's 2025-04-17 12:04:32 +02:00
dylanli
b982b36dfa
add seeed solar node defination (#675) 2025-04-16 09:37:53 +02:00
Aaron.Lee
f9aa5cfd08
Add Heltec MeshPocket definition (#673) 2025-04-09 13:55:20 +02:00
Thomas Göttgens
5a5ab103d2
add existing 128x64 screen setting to protos (#672) 2025-04-07 11:46:44 +02:00
Tom Fifield
5add3bae21
Merge pull request #670 from hafu/fix-comment
Fix comment description of CO2 telemetry value
2025-04-06 10:36:08 +08:00
Ben Meadors
13a3e5dcee
Merge pull request #671 from meshtastic/friedchicken
Reserved fried chicken HWMODEL
2025-04-03 19:44:12 -05:00
Ben Meadors
b772c71394 Reserved fried chicken HWMODEL 2025-04-03 19:32:17 -05:00
Ben Meadors
484d002a52 Add bluetooth 2025-03-30 19:27:40 -05:00
Ben Meadors
5e032099be
Merge pull request #669 from meshtastic/add-bluetooth-exclude
Add bluetooth config to excludes
2025-03-30 12:54:36 -05:00
Hannes Fuchs
2d2ebcd170
Fix comment description of CO2 telemetry value 2025-03-30 17:00:16 +02:00
Ben Meadors
6da320326b Add bluetooth config to excludes 2025-03-30 08:50:59 -05:00
Ben Meadors
f00e96f12d
Update README.md 2025-03-28 20:12:22 -05:00
Ben Meadors
6d7c9e6180 Add is_attended to User 2025-03-26 07:27:23 -05:00
Ben Meadors
b4044f8f9f
Merge pull request #666 from ke6zfi/master
Add go_package path for nanopb.proto
2025-03-25 13:15:34 -05:00
Chris LaFlash
306cdbf472 Add go_package path for nanopb.proto 2025-03-25 09:32:11 -07:00
Ben Meadors
b4e24c3a86
Merge pull request #664 from meshtastic/hri-3621
add HRI-3621
2025-03-21 07:43:35 -05:00
Thomas Göttgens
fbc8234432
add HRI-3621 2025-03-21 13:31:52 +01:00
49 changed files with 4217 additions and 222 deletions

View file

@ -10,3 +10,21 @@
- [ ] All top level messages commented - [ ] All top level messages commented
- [ ] All enum members have unique descriptions - [ ] All enum members have unique descriptions
### New Hardware Model Acceptance Policy
Due to limited availability and ongoing support, new Hardware Models will only be accepted from [Meshtastic Backers and Partners](https://meshtastic.com/). The Meshtastic team reserves the right to make exceptions to this policy.
#### Alternative for Community Contributors
You are welcome to use one of the existing DIY hardware models in your PlatformIO environment and create a pull request in the firmware project. Please note the following conditions:
- The device will **not** be officially supported by the core Meshtastic team.
- The device will **not** appear in the [Web Flasher](https://flasher.meshtastic.org/) or Github release assets.
- You will be responsible for ongoing maintenance and support.
- Community-contributed / DIY hardware models are considered experimental and will likely have limited or no testing.
#### Getting Official Support
To have your hardware model officially supported and included in the Meshtastic ecosystem, consider becoming a Meshtastic Backer or Partner. Visit [meshtastic.com](https://meshtastic.com/) for more information about partnership opportunities.

View file

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

View file

@ -1,30 +1,263 @@
name: Push new version to schema registry name: Publish to JSR & NPM
permissions:
contents: read
on: on:
push: push:
tags: tags:
- "**" - "v*"
workflow_dispatch:
inputs:
version:
description: "Version to publish (e.g. v1.2.3). Used when manually dispatching."
required: false
type: string
dry_run:
description: "Dry run mode - generate artifacts without publishing"
required: false
type: boolean
default: false
permissions:
contents: write
id-token: write
jobs: jobs:
push_to_registry: codegen:
runs-on: ubuntu-latest runs-on: ubuntu-24.04
outputs:
version: ${{ steps.version.outputs.VERSION }}
tag: ${{ steps.version.outputs.TAG }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Determine version
id: version
run: |
set -euo pipefail
if [ "${{ github.ref_type }}" = "tag" ]; then
TAG="${{ github.ref_name }}"
elif [ -n "${{ inputs.version || '' }}" ]; then
TAG="${{ inputs.version }}"
else
echo "No tag ref and no 'version' input. Provide a tag (push a tag) or pass inputs.version." >&2
exit 1
fi
VERSION="${TAG#v}"
echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT"
echo "TAG=$TAG" >> "$GITHUB_OUTPUT"
echo "Resolved VERSION=$VERSION, TAG=$TAG"
- name: Setup Buf
uses: bufbuild/buf-setup-action@main
with:
github_token: ${{ github.token }}
- name: Generate protobuf code
run: buf generate
- name: Move generated files to lib root
run: |
set -euo pipefail
src_dir="packages/ts/lib/meshtastic"
dest_dir="packages/ts/lib"
if [ ! -d "$src_dir" ]; then
echo "Expected source directory '$src_dir' does not exist. 'buf generate' may have failed or changed its output paths." >&2
exit 1
fi
if ! compgen -G "$src_dir"/*_pb.ts > /dev/null; then
echo "No '*_pb.ts' files found in '$src_dir'. 'buf generate' may have produced no TypeScript files or changed their naming." >&2
exit 1
fi
mv "$src_dir"/*_pb.ts "$dest_dir"/
- name: Show generated files
run: |
echo "=== packages/ts contents ==="
ls -la packages/ts/
echo "=== packages/ts/lib contents ==="
ls -la packages/ts/lib/ || echo "lib folder not found"
- name: Set package versions
run: |
set -euo pipefail
VERSION="${{ steps.version.outputs.VERSION }}"
for f in packages/ts/deno.json packages/ts/package.json; do
test -f "$f" || { echo "Missing $f" >&2; exit 1; }
sed -i "s/__PACKAGE_VERSION__/${VERSION}/g" "$f"
done
- name: Copy license & README
run: cp LICENSE README.md packages/ts/
- name: Upload TypeScript code
uses: actions/upload-artifact@v4
with:
name: ts_code
path: packages/ts
build-typescript:
runs-on: ubuntu-24.04
needs: codegen
steps:
- name: Download TypeScript code
uses: actions/download-artifact@v4
with:
name: ts_code
- name: Show downloaded files
run: |
echo "=== Working directory ==="
pwd
echo "=== Contents ==="
ls -la
echo "=== lib/ contents ==="
ls -la lib/ || echo "lib folder not found"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
- name: Install dependencies
run: npm install
- name: Build with tsdown
run: npm run build
- name: Show build output
run: |
echo "=== Build output ==="
ls -la
ls -la dist/
- name: Upload built NPM package
uses: actions/upload-artifact@v4
with:
name: npm_package
path: |
dist/
package.json
LICENSE
README.md
- name: Upload JSR package
uses: actions/upload-artifact@v4
with:
name: jsr_package
path: |
lib/
mod.ts
deno.json
LICENSE
README.md
create-release-zips:
runs-on: ubuntu-24.04
needs: [codegen, build-typescript]
steps:
- name: Download NPM package
uses: actions/download-artifact@v4
with:
name: npm_package
path: npm_package
- name: Download JSR package
uses: actions/download-artifact@v4
with:
name: jsr_package
path: jsr_package
- name: Create zip archives
run: |
cd npm_package && zip -r ../meshtastic-protobufs-npm.zip . && cd ..
cd jsr_package && zip -r ../meshtastic-protobufs-jsr.zip . && cd ..
- name: Upload release zips
uses: actions/upload-artifact@v4
with:
name: release_zips
path: |
meshtastic-protobufs-npm.zip
meshtastic-protobufs-jsr.zip
upload-release-assets:
runs-on: ubuntu-24.04
needs: [codegen, create-release-zips]
if: ${{ !inputs.dry_run }}
steps:
- name: Download release zips
uses: actions/download-artifact@v4
with:
name: release_zips
- name: Upload assets to GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.codegen.outputs.tag }}
files: |
meshtastic-protobufs-npm.zip
meshtastic-protobufs-jsr.zip
push-buf-registry:
runs-on: ubuntu-24.04
needs: codegen
if: ${{ !inputs.dry_run }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup Buf - name: Setup Buf
uses: bufbuild/buf-setup-action@v1.30.0 uses: bufbuild/buf-setup-action@main
with: with:
github_token: ${{ github.token }} github_token: ${{ github.token }}
- name: Push to schema registry - name: Push to schema registry
# uses: bufbuild/buf-push-action@v1 env:
# with: BUF_TOKEN: ${{ secrets.BUF_TOKEN }}
# buf_token: ${{ secrets.BUF_TOKEN }} run: buf push --tag ${{ needs.codegen.outputs.tag }}
run: |
export BUF_TOKEN=${{ secrets.BUF_TOKEN }} publish-npm:
buf push --tag ${{ github.ref_name }} runs-on: ubuntu-24.04
needs: [codegen, build-typescript]
if: ${{ !inputs.dry_run }}
steps:
- name: Download NPM package
uses: actions/download-artifact@v4
with:
name: npm_package
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
registry-url: "https://registry.npmjs.org"
- name: Publish to NPM
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-jsr:
runs-on: ubuntu-24.04
needs: [codegen, build-typescript]
if: ${{ !inputs.dry_run }}
permissions:
contents: read
id-token: write
steps:
- name: Download JSR package
uses: actions/download-artifact@v4
with:
name: jsr_package
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
- name: Publish to JSR
run: npx jsr publish

View file

@ -2,6 +2,7 @@ name: pull-request
permissions: permissions:
contents: read contents: read
pull-requests: write
on: pull_request on: pull_request
jobs: jobs:
@ -12,17 +13,11 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup Buf - name: Buf PR Checks
uses: bufbuild/buf-setup-action@v1.30.0 uses: bufbuild/buf-action@v1.2.0
with: with:
github_token: ${{ github.token }} github_token: ${{ github.token }}
token: ${{ secrets.BUF_TOKEN }}
- name: Lint format: true
uses: bufbuild/buf-lint-action@v1.1.1 lint: true
breaking: true
- 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'}}

View file

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

5
.gitignore vendored Normal file
View file

@ -0,0 +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 version: v2
modules:
- path: .
name: buf.build/meshtastic/protobufs name: buf.build/meshtastic/protobufs
deps: [] excludes:
build: - .trunk/
excludes: [] - meshtastic/device_only/
breaking:
use:
- FILE
lint: lint:
use:
- MINIMAL
except:
- PACKAGE_NO_IMPORT_CYCLE
ignore_only: ignore_only:
PACKAGE_DEFINED: PACKAGE_DEFINED:
- nanopb.proto - nanopb.proto
disallow_comment_ignores: true
breaking:
use: use:
- MINIMAL - FILE
except:
- EXTENSION_NO_DELETE
- FIELD_SAME_DEFAULT

View file

@ -2,6 +2,13 @@
*AdminMessage.session_passkey max_size: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
*AdminMessage.InputEvent.touch_y int_size:16
*AdminMessage.set_canned_message_module_messages max_size:201 *AdminMessage.set_canned_message_module_messages max_size:201
*AdminMessage.get_canned_message_module_messages_response max_size:201 *AdminMessage.get_canned_message_module_messages_response max_size:201
*AdminMessage.delete_file_request max_size:201 *AdminMessage.delete_file_request max_size:201

View file

@ -2,17 +2,18 @@ syntax = "proto3";
package meshtastic; package meshtastic;
/* trunk-ignore(buf-lint/COMPILE) */
import "meshtastic/channel.proto"; import "meshtastic/channel.proto";
import "meshtastic/config.proto"; import "meshtastic/config.proto";
import "meshtastic/connection_status.proto"; import "meshtastic/connection_status.proto";
import "meshtastic/device_ui.proto";
import "meshtastic/mesh.proto"; import "meshtastic/mesh.proto";
import "meshtastic/module_config.proto"; import "meshtastic/module_config.proto";
import "meshtastic/device_ui.proto";
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "AdminProtos"; option java_outer_classname = "AdminProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -21,7 +22,6 @@ option swift_prefix = "";
* (Prior to 1.2 these operations were done via special ToRadio operations) * (Prior to 1.2 these operations were done via special ToRadio operations)
*/ */
message AdminMessage { message AdminMessage {
/* /*
* The node generates this key and sends it with any get_x_response packets. * The 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. * 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 * TODO: REPLACE
*/ */
PAXCOUNTER_CONFIG = 12; PAXCOUNTER_CONFIG = 12;
/*
* TODO: REPLACE
*/
STATUSMESSAGE_CONFIG = 13;
/*
* Traffic management module config
*/
TRAFFICMANAGEMENT_CONFIG = 14;
/*
* TAK module config
*/
TAK_CONFIG = 15;
} }
enum BackupLocation { enum BackupLocation {
@ -166,6 +181,45 @@ message AdminMessage {
SD = 1; SD = 1;
} }
/*
* Input event message to be sent to the node.
*/
message InputEvent {
/*
* The input event code
*/
uint32 event_code = 1;
/*
* Keyboard character code
*/
uint32 kb_char = 2;
/*
* The touch X coordinate
*/
uint32 touch_x = 3;
/*
* The touch Y coordinate
*/
uint32 touch_y = 4;
}
/*
* User is requesting an over the air update.
* Node will reboot into the OTA loader
*/
message OTAEvent {
/*
* Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now)
*/
OTAMode reboot_ota_mode = 1;
/*
* A 32 byte hash of the OTA firmware.
* Used to verify the integrity of the firmware before applying an update.
*/
bytes ota_hash = 2;
}
/* /*
* TODO: REPLACE * TODO: REPLACE
*/ */
@ -296,6 +350,13 @@ message AdminMessage {
* Remove backups of the node's preferences * Remove backups of the node's preferences
*/ */
BackupLocation remove_backup_preferences = 26; BackupLocation remove_backup_preferences = 26;
/*
* Send an input event to the node.
* This is used to trigger physical input events like button presses, touch events, etc.
*/
InputEvent send_input_event = 27;
/* /*
* Set the owner for this node * Set the owner for this node
*/ */
@ -386,6 +447,11 @@ message AdminMessage {
*/ */
uint32 remove_ignored_node = 48; uint32 remove_ignored_node = 48;
/*
* Set specified node-num to be muted
*/
uint32 toggle_muted_node = 49;
/* /*
* Begins an edit transaction for config, module config, owner, and channel settings changes * Begins an edit transaction for config, module config, owner, and channel settings changes
* This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings)
@ -397,6 +463,16 @@ message AdminMessage {
*/ */
bool commit_edit_settings = 65; bool commit_edit_settings = 65;
/*
* Add a contact (User) to the nodedb
*/
SharedContact add_contact = 66;
/*
* Initiate or respond to a key verification request
*/
KeyVerificationAdmin key_verification = 67;
/* /*
* Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared.
*/ */
@ -405,8 +481,9 @@ message AdminMessage {
/* /*
* Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) * Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot)
* Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. * Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth.
* Deprecated in favor of reboot_ota_mode in 2.7.17
*/ */
int32 reboot_ota_seconds = 95; int32 reboot_ota_seconds = 95 [deprecated = true];
/* /*
* This message is only supported for the simulator Portduino build. * This message is only supported for the simulator Portduino build.
@ -431,11 +508,42 @@ message AdminMessage {
/* /*
* Tell the node to reset the nodedb. * Tell the node to reset the nodedb.
* When true, favorites are preserved through reset.
*/ */
int32 nodedb_reset = 100; bool nodedb_reset = 100;
/*
* Tell the node to reset into the OTA Loader
*/
OTAEvent ota_request = 102;
/*
* Parameters and sensor configuration
*/
SensorConfig sensor_config = 103;
} }
} }
/*
* Firmware update mode for OTA updates
*/
enum OTAMode {
/*
* Do not reboot into OTA mode
*/
NO_REBOOT_OTA = 0;
/*
* Reboot into OTA mode for BLE firmware update
*/
OTA_BLE = 1;
/*
* Reboot into OTA mode for WiFi firmware update
*/
OTA_WIFI = 2;
}
/* /*
* Parameters for setting up Meshtastic for ameteur radio usage * Parameters for setting up Meshtastic for ameteur radio usage
*/ */
@ -472,3 +580,183 @@ message NodeRemoteHardwarePinsResponse {
*/ */
repeated NodeRemoteHardwarePin node_remote_hardware_pins = 1; repeated NodeRemoteHardwarePin node_remote_hardware_pins = 1;
} }
message SharedContact {
/*
* The node number of the contact
*/
uint32 node_num = 1;
/*
* The User of the contact
*/
User user = 2;
/*
* Add this contact to the blocked / ignored list
*/
bool should_ignore = 3;
/*
* Set the IS_KEY_MANUALLY_VERIFIED bit
*/
bool manually_verified = 4;
}
/*
* This message is used by a client to initiate or complete a key verification
*/
message KeyVerificationAdmin {
/*
* Three stages of this request.
*/
enum MessageType {
/*
* This is the first stage, where a client initiates
*/
INITIATE_VERIFICATION = 0;
/*
* After the nonce has been returned over the mesh, the client prompts for the security number
* And uses this message to provide it to the node.
*/
PROVIDE_SECURITY_NUMBER = 1;
/*
* Once the user has compared the verification message, this message notifies the node.
*/
DO_VERIFY = 2;
/*
* This is the cancel path, can be taken at any point
*/
DO_NOT_VERIFY = 3;
}
MessageType message_type = 1;
/*
* The nodenum we're requesting
*/
uint32 remote_nodenum = 2;
/*
* The nonce is used to track the connection
*/
uint64 nonce = 3;
/*
* The 4 digit code generated by the remote node, and communicated outside the mesh
*/
optional uint32 security_number = 4;
}
message SensorConfig {
/*
* SCD4X CO2 Sensor configuration
*/
SCD4X_config scd4x_config = 1;
/*
* SEN5X PM Sensor configuration
*/
SEN5X_config sen5x_config = 2;
/*
* SCD30 CO2 Sensor configuration
*/
SCD30_config scd30_config = 3;
/*
* SHTXX temperature and relative humidity sensor configuration
*/
SHTXX_config shtxx_config = 4;
}
message SCD4X_config {
/*
* Set Automatic self-calibration enabled
*/
optional bool set_asc = 1;
/*
* Recalibration target CO2 concentration in ppm (FRC or ASC)
*/
optional uint32 set_target_co2_conc = 2;
/*
* Reference temperature in degC
*/
optional float set_temperature = 3;
/*
* Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure)
*/
optional uint32 set_altitude = 4;
/*
* Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude)
*/
optional uint32 set_ambient_pressure = 5;
/*
* Perform a factory reset of the sensor
*/
optional bool factory_reset = 6;
/*
* Power mode for sensor (true for low power, false for normal)
*/
optional bool set_power_mode = 7;
}
message SEN5X_config {
/*
* Reference temperature in degC
*/
optional float set_temperature = 1;
/*
* One-shot mode (true for low power - one-shot mode, false for normal - continuous mode)
*/
optional bool set_one_shot_mode = 2;
}
message SCD30_config {
/*
* Set Automatic self-calibration enabled
*/
optional bool set_asc = 1;
/*
* Recalibration target CO2 concentration in ppm (FRC or ASC)
*/
optional uint32 set_target_co2_conc = 2;
/*
* Reference temperature in degC
*/
optional float set_temperature = 3;
/*
* Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure)
*/
optional uint32 set_altitude = 4;
/*
* Power mode for sensor (true for low power, false for normal)
*/
optional uint32 set_measurement_interval = 5;
/*
* Perform a factory reset of the sensor
*/
optional bool soft_reset = 6;
}
message SHTXX_config {
/*
* Accuracy mode (0 = low, 1 = medium, 2 = high)
*/
optional uint32 set_accuracy = 1;
}

View file

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

View file

@ -6,3 +6,105 @@
*GeoChat.to max_size:120 *GeoChat.to max_size:120
*GeoChat.to_callsign 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 csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "CannedMessageConfigProtos"; option java_outer_classname = "CannedMessageConfigProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*

View file

@ -1,11 +1,12 @@
syntax = "proto3"; syntax = "proto3";
/* trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) */
package meshtastic; package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ChannelProtos"; option java_outer_classname = "ChannelProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -98,10 +99,10 @@ message ModuleSettings {
uint32 position_precision = 1; 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 * 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 csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ClientOnlyProtos"; option java_outer_classname = "ClientOnlyProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*

View file

@ -1,5 +1,7 @@
# longest current is 45 chars, plan with a bit of buffer # longest current is 45 chars, plan with a bit of buffer
*DeviceConfig.tzdef max_size:65 *DeviceConfig.tzdef max_size:65
*DeviceConfig.buzzer_mode int_size:8
*NetworkConfig.wifi_ssid max_size:33 *NetworkConfig.wifi_ssid max_size:33
*NetworkConfig.wifi_psk max_size:65 *NetworkConfig.wifi_psk max_size:65

View file

@ -7,7 +7,7 @@ import "meshtastic/device_ui.proto";
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ConfigProtos"; option java_outer_classname = "ConfigProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
message Config { message Config {
@ -48,8 +48,9 @@ message Config {
* Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. * Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
* Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry * Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
* or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate. * or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
* Deprecated in v2.7.11 because it creates "holes" in the mesh rebroadcast chain.
*/ */
REPEATER = 4; REPEATER = 4 [deprecated = true];
/* /*
* Description: Broadcasts GPS position packets as priority. * Description: Broadcasts GPS position packets as priority.
@ -108,6 +109,14 @@ message Config {
* consuming hops. * consuming hops.
*/ */
ROUTER_LATE = 11; 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;
} }
/* /*
@ -150,6 +159,43 @@ message Config {
CORE_PORTNUMS_ONLY = 5; CORE_PORTNUMS_ONLY = 5;
} }
/*
* Defines buzzer behavior for audio feedback
*/
enum BuzzerMode {
/*
* Default behavior.
* Buzzer is enabled for all audio feedback including button presses and alerts.
*/
ALL_ENABLED = 0;
/*
* Disabled.
* All buzzer audio feedback is disabled.
*/
DISABLED = 1;
/*
* Notifications Only.
* Buzzer is enabled only for notifications and alerts, but not for button presses.
* External notification config determines the specifics of the notification behavior.
*/
NOTIFICATIONS_ONLY = 2;
/*
* Non-notification system buzzer tones only.
* Buzzer is enabled only for non-notification tones such as button presses, startup, shutdown, but not for alerts.
*/
SYSTEM_ONLY = 3;
/*
* Direct Message notifications only.
* Buzzer is enabled only for direct messages and alerts, but not for button presses.
* External notification config determines the specifics of the notification behavior.
*/
DIRECT_MSG_ONLY = 4;
}
/* /*
* Sets the role of node * Sets the role of node
*/ */
@ -210,6 +256,12 @@ message Config {
* If true, disable the default blinking LED (LED_PIN) behavior on the device * If true, disable the default blinking LED (LED_PIN) behavior on the device
*/ */
bool led_heartbeat_disabled = 12; bool led_heartbeat_disabled = 12;
/*
* Controls buzzer behavior for audio feedback
* Defaults to ENABLED
*/
BuzzerMode buzzer_mode = 13;
} }
/* /*
@ -521,6 +573,11 @@ message Config {
*/ */
uint32 enabled_protocols = 10; uint32 enabled_protocols = 10;
/*
* Enable/Disable ipv6 support
*/
bool ipv6_enabled = 11;
/* /*
* Available flags auxiliary network protocols * Available flags auxiliary network protocols
*/ */
@ -542,45 +599,10 @@ message Config {
*/ */
message DisplayConfig { message DisplayConfig {
/* /*
* How the GPS coordinates are displayed on the OLED screen. * Deprecated in 2.7.4: Unused
*/ */
enum GpsCoordinateFormat { enum DeprecatedGpsCoordinateFormat {
/* UNUSED = 0;
* GPS coordinates are displayed in the normal decimal degrees format:
* DD.DDDDDD DDD.DDDDDD
*/
DEC = 0;
/*
* GPS coordinates are displayed in the degrees minutes seconds format:
* DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
*/
DMS = 1;
/*
* Universal Transverse Mercator format:
* ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
*/
UTM = 2;
/*
* Military Grid Reference System format:
* ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
* E is easting, N is northing
*/
MGRS = 3;
/*
* Open Location Code (aka Plus Codes).
*/
OLC = 4;
/*
* Ordnance Survey Grid Reference (the National Grid System of the UK).
* Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
* E is the easting, N is the northing
*/
OSGR = 5;
} }
/* /*
@ -603,24 +625,29 @@ message Config {
*/ */
enum OledType { enum OledType {
/* /*
* Default / Auto * Default / Autodetect
*/ */
OLED_AUTO = 0; OLED_AUTO = 0;
/* /*
* Default / Auto * Default / Autodetect
*/ */
OLED_SSD1306 = 1; OLED_SSD1306 = 1;
/* /*
* Default / Auto * Default / Autodetect
*/ */
OLED_SH1106 = 2; OLED_SH1106 = 2;
/* /*
* Can not be auto detected but set by proto. Used for 128x128 screens * Can not be auto detected but set by proto. Used for 128x64 screens
*/ */
OLED_SH1107 = 3; OLED_SH1107 = 3;
/*
* Can not be auto detected but set by proto. Used for 128x128 screens
*/
OLED_SH1107_128_128 = 4;
} }
/* /*
@ -630,9 +657,10 @@ message Config {
uint32 screen_on_secs = 1; uint32 screen_on_secs = 1;
/* /*
* Deprecated in 2.7.4: Unused
* How the GPS coordinates are formatted on the OLED screen. * How the GPS coordinates are formatted on the OLED screen.
*/ */
GpsCoordinateFormat gps_format = 2; DeprecatedGpsCoordinateFormat gps_format = 2 [deprecated = true];
/* /*
* Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
@ -644,7 +672,7 @@ message Config {
* If this is set, the displayed compass will always point north. if unset, the old behaviour * If this is set, the displayed compass will always point north. if unset, the old behaviour
* (top of display is heading direction) is used. * (top of display is heading direction) is used.
*/ */
bool compass_north_top = 4; bool compass_north_top = 4 [deprecated = true];
/* /*
* Flip screen vertically, for cases that mount the screen upside down * Flip screen vertically, for cases that mount the screen upside down
@ -749,6 +777,17 @@ message Config {
* If true, the device will display the time in 12-hour format on screen. * If true, the device will display the time in 12-hour format on screen.
*/ */
bool use_12h_clock = 12; 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;
} }
/* /*
@ -865,6 +904,31 @@ message Config {
* Philippines 915mhz * Philippines 915mhz
*/ */
PH_915 = 21; 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;
} }
/* /*
@ -879,8 +943,9 @@ message Config {
/* /*
* Long Range - Slow * Long Range - Slow
* Deprecated in 2.7: Unpopular slow preset.
*/ */
LONG_SLOW = 1; LONG_SLOW = 1 [deprecated = true];
/* /*
* Very Long Range - Slow * Very Long Range - Slow
@ -919,6 +984,29 @@ message Config {
* It is not legal to use in all regions due to this wider bandwidth. * It is not legal to use in all regions due to this wider bandwidth.
*/ */
SHORT_TURBO = 8; 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;
} }
/* /*
@ -1041,6 +1129,10 @@ message Config {
* Sets the ok_to_mqtt bit on outgoing packets * Sets the ok_to_mqtt bit on outgoing packets
*/ */
bool config_ok_to_mqtt = 105; bool config_ok_to_mqtt = 105;
/*
* Set where LORA FEM is enabled, disabled, or not present
*/
FEM_LNA_Mode fem_lna_mode = 106;
} }
message BluetoothConfig { message BluetoothConfig {
@ -1078,7 +1170,6 @@ message Config {
} }
message SecurityConfig { message SecurityConfig {
/* /*
* The public key of the user's device. * 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. * Sent out to other nodes on the mesh to allow them to compute a shared secret key.

View file

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

View file

@ -2,6 +2,8 @@
*DeviceUIConfig.screen_timeout int_size:16 *DeviceUIConfig.screen_timeout int_size:16
*DeviceUIConfig.ring_tone_id int_size:8 *DeviceUIConfig.ring_tone_id int_size:8
*DeviceUIConfig.calibration_data max_size:16 *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.node_name max_size:16
*NodeFilter.hops_away int_size:8 *NodeFilter.hops_away int_size:8
*NodeFilter.channel int_size:8 *NodeFilter.channel int_size:8

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "DeviceUIProtos"; option java_outer_classname = "DeviceUIProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -71,8 +71,77 @@ message DeviceUIConfig {
* Map related data * Map related data
*/ */
Map map_data = 15; Map map_data = 15;
}
/*
* Compass mode
*/
CompassMode compass_mode = 16;
/*
* RGB color for BaseUI
* 0xRRGGBB format, e.g. 0xFF0000 for red
*/
uint32 screen_rgb_color = 17;
/*
* Clockface analog style
* true for analog clockface, false for digital clockface
*/
bool is_clockface_analog = 18;
/*
* How the GPS coordinates are formatted on the OLED screen.
*/
GpsCoordinateFormat gps_format = 19;
/*
* How the GPS coordinates are displayed on the OLED screen.
*/
enum GpsCoordinateFormat {
/*
* GPS coordinates are displayed in the normal decimal degrees format:
* DD.DDDDDD DDD.DDDDDD
*/
DEC = 0;
/*
* GPS coordinates are displayed in the degrees minutes seconds format:
* DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
*/
DMS = 1;
/*
* Universal Transverse Mercator format:
* ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
*/
UTM = 2;
/*
* Military Grid Reference System format:
* ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
* E is easting, N is northing
*/
MGRS = 3;
/*
* Open Location Code (aka Plus Codes).
*/
OLC = 4;
/*
* Ordnance Survey Grid Reference (the National Grid System of the UK).
* Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
* E is the easting, N is the northing
*/
OSGR = 5;
/*
* Maidenhead Locator System
* Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System
*/
MLS = 6;
}
}
message NodeFilter { message NodeFilter {
/* /*
@ -109,7 +178,6 @@ message NodeFilter {
* Filter based on channel * Filter based on channel
*/ */
int32 channel = 7; int32 channel = 7;
} }
message NodeHighlight { message NodeHighlight {
@ -137,7 +205,6 @@ message NodeHighlight {
* Highlight nodes by matching name string * Highlight nodes by matching name string
*/ */
string node_name = 5; string node_name = 5;
} }
message GeoPoint { message GeoPoint {
@ -174,6 +241,23 @@ message Map {
bool follow_gps = 3; bool follow_gps = 3;
} }
enum CompassMode {
/*
* Compass with dynamic ring and heading
*/
DYNAMIC = 0;
/*
* Compass with fixed ring and heading
*/
FIXED_RING = 1;
/*
* Compass with heading and freeze option
*/
FREEZE_HEADING = 2;
}
enum Theme { enum Theme {
/* /*
* Dark * Dark
@ -278,6 +362,21 @@ enum Language {
*/ */
UKRAINIAN = 16; UKRAINIAN = 16;
/*
* Bulgarian
*/
BULGARIAN = 17;
/*
* Czech
*/
CZECH = 18;
/*
* Danish
*/
DANISH = 19;
/* /*
* Simplified Chinese (experimental) * Simplified Chinese (experimental)
*/ */

View file

@ -2,21 +2,21 @@ syntax = "proto3";
package meshtastic; package meshtastic;
/* trunk-ignore(buf-lint/COMPILE) */
import "meshtastic/channel.proto"; import "meshtastic/channel.proto";
import "meshtastic/mesh.proto";
import "meshtastic/telemetry.proto";
import "meshtastic/config.proto"; import "meshtastic/config.proto";
import "meshtastic/localonly.proto"; import "meshtastic/localonly.proto";
import "meshtastic/mesh.proto";
import "meshtastic/telemetry.proto";
import "nanopb.proto"; import "nanopb.proto";
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "DeviceOnly"; option java_outer_classname = "DeviceOnly";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
option (nanopb_fileopt).include = "<vector>"; option (nanopb_fileopt).include = "<vector>";
/* /*
* Position with static location information only for NodeDBLite * Position with static location information only for NodeDBLite
*/ */
@ -94,6 +94,11 @@ message UserLite {
* This is sent out to other nodes on the mesh to allow them to compute a shared secret key. * This is sent out to other nodes on the mesh to allow them to compute a shared secret key.
*/ */
bytes public_key = 7; bytes public_key = 7;
/*
* Whether or not the node can be messaged
*/
optional bool is_unmessagable = 9;
} }
message NodeInfoLite { message NodeInfoLite {
@ -159,6 +164,13 @@ message NodeInfoLite {
* Last byte of the node number of the node that should be used as the next hop to reach this node. * Last byte of the node number of the node that should be used as the next hop to reach this node.
*/ */
uint32 next_hop = 12; uint32 next_hop = 12;
/*
* Bitfield for storing booleans.
* LSB 0 is_key_manually_verified
* LSB 1 is_muted
*/
uint32 bitfield = 13;
} }
/* /*

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "InterdeviceProtos"; option java_outer_classname = "InterdeviceProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
// encapsulate up to 1k of NMEA string data // encapsulate up to 1k of NMEA string data

View file

@ -8,7 +8,7 @@ import "meshtastic/module_config.proto";
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "LocalOnlyProtos"; option java_outer_classname = "LocalOnlyProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -131,6 +131,21 @@ message LocalModuleConfig {
*/ */
ModuleConfig.PaxcounterConfig paxcounter = 14; ModuleConfig.PaxcounterConfig paxcounter = 14;
/*
* StatusMessage Config
*/
ModuleConfig.StatusMessageConfig statusmessage = 15;
/*
* The part of the config that is specific to the Traffic Management module
*/
ModuleConfig.TrafficManagementConfig traffic_management = 16;
/*
* TAK Config
*/
ModuleConfig.TAKConfig tak = 17;
/* /*
* A version integer used to invalidate old save files when we make * A version integer used to invalidate old save files when we make
* incompatible changes This integer is set at build time and is private to * incompatible changes This integer is set at build time and is private to

View file

@ -31,6 +31,9 @@
*MyNodeInfo.air_period_tx max_count:8 *MyNodeInfo.air_period_tx max_count:8
*MyNodeInfo.air_period_rx max_count:8 *MyNodeInfo.air_period_rx max_count:8
*MyNodeInfo.firmware_edition int_size:8
*MyNodeInfo.nodedb_count int_size:16
# Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256 # Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256
# here because we might need to fill with zeros for padding to encryption block size (16 bytes per block) # here because we might need to fill with zeros for padding to encryption block size (16 bytes per block)
*MeshPacket.encrypted max_size:256 *MeshPacket.encrypted max_size:256
@ -58,6 +61,23 @@
*ClientNotification.message max_size:400 *ClientNotification.message max_size:400
*KeyVerificationNumberInform.remote_longname max_size:40
*KeyVerificationNumberRequest.remote_longname max_size:40
*KeyVerificationFinal.remote_longname max_size:40
*KeyVerificationFinal.verification_characters max_size:10
*KeyVerification.hash1 max_size:32
*KeyVerification.hash2 max_size:32
*StoreForwardPlusPlus.message_hash max_size:32
*StoreForwardPlusPlus.commit_hash max_size:32
*StoreForwardPlusPlus.root_hash max_size:32
*StoreForwardPlusPlus.message max_size:240
*RemoteShell.payload max_size:200
*StatusMessage.status max_size:80
# MyMessage.name max_size:40 # MyMessage.name max_size:40
# or fixed_length or fixed_count, or max_count # or fixed_length or fixed_count, or max_count

View file

@ -4,16 +4,16 @@ package meshtastic;
import "meshtastic/channel.proto"; import "meshtastic/channel.proto";
import "meshtastic/config.proto"; import "meshtastic/config.proto";
import "meshtastic/device_ui.proto";
import "meshtastic/module_config.proto"; import "meshtastic/module_config.proto";
import "meshtastic/portnums.proto"; import "meshtastic/portnums.proto";
import "meshtastic/telemetry.proto"; import "meshtastic/telemetry.proto";
import "meshtastic/xmodem.proto"; import "meshtastic/xmodem.proto";
import "meshtastic/device_ui.proto";
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "MeshProtos"; option java_outer_classname = "MeshProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -388,9 +388,9 @@ enum HardwareModel {
LORA_RELAY_V1 = 32; LORA_RELAY_V1 = 32;
/* /*
* TODO: REPLACE * T-Echo Plus device from LilyGo
*/ */
NRF52840DK = 33; T_ECHO_PLUS = 33;
/* /*
* TODO: REPLACE * TODO: REPLACE
@ -694,6 +694,200 @@ enum HardwareModel {
*/ */
T_ETH_ELITE = 91; T_ETH_ELITE = 91;
/*
* Heltec HRI-3621 industrial probe
*/
HELTEC_SENSOR_HUB = 92;
/*
* Muzi Works Muzi-Base device
*/
MUZI_BASE = 93;
/*
* Heltec Magnetic Power Bank with Meshtastic compatible
*/
HELTEC_MESH_POCKET = 94;
/*
* Seeed Solar Node
*/
SEEED_SOLAR_NODE = 95;
/*
* NomadStar Meteor Pro https://nomadstar.ch/
*/
NOMADSTAR_METEOR_PRO = 96;
/*
* Elecrow CrowPanel Advance models, ESP32-S3 and TFT with SX1262 radio plugin
*/
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;
/*
* Muzi Works R1 Neo
*/
MUZI_R1_NEO = 101;
/*
* Lilygo T-Deck Pro
*/
T_DECK_PRO = 102;
/*
* Lilygo TLora Pager
*/
T_LORA_PAGER = 103;
/*
* M5Stack Reserved
*/
M5STACK_RESERVED = 104; // 0x68
/*
* RAKwireless WisMesh Tag
*/
WISMESH_TAG = 105;
/*
* 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;
/* /*
* ------------------------------------------------------------------------------------------------------------------------------------------ * ------------------------------------------------------------------------------------------------------------------------------------------
* Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
@ -776,6 +970,11 @@ message User {
* This is sent out to other nodes on the mesh to allow them to compute a shared secret key. * This is sent out to other nodes on the mesh to allow them to compute a shared secret key.
*/ */
bytes public_key = 8; bytes public_key = 8;
/*
* Whether or not the node can be messaged
*/
optional bool is_unmessagable = 9;
} }
/* /*
@ -893,6 +1092,18 @@ message Routing {
* Admin packet sent using PKC, but not from a public key on the admin key list * Admin packet sent using PKC, but not from a public key on the admin key list
*/ */
ADMIN_PUBLIC_KEY_UNAUTHORIZED = 37; 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 { oneof variant {
@ -976,6 +1187,197 @@ message Data {
optional uint32 bitfield = 9; optional uint32 bitfield = 9;
} }
/*
* The actual over-the-mesh message doing KeyVerification
*/
message KeyVerification {
/*
* random value Selected by the requesting node
*/
uint64 nonce = 1;
/*
* The final authoritative hash, only to be sent by NodeA at the end of the handshake
*/
bytes hash1 = 2;
/*
* The intermediary hash (actually derived from hash1),
* sent from NodeB to NodeA in response to the initial message.
*/
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 * Waypoint message, used to share arbitrary locations across the mesh
*/ */
@ -1022,6 +1424,13 @@ message Waypoint {
fixed32 icon = 8; 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 * This message will be proxied over the PhoneAPI for the client to deliver to the MQTT server
*/ */
@ -1154,6 +1563,51 @@ message MeshPacket {
DELAYED_DIRECT = 2; 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. * The sending node number.
* Note: Our crypto implementation uses this field as well. * Note: Our crypto implementation uses this field as well.
@ -1163,6 +1617,10 @@ message MeshPacket {
/* /*
* The (immediate) destination for this packet * 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; fixed32 to = 2;
@ -1301,6 +1759,11 @@ message MeshPacket {
* Set by the firmware internally, clients are not supposed to set this. * Set by the firmware internally, clients are not supposed to set this.
*/ */
uint32 tx_after = 20; uint32 tx_after = 20;
/*
* Indicates which transport mechanism this packet arrived over
*/
TransportMechanism transport_mechanism = 21;
} }
/* /*
@ -1424,6 +1887,19 @@ message NodeInfo {
* Persists between NodeDB internal clean ups * Persists between NodeDB internal clean ups
*/ */
bool is_ignored = 11; bool is_ignored = 11;
/*
* True if node public key has been verified.
* Persists between NodeDB internal clean ups
* 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;
} }
/* /*
@ -1508,6 +1984,47 @@ enum CriticalErrorCode {
FLASH_CORRUPTION_UNRECOVERABLE = 13; 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 * Unique local debugging info for this node
* Note: we don't include position or the user info, because that will come in the * Note: we don't include position or the user info, because that will come in the
@ -1541,6 +2058,17 @@ message MyNodeInfo {
* The PlatformIO environment used to build this firmware * The PlatformIO environment used to build this firmware
*/ */
string pio_env = 13; 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;
} }
/* /*
@ -1758,7 +2286,33 @@ message ClientNotification {
* The message body of the notification * The message body of the notification
*/ */
string message = 4; string message = 4;
oneof payload_variant {
KeyVerificationNumberInform key_verification_number_inform = 11;
KeyVerificationNumberRequest key_verification_number_request = 12;
KeyVerificationFinal key_verification_final = 13;
DuplicatedPublicKey duplicated_public_key = 14;
LowEntropyKey low_entropy_key = 15;
} }
}
message KeyVerificationNumberInform {
uint64 nonce = 1;
string remote_longname = 2;
uint32 security_number = 3;
}
message KeyVerificationNumberRequest {
uint64 nonce = 1;
string remote_longname = 2;
}
message KeyVerificationFinal {
uint64 nonce = 1;
string remote_longname = 2;
bool isSender = 3;
string verification_characters = 4;
}
message DuplicatedPublicKey {}
message LowEntropyKey {}
/* /*
* Individual File info for the device * Individual File info for the device
@ -2032,13 +2586,28 @@ enum ExcludedModules {
* Paxcounter module * Paxcounter module
*/ */
PAXCOUNTER_CONFIG = 0x1000; PAXCOUNTER_CONFIG = 0x1000;
/*
* Bluetooth config (not technically a module, but used to indicate bluetooth capabilities)
*/
BLUETOOTH_CONFIG = 0x2000;
/*
* Network config (not technically a module, but used to indicate network capabilities)
*/
NETWORK_CONFIG = 0x4000;
} }
/* /*
* A heartbeat message is sent to the node from the client to keep the connection alive. * 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. * 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 * RemoteHardwarePins associated with a node

View file

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

View file

@ -2,10 +2,12 @@ syntax = "proto3";
package meshtastic; package meshtastic;
import "meshtastic/atak.proto";
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "ModuleConfigProtos"; option java_outer_classname = "ModuleConfigProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -95,6 +97,11 @@ message ModuleConfig {
* Bits of precision for the location sent (default of 32 is full precision). * Bits of precision for the location sent (default of 32 is full precision).
*/ */
uint32 position_precision = 2; uint32 position_precision = 2;
/*
* Whether we have opted-in to report our location to the map
*/
bool should_report_location = 3;
} }
/* /*
@ -143,7 +150,6 @@ message ModuleConfig {
* Detection Sensor Module Config * Detection Sensor Module Config
*/ */
message DetectionSensorConfig { message DetectionSensorConfig {
enum TriggerType { enum TriggerType {
// Event is triggered if pin is low // Event is triggered if pin is low
LOGIC_LOW = 0; LOGIC_LOW = 0;
@ -289,7 +295,82 @@ message ModuleConfig {
* BLE RSSI threshold. Defaults to -80 * BLE RSSI threshold. Defaults to -80
*/ */
int32 ble_threshold = 4; 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;
} }
/* /*
@ -331,6 +412,15 @@ message ModuleConfig {
CALTOPO = 5; CALTOPO = 5;
// Ecowitt WS85 weather station // Ecowitt WS85 weather station
WS85 = 6; WS85 = 6;
// VE.Direct is a serial protocol used by Victron Energy products
// https://beta.ivc.no/wiki/index.php/Victron_VE_Direct_DIY_Cable
VE_DIRECT = 7;
// Used to configure and view some parameters of MeshSolar.
// https://heltec.org/project/meshsolar/
MS_CONFIG = 8;
// Logs mesh traffic to the serial pins, ideal for logging via openLog or similar.
LOG = 9; // includes other packets
LOGTEXT = 10; // only text (channel & DM)
} }
/* /*
@ -521,6 +611,12 @@ message ModuleConfig {
* ESP32 Only * ESP32 Only
*/ */
bool save = 3; bool save = 3;
/*
* Bool indicating that the node should cleanup / destroy it's RangeTest.csv file.
* ESP32 Only
*/
bool clear_on_reboot = 4;
} }
/* /*
@ -600,6 +696,17 @@ message ModuleConfig {
* Enable/Disable the health telemetry module on-device display * Enable/Disable the health telemetry module on-device display
*/ */
bool health_screen_enabled = 13; 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;
} }
/* /*
@ -694,13 +801,13 @@ message ModuleConfig {
/* /*
* Enable/disable CannedMessageModule. * Enable/disable CannedMessageModule.
*/ */
bool enabled = 9; bool enabled = 9 [deprecated = true];
/* /*
* Input event origin accepted by the canned message module. * Input event origin accepted by the canned message module.
* Can be e.g. "rotEnc1", "upDownEnc1", "scanAndSelect", "cardkb", "serialkb", or keyword "_any" * Can be e.g. "rotEnc1", "upDownEnc1", "scanAndSelect", "cardkb", "serialkb", or keyword "_any"
*/ */
string allow_input_source = 10; string allow_input_source = 10 [deprecated = true];
/* /*
* CannedMessageModule also sends a bell character with the messages. * CannedMessageModule also sends a bell character with the messages.
@ -740,6 +847,16 @@ message ModuleConfig {
uint32 blue = 5; uint32 blue = 5;
} }
/*
* StatusMessage config - Allows setting a status message for a node to periodically rebroadcast
*/
message StatusMessageConfig {
/*
* The actual status string
*/
string node_status = 1;
}
/* /*
* TODO: REPLACE * TODO: REPLACE
*/ */
@ -808,6 +925,37 @@ message ModuleConfig {
* TODO: REPLACE * TODO: REPLACE
*/ */
PaxcounterConfig paxcounter = 13; PaxcounterConfig paxcounter = 13;
/*
* TODO: REPLACE
*/
StatusMessageConfig statusmessage = 14;
/*
* Traffic management module config for mesh network optimization
*/
TrafficManagementConfig traffic_management = 15;
/*
* TAK team/role configuration for TAK_TRACKER
*/
TAKConfig tak = 16;
}
/*
* TAK team/role configuration
*/
message TAKConfig {
/*
* Team color.
* Default Unspecifed_Color -> firmware uses Cyan
*/
Team team = 1;
/*
* Member role.
* Default Unspecifed -> firmware uses TeamMember
*/
MemberRole role = 2;
} }
} }

View file

@ -8,7 +8,7 @@ import "meshtastic/mesh.proto";
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "MQTTProtos"; option java_outer_classname = "MQTTProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -103,4 +103,10 @@ message MapReport {
* Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT) * Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT)
*/ */
uint32 num_online_local_nodes = 13; uint32 num_online_local_nodes = 13;
/*
* User has opted in to share their location (map report) with the mqtt server
* Controlled by map_report.should_report_location
*/
bool has_opted_report_location = 14;
} }

View file

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

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "Portnums"; option java_outer_classname = "Portnums";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -110,6 +110,16 @@ enum PortNum {
*/ */
ALERT_APP = 11; ALERT_APP = 11;
/*
* Module/port for handling key verification requests.
*/
KEY_VERIFICATION_APP = 12;
/*
* Module/port for handling primitive remote shell access.
*/
REMOTE_SHELL_APP = 13;
/* /*
* Provides a 'ping' service that replies to any packet it receives. * Provides a 'ping' service that replies to any packet it receives.
* Also serves as a small example module. * Also serves as a small example module.
@ -129,6 +139,22 @@ enum PortNum {
*/ */
PAXCOUNTER_APP = 34; PAXCOUNTER_APP = 34;
/*
* Store and Forward++ module included in the firmware
* ENCODING: protobuf
* This module is specifically for Native Linux nodes, and provides a Git-style
* chain of messages.
*/
STORE_FORWARD_PLUSPLUS_APP = 35;
/*
* Node Status module
* ENCODING: protobuf
* This module allows setting an extra string of status for a node.
* Broadcasts on change and on a timer, possibly once a day.
*/
NODE_STATUS_APP = 36;
/* /*
* Provides a hardware serial interface to send and receive from the Meshtastic network. * Provides a hardware serial interface to send and receive from the Meshtastic network.
* Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic * Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic
@ -206,12 +232,39 @@ enum PortNum {
*/ */
POWERSTRESS_APP = 74; 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 * Reticulum Network Stack Tunnel App
* ENCODING: Fragmented RNS Packet. Handled by Meshtastic RNS interface * ENCODING: Fragmented RNS Packet. Handled by Meshtastic RNS interface
*/ */
RETICULUM_TUNNEL_APP = 76; RETICULUM_TUNNEL_APP = 76;
/*
* App for transporting Cayenne Low Power Payload, popular for LoRaWAN sensor nodes. Offers ability to send
* arbitrary telemetry over meshtastic that is not covered by telemetry.proto
* ENCODING: CayenneLLP
*/
CAYENNE_APP = 77;
/*
* ATAK Plugin V2
* Portnum for payloads from the official Meshtastic ATAK plugin using
* TAKPacketV2 with zstd dictionary compression.
*/
ATAK_PLUGIN_V2 = 78;
/*
* GroupAlarm integration
* Used for transporting GroupAlarm-related messages between Meshtastic nodes
* and companion applications/services.
*/
GROUPALARM_APP = 112;
/* /*
* Private applications should use portnums >= 256. * Private applications should use portnums >= 256.
* To simplify initial development and testing you can use "PRIVATE_APP" * To simplify initial development and testing you can use "PRIVATE_APP"

View file

@ -1,19 +1,19 @@
syntax = "proto3"; syntax = "proto3";
package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "PowerMonProtos"; option java_outer_classname = "PowerMonProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
package meshtastic;
/* Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs). /* 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 { message PowerMon {
/* Any significant power changing event in meshtastic should be tagged with a powermon state transition. /* 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 { enum State {
None = 0; None = 0;
@ -44,22 +44,21 @@ message PowerMon {
Wifi_On = 0x400; Wifi_On = 0x400;
/* /*
GPS is actively trying to find our location * GPS is actively trying to find our location
See GPSPowerState for more details * See GPSPowerState for more details
*/ */
GPS_Active = 0x800; GPS_Active = 0x800;
} }
} }
/* /*
* PowerStress testing support via the C++ PowerStress module * PowerStress testing support via the C++ PowerStress module
*/ */
message PowerStressMessage { message PowerStressMessage {
/* /*
* What operation would we like the UUT to perform. * 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 * 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 * machine has started processing their request
*/ */
enum Opcode { enum Opcode {
/* /*

View file

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

View file

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

View file

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

View file

@ -4,9 +4,16 @@
*EnvironmentMetrics.iaq int_size:16 *EnvironmentMetrics.iaq int_size:16
*EnvironmentMetrics.wind_direction int_size:16 *EnvironmentMetrics.wind_direction int_size:16
*EnvironmentMetrics.soil_moisture int_size:8 *EnvironmentMetrics.soil_moisture int_size:8
*EnvironmentMetrics.one_wire_temperature max_count:8
*LocalStats.num_online_nodes int_size:16 *LocalStats.num_online_nodes int_size:16
*LocalStats.num_total_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.heart_bpm int_size:8
*HealthMetrics.spO2 int_size:8 *HealthMetrics.spO2 int_size:8
*HostMetrics.load1 int_size:16
*HostMetrics.load5 int_size:16
*HostMetrics.load15 int_size:16
*HostMetrics.user_string max_size:200

View file

@ -5,7 +5,7 @@ package meshtastic;
option csharp_namespace = "Meshtastic.Protobufs"; option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "TelemetryProtos"; option java_outer_classname = "TelemetryProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
/* /*
@ -153,6 +153,11 @@ message EnvironmentMetrics {
* Soil temperature measured (*C) * Soil temperature measured (*C)
*/ */
optional float soil_temperature = 22; optional float soil_temperature = 22;
/*
* One-wire temperature (*C)
*/
repeated float one_wire_temperature = 23;
} }
/* /*
@ -188,6 +193,56 @@ message PowerMetrics {
* Current (Ch3) * Current (Ch3)
*/ */
optional float ch3_current = 6; optional float ch3_current = 6;
/*
* Voltage (Ch4)
*/
optional float ch4_voltage = 7;
/*
* Current (Ch4)
*/
optional float ch4_current = 8;
/*
* Voltage (Ch5)
*/
optional float ch5_voltage = 9;
/*
* Current (Ch5)
*/
optional float ch5_current = 10;
/*
* Voltage (Ch6)
*/
optional float ch6_voltage = 11;
/*
* Current (Ch6)
*/
optional float ch6_current = 12;
/*
* Voltage (Ch7)
*/
optional float ch7_voltage = 13;
/*
* Current (Ch7)
*/
optional float ch7_current = 14;
/*
* Voltage (Ch8)
*/
optional float ch8_voltage = 15;
/*
* Current (Ch8)
*/
optional float ch8_current = 16;
} }
/* /*
@ -195,69 +250,129 @@ message PowerMetrics {
*/ */
message AirQualityMetrics { message AirQualityMetrics {
/* /*
* Concentration Units Standard PM1.0 * Concentration Units Standard PM1.0 in ug/m3
*/ */
optional uint32 pm10_standard = 1; optional uint32 pm10_standard = 1;
/* /*
* Concentration Units Standard PM2.5 * Concentration Units Standard PM2.5 in ug/m3
*/ */
optional uint32 pm25_standard = 2; optional uint32 pm25_standard = 2;
/* /*
* Concentration Units Standard PM10.0 * Concentration Units Standard PM10.0 in ug/m3
*/ */
optional uint32 pm100_standard = 3; optional uint32 pm100_standard = 3;
/* /*
* Concentration Units Environmental PM1.0 * Concentration Units Environmental PM1.0 in ug/m3
*/ */
optional uint32 pm10_environmental = 4; optional uint32 pm10_environmental = 4;
/* /*
* Concentration Units Environmental PM2.5 * Concentration Units Environmental PM2.5 in ug/m3
*/ */
optional uint32 pm25_environmental = 5; optional uint32 pm25_environmental = 5;
/* /*
* Concentration Units Environmental PM10.0 * Concentration Units Environmental PM10.0 in ug/m3
*/ */
optional uint32 pm100_environmental = 6; optional uint32 pm100_environmental = 6;
/* /*
* 0.3um Particle Count * 0.3um Particle Count in #/0.1l
*/ */
optional uint32 particles_03um = 7; optional uint32 particles_03um = 7;
/* /*
* 0.5um Particle Count * 0.5um Particle Count in #/0.1l
*/ */
optional uint32 particles_05um = 8; optional uint32 particles_05um = 8;
/* /*
* 1.0um Particle Count * 1.0um Particle Count in #/0.1l
*/ */
optional uint32 particles_10um = 9; optional uint32 particles_10um = 9;
/* /*
* 2.5um Particle Count * 2.5um Particle Count in #/0.1l
*/ */
optional uint32 particles_25um = 10; optional uint32 particles_25um = 10;
/* /*
* 5.0um Particle Count * 5.0um Particle Count in #/0.1l
*/ */
optional uint32 particles_50um = 11; optional uint32 particles_50um = 11;
/* /*
* 10.0um Particle Count * 10.0um Particle Count in #/0.1l
*/ */
optional uint32 particles_100um = 12; optional uint32 particles_100um = 12;
/* /*
* 10.0um Particle Count * CO2 concentration in ppm
*/ */
optional uint32 co2 = 13; optional uint32 co2 = 13;
/*
* CO2 sensor temperature in degC
*/
optional float co2_temperature = 14;
/*
* CO2 sensor relative humidity in %
*/
optional float co2_humidity = 15;
/*
* Formaldehyde sensor formaldehyde concentration in ppb
*/
optional float form_formaldehyde = 16;
/*
* Formaldehyde sensor relative humidity in %RH
*/
optional float form_humidity = 17;
/*
* Formaldehyde sensor temperature in degrees Celsius
*/
optional float form_temperature = 18;
/*
* Concentration Units Standard PM4.0 in ug/m3
*/
optional uint32 pm40_standard = 19;
/*
* 4.0um Particle Count in #/0.1l
*/
optional uint32 particles_40um = 20;
/*
* PM Sensor Temperature
*/
optional float pm_temperature = 21;
/*
* PM Sensor humidity
*/
optional float pm_humidity = 22;
/*
* PM Sensor VOC Index
*/
optional float pm_voc_idx = 23;
/*
* PM Sensor NOx Index
*/
optional float pm_nox_idx = 24;
/*
* Typical Particle Size in um
*/
optional float particles_tps = 25;
} }
/* /*
@ -318,6 +433,66 @@ message LocalStats {
* This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you. * This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you.
*/ */
uint32 num_tx_relay_canceled = 11; uint32 num_tx_relay_canceled = 11;
/*
* Number of bytes used in the heap
*/
uint32 heap_total_bytes = 12;
/*
* Number of bytes free in the heap
*/
uint32 heap_free_bytes = 13;
/*
* Number of packets that were dropped because the transmit queue was full.
*/
uint32 num_tx_dropped = 14;
/*
* Noise floor value measured in dBm
*/
int32 noise_floor = 15;
}
/*
* Traffic management statistics for mesh network optimization
*/
message TrafficManagementStats {
/*
* Total number of packets inspected by traffic management
*/
uint32 packets_inspected = 1;
/*
* Number of position packets dropped due to deduplication
*/
uint32 position_dedup_drops = 2;
/*
* Number of NodeInfo requests answered from cache
*/
uint32 nodeinfo_cache_hits = 3;
/*
* Number of packets dropped due to rate limiting
*/
uint32 rate_limit_drops = 4;
/*
* Number of unknown/undecryptable packets dropped
*/
uint32 unknown_packet_drops = 5;
/*
* Number of packets with hop_limit exhausted for local-only broadcast
*/
uint32 hop_exhausted_packets = 6;
/*
* Number of times router hop preservation was applied
*/
uint32 router_hops_preserved = 7;
} }
/* /*
@ -340,6 +515,57 @@ message LocalStats {
optional float temperature = 3; optional float temperature = 3;
} }
/*
* Linux host metrics
*/
message HostMetrics {
/*
* Host system uptime
*/
uint32 uptime_seconds = 1;
/*
* Host system free memory
*/
uint64 freemem_bytes = 2;
/*
* Host system disk space free for /
*/
uint64 diskfree1_bytes = 3;
/*
* Secondary system disk space free
*/
optional uint64 diskfree2_bytes = 4;
/*
* Tertiary disk space free
*/
optional uint64 diskfree3_bytes = 5;
/*
* Host system one minute load in 1/100ths
*/
uint32 load1 = 6;
/*
* Host system five minute load in 1/100ths
*/
uint32 load5 = 7;
/*
* Host system fifteen minute load in 1/100ths
*/
uint32 load15 = 8;
/*
* Optional User-provided string for arbitrary host system information
* that doesn't make sense as a dedicated entry.
*/
optional string user_string = 9;
}
/* /*
* Types of Measurements the telemetry module is equipped to handle * Types of Measurements the telemetry module is equipped to handle
*/ */
@ -379,6 +605,16 @@ message Telemetry {
* Health telemetry metrics * Health telemetry metrics
*/ */
HealthMetrics health_metrics = 7; HealthMetrics health_metrics = 7;
/*
* Linux host metrics
*/
HostMetrics host_metrics = 8;
/*
* Traffic management statistics
*/
TrafficManagementStats traffic_management_stats = 9;
} }
} }
@ -422,7 +658,7 @@ enum TelemetrySensorType {
BMP280 = 6; BMP280 = 6;
/* /*
* High accuracy temperature and humidity * TODO - REMOVE High accuracy temperature and humidity
*/ */
SHTC3 = 7; SHTC3 = 7;
@ -447,7 +683,7 @@ enum TelemetrySensorType {
QMC5883L = 11; QMC5883L = 11;
/* /*
* High accuracy temperature and humidity * TODO - REMOVE High accuracy temperature and humidity
*/ */
SHT31 = 12; SHT31 = 12;
@ -472,7 +708,7 @@ enum TelemetrySensorType {
RCWL9620 = 16; RCWL9620 = 16;
/* /*
* Sensirion High accuracy temperature and humidity * TODO - REMOVE Sensirion High accuracy temperature and humidity
*/ */
SHT4X = 17; SHT4X = 17;
@ -575,6 +811,76 @@ enum TelemetrySensorType {
* RAKWireless RAK12035 Soil Moisture Sensor Module * RAKWireless RAK12035 Soil Moisture Sensor Module
*/ */
RAK12035 = 37; RAK12035 = 37;
/*
* MAX17261 lipo battery gauge
*/
MAX17261 = 38;
/*
* PCT2075 Temperature Sensor
*/
PCT2075 = 39;
/*
* ADS1X15 ADC
*/
ADS1X15 = 40;
/*
* ADS1X15 ADC_ALT
*/
ADS1X15_ALT = 41;
/*
* Sensirion SFA30 Formaldehyde sensor
*/
SFA30 = 42;
/*
* SEN5X PM SENSORS
*/
SEN5X = 43;
/*
* TSL2561 light sensor
*/
TSL2561 = 44;
/*
* BH1750 light sensor
*/
BH1750 = 45;
/*
* HDC1080 Temperature and Humidity Sensor
*/
HDC1080 = 46;
/*
* TODO - REMOVE STH21 Temperature and R. Humidity sensor
*/
SHT21 = 47;
/*
* Sensirion STC31 CO2 sensor
*/
STC31 = 48;
/*
* SCD30 CO2, humidity, temperature sensor
*/
SCD30 = 49;
/*
* SHT family of sensors for temperature and humidity
*/
SHTXX = 50;
/*
* DS248X Bridge for one-wire temperature sensors
*/
DS248X = 51;
} }
/* /*
@ -591,3 +897,38 @@ message Nau7802Config {
*/ */
float calibrationFactor = 2; 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 csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated"; option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "XmodemProtos"; option java_outer_classname = "XmodemProtos";
option java_package = "com.geeksville.mesh"; option java_package = "org.meshtastic.proto";
option swift_prefix = ""; option swift_prefix = "";
message XModem { message XModem {

View file

@ -9,6 +9,7 @@ syntax = "proto2";
import "google/protobuf/descriptor.proto"; import "google/protobuf/descriptor.proto";
option go_package = "github.com/meshtastic/go/generated";
option java_package = "fi.kapsi.koti.jpa.nanopb"; option java_package = "fi.kapsi.koti.jpa.nanopb";
enum FieldType { enum FieldType {

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"
]
}