diff --git a/src/modules/SX126x/SX1261.cpp b/src/modules/SX126x/SX1261.cpp index 1b08605f..dcf34fac 100644 --- a/src/modules/SX126x/SX1261.cpp +++ b/src/modules/SX126x/SX1261.cpp @@ -1,7 +1,6 @@ #include "SX1261.h" -SX1261::SX1261(Module* mod) - : SX1262(mod) { +SX1261::SX1261(Module* mod): SX1262(mod) { } @@ -16,7 +15,8 @@ int16_t SX1261::setOutputPower(int8_t power) { int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); RADIOLIB_ASSERT(state); - state = setOptimalLowPowerPaConfig(&power); + // set PA config + state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1261, 0x00); RADIOLIB_ASSERT(state); // set output power @@ -25,20 +25,5 @@ int16_t SX1261::setOutputPower(int8_t power) { RADIOLIB_ASSERT(state); // restore OCP configuration - return writeRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); -} - -int16_t SX1261::setOptimalLowPowerPaConfig(int8_t* inOutPower) -{ - int16_t state; - if (*inOutPower > 10) { - state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1261, 0x00); - } - else { - state = SX126x::setPaConfig(0x01, SX126X_PA_CONFIG_SX1261, 0x00); - // changing the PaConfig means output power is now scaled so we get 3 dB less than requested. - // see datasheet table 13-21 and comments in setOptimalHiPowerPaConfig. - *inOutPower -= 3; - } - return state; + return(writeRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1)); } diff --git a/src/modules/SX126x/SX1261.h b/src/modules/SX126x/SX1261.h index 3331c1bc..2dca7ed1 100644 --- a/src/modules/SX126x/SX1261.h +++ b/src/modules/SX126x/SX1261.h @@ -35,7 +35,7 @@ class SX1261 : public SX1262 { #ifndef RADIOLIB_GODMODE private: #endif - int16_t setOptimalLowPowerPaConfig(int8_t* inOutPower); + }; diff --git a/src/modules/SX126x/SX1262.cpp b/src/modules/SX126x/SX1262.cpp index 06b2c12b..1ce7df83 100644 --- a/src/modules/SX126x/SX1262.cpp +++ b/src/modules/SX126x/SX1262.cpp @@ -84,6 +84,10 @@ int16_t SX1262::setOutputPower(int8_t power) { int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); RADIOLIB_ASSERT(state); + // set PA config + state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1262); + RADIOLIB_ASSERT(state); + // set output power // TODO power ramp time configuration state = SX126x::setTxParams(power); diff --git a/src/modules/SX126x/SX1262.h b/src/modules/SX126x/SX1262.h index 3f3b9cc5..d4527227 100644 --- a/src/modules/SX126x/SX1262.h +++ b/src/modules/SX126x/SX1262.h @@ -5,6 +5,9 @@ #include "../../Module.h" #include "SX126x.h" +//SX126X_CMD_SET_PA_CONFIG +#define SX126X_PA_CONFIG_SX1262 0x00 + /*! \class SX1262 diff --git a/src/modules/SX126x/SX1268.cpp b/src/modules/SX126x/SX1268.cpp index fa449682..55f66d2c 100644 --- a/src/modules/SX126x/SX1268.cpp +++ b/src/modules/SX126x/SX1268.cpp @@ -77,6 +77,10 @@ int16_t SX1268::setOutputPower(int8_t power) { int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); RADIOLIB_ASSERT(state); + // set PA config + state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1268); + RADIOLIB_ASSERT(state); + // set output power // TODO power ramp time configuration state = SX126x::setTxParams(power);