From 748668b8e9d0ea912aa2e6f63c7f0dd1980caf08 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 13 May 2026 10:13:53 -0500 Subject: [PATCH 1/4] Remove ARIAL24 on NRF52 --- src/graphics/ScreenFonts.h | 54 ++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/src/graphics/ScreenFonts.h b/src/graphics/ScreenFonts.h index 26276edb2..4a9def5e1 100644 --- a/src/graphics/ScreenFonts.h +++ b/src/graphics/ScreenFonts.h @@ -88,24 +88,56 @@ #endif #endif +// --------------------------------------------------------------------------- +// Flash budget: nRF52 boards drop the 24pt glyph (~9.6 KB) and substitute the +// 16pt one. Other architectures (ESP32, RP2040, Portduino, STM32) always keep +// 24pt. Any nRF52 variant that wants 24pt back can set +// MESHTASTIC_LARGE_FONT_24PT=1 in its build flags. +// --------------------------------------------------------------------------- +#if defined(ARCH_NRF52) && !defined(MESHTASTIC_LARGE_FONT_24PT) +#define MESHTASTIC_DROP_24PT_FONT +#endif + +// --------------------------------------------------------------------------- +// Display tier → pick FONT_SMALL/MEDIUM/LARGE. +// BIG — eInk panel / TFT / Hackaday Communicator. +// TINY — M5STACK_UNITC6L only. +// default — 128x64 SSD1306 / SH1106 small OLED. +// DISPLAY_FORCE_SMALL_FONTS opts a big-screen variant out of BIG (rarely used). +// --------------------------------------------------------------------------- #if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \ defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS) || defined(ILI9488_CS) || defined(ST7796_CS) || \ defined(USE_ST7796) || defined(HACKADAY_COMMUNICATOR)) && \ !defined(DISPLAY_FORCE_SMALL_FONTS) -// The screen is bigger so use bigger fonts -#define FONT_SMALL FONT_MEDIUM_LOCAL // Height: 19 -#define FONT_MEDIUM FONT_LARGE_LOCAL // Height: 28 -#define FONT_LARGE FONT_LARGE_LOCAL // Height: 28 -#elif defined(M5STACK_UNITC6L) -#define FONT_SMALL FONT_SMALL_LOCAL // Height: 13 -#define FONT_MEDIUM FONT_SMALL_LOCAL // Height: 13 -#define FONT_LARGE FONT_SMALL_LOCAL // Height: 13 +// Tier BIG. SMALL is 16pt; MEDIUM/LARGE normally 24pt. +#define FONT_SMALL FONT_MEDIUM_LOCAL // 16pt +#if defined(MESHTASTIC_DROP_24PT_FONT) && defined(USE_EINK) +// Flash-tight nRF52 eInk: collapse MEDIUM/LARGE to 16pt too. +#define FONT_MEDIUM FONT_MEDIUM_LOCAL // 16pt +#define FONT_LARGE FONT_MEDIUM_LOCAL // 16pt #else -#define FONT_SMALL FONT_SMALL_LOCAL // Height: 13 -#define FONT_MEDIUM FONT_MEDIUM_LOCAL // Height: 19 -#define FONT_LARGE FONT_LARGE_LOCAL // Height: 28 +#define FONT_MEDIUM FONT_LARGE_LOCAL // 24pt +#define FONT_LARGE FONT_LARGE_LOCAL // 24pt +#endif +#elif defined(M5STACK_UNITC6L) +// Tier TINY — 10pt everywhere. +#define FONT_SMALL FONT_SMALL_LOCAL // 10pt +#define FONT_MEDIUM FONT_SMALL_LOCAL // 10pt +#define FONT_LARGE FONT_SMALL_LOCAL // 10pt +#else +// Default tier — small OLED. +#define FONT_SMALL FONT_SMALL_LOCAL // 10pt +#define FONT_MEDIUM FONT_MEDIUM_LOCAL // 16pt +#if defined(MESHTASTIC_DROP_24PT_FONT) +// Flash-tight nRF52 small-OLED: substitute 16pt for 24pt. Only the BLE PIN +// screen and one audio-module screen use FONT_LARGE on this tier. +#define FONT_LARGE FONT_MEDIUM_LOCAL // 16pt +#else +#define FONT_LARGE FONT_LARGE_LOCAL // 24pt +#endif #endif +// CrowPanel-S3 / T5-S3 ePaper override everything with their own 30pt font. #if defined(CROWPANEL_ESP32S3_5_EPAPER) || defined(T5_S3_EPAPER_PRO) #undef FONT_SMALL #undef FONT_MEDIUM From 9cd3a869388c1f701813f5fb60d9690c97044ec6 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 13 May 2026 10:43:16 -0500 Subject: [PATCH 2/4] Cleanup --- src/graphics/ScreenFonts.h | 55 +++++++++++--------------------------- 1 file changed, 16 insertions(+), 39 deletions(-) diff --git a/src/graphics/ScreenFonts.h b/src/graphics/ScreenFonts.h index 4a9def5e1..bac92b2b0 100644 --- a/src/graphics/ScreenFonts.h +++ b/src/graphics/ScreenFonts.h @@ -88,56 +88,33 @@ #endif #endif -// --------------------------------------------------------------------------- -// Flash budget: nRF52 boards drop the 24pt glyph (~9.6 KB) and substitute the -// 16pt one. Other architectures (ESP32, RP2040, Portduino, STM32) always keep -// 24pt. Any nRF52 variant that wants 24pt back can set -// MESHTASTIC_LARGE_FONT_24PT=1 in its build flags. -// --------------------------------------------------------------------------- +// nRF52 flash optimization: re-route FONT_LARGE_LOCAL to the 16pt glyph so +// the display-tier dispatch below picks up 16pt everywhere it would have used +// 24pt. Drops the ~9.6 KB ArialMT_Plain_24 table from the linked binary. +// Set MESHTASTIC_LARGE_FONT_24PT=1 in build_flags to opt out per variant. #if defined(ARCH_NRF52) && !defined(MESHTASTIC_LARGE_FONT_24PT) -#define MESHTASTIC_DROP_24PT_FONT +#undef FONT_LARGE_LOCAL +#define FONT_LARGE_LOCAL FONT_MEDIUM_LOCAL #endif -// --------------------------------------------------------------------------- -// Display tier → pick FONT_SMALL/MEDIUM/LARGE. -// BIG — eInk panel / TFT / Hackaday Communicator. -// TINY — M5STACK_UNITC6L only. -// default — 128x64 SSD1306 / SH1106 small OLED. -// DISPLAY_FORCE_SMALL_FONTS opts a big-screen variant out of BIG (rarely used). -// --------------------------------------------------------------------------- #if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \ defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS) || defined(ILI9488_CS) || defined(ST7796_CS) || \ defined(USE_ST7796) || defined(HACKADAY_COMMUNICATOR)) && \ !defined(DISPLAY_FORCE_SMALL_FONTS) -// Tier BIG. SMALL is 16pt; MEDIUM/LARGE normally 24pt. -#define FONT_SMALL FONT_MEDIUM_LOCAL // 16pt -#if defined(MESHTASTIC_DROP_24PT_FONT) && defined(USE_EINK) -// Flash-tight nRF52 eInk: collapse MEDIUM/LARGE to 16pt too. -#define FONT_MEDIUM FONT_MEDIUM_LOCAL // 16pt -#define FONT_LARGE FONT_MEDIUM_LOCAL // 16pt -#else -#define FONT_MEDIUM FONT_LARGE_LOCAL // 24pt -#define FONT_LARGE FONT_LARGE_LOCAL // 24pt -#endif +// The screen is bigger so use bigger fonts +#define FONT_SMALL FONT_MEDIUM_LOCAL // Height: 19 +#define FONT_MEDIUM FONT_LARGE_LOCAL // Height: 28 +#define FONT_LARGE FONT_LARGE_LOCAL // Height: 28 #elif defined(M5STACK_UNITC6L) -// Tier TINY — 10pt everywhere. -#define FONT_SMALL FONT_SMALL_LOCAL // 10pt -#define FONT_MEDIUM FONT_SMALL_LOCAL // 10pt -#define FONT_LARGE FONT_SMALL_LOCAL // 10pt +#define FONT_SMALL FONT_SMALL_LOCAL // Height: 13 +#define FONT_MEDIUM FONT_SMALL_LOCAL // Height: 13 +#define FONT_LARGE FONT_SMALL_LOCAL // Height: 13 #else -// Default tier — small OLED. -#define FONT_SMALL FONT_SMALL_LOCAL // 10pt -#define FONT_MEDIUM FONT_MEDIUM_LOCAL // 16pt -#if defined(MESHTASTIC_DROP_24PT_FONT) -// Flash-tight nRF52 small-OLED: substitute 16pt for 24pt. Only the BLE PIN -// screen and one audio-module screen use FONT_LARGE on this tier. -#define FONT_LARGE FONT_MEDIUM_LOCAL // 16pt -#else -#define FONT_LARGE FONT_LARGE_LOCAL // 24pt -#endif +#define FONT_SMALL FONT_SMALL_LOCAL // Height: 13 +#define FONT_MEDIUM FONT_MEDIUM_LOCAL // Height: 19 +#define FONT_LARGE FONT_LARGE_LOCAL // Height: 28 #endif -// CrowPanel-S3 / T5-S3 ePaper override everything with their own 30pt font. #if defined(CROWPANEL_ESP32S3_5_EPAPER) || defined(T5_S3_EPAPER_PRO) #undef FONT_SMALL #undef FONT_MEDIUM From 5a1d2b9ef4cb4d73518e3194719280336fee073e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 13 May 2026 10:52:05 -0500 Subject: [PATCH 3/4] Refine nRF52 flash optimization comment for FONT_LARGE_LOCAL definition --- src/graphics/ScreenFonts.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/graphics/ScreenFonts.h b/src/graphics/ScreenFonts.h index bac92b2b0..82ceb5406 100644 --- a/src/graphics/ScreenFonts.h +++ b/src/graphics/ScreenFonts.h @@ -91,8 +91,9 @@ // nRF52 flash optimization: re-route FONT_LARGE_LOCAL to the 16pt glyph so // the display-tier dispatch below picks up 16pt everywhere it would have used // 24pt. Drops the ~9.6 KB ArialMT_Plain_24 table from the linked binary. -// Set MESHTASTIC_LARGE_FONT_24PT=1 in build_flags to opt out per variant. -#if defined(ARCH_NRF52) && !defined(MESHTASTIC_LARGE_FONT_24PT) +// Set MESHTASTIC_LARGE_FONT_24PT=1 in build_flags to opt out per variant +// (undefined or 0 keeps the optimization on). +#if defined(ARCH_NRF52) && (!defined(MESHTASTIC_LARGE_FONT_24PT) || MESHTASTIC_LARGE_FONT_24PT == 0) #undef FONT_LARGE_LOCAL #define FONT_LARGE_LOCAL FONT_MEDIUM_LOCAL #endif From 7bdff8ff706b76fcd3d3a972e0f8168c7b5b5da8 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 13 May 2026 14:33:15 -0500 Subject: [PATCH 4/4] Bump protos --- protobufs | 2 +- src/mesh/generated/meshtastic/deviceonly.pb.h | 2 +- src/mesh/generated/meshtastic/mesh.pb.h | 39 +++++++++++++------ 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/protobufs b/protobufs index ff5b39250..108919393 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit ff5b392503776bf13073034070543d5c5aa1acf7 +Subproject commit 108919393a2a3fdf6ab82e50e10965e74394620f diff --git a/src/mesh/generated/meshtastic/deviceonly.pb.h b/src/mesh/generated/meshtastic/deviceonly.pb.h index 17bec9b3a..7c14c3e0f 100644 --- a/src/mesh/generated/meshtastic/deviceonly.pb.h +++ b/src/mesh/generated/meshtastic/deviceonly.pb.h @@ -448,7 +448,7 @@ extern const pb_msgdesc_t meshtastic_BackupPreferences_msg; #define MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_MAX_SIZE meshtastic_BackupPreferences_size #define meshtastic_BackupPreferences_size 2432 #define meshtastic_ChannelFile_size 718 -#define meshtastic_DeviceState_size 1737 +#define meshtastic_DeviceState_size 1944 #define meshtastic_NodeEnvironmentEntry_size 170 #define meshtastic_NodeInfoLite_size 105 #define meshtastic_NodePositionEntry_size 42 diff --git a/src/mesh/generated/meshtastic/mesh.pb.h b/src/mesh/generated/meshtastic/mesh.pb.h index f6fe88019..f0fea08d7 100644 --- a/src/mesh/generated/meshtastic/mesh.pb.h +++ b/src/mesh/generated/meshtastic/mesh.pb.h @@ -820,6 +820,7 @@ typedef struct _meshtastic_Routing { } meshtastic_Routing; typedef PB_BYTES_ARRAY_T(233) meshtastic_Data_payload_t; +typedef PB_BYTES_ARRAY_T(64) meshtastic_Data_xeddsa_signature_t; /* (Formerly called SubPacket) The payload portion fo a packet, this is the actual bytes that are sent inside a radio packet (because from/to are broken out by the comms library) */ @@ -853,6 +854,8 @@ typedef struct _meshtastic_Data { /* Bitfield for extra flags. First use is to indicate that user approves the packet being uploaded to MQTT. */ bool has_bitfield; uint8_t bitfield; + /* XEdDSA signature for the payload */ + meshtastic_Data_xeddsa_signature_t xeddsa_signature; } meshtastic_Data; typedef PB_BYTES_ARRAY_T(32) meshtastic_KeyVerification_hash1_t; @@ -1057,6 +1060,8 @@ typedef struct _meshtastic_MeshPacket { uint32_t tx_after; /* Indicates which transport mechanism this packet arrived over */ meshtastic_MeshPacket_TransportMechanism transport_mechanism; + /* Indicates whether the packet has a valid signature */ + bool xeddsa_signed; } meshtastic_MeshPacket; /* The bluetooth to device link: @@ -1113,6 +1118,10 @@ typedef struct _meshtastic_NodeInfo { /* True if node has been muted Persistes between NodeDB internal clean ups */ bool is_muted; + /* True if node is signing its packets via XEdDSA + Persists between NodeDB internal clean ups + LSB 1 of the bitfield */ + bool has_xeddsa_signed; } meshtastic_NodeInfo; typedef PB_BYTES_ARRAY_T(16) meshtastic_MyNodeInfo_device_id_t; @@ -1582,15 +1591,15 @@ extern "C" { #define meshtastic_User_init_default {"", "", "", {0}, _meshtastic_HardwareModel_MIN, 0, _meshtastic_Config_DeviceConfig_Role_MIN, {0, {0}}, false, 0} #define meshtastic_RouteDiscovery_init_default {0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}} #define meshtastic_Routing_init_default {0, {meshtastic_RouteDiscovery_init_default}} -#define meshtastic_Data_init_default {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0} +#define meshtastic_Data_init_default {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0, {0, {0}}} #define meshtastic_KeyVerification_init_default {0, {0, {0}}, {0, {0}}} #define meshtastic_StoreForwardPlusPlus_init_default {_meshtastic_StoreForwardPlusPlus_SFPP_message_type_MIN, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, 0, 0, 0, 0, 0} #define meshtastic_RemoteShell_init_default {_meshtastic_RemoteShell_OpCode_MIN, 0, 0, 0, {0, {0}}, 0, 0, 0, 0, 0} #define meshtastic_Waypoint_init_default {0, false, 0, false, 0, 0, 0, "", "", 0} #define meshtastic_StatusMessage_init_default {""} #define meshtastic_MqttClientProxyMessage_init_default {"", 0, {{0, {0}}}, 0} -#define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN} -#define meshtastic_NodeInfo_init_default {0, false, meshtastic_User_init_default, false, meshtastic_Position_init_default, 0, 0, false, meshtastic_DeviceMetrics_init_default, 0, 0, false, 0, 0, 0, 0, 0} +#define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN, 0} +#define meshtastic_NodeInfo_init_default {0, false, meshtastic_User_init_default, false, meshtastic_Position_init_default, 0, 0, false, meshtastic_DeviceMetrics_init_default, 0, 0, false, 0, 0, 0, 0, 0, 0} #define meshtastic_MyNodeInfo_init_default {0, 0, 0, {0, {0}}, "", _meshtastic_FirmwareEdition_MIN, 0} #define meshtastic_LogRecord_init_default {"", 0, "", _meshtastic_LogRecord_Level_MIN} #define meshtastic_QueueStatus_init_default {0, 0, 0, 0} @@ -1617,15 +1626,15 @@ extern "C" { #define meshtastic_User_init_zero {"", "", "", {0}, _meshtastic_HardwareModel_MIN, 0, _meshtastic_Config_DeviceConfig_Role_MIN, {0, {0}}, false, 0} #define meshtastic_RouteDiscovery_init_zero {0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}} #define meshtastic_Routing_init_zero {0, {meshtastic_RouteDiscovery_init_zero}} -#define meshtastic_Data_init_zero {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0} +#define meshtastic_Data_init_zero {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0, {0, {0}}} #define meshtastic_KeyVerification_init_zero {0, {0, {0}}, {0, {0}}} #define meshtastic_StoreForwardPlusPlus_init_zero {_meshtastic_StoreForwardPlusPlus_SFPP_message_type_MIN, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, 0, 0, 0, 0, 0} #define meshtastic_RemoteShell_init_zero {_meshtastic_RemoteShell_OpCode_MIN, 0, 0, 0, {0, {0}}, 0, 0, 0, 0, 0} #define meshtastic_Waypoint_init_zero {0, false, 0, false, 0, 0, 0, "", "", 0} #define meshtastic_StatusMessage_init_zero {""} #define meshtastic_MqttClientProxyMessage_init_zero {"", 0, {{0, {0}}}, 0} -#define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN} -#define meshtastic_NodeInfo_init_zero {0, false, meshtastic_User_init_zero, false, meshtastic_Position_init_zero, 0, 0, false, meshtastic_DeviceMetrics_init_zero, 0, 0, false, 0, 0, 0, 0, 0} +#define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN, 0} +#define meshtastic_NodeInfo_init_zero {0, false, meshtastic_User_init_zero, false, meshtastic_Position_init_zero, 0, 0, false, meshtastic_DeviceMetrics_init_zero, 0, 0, false, 0, 0, 0, 0, 0, 0} #define meshtastic_MyNodeInfo_init_zero {0, 0, 0, {0, {0}}, "", _meshtastic_FirmwareEdition_MIN, 0} #define meshtastic_LogRecord_init_zero {"", 0, "", _meshtastic_LogRecord_Level_MIN} #define meshtastic_QueueStatus_init_zero {0, 0, 0, 0} @@ -1698,6 +1707,7 @@ extern "C" { #define meshtastic_Data_reply_id_tag 7 #define meshtastic_Data_emoji_tag 8 #define meshtastic_Data_bitfield_tag 9 +#define meshtastic_Data_xeddsa_signature_tag 10 #define meshtastic_KeyVerification_nonce_tag 1 #define meshtastic_KeyVerification_hash1_tag 2 #define meshtastic_KeyVerification_hash2_tag 3 @@ -1755,6 +1765,7 @@ extern "C" { #define meshtastic_MeshPacket_relay_node_tag 19 #define meshtastic_MeshPacket_tx_after_tag 20 #define meshtastic_MeshPacket_transport_mechanism_tag 21 +#define meshtastic_MeshPacket_xeddsa_signed_tag 22 #define meshtastic_NodeInfo_num_tag 1 #define meshtastic_NodeInfo_user_tag 2 #define meshtastic_NodeInfo_position_tag 3 @@ -1768,6 +1779,7 @@ extern "C" { #define meshtastic_NodeInfo_is_ignored_tag 11 #define meshtastic_NodeInfo_is_key_manually_verified_tag 12 #define meshtastic_NodeInfo_is_muted_tag 13 +#define meshtastic_NodeInfo_has_xeddsa_signed_tag 14 #define meshtastic_MyNodeInfo_my_node_num_tag 1 #define meshtastic_MyNodeInfo_reboot_count_tag 8 #define meshtastic_MyNodeInfo_min_app_version_tag 11 @@ -1934,7 +1946,8 @@ X(a, STATIC, SINGULAR, FIXED32, source, 5) \ X(a, STATIC, SINGULAR, FIXED32, request_id, 6) \ X(a, STATIC, SINGULAR, FIXED32, reply_id, 7) \ X(a, STATIC, SINGULAR, FIXED32, emoji, 8) \ -X(a, STATIC, OPTIONAL, UINT32, bitfield, 9) +X(a, STATIC, OPTIONAL, UINT32, bitfield, 9) \ +X(a, STATIC, SINGULAR, BYTES, xeddsa_signature, 10) #define meshtastic_Data_CALLBACK NULL #define meshtastic_Data_DEFAULT NULL @@ -2019,7 +2032,8 @@ X(a, STATIC, SINGULAR, BOOL, pki_encrypted, 17) \ X(a, STATIC, SINGULAR, UINT32, next_hop, 18) \ X(a, STATIC, SINGULAR, UINT32, relay_node, 19) \ X(a, STATIC, SINGULAR, UINT32, tx_after, 20) \ -X(a, STATIC, SINGULAR, UENUM, transport_mechanism, 21) +X(a, STATIC, SINGULAR, UENUM, transport_mechanism, 21) \ +X(a, STATIC, SINGULAR, BOOL, xeddsa_signed, 22) #define meshtastic_MeshPacket_CALLBACK NULL #define meshtastic_MeshPacket_DEFAULT NULL #define meshtastic_MeshPacket_payload_variant_decoded_MSGTYPE meshtastic_Data @@ -2037,7 +2051,8 @@ X(a, STATIC, OPTIONAL, UINT32, hops_away, 9) \ X(a, STATIC, SINGULAR, BOOL, is_favorite, 10) \ X(a, STATIC, SINGULAR, BOOL, is_ignored, 11) \ X(a, STATIC, SINGULAR, BOOL, is_key_manually_verified, 12) \ -X(a, STATIC, SINGULAR, BOOL, is_muted, 13) +X(a, STATIC, SINGULAR, BOOL, is_muted, 13) \ +X(a, STATIC, SINGULAR, BOOL, has_xeddsa_signed, 14) #define meshtastic_NodeInfo_CALLBACK NULL #define meshtastic_NodeInfo_DEFAULT NULL #define meshtastic_NodeInfo_user_MSGTYPE meshtastic_User @@ -2339,7 +2354,7 @@ extern const pb_msgdesc_t meshtastic_ChunkedPayloadResponse_msg; #define meshtastic_ChunkedPayload_size 245 #define meshtastic_ClientNotification_size 482 #define meshtastic_Compressed_size 239 -#define meshtastic_Data_size 269 +#define meshtastic_Data_size 335 #define meshtastic_DeviceMetadata_size 54 #define meshtastic_DuplicatedPublicKey_size 0 #define meshtastic_FileInfo_size 236 @@ -2352,12 +2367,12 @@ extern const pb_msgdesc_t meshtastic_ChunkedPayloadResponse_msg; #define meshtastic_LockdownStatus_size 53 #define meshtastic_LogRecord_size 426 #define meshtastic_LowEntropyKey_size 0 -#define meshtastic_MeshPacket_size 381 +#define meshtastic_MeshPacket_size 450 #define meshtastic_MqttClientProxyMessage_size 501 #define meshtastic_MyNodeInfo_size 83 #define meshtastic_NeighborInfo_size 258 #define meshtastic_Neighbor_size 22 -#define meshtastic_NodeInfo_size 325 +#define meshtastic_NodeInfo_size 327 #define meshtastic_NodeRemoteHardwarePin_size 29 #define meshtastic_Position_size 144 #define meshtastic_QueueStatus_size 23