From 79850c6d03e832aa93479fff54e06043b142b754 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 8 Feb 2023 15:29:33 -0600 Subject: [PATCH 1/8] Set open psk for ham mode --- src/modules/AdminModule.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 3c4cef829..8e0cc1ebf 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -610,8 +610,16 @@ void AdminModule::handleSetHamMode(const meshtastic_HamParameters &p) config.lora.tx_power = p.tx_power; config.lora.override_frequency = p.frequency; + // Remove PSK of primary channel for plaintext amateur usage + auto primaryChannel = channels.getByIndex(channels.getPrimaryIndex()); + auto &channelSettings = ch.settings; + channelSettings.psk.bytes[0] = 0; + channelSettings.psk.size = 0; + channels.setChannel(primaryChannel); + channels.onConfigChanged(); + service.reloadOwner(false); - service.reloadConfig(SEGMENT_CONFIG | SEGMENT_DEVICESTATE); + service.reloadConfig(SEGMENT_CONFIG | SEGMENT_DEVICESTATE | SEGMENT_CHANNELS); } AdminModule::AdminModule() : ProtobufModule("Admin", meshtastic_PortNum_ADMIN_APP, &meshtastic_AdminMessage_msg) From 1c3970efabd7cfcf78b58c87da847b07e5962ab8 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 8 Feb 2023 15:36:23 -0600 Subject: [PATCH 2/8] Default node info broadcast secs for ham operation --- protobufs | 2 +- src/mesh/generated/meshtastic/config.pb.h | 13 +++++++++---- src/mesh/generated/meshtastic/deviceonly.pb.h | 2 +- src/mesh/generated/meshtastic/localonly.pb.h | 2 +- src/modules/AdminModule.cpp | 3 +++ 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/protobufs b/protobufs index 4bd60496c..400dc2358 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 4bd60496c7372b9612c8eac2b4365ff23cb92ab1 +Subproject commit 400dc2358942f1954b188cb5698a545850ca3d73 diff --git a/src/mesh/generated/meshtastic/config.pb.h b/src/mesh/generated/meshtastic/config.pb.h index 3d9fe24d4..0ffb4ccec 100644 --- a/src/mesh/generated/meshtastic/config.pb.h +++ b/src/mesh/generated/meshtastic/config.pb.h @@ -225,6 +225,9 @@ typedef struct _meshtastic_Config_DeviceConfig { uint32_t buzzer_gpio; /* Sets the role of node */ meshtastic_Config_DeviceConfig_RebroadcastMode rebroadcast_mode; + /* Send our nodeinfo this often + Defaults to 900 Seconds (15 minutes) */ + uint32_t node_info_broadcast_secs; } meshtastic_Config_DeviceConfig; /* Position Config */ @@ -515,7 +518,7 @@ extern "C" { /* Initializer values for message structs */ #define meshtastic_Config_init_default {0, {meshtastic_Config_DeviceConfig_init_default}} -#define meshtastic_Config_DeviceConfig_init_default {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN} +#define meshtastic_Config_DeviceConfig_init_default {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN, 0} #define meshtastic_Config_PositionConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0} #define meshtastic_Config_PowerConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0} #define meshtastic_Config_NetworkConfig_init_default {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_default, ""} @@ -524,7 +527,7 @@ extern "C" { #define meshtastic_Config_LoRaConfig_init_default {0, _meshtastic_Config_LoRaConfig_ModemPreset_MIN, 0, 0, 0, 0, _meshtastic_Config_LoRaConfig_RegionCode_MIN, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}} #define meshtastic_Config_BluetoothConfig_init_default {0, _meshtastic_Config_BluetoothConfig_PairingMode_MIN, 0} #define meshtastic_Config_init_zero {0, {meshtastic_Config_DeviceConfig_init_zero}} -#define meshtastic_Config_DeviceConfig_init_zero {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN} +#define meshtastic_Config_DeviceConfig_init_zero {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN, 0} #define meshtastic_Config_PositionConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0} #define meshtastic_Config_PowerConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0} #define meshtastic_Config_NetworkConfig_init_zero {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_zero, ""} @@ -540,6 +543,7 @@ extern "C" { #define meshtastic_Config_DeviceConfig_button_gpio_tag 4 #define meshtastic_Config_DeviceConfig_buzzer_gpio_tag 5 #define meshtastic_Config_DeviceConfig_rebroadcast_mode_tag 6 +#define meshtastic_Config_DeviceConfig_node_info_broadcast_secs_tag 7 #define meshtastic_Config_PositionConfig_position_broadcast_secs_tag 1 #define meshtastic_Config_PositionConfig_position_broadcast_smart_enabled_tag 2 #define meshtastic_Config_PositionConfig_fixed_position_tag 3 @@ -629,7 +633,8 @@ X(a, STATIC, SINGULAR, BOOL, serial_enabled, 2) \ X(a, STATIC, SINGULAR, BOOL, debug_log_enabled, 3) \ X(a, STATIC, SINGULAR, UINT32, button_gpio, 4) \ X(a, STATIC, SINGULAR, UINT32, buzzer_gpio, 5) \ -X(a, STATIC, SINGULAR, UENUM, rebroadcast_mode, 6) +X(a, STATIC, SINGULAR, UENUM, rebroadcast_mode, 6) \ +X(a, STATIC, SINGULAR, UINT32, node_info_broadcast_secs, 7) #define meshtastic_Config_DeviceConfig_CALLBACK NULL #define meshtastic_Config_DeviceConfig_DEFAULT NULL @@ -741,7 +746,7 @@ extern const pb_msgdesc_t meshtastic_Config_BluetoothConfig_msg; /* Maximum encoded size of messages (where known) */ #define meshtastic_Config_BluetoothConfig_size 10 -#define meshtastic_Config_DeviceConfig_size 20 +#define meshtastic_Config_DeviceConfig_size 26 #define meshtastic_Config_DisplayConfig_size 26 #define meshtastic_Config_LoRaConfig_size 77 #define meshtastic_Config_NetworkConfig_IpV4Config_size 20 diff --git a/src/mesh/generated/meshtastic/deviceonly.pb.h b/src/mesh/generated/meshtastic/deviceonly.pb.h index aef8ee8be..deb3514f9 100644 --- a/src/mesh/generated/meshtastic/deviceonly.pb.h +++ b/src/mesh/generated/meshtastic/deviceonly.pb.h @@ -188,7 +188,7 @@ extern const pb_msgdesc_t meshtastic_OEMStore_msg; /* Maximum encoded size of messages (where known) */ #define meshtastic_ChannelFile_size 638 #define meshtastic_DeviceState_size 21800 -#define meshtastic_OEMStore_size 2992 +#define meshtastic_OEMStore_size 2998 #ifdef __cplusplus } /* extern "C" */ diff --git a/src/mesh/generated/meshtastic/localonly.pb.h b/src/mesh/generated/meshtastic/localonly.pb.h index 29448b3ee..f2b85f1fb 100644 --- a/src/mesh/generated/meshtastic/localonly.pb.h +++ b/src/mesh/generated/meshtastic/localonly.pb.h @@ -156,7 +156,7 @@ extern const pb_msgdesc_t meshtastic_LocalModuleConfig_msg; #define meshtastic_LocalModuleConfig_fields &meshtastic_LocalModuleConfig_msg /* Maximum encoded size of messages (where known) */ -#define meshtastic_LocalConfig_size 434 +#define meshtastic_LocalConfig_size 440 #define meshtastic_LocalModuleConfig_size 412 #ifdef __cplusplus diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 8e0cc1ebf..9389db732 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -609,6 +609,9 @@ void AdminModule::handleSetHamMode(const meshtastic_HamParameters &p) config.lora.override_duty_cycle = true; config.lora.tx_power = p.tx_power; config.lora.override_frequency = p.frequency; + // Set node info broadcast interval to 10 minutes + // For FCC minimum call-sign announcement + config.device.node_info_broadcast_secs = 600; // Remove PSK of primary channel for plaintext amateur usage auto primaryChannel = channels.getByIndex(channels.getPrimaryIndex()); From bcaf834853f0c2d7d3ae00abfe128a4380365071 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 8 Feb 2023 18:04:21 -0600 Subject: [PATCH 3/8] Interval or default --- src/modules/NodeInfoModule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/NodeInfoModule.cpp b/src/modules/NodeInfoModule.cpp index e7ac3133f..15661e837 100644 --- a/src/modules/NodeInfoModule.cpp +++ b/src/modules/NodeInfoModule.cpp @@ -71,5 +71,5 @@ int32_t NodeInfoModule::runOnce() sendOurNodeInfo(NODENUM_BROADCAST, requestReplies); // Send our info (don't request replies) } - return default_broadcast_interval_secs * 1000; + return getConfiguredOrDefaultMs(config.device.node_info_broadcast_secs, default_broadcast_interval_secs); } From b24376b1fcc35da25458570002dd03c4ff99e0b9 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 8 Feb 2023 20:21:33 -0600 Subject: [PATCH 4/8] Well it helps if I commit the thing --- src/modules/AdminModule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 9389db732..553e69805 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -615,7 +615,7 @@ void AdminModule::handleSetHamMode(const meshtastic_HamParameters &p) // Remove PSK of primary channel for plaintext amateur usage auto primaryChannel = channels.getByIndex(channels.getPrimaryIndex()); - auto &channelSettings = ch.settings; + auto &channelSettings = primaryChannel.settings; channelSettings.psk.bytes[0] = 0; channelSettings.psk.size = 0; channels.setChannel(primaryChannel); From b1677e0312593a37862060d22db6a49426da20ab Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 9 Feb 2023 07:51:41 -0600 Subject: [PATCH 5/8] Rebroadcast mode to local_only for hams --- src/modules/AdminModule.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 553e69805..51141df43 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -604,6 +604,7 @@ void AdminModule::saveChanges(int saveWhat, bool shouldReboot) void AdminModule::handleSetHamMode(const meshtastic_HamParameters &p) { + // Set call sign and override lora limitations for licensed use strncpy(owner.long_name, p.call_sign, sizeof(owner.long_name)); owner.is_licensed = true; config.lora.override_duty_cycle = true; @@ -613,6 +614,7 @@ void AdminModule::handleSetHamMode(const meshtastic_HamParameters &p) // For FCC minimum call-sign announcement config.device.node_info_broadcast_secs = 600; + config.device.rebroadcast_mode = meshtastic_Config_DeviceConfig_RebroadcastMode_LOCAL_ONLY; // Remove PSK of primary channel for plaintext amateur usage auto primaryChannel = channels.getByIndex(channels.getPrimaryIndex()); auto &channelSettings = primaryChannel.settings; From 4375a0101e107155a0d54efe67b968976bdf56db Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 9 Feb 2023 08:58:28 -0600 Subject: [PATCH 6/8] Remove setOwner's business logic for licensed operation --- src/modules/AdminModule.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 51141df43..b76c5915a 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -212,7 +212,6 @@ bool AdminModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshta void AdminModule::handleSetOwner(const meshtastic_User &o) { int changed = 0; - bool licensed_changed = false; if (*o.long_name) { changed |= strcmp(owner.long_name, o.long_name); @@ -227,15 +226,12 @@ void AdminModule::handleSetOwner(const meshtastic_User &o) strncpy(owner.id, o.id, sizeof(owner.id)); } if (owner.is_licensed != o.is_licensed) { - changed = 1; - licensed_changed = true; owner.is_licensed = o.is_licensed; - config.lora.override_duty_cycle = owner.is_licensed; // override duty cycle for licensed operators } if (changed) { // If nothing really changed, don't broadcast on the network or write to flash service.reloadOwner(!hasOpenEditTransaction); - licensed_changed ? saveChanges(SEGMENT_CONFIG | SEGMENT_DEVICESTATE) : saveChanges(SEGMENT_DEVICESTATE); + saveChanges(SEGMENT_DEVICESTATE); } } From aaba99f792f3e04bceb3be2ddb4cb0c92457a066 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 9 Feb 2023 10:48:17 -0600 Subject: [PATCH 7/8] Add changed back --- src/modules/AdminModule.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index b76c5915a..82730b9ca 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -226,6 +226,7 @@ void AdminModule::handleSetOwner(const meshtastic_User &o) strncpy(owner.id, o.id, sizeof(owner.id)); } if (owner.is_licensed != o.is_licensed) { + changed = 1; owner.is_licensed = o.is_licensed; } From dc6f6af7fb82d3be0bd0e9a64e471b3559315ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 9 Feb 2023 23:33:53 +0100 Subject: [PATCH 8/8] Update to Espressif32 Platform 6.0 and ESP-IDF 5.0 --- arch/esp32/esp32.ini | 4 ++-- arch/esp32/esp32s2.ini | 4 ++-- arch/esp32/esp32s3.ini | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/esp32/esp32.ini b/arch/esp32/esp32.ini index 0011cc39f..99433b6ba 100644 --- a/arch/esp32/esp32.ini +++ b/arch/esp32/esp32.ini @@ -1,7 +1,7 @@ ; Common settings for ESP targes, mixin with extends = esp32_base [esp32_base] extends = arduino_base -platform = platformio/espressif32@^5.2.0 +platform = platformio/espressif32@^6.0.0 build_src_filter = ${arduino_base.build_src_filter} - - - - upload_speed = 921600 @@ -26,7 +26,7 @@ build_flags = -DCONFIG_NIMBLE_CPP_LOG_LEVEL=2 -DCONFIG_BT_NIMBLE_MAX_CCCDS=20 -DESP_OPENSSL_SUPPRESS_LEGACY_WARNING - -DDEBUG_HEAP + ;-DDEBUG_HEAP lib_deps = ${arduino_base.lib_deps} diff --git a/arch/esp32/esp32s2.ini b/arch/esp32/esp32s2.ini index beba16f3e..1182e6d83 100644 --- a/arch/esp32/esp32s2.ini +++ b/arch/esp32/esp32s2.ini @@ -1,6 +1,6 @@ [esp32s2_base] extends = arduino_base -platform = platformio/espressif32@^5.2.0 +platform = platformio/espressif32@^6.0.0 build_src_filter = ${arduino_base.build_src_filter} - - - - - upload_speed = 961200 @@ -27,7 +27,7 @@ build_flags = -DCONFIG_BT_NIMBLE_MAX_CCCDS=20 -DESP_OPENSSL_SUPPRESS_LEGACY_WARNING -DHAS_BLUETOOTH=0 - -DDEBUG_HEAP + ;-DDEBUG_HEAP lib_deps = ${arduino_base.lib_deps} diff --git a/arch/esp32/esp32s3.ini b/arch/esp32/esp32s3.ini index 023d1ca84..ed5127bbe 100644 --- a/arch/esp32/esp32s3.ini +++ b/arch/esp32/esp32s3.ini @@ -1,6 +1,6 @@ [esp32s3_base] extends = arduino_base -platform = platformio/espressif32@^5.2.0 +platform = platformio/espressif32@^6.0.0 build_src_filter = ${arduino_base.build_src_filter} - - - - upload_speed = 961200 @@ -26,7 +26,7 @@ build_flags = -DCONFIG_NIMBLE_CPP_LOG_LEVEL=2 -DCONFIG_BT_NIMBLE_MAX_CCCDS=20 -DESP_OPENSSL_SUPPRESS_LEGACY_WARNING - -DDEBUG_HEAP + ;-DDEBUG_HEAP lib_deps = ${arduino_base.lib_deps}