From 31fc8fafecb66b41004107387897e878da391455 Mon Sep 17 00:00:00 2001 From: geeksville Date: Tue, 15 Sep 2020 17:55:33 -0700 Subject: [PATCH] make default power level radio chipset specific --- src/mesh/RF95Interface.cpp | 6 ++++++ src/mesh/RadioInterface.cpp | 4 ---- src/mesh/SX1262Interface.cpp | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/mesh/RF95Interface.cpp b/src/mesh/RF95Interface.cpp index 194765821..3e19404bf 100644 --- a/src/mesh/RF95Interface.cpp +++ b/src/mesh/RF95Interface.cpp @@ -6,6 +6,8 @@ #define MAX_POWER 17 // if we use 20 we are limited to 1% duty cycle or hw might overheat. For continuous operation set a limit of 17 +#define POWER_DEFAULT 17 // How much power to use if the user hasn't set a power level + RF95Interface::RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, SPIClass &spi) : RadioLibInterface(cs, irq, rst, 0, spi) { @@ -32,6 +34,10 @@ bool RF95Interface::init() RadioLibInterface::init(); applyModemConfig(); + + if (power == 0) + power = POWER_DEFAULT; + if (power > MAX_POWER) // This chip has lower power limits than some power = MAX_POWER; diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp index 45a9fed75..0cdd4da68 100644 --- a/src/mesh/RadioInterface.cpp +++ b/src/mesh/RadioInterface.cpp @@ -118,8 +118,6 @@ unsigned long hash(char *str) return hash; } -#define POWER_DEFAULT 17 - /** * Pull our channel settings etc... from protobufs to the dumb interface settings */ @@ -129,8 +127,6 @@ void RadioInterface::applyModemConfig() // No Sync Words in LORA mode power = channelSettings.tx_power; - if (power == 0) - power = POWER_DEFAULT; // If user has manually specified a channel num, then use that, otherwise generate one by hashing the name int channel_num = (channelSettings.channel_num ? channelSettings.channel_num - 1 : hash(channelSettings.name)) % NUM_CHANNELS; diff --git a/src/mesh/SX1262Interface.cpp b/src/mesh/SX1262Interface.cpp index f581cdb1c..75a84034d 100644 --- a/src/mesh/SX1262Interface.cpp +++ b/src/mesh/SX1262Interface.cpp @@ -37,6 +37,10 @@ bool SX1262Interface::init() bool useRegulatorLDO = false; // Seems to depend on the connection to pin 9/DCC_SW - if an inductor DCDC? applyModemConfig(); + + if (power == 0) + power = 22; + if (power > 22) // This chip has lower power limits than some power = 22; int res = lora.begin(freq, bw, sf, cr, syncWord, power, currentLimit, preambleLength, tcxoVoltage, useRegulatorLDO);