From 0234126e866159052db90b3630c84aec518489e4 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 11:59:59 -0500 Subject: [PATCH 1/6] Add event enum to indicate to client if this is event firmware --- meshtastic/mesh.proto | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index d826269..c10935c 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1627,6 +1627,31 @@ enum CriticalErrorCode { FLASH_CORRUPTION_UNRECOVERABLE = 13; } +/* + * Enum to indicate to clients whether this firmware is an event firmware build. + */ +enum EventFirmwareIndicator { + /* + * Vanilla firmware + */ + VANILLA = 0; + + /* + * Open Sauce, the maker conference held yearly in CA + */ + OPEN_SAUCE = 1; + + /* + * DEFCON, the yearly hacker conference + */ + DEFCON = 2; + + /* + * Burning Man, the yearly hippie gathering in the desert + */ + BURNING_MAN = 3; +} + /* * Unique local debugging info for this node * Note: we don't include position or the user info, because that will come in the @@ -1660,6 +1685,11 @@ message MyNodeInfo { * The PlatformIO environment used to build this firmware */ string pio_env = 13; + + /* + * The indicator for whether this device is running event firmware and which + */ + EventFirmwareIndicator event_firmware = 14; } /* From 08fbd7b987158f02b1fa1ff34a092a0a924a7e97 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 12:06:57 -0500 Subject: [PATCH 2/6] Whitespace fixes --- meshtastic/config.proto | 10 +++++----- meshtastic/mesh.proto | 4 ++-- meshtastic/telemetry.proto | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 631a6fb..1bc9bd0 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -919,27 +919,27 @@ message Config { * Philippines 915mhz */ PH_915 = 21; - + /* * Australia / New Zealand 433MHz */ ANZ_433 = 22; - + /* * Kazakhstan 433MHz */ KZ_433 = 23; - + /* * Kazakhstan 863MHz */ KZ_863 = 24; - + /* * Nepal 865MHz */ NP_865 = 25; - + /* * Brazil 902MHz */ diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c10935c..6753d59 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1639,12 +1639,12 @@ enum EventFirmwareIndicator { /* * Open Sauce, the maker conference held yearly in CA */ - OPEN_SAUCE = 1; + OPEN_SAUCE = 1; /* * DEFCON, the yearly hacker conference */ - DEFCON = 2; + DEFCON = 2; /* * Burning Man, the yearly hippie gathering in the desert diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index d65432d..3ec85b4 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -333,7 +333,7 @@ message AirQualityMetrics { * Formaldehyde sensor temperature in degrees Celsius */ optional float form_temperature = 18; - + /* * Concentration Units Standard PM4.0 in ug/m3 */ From b35702d8aefb79c634cb174ac604b500c282bb66 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 12:27:50 -0500 Subject: [PATCH 3/6] Add Hamvention --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6753d59..b296915 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1650,6 +1650,11 @@ enum EventFirmwareIndicator { * Burning Man, the yearly hippie gathering in the desert */ BURNING_MAN = 3; + + /* + * Hamvention, the Dayton amateur radio convention + */ + HAMVENTION = 4; } /* From 9cc803de0e13397d3be205f88c85a9436fe310a5 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 12:41:42 -0500 Subject: [PATCH 4/6] Further tuning --- meshtastic/mesh.proto | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index b296915..3e6ac36 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1628,33 +1628,46 @@ enum CriticalErrorCode { } /* - * Enum to indicate to clients whether this firmware is an event firmware build. + * 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 EventFirmwareIndicator { +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 = 1; + OPEN_SAUCE = 16; /* * DEFCON, the yearly hacker conference */ - DEFCON = 2; + DEFCON = 17; /* * Burning Man, the yearly hippie gathering in the desert */ - BURNING_MAN = 3; + BURNING_MAN = 18; /* * Hamvention, the Dayton amateur radio convention */ - HAMVENTION = 4; + HAMVENTION = 19; + + + + /* + * Placeholder for DIY and unofficial events + */ + DIY_EDITION = 127; } /* @@ -1694,7 +1707,7 @@ message MyNodeInfo { /* * The indicator for whether this device is running event firmware and which */ - EventFirmwareIndicator event_firmware = 14; + FirmwareEdition firmware_edition = 14; } /* From 898f06796b1d9af5962508cabbd4984d0ec1bce9 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 18:36:04 -0500 Subject: [PATCH 5/6] More Whitespace Co-authored-by: Austin --- meshtastic/mesh.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 3e6ac36..19b0b0e 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1662,8 +1662,6 @@ enum FirmwareEdition { */ HAMVENTION = 19; - - /* * Placeholder for DIY and unofficial events */ From d868b86e75ae714a3893d370f9e86899c8332357 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 22 Jul 2025 09:05:10 -0500 Subject: [PATCH 6/6] Keep edition smol --- meshtastic/mesh.options | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 49dd597..a6c22da 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -31,6 +31,8 @@ *MyNodeInfo.air_period_tx max_count:8 *MyNodeInfo.air_period_rx max_count:8 +*MyNodeInfo.firmware_edition int_size:8 + # Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256 # here because we might need to fill with zeros for padding to encryption block size (16 bytes per block) *MeshPacket.encrypted max_size:256