From 7cda49aba539d6fffedf06499779684697210cd6 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 16:56:57 -0800 Subject: [PATCH 01/18] updating proto submodule to latest --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 2930129e8..c703d579b 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 2930129e8eac348c094bbedeb929d86efafc2b62 +Subproject commit c703d579b20e184278546497246ce54b3bdd4118 From 7f3ad672b8a09763b0c2341aa48fe26fc35c2d61 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 16:59:24 -0800 Subject: [PATCH 02/18] updating proto submodule to latest --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index c703d579b..d70449103 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit c703d579b20e184278546497246ce54b3bdd4118 +Subproject commit d704491030b659d20398ebd6bd74994297df069c From ee95594f741c540717bef43b30ae62756e6fe1ad Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 17:01:13 -0800 Subject: [PATCH 03/18] Rename EU865 to EU868 & Add TH and IN --- src/mesh/generated/radioconfig.pb.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/mesh/generated/radioconfig.pb.h b/src/mesh/generated/radioconfig.pb.h index 760d15e2b..b8850d05c 100644 --- a/src/mesh/generated/radioconfig.pb.h +++ b/src/mesh/generated/radioconfig.pb.h @@ -14,13 +14,15 @@ typedef enum _RegionCode { RegionCode_Unset = 0, RegionCode_US = 1, RegionCode_EU433 = 2, - RegionCode_EU865 = 3, + RegionCode_EU868 = 3, RegionCode_CN = 4, RegionCode_JP = 5, RegionCode_ANZ = 6, RegionCode_KR = 7, RegionCode_TW = 8, - RegionCode_RU = 9 + RegionCode_RU = 9, + RegionCode_IN = 10, + RegionCode_TH = 11 } RegionCode; typedef enum _ChargeCurrent { @@ -98,7 +100,8 @@ typedef enum _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType { RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_DHT22 = 4, RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_BME280 = 5, RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_BME680 = 6, - RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MCP9808 = 7 + RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MCP9808 = 7, + RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_SHTC3 = 8 } RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType; /* Struct definitions */ @@ -197,8 +200,8 @@ typedef struct _RadioConfig { /* Helper constants for enums */ #define _RegionCode_MIN RegionCode_Unset -#define _RegionCode_MAX RegionCode_RU -#define _RegionCode_ARRAYSIZE ((RegionCode)(RegionCode_RU+1)) +#define _RegionCode_MAX RegionCode_TH +#define _RegionCode_ARRAYSIZE ((RegionCode)(RegionCode_TH+1)) #define _ChargeCurrent_MIN ChargeCurrent_MAUnset #define _ChargeCurrent_MAX ChargeCurrent_MA1320 @@ -225,8 +228,8 @@ typedef struct _RadioConfig { #define _InputEventChar_ARRAYSIZE ((InputEventChar)(InputEventChar_KEY_BACK+1)) #define _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MIN RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_DHT11 -#define _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MAX RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MCP9808 -#define _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_ARRAYSIZE ((RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType)(RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MCP9808+1)) +#define _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MAX RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_SHTC3 +#define _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_ARRAYSIZE ((RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType)(RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_SHTC3+1)) #ifdef __cplusplus From 806a61251b3890a13d25467d4be35792ed1c7669 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 17:59:43 -0800 Subject: [PATCH 04/18] updating proto submodule to latest --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index d70449103..956fa74e8 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit d704491030b659d20398ebd6bd74994297df069c +Subproject commit 956fa74e806574ba5a7facf899101035c3511bc9 From a1ad1e7973b6fa89d4b5aa7e4ff24d2d497e7dba Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 18:01:34 -0800 Subject: [PATCH 05/18] Updated modem configuration --- src/mesh/generated/channel.pb.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/mesh/generated/channel.pb.h b/src/mesh/generated/channel.pb.h index d9d55f1f7..e4b54aeab 100644 --- a/src/mesh/generated/channel.pb.h +++ b/src/mesh/generated/channel.pb.h @@ -11,12 +11,13 @@ /* Enum definitions */ typedef enum _ChannelSettings_ModemConfig { - ChannelSettings_ModemConfig_Bw125Cr45Sf128 = 0, - ChannelSettings_ModemConfig_Bw500Cr45Sf128 = 1, - ChannelSettings_ModemConfig_Bw31_25Cr48Sf512 = 2, - ChannelSettings_ModemConfig_Bw125Cr48Sf4096 = 3, - ChannelSettings_ModemConfig_Bw250Cr46Sf2048 = 4, - ChannelSettings_ModemConfig_Bw250Cr47Sf1024 = 5 + ChannelSettings_ModemConfig_VLongSlow = 0, + ChannelSettings_ModemConfig_LongSlow = 1, + ChannelSettings_ModemConfig_LongFast = 2, + ChannelSettings_ModemConfig_MidSlow = 3, + ChannelSettings_ModemConfig_MidFast = 4, + ChannelSettings_ModemConfig_ShortSlow = 5, + ChannelSettings_ModemConfig_ShortFast = 6 } ChannelSettings_ModemConfig; typedef enum _Channel_Role { @@ -50,9 +51,9 @@ typedef struct _Channel { /* Helper constants for enums */ -#define _ChannelSettings_ModemConfig_MIN ChannelSettings_ModemConfig_Bw125Cr45Sf128 -#define _ChannelSettings_ModemConfig_MAX ChannelSettings_ModemConfig_Bw250Cr47Sf1024 -#define _ChannelSettings_ModemConfig_ARRAYSIZE ((ChannelSettings_ModemConfig)(ChannelSettings_ModemConfig_Bw250Cr47Sf1024+1)) +#define _ChannelSettings_ModemConfig_MIN ChannelSettings_ModemConfig_VLongSlow +#define _ChannelSettings_ModemConfig_MAX ChannelSettings_ModemConfig_ShortFast +#define _ChannelSettings_ModemConfig_ARRAYSIZE ((ChannelSettings_ModemConfig)(ChannelSettings_ModemConfig_ShortFast+1)) #define _Channel_Role_MIN Channel_Role_DISABLED #define _Channel_Role_MAX Channel_Role_SECONDARY From 2428ca09fcab7b681660ec7d6bca3827adce8d8b Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 18:06:05 -0800 Subject: [PATCH 06/18] Change the default pre shared key to break backward compatibility of default channel --- src/mesh/Channels.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesh/Channels.cpp b/src/mesh/Channels.cpp index d757fdb33..33bcbcdce 100644 --- a/src/mesh/Channels.cpp +++ b/src/mesh/Channels.cpp @@ -7,7 +7,7 @@ /// 16 bytes of random PSK for our _public_ default channel that all devices power up on (AES128) static const uint8_t defaultpsk[] = {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, - 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0xbf}; + 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0x01}; Channels channels; From 96b55372170a4ac5e02d8b9f5011a27784a331d3 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 19:32:31 -0800 Subject: [PATCH 07/18] New bands, new band plans and new channel configurations --- src/mesh/Channels.cpp | 28 +++---- src/mesh/MeshRadio.h | 9 +- src/mesh/RadioInterface.cpp | 162 +++++++++++++++++++++++------------- 3 files changed, 123 insertions(+), 76 deletions(-) diff --git a/src/mesh/Channels.cpp b/src/mesh/Channels.cpp index 33bcbcdce..116462e3a 100644 --- a/src/mesh/Channels.cpp +++ b/src/mesh/Channels.cpp @@ -84,10 +84,7 @@ void Channels::initDefaultChannel(ChannelIndex chIndex) Channel &ch = getByIndex(chIndex); ChannelSettings &channelSettings = ch.settings; - // radioConfig.modem_config = RadioConfig_ModemConfig_Bw125Cr45Sf128; // medium range and fast - // channelSettings.modem_config = ChannelSettings_ModemConfig_Bw500Cr45Sf128; // short range and fast, but wide - // bandwidth so incompatible radios can talk together - channelSettings.modem_config = ChannelSettings_ModemConfig_Bw125Cr48Sf4096; // slow and long range + channelSettings.modem_config = ChannelSettings_ModemConfig_LongSlow; // Default to Long Range & Fast channelSettings.tx_power = 0; // default uint8_t defaultpskIndex = 1; @@ -216,24 +213,27 @@ const char *Channels::getName(size_t chIndex) channelName = "Unset"; else switch (channelSettings.modem_config) { - case ChannelSettings_ModemConfig_Bw125Cr45Sf128: + case ChannelSettings_ModemConfig_ShortSlow: channelName = "ShortSlow"; break; - case ChannelSettings_ModemConfig_Bw500Cr45Sf128: + case ChannelSettings_ModemConfig_ShortFast: channelName = "ShortFast"; break; - case ChannelSettings_ModemConfig_Bw31_25Cr48Sf512: - channelName = "LongFast"; - break; - case ChannelSettings_ModemConfig_Bw125Cr48Sf4096: - channelName = "LongSlow"; - break; - case ChannelSettings_ModemConfig_Bw250Cr46Sf2048: + case ChannelSettings_ModemConfig_MidSlow: channelName = "MediumSlow"; break; - case ChannelSettings_ModemConfig_Bw250Cr47Sf1024: + case ChannelSettings_ModemConfig_MidFast: channelName = "MediumFast"; break; + case ChannelSettings_ModemConfig_LongFast: + channelName = "LongFast"; + break; + case ChannelSettings_ModemConfig_LongSlow: + channelName = "LongSlow"; + break; + case ChannelSettings_ModemConfig_VLongSlow: + channelName = "VLongSlow"; + break; default: channelName = "Invalid"; break; diff --git a/src/mesh/MeshRadio.h b/src/mesh/MeshRadio.h index 02e775464..1b1437123 100644 --- a/src/mesh/MeshRadio.h +++ b/src/mesh/MeshRadio.h @@ -8,10 +8,13 @@ // Map from old region names to new region enums struct RegionInfo { RegionCode code; - uint8_t numChannels; - uint8_t powerLimit; // Or zero for not set - float freq; + float freqStart; + float freqEnd; + float dutyCycle; float spacing; + uint8_t powerLimit; // Or zero for not set + bool audioPermitted; + bool freqSwitching; const char *name; // EU433 etc }; diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index 269f6a071..97275825d 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -1,4 +1,3 @@ -#include "configuration.h" #include "RadioInterface.h" #include "Channels.h" #include "MeshRadio.h" @@ -6,45 +5,86 @@ #include "NodeDB.h" #include "Router.h" #include "assert.h" +#include "configuration.h" #include "sleep.h" #include #include #include -#define RDEF(name, freq, spacing, num_ch, power_limit) \ +#define RDEF(name, freq_start, freq_end, duty_cycle, spacing, power_limit, audio_permitted, frequency_switching) \ { \ - RegionCode_##name, num_ch, power_limit, freq, spacing, #name \ + RegionCode_##name, freq_start, freq_end, duty_cycle, spacing, power_limit, audio_permitted, frequency_switching, #name \ } const RegionInfo regions[] = { - RDEF(US, 903.08f, 2.16f, 13, 0), RDEF(EU433, 433.175f, 0.2f, 8, 0), RDEF(EU865, 865.2f, 0.3f, 10, 0), - RDEF(CN, 470.0f, 2.0f, 20, 0), - RDEF(JP, 920.0f, 0.5f, 10, 13), // See https://github.com/meshtastic/Meshtastic-device/issues/346 power level 13 - RDEF(ANZ, 916.0f, 0.5f, 20, 0), // AU/NZ channel settings 915-928MHz - RDEF(KR, 921.9f, 0.2f, 8, 0), // KR channel settings (KR920-923) Start from TTN download channel - // freq. (921.9f is for download, others are for uplink) - RDEF(TW, 923.0f, 0.2f, 10, 0), // TW channel settings (AS2 bandplan 923-925MHz) - RDEF(RU, 868.9f, 0.2f, 2, 20), // See notes below - RDEF(Unset, 903.08f, 2.16f, 13, 0) // Assume US freqs if unset, Must be last + /* + https://link.springer.com/content/pdf/bbm%3A978-1-4842-4357-2%2F1.pdf + https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/ + */ + RDEF(US, 902.0f, 928.0f, 100, 0, 30, true, false), + + /* + https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf + */ + RDEF(EU433, 433.0f, 434.0f, 10, 0, 12, true, false), + + /* + https://www.thethingsnetwork.org/docs/lorawan/duty-cycle/ + https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/ + https://www.legislation.gov.uk/uksi/1999/930/schedule/6/part/III/made/data.xht?view=snippet&wrap=true + */ + RDEF(EU868, 869.4f, 869.65f, 10, 0, 16, false, false), + + /* + https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf + */ + RDEF(CN, 470.0f, 510.0f, 100, 0, 19, true, false), + + /* + https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf + */ + RDEF(JP, 920.8f, 927.8f, 100, 0, 16, true, false), + + /* + ??? + */ + RDEF(ANZ, 915.0f, 928.0f, 100, 0, 0, true, false), + + /* + https://digital.gov.ru/uploaded/files/prilozhenie-12-k-reshenyu-gkrch-18-46-03-1.pdf + + Note: + - We do LBT, so 100% is allowed. + */ + RDEF(RU, 868.7f, 869.2f, 100, 0, 20, true, false), + + /* + ??? + */ + RDEF(KR, 920.0f, 923.0f, 100, 0, 0, true, false), + + /* + ??? + */ + RDEF(TW, 920.0f, 925.0f, 100, 0, 0, true, false), + + /* + https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf + */ + RDEF(IN, 865.0f, 867.0f, 100, 0, 30, true, false), + + /* + https://lora-alliance.org/wp-content/uploads/2020/11/lorawan_regional_parameters_v1.0.3reva_0.pdf + */ + RDEF(TH, 920.0f, 925.0f, 100, 0, 16, true, false), + + /* + This needs to be last. Same as US. + */ + RDEF(Unset, 902.0f, 928.0f, 100, 0, 30, true, false) + }; -/* Notes about the RU bandplan (from @denis-d in https://meshtastic.discourse.group/t/russian-band-plan-proposal/2786/2): - -According to Annex 12 to GKRCh (National Radio Frequency Commission) decision № 18-46-03-1 (September 11th 2018) -https://digital.gov.ru/uploaded/files/prilozhenie-12-k-reshenyu-gkrch-18-46-03-1.pdf 1 We have 3 options for 868 MHz: - -864,0 - 865,0 MHz ERP 25mW, Duty Cycle 0.1% (3.6 sec in hour) or LBT (Listen Before Talk), prohibited in airports. -866,0 - 868,0 MHz ERP 25mW, Duty Cycle 1% or LBT, PSD (Power Spectrum Density) 1000mW/MHz, prohibited in airports -868,7 - 869,2 MHz ERP 100mW, Duty Cycle 10% or LBT, no resctrictions -and according to RP2-1.0.2 LoRaWAN® Regional Parameters RP2-1.0.2 LoRaWAN® Regional Parameters - LoRa Alliance® -I propose to use following meshtastic bandplan: -1 channel - central frequency 868.9MHz 125kHz band -Protective band - 75kHz -2 channel - central frequency 869.1MHz 125kHz band - -RDEF(RU, 868.9f, 0.2f, 2, 20) -*/ - const RegionInfo *myRegion; void initRegion() @@ -55,7 +95,8 @@ void initRegion() myRegion = r; DEBUG_MSG("Wanted region %d, using %s\n", radioConfig.preferences.region, r->name); - myNodeInfo.num_bands = myRegion->numChannels; // Tell our android app how many channels we have + // myNodeInfo.num_bands = myRegion->numChannels; // Tell our android app how many channels we have + myNodeInfo.num_bands = 666; // JM Fixme! } /** @@ -274,38 +315,40 @@ void RadioInterface::applyModemConfig() auto channelSettings = channels.getPrimary(); if (channelSettings.spread_factor == 0) { switch (channelSettings.modem_config) { - case ChannelSettings_ModemConfig_Bw125Cr45Sf128: ///< Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on. Default medium - ///< range - bw = 125; - cr = 5; + case ChannelSettings_ModemConfig_ShortFast: + bw = 250; + cr = 8; sf = 7; break; - case ChannelSettings_ModemConfig_Bw500Cr45Sf128: ///< Bw = 500 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on. Fast+short - ///< range - bw = 500; - cr = 5; - sf = 7; + case ChannelSettings_ModemConfig_ShortSlow: + bw = 250; + cr = 8; + sf = 8; break; - case ChannelSettings_ModemConfig_Bw31_25Cr48Sf512: ///< Bw = 31.25 kHz, Cr = 4/8, Sf = 512chips/symbol, CRC on. Slow+long - ///< range - bw = 31.25; + case ChannelSettings_ModemConfig_MidFast: + bw = 250; cr = 8; sf = 9; break; - case ChannelSettings_ModemConfig_Bw125Cr48Sf4096: + case ChannelSettings_ModemConfig_MidSlow: + bw = 250; + cr = 8; + sf = 10; + break; + case ChannelSettings_ModemConfig_LongSlow: + bw = 250; + cr = 8; + sf = 11; + break; + case ChannelSettings_ModemConfig_LongFast: bw = 125; cr = 8; sf = 12; break; - case ChannelSettings_ModemConfig_Bw250Cr46Sf2048: - bw = 250; - cr = 6; - sf = 11; - break; - case ChannelSettings_ModemConfig_Bw250Cr47Sf1024: - bw = 250; - cr = 7; - sf = 10; + case ChannelSettings_ModemConfig_VLongSlow: + bw = 31.25; + cr = 8; + sf = 12; break; default: assert(0); // Unknown enum @@ -327,20 +370,21 @@ void RadioInterface::applyModemConfig() assert(myRegion); // Should have been found in init + // Calculate the number of channels + uint32_t numChannels = floor((myRegion->freqEnd - myRegion->freqStart)/(myRegion->spacing + bw)); + // If user has manually specified a channel num, then use that, otherwise generate one by hashing the name const char *channelName = channels.getName(channels.getPrimaryIndex()); - int channel_num = channelSettings.channel_num ? channelSettings.channel_num - 1 : hash(channelName) % myRegion->numChannels; - float freq = myRegion->freq + radioConfig.preferences.frequency_offset + myRegion->spacing * channel_num; - + int channel_num = channelSettings.channel_num ? channelSettings.channel_num - 1 : hash(channelName) % numChannels; + float freq = myRegion->freqStart+(((myRegion->freqEnd - myRegion->freqStart/numChannels)/2)*1); saveChannelNum(channel_num); saveFreq(freq); DEBUG_MSG("Set radio: name=%s, config=%u, ch=%d, power=%d\n", channelName, channelSettings.modem_config, channel_num, power); - DEBUG_MSG("Radio myRegion->freq: %f\n", myRegion->freq); - DEBUG_MSG("Radio myRegion->spacing: %f\n", myRegion->spacing); - DEBUG_MSG("Radio myRegion->numChannels: %d\n", myRegion->numChannels); + DEBUG_MSG("Radio myRegion->freqStart / myRegion->freqEnd: %f / %f\n", myRegion->freqStart, myRegion->freqEnd); + DEBUG_MSG("Radio myRegion->numChannels: %d\n", numChannels); DEBUG_MSG("Radio channel_num: %d\n", channel_num); - DEBUG_MSG("Radio frequency: %f\n", getFreq()); // the frequency could be overridden in RadioInterface::getFreq() for some modules + DEBUG_MSG("Radio frequency: %f\n", getFreq()); DEBUG_MSG("Short packet time: %u msec\n", shortPacketMsec); } From af1804ea6206a382f53a3664dbb2895bafe82792 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 19:42:03 -0800 Subject: [PATCH 08/18] updating proto submodule to latest --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 956fa74e8..b22f484ba 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 956fa74e806574ba5a7facf899101035c3511bc9 +Subproject commit b22f484bab8ec50875a72001efe2e6c9b8f01952 From 1de086819c6d9dd035dca66661ac257460fb4144 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 19:45:26 -0800 Subject: [PATCH 09/18] Remove myNodeInfo.num_bands. It's not used by android. --- src/mesh/RadioInterface.cpp | 3 --- src/mesh/generated/deviceonly.pb.h | 2 +- src/mesh/generated/mesh.pb.h | 11 ++++------- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index 97275825d..ff13676dd 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -94,9 +94,6 @@ void initRegion() ; myRegion = r; DEBUG_MSG("Wanted region %d, using %s\n", radioConfig.preferences.region, r->name); - - // myNodeInfo.num_bands = myRegion->numChannels; // Tell our android app how many channels we have - myNodeInfo.num_bands = 666; // JM Fixme! } /** diff --git a/src/mesh/generated/deviceonly.pb.h b/src/mesh/generated/deviceonly.pb.h index 22a7c95f3..82b2f6709 100644 --- a/src/mesh/generated/deviceonly.pb.h +++ b/src/mesh/generated/deviceonly.pb.h @@ -140,7 +140,7 @@ extern const pb_msgdesc_t ChannelFile_msg; /* Maximum encoded size of messages (where known) */ #define LegacyRadioConfig_size 4 #define LegacyRadioConfig_LegacyPreferences_size 2 -#define DeviceState_size 11014 +#define DeviceState_size 11008 #define ChannelFile_size 832 #ifdef __cplusplus diff --git a/src/mesh/generated/mesh.pb.h b/src/mesh/generated/mesh.pb.h index ffdad870f..82d00d8b1 100644 --- a/src/mesh/generated/mesh.pb.h +++ b/src/mesh/generated/mesh.pb.h @@ -152,7 +152,6 @@ typedef struct _LogRecord { typedef struct _MyNodeInfo { uint32_t my_node_num; bool has_gps; - uint32_t num_bands; char region[12]; char hw_model_deprecated[16]; char firmware_version[18]; @@ -339,7 +338,7 @@ extern "C" { #define Data_init_default {_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0} #define MeshPacket_init_default {0, 0, 0, 0, {Data_init_default}, 0, 0, 0, 0, 0, _MeshPacket_Priority_MIN, 0, _MeshPacket_Delayed_MIN} #define NodeInfo_init_default {0, false, User_init_default, false, Position_init_default, 0, 0} -#define MyNodeInfo_init_default {0, 0, 0, "", "", "", _CriticalErrorCode_MIN, 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, 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 MyNodeInfo_init_default {0, 0, "", "", "", _CriticalErrorCode_MIN, 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, 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 LogRecord_init_default {"", 0, "", _LogRecord_Level_MIN} #define FromRadio_init_default {0, 0, {MyNodeInfo_init_default}} #define ToRadio_init_default {0, {MeshPacket_init_default}} @@ -351,7 +350,7 @@ extern "C" { #define Data_init_zero {_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0} #define MeshPacket_init_zero {0, 0, 0, 0, {Data_init_zero}, 0, 0, 0, 0, 0, _MeshPacket_Priority_MIN, 0, _MeshPacket_Delayed_MIN} #define NodeInfo_init_zero {0, false, User_init_zero, false, Position_init_zero, 0, 0} -#define MyNodeInfo_init_zero {0, 0, 0, "", "", "", _CriticalErrorCode_MIN, 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, 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 MyNodeInfo_init_zero {0, 0, "", "", "", _CriticalErrorCode_MIN, 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, 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 LogRecord_init_zero {"", 0, "", _LogRecord_Level_MIN} #define FromRadio_init_zero {0, 0, {MyNodeInfo_init_zero}} #define ToRadio_init_zero {0, {MeshPacket_init_zero}} @@ -372,7 +371,6 @@ extern "C" { #define LogRecord_level_tag 4 #define MyNodeInfo_my_node_num_tag 1 #define MyNodeInfo_has_gps_tag 2 -#define MyNodeInfo_num_bands_tag 3 #define MyNodeInfo_region_tag 4 #define MyNodeInfo_hw_model_deprecated_tag 5 #define MyNodeInfo_firmware_version_tag 6 @@ -558,7 +556,6 @@ X(a, STATIC, SINGULAR, FLOAT, snr, 7) #define MyNodeInfo_FIELDLIST(X, a) \ X(a, STATIC, SINGULAR, UINT32, my_node_num, 1) \ X(a, STATIC, SINGULAR, BOOL, has_gps, 2) \ -X(a, STATIC, SINGULAR, UINT32, num_bands, 3) \ X(a, STATIC, SINGULAR, STRING, region, 4) \ X(a, STATIC, SINGULAR, STRING, hw_model_deprecated, 5) \ X(a, STATIC, SINGULAR, STRING, firmware_version, 6) \ @@ -652,9 +649,9 @@ extern const pb_msgdesc_t ToRadio_PeerInfo_msg; #define Data_size 267 #define MeshPacket_size 318 #define NodeInfo_size 271 -#define MyNodeInfo_size 457 +#define MyNodeInfo_size 451 #define LogRecord_size 81 -#define FromRadio_size 466 +#define FromRadio_size 460 #define ToRadio_size 321 #define ToRadio_PeerInfo_size 8 From 71d5e6c4784128080d5d349e201ba5fb96456e93 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 19:55:19 -0800 Subject: [PATCH 10/18] updating proto submodule to latest --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index b22f484ba..35f102f0a 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit b22f484bab8ec50875a72001efe2e6c9b8f01952 +Subproject commit 35f102f0a53c0d538922deadabdea0ea5adb5985 From b99d793e23154a59e7d84c45849e60e88ee5ab54 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 19:58:54 -0800 Subject: [PATCH 11/18] Remove legacyRadio and Legacy Preferences --- src/mesh/NodeDB.cpp | 12 --------- src/mesh/generated/deviceonly.pb.c | 6 ----- src/mesh/generated/deviceonly.pb.h | 43 +++--------------------------- 3 files changed, 3 insertions(+), 58 deletions(-) diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index b112432e8..af8e12cdc 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -227,18 +227,6 @@ void NodeDB::init() info->user = owner; info->has_user = true; - // removed from 1.2 (though we do use old values if found) - // We set these _after_ loading from disk - because they come from the build and are more trusted than - // what is stored in flash - // if (xstr(HW_VERSION)[0]) - // strncpy(myNodeInfo.region, optstr(HW_VERSION), sizeof(myNodeInfo.region)); - // else DEBUG_MSG("This build does not specify a HW_VERSION\n"); // Eventually new builds will no longer include this build - // flag - - // DEBUG_MSG("legacy region %d\n", devicestate.legacyRadio.preferences.region); - if (radioConfig.preferences.region == RegionCode_Unset) - radioConfig.preferences.region = devicestate.legacyRadio.preferences.region; - // Check for the old style of region code strings, if found, convert to the new enum. // Those strings will look like "1.0-EU433" if (radioConfig.preferences.region == RegionCode_Unset && strncmp(myNodeInfo.region, "1.0-", 4) == 0) { diff --git a/src/mesh/generated/deviceonly.pb.c b/src/mesh/generated/deviceonly.pb.c index 764c54fdb..9bb586f5a 100644 --- a/src/mesh/generated/deviceonly.pb.c +++ b/src/mesh/generated/deviceonly.pb.c @@ -6,12 +6,6 @@ #error Regenerate this file with the current version of nanopb generator. #endif -PB_BIND(LegacyRadioConfig, LegacyRadioConfig, AUTO) - - -PB_BIND(LegacyRadioConfig_LegacyPreferences, LegacyRadioConfig_LegacyPreferences, AUTO) - - PB_BIND(DeviceState, DeviceState, 4) diff --git a/src/mesh/generated/deviceonly.pb.h b/src/mesh/generated/deviceonly.pb.h index 82b2f6709..1f93989a0 100644 --- a/src/mesh/generated/deviceonly.pb.h +++ b/src/mesh/generated/deviceonly.pb.h @@ -18,18 +18,7 @@ typedef struct _ChannelFile { Channel channels[8]; } ChannelFile; -typedef struct _LegacyRadioConfig_LegacyPreferences { - RegionCode region; -} LegacyRadioConfig_LegacyPreferences; - -typedef struct _LegacyRadioConfig { - bool has_preferences; - LegacyRadioConfig_LegacyPreferences preferences; -} LegacyRadioConfig; - typedef struct _DeviceState { - bool has_legacyRadio; - LegacyRadioConfig legacyRadio; bool has_my_node; MyNodeInfo my_node; bool has_owner; @@ -56,20 +45,13 @@ extern "C" { #endif /* Initializer values for message structs */ -#define LegacyRadioConfig_init_default {false, LegacyRadioConfig_LegacyPreferences_init_default} -#define LegacyRadioConfig_LegacyPreferences_init_default {_RegionCode_MIN} -#define DeviceState_init_default {false, LegacyRadioConfig_init_default, false, MyNodeInfo_init_default, false, User_init_default, 0, {NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default}, 0, {MeshPacket_init_default}, false, MeshPacket_init_default, 0, 0, 0, "", "", "", "", ""} +#define DeviceState_init_default {false, MyNodeInfo_init_default, false, User_init_default, 0, {NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default}, 0, {MeshPacket_init_default}, false, MeshPacket_init_default, 0, 0, 0, "", "", "", "", ""} #define ChannelFile_init_default {0, {Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default}} -#define LegacyRadioConfig_init_zero {false, LegacyRadioConfig_LegacyPreferences_init_zero} -#define LegacyRadioConfig_LegacyPreferences_init_zero {_RegionCode_MIN} -#define DeviceState_init_zero {false, LegacyRadioConfig_init_zero, false, MyNodeInfo_init_zero, false, User_init_zero, 0, {NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero}, 0, {MeshPacket_init_zero}, false, MeshPacket_init_zero, 0, 0, 0, "", "", "", "", ""} +#define DeviceState_init_zero {false, MyNodeInfo_init_zero, false, User_init_zero, 0, {NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero}, 0, {MeshPacket_init_zero}, false, MeshPacket_init_zero, 0, 0, 0, "", "", "", "", ""} #define ChannelFile_init_zero {0, {Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero}} /* Field tags (for use in manual encoding/decoding) */ #define ChannelFile_channels_tag 1 -#define LegacyRadioConfig_LegacyPreferences_region_tag 15 -#define LegacyRadioConfig_preferences_tag 1 -#define DeviceState_legacyRadio_tag 1 #define DeviceState_my_node_tag 2 #define DeviceState_owner_tag 3 #define DeviceState_node_db_tag 4 @@ -85,19 +67,7 @@ extern "C" { #define DeviceState_canned_message_plugin_message_part5_tag 17 /* Struct field encoding specification for nanopb */ -#define LegacyRadioConfig_FIELDLIST(X, a) \ -X(a, STATIC, OPTIONAL, MESSAGE, preferences, 1) -#define LegacyRadioConfig_CALLBACK NULL -#define LegacyRadioConfig_DEFAULT NULL -#define LegacyRadioConfig_preferences_MSGTYPE LegacyRadioConfig_LegacyPreferences - -#define LegacyRadioConfig_LegacyPreferences_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, UENUM, region, 15) -#define LegacyRadioConfig_LegacyPreferences_CALLBACK NULL -#define LegacyRadioConfig_LegacyPreferences_DEFAULT NULL - #define DeviceState_FIELDLIST(X, a) \ -X(a, STATIC, OPTIONAL, MESSAGE, legacyRadio, 1) \ X(a, STATIC, OPTIONAL, MESSAGE, my_node, 2) \ X(a, STATIC, OPTIONAL, MESSAGE, owner, 3) \ X(a, STATIC, REPEATED, MESSAGE, node_db, 4) \ @@ -113,7 +83,6 @@ X(a, STATIC, SINGULAR, STRING, canned_message_plugin_message_part4, 16) \ X(a, STATIC, SINGULAR, STRING, canned_message_plugin_message_part5, 17) #define DeviceState_CALLBACK NULL #define DeviceState_DEFAULT NULL -#define DeviceState_legacyRadio_MSGTYPE LegacyRadioConfig #define DeviceState_my_node_MSGTYPE MyNodeInfo #define DeviceState_owner_MSGTYPE User #define DeviceState_node_db_MSGTYPE NodeInfo @@ -126,21 +95,15 @@ X(a, STATIC, REPEATED, MESSAGE, channels, 1) #define ChannelFile_DEFAULT NULL #define ChannelFile_channels_MSGTYPE Channel -extern const pb_msgdesc_t LegacyRadioConfig_msg; -extern const pb_msgdesc_t LegacyRadioConfig_LegacyPreferences_msg; extern const pb_msgdesc_t DeviceState_msg; extern const pb_msgdesc_t ChannelFile_msg; /* Defines for backwards compatibility with code written before nanopb-0.4.0 */ -#define LegacyRadioConfig_fields &LegacyRadioConfig_msg -#define LegacyRadioConfig_LegacyPreferences_fields &LegacyRadioConfig_LegacyPreferences_msg #define DeviceState_fields &DeviceState_msg #define ChannelFile_fields &ChannelFile_msg /* Maximum encoded size of messages (where known) */ -#define LegacyRadioConfig_size 4 -#define LegacyRadioConfig_LegacyPreferences_size 2 -#define DeviceState_size 11008 +#define DeviceState_size 11002 #define ChannelFile_size 832 #ifdef __cplusplus From 04d16b82ba30bea603491b54bd3081ee2f779d58 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 20:00:46 -0800 Subject: [PATCH 12/18] Remove old style of region code fix --- src/mesh/NodeDB.cpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index af8e12cdc..64f6912ad 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -227,17 +227,6 @@ void NodeDB::init() info->user = owner; info->has_user = true; - // Check for the old style of region code strings, if found, convert to the new enum. - // Those strings will look like "1.0-EU433" - if (radioConfig.preferences.region == RegionCode_Unset && strncmp(myNodeInfo.region, "1.0-", 4) == 0) { - const char *regionStr = myNodeInfo.region + 4; // EU433 or whatever - for (const RegionInfo *r = regions; r->code != RegionCode_Unset; r++) - if (strcmp(r->name, regionStr) == 0) { - radioConfig.preferences.region = r->code; - break; - } - } - strncpy(myNodeInfo.firmware_version, optstr(APP_VERSION), sizeof(myNodeInfo.firmware_version)); // hw_model is no longer stored in myNodeInfo (as of 1.2.11) - we now store it as an enum in nodeinfo From 18e95e6bb4ebb864275102434eda11b20d4504f8 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 20:08:29 -0800 Subject: [PATCH 13/18] updating proto submodule to latest --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index 35f102f0a..d192833e5 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 35f102f0a53c0d538922deadabdea0ea5adb5985 +Subproject commit d192833e5c43d7e388fa4605c41b0ef5ca459731 From eae872006813164040e26aae76486e6edbee056d Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 20:35:44 -0800 Subject: [PATCH 14/18] updating proto submodule to latest --- proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto b/proto index d192833e5..6a66f8b1f 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit d192833e5c43d7e388fa4605c41b0ef5ca459731 +Subproject commit 6a66f8b1f81815e62279ff66dea908112583e6ab From 1ba7f009ddb87b4dc8afc4a784d4e6439ae8458c Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Mon, 14 Feb 2022 20:37:44 -0800 Subject: [PATCH 15/18] Remove hw_model_deprecated --- src/mesh/NodeDB.cpp | 4 ---- src/mesh/generated/deviceonly.pb.h | 2 +- src/mesh/generated/mesh.pb.h | 11 ++++------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 64f6912ad..0587b9457 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -229,10 +229,6 @@ void NodeDB::init() strncpy(myNodeInfo.firmware_version, optstr(APP_VERSION), sizeof(myNodeInfo.firmware_version)); - // hw_model is no longer stored in myNodeInfo (as of 1.2.11) - we now store it as an enum in nodeinfo - myNodeInfo.hw_model_deprecated[0] = '\0'; - // strncpy(myNodeInfo.hw_model, HW_VENDOR, sizeof(myNodeInfo.hw_model)); - #ifndef NO_ESP32 Preferences preferences; preferences.begin("meshtastic", false); diff --git a/src/mesh/generated/deviceonly.pb.h b/src/mesh/generated/deviceonly.pb.h index 1f93989a0..a298579bb 100644 --- a/src/mesh/generated/deviceonly.pb.h +++ b/src/mesh/generated/deviceonly.pb.h @@ -103,7 +103,7 @@ extern const pb_msgdesc_t ChannelFile_msg; #define ChannelFile_fields &ChannelFile_msg /* Maximum encoded size of messages (where known) */ -#define DeviceState_size 11002 +#define DeviceState_size 10985 #define ChannelFile_size 832 #ifdef __cplusplus diff --git a/src/mesh/generated/mesh.pb.h b/src/mesh/generated/mesh.pb.h index 82d00d8b1..8e98195ed 100644 --- a/src/mesh/generated/mesh.pb.h +++ b/src/mesh/generated/mesh.pb.h @@ -153,7 +153,6 @@ typedef struct _MyNodeInfo { uint32_t my_node_num; bool has_gps; char region[12]; - char hw_model_deprecated[16]; char firmware_version[18]; CriticalErrorCode error_code; uint32_t error_address; @@ -338,7 +337,7 @@ extern "C" { #define Data_init_default {_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0} #define MeshPacket_init_default {0, 0, 0, 0, {Data_init_default}, 0, 0, 0, 0, 0, _MeshPacket_Priority_MIN, 0, _MeshPacket_Delayed_MIN} #define NodeInfo_init_default {0, false, User_init_default, false, Position_init_default, 0, 0} -#define MyNodeInfo_init_default {0, 0, "", "", "", _CriticalErrorCode_MIN, 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, 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 MyNodeInfo_init_default {0, 0, "", "", _CriticalErrorCode_MIN, 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, 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 LogRecord_init_default {"", 0, "", _LogRecord_Level_MIN} #define FromRadio_init_default {0, 0, {MyNodeInfo_init_default}} #define ToRadio_init_default {0, {MeshPacket_init_default}} @@ -350,7 +349,7 @@ extern "C" { #define Data_init_zero {_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0} #define MeshPacket_init_zero {0, 0, 0, 0, {Data_init_zero}, 0, 0, 0, 0, 0, _MeshPacket_Priority_MIN, 0, _MeshPacket_Delayed_MIN} #define NodeInfo_init_zero {0, false, User_init_zero, false, Position_init_zero, 0, 0} -#define MyNodeInfo_init_zero {0, 0, "", "", "", _CriticalErrorCode_MIN, 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, 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 MyNodeInfo_init_zero {0, 0, "", "", _CriticalErrorCode_MIN, 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, 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 LogRecord_init_zero {"", 0, "", _LogRecord_Level_MIN} #define FromRadio_init_zero {0, 0, {MyNodeInfo_init_zero}} #define ToRadio_init_zero {0, {MeshPacket_init_zero}} @@ -372,7 +371,6 @@ extern "C" { #define MyNodeInfo_my_node_num_tag 1 #define MyNodeInfo_has_gps_tag 2 #define MyNodeInfo_region_tag 4 -#define MyNodeInfo_hw_model_deprecated_tag 5 #define MyNodeInfo_firmware_version_tag 6 #define MyNodeInfo_error_code_tag 7 #define MyNodeInfo_error_address_tag 8 @@ -557,7 +555,6 @@ X(a, STATIC, SINGULAR, FLOAT, snr, 7) X(a, STATIC, SINGULAR, UINT32, my_node_num, 1) \ X(a, STATIC, SINGULAR, BOOL, has_gps, 2) \ X(a, STATIC, SINGULAR, STRING, region, 4) \ -X(a, STATIC, SINGULAR, STRING, hw_model_deprecated, 5) \ X(a, STATIC, SINGULAR, STRING, firmware_version, 6) \ X(a, STATIC, SINGULAR, UENUM, error_code, 7) \ X(a, STATIC, SINGULAR, UINT32, error_address, 8) \ @@ -649,9 +646,9 @@ extern const pb_msgdesc_t ToRadio_PeerInfo_msg; #define Data_size 267 #define MeshPacket_size 318 #define NodeInfo_size 271 -#define MyNodeInfo_size 451 +#define MyNodeInfo_size 434 #define LogRecord_size 81 -#define FromRadio_size 460 +#define FromRadio_size 443 #define ToRadio_size 321 #define ToRadio_PeerInfo_size 8 From 57bbd912b15552e851b42fb0fefbb3c9872bc107 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Tue, 15 Feb 2022 07:36:28 -0800 Subject: [PATCH 16/18] Fix typo in default channel (Thanks Andre!) --- src/mesh/Channels.cpp | 2 +- src/mesh/RadioInterface.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mesh/Channels.cpp b/src/mesh/Channels.cpp index 116462e3a..2c6c6900d 100644 --- a/src/mesh/Channels.cpp +++ b/src/mesh/Channels.cpp @@ -84,7 +84,7 @@ void Channels::initDefaultChannel(ChannelIndex chIndex) Channel &ch = getByIndex(chIndex); ChannelSettings &channelSettings = ch.settings; - channelSettings.modem_config = ChannelSettings_ModemConfig_LongSlow; // Default to Long Range & Fast + channelSettings.modem_config = ChannelSettings_ModemConfig_LongFast; // Default to Long Range & Fast channelSettings.tx_power = 0; // default uint8_t defaultpskIndex = 1; diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index ff13676dd..e7b3ced75 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -32,6 +32,8 @@ const RegionInfo regions[] = { https://www.thethingsnetwork.org/docs/lorawan/duty-cycle/ https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/ https://www.legislation.gov.uk/uksi/1999/930/schedule/6/part/III/made/data.xht?view=snippet&wrap=true + + audio_permitted = false per regulation */ RDEF(EU868, 869.4f, 869.65f, 10, 0, 16, false, false), From 0c946609d5481bd3dcd63a9d259f15cf6e4d7a89 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Wed, 16 Feb 2022 11:39:29 +1100 Subject: [PATCH 17/18] Remove old CI script --- .github/actions/initbuild/action.yml | 39 ---------------------------- 1 file changed, 39 deletions(-) delete mode 100644 .github/actions/initbuild/action.yml diff --git a/.github/actions/initbuild/action.yml b/.github/actions/initbuild/action.yml deleted file mode 100644 index b852d0a6c..000000000 --- a/.github/actions/initbuild/action.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: 'Common init' - -# WARNING due to https://github.com/actions/runner/issues/646 -# this code can't work - must copy and paste into workflows for now because 'uses' is not supported -runs: - using: "composite" - steps: - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: 3.x - - - name: Cache python libs - uses: actions/cache@v1 - id: cache-pip # needed in if test - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip - - - name: Upgrade python tools - # We actually want to run this every time - # if: steps.cache-pip.outputs.cache-hit != 'true' - run: | - python -m pip install --upgrade pip - pip install -U platformio meshtastic adafruit-nrfutil - - # Don't cache for now because I want to be lazy with portuino updates githashes - # - name: Cache platformio - # uses: actions/cache@v1 - # id: cache-platformio # needed in if test - # with: - # path: ~/.platformio - # key: ${{ runner.os }}-platformio - - - name: Upgrade platformio - run: | - pio upgrade - - From 3a621ef26240d2ea1c536c320078e79e56735b76 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Tue, 15 Feb 2022 18:48:54 -0800 Subject: [PATCH 18/18] Fix bug in frequency formulas --- src/mesh/RadioInterface.cpp | 14 +++++++------- version.properties | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index e7b3ced75..6efba50f8 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -334,12 +334,12 @@ void RadioInterface::applyModemConfig() cr = 8; sf = 10; break; - case ChannelSettings_ModemConfig_LongSlow: + case ChannelSettings_ModemConfig_LongFast: bw = 250; cr = 8; sf = 11; break; - case ChannelSettings_ModemConfig_LongFast: + case ChannelSettings_ModemConfig_LongSlow: bw = 125; cr = 8; sf = 12; @@ -364,23 +364,23 @@ void RadioInterface::applyModemConfig() } power = channelSettings.tx_power; - shortPacketMsec = getPacketTime(sizeof(PacketHeader)); - assert(myRegion); // Should have been found in init // Calculate the number of channels - uint32_t numChannels = floor((myRegion->freqEnd - myRegion->freqStart)/(myRegion->spacing + bw)); + uint32_t numChannels = floor((myRegion->freqEnd - myRegion->freqStart) / (myRegion->spacing + (bw / 1000))); // If user has manually specified a channel num, then use that, otherwise generate one by hashing the name const char *channelName = channels.getName(channels.getPrimaryIndex()); int channel_num = channelSettings.channel_num ? channelSettings.channel_num - 1 : hash(channelName) % numChannels; - float freq = myRegion->freqStart+(((myRegion->freqEnd - myRegion->freqStart/numChannels)/2)*1); + float freq = myRegion->freqStart + ((((myRegion->freqEnd - myRegion->freqStart) / numChannels) / 2) * channel_num); + saveChannelNum(channel_num); saveFreq(freq); DEBUG_MSG("Set radio: name=%s, config=%u, ch=%d, power=%d\n", channelName, channelSettings.modem_config, channel_num, power); - DEBUG_MSG("Radio myRegion->freqStart / myRegion->freqEnd: %f / %f\n", myRegion->freqStart, myRegion->freqEnd); + DEBUG_MSG("Radio myRegion->freqStart / myRegion->freqEnd: %f -> %f (%f mhz)\n", myRegion->freqStart, myRegion->freqEnd, + myRegion->freqEnd - myRegion->freqStart); DEBUG_MSG("Radio myRegion->numChannels: %d\n", numChannels); DEBUG_MSG("Radio channel_num: %d\n", channel_num); DEBUG_MSG("Radio frequency: %f\n", getFreq()); diff --git a/version.properties b/version.properties index 0e3764e0e..2657b0278 100644 --- a/version.properties +++ b/version.properties @@ -1,4 +1,4 @@ [VERSION] -major = 1 -minor = 2 -build = 55 +major = 1 +minor = 3 +build = 0