diff --git a/keywords.txt b/keywords.txt index f4b7e4e..6b65872 100644 --- a/keywords.txt +++ b/keywords.txt @@ -51,6 +51,8 @@ enableCrc KEYWORD2 disableCrc KEYWORD2 enableInvertIQ KEYWORD2 disableInvertIQ KEYWORD2 +enableLowDataRateOptimize KEYWORD2 +disableLowDataRateOptimize KEYWORD2 setGain KEYWORD2 random KEYWORD2 diff --git a/src/LoRa.cpp b/src/LoRa.cpp index 103ddbb..a16e55e 100644 --- a/src/LoRa.cpp +++ b/src/LoRa.cpp @@ -586,6 +586,13 @@ void LoRaClass::setLdoFlag() writeRegister(REG_MODEM_CONFIG_3, config3); } +void LoRaClass::setLdoFlagForced(const boolean ldoOn) +{ + uint8_t config3 = readRegister(REG_MODEM_CONFIG_3); + bitWrite(config3, 3, ldoOn); + writeRegister(REG_MODEM_CONFIG_3, config3); +} + void LoRaClass::setCodingRate4(int denominator) { if (denominator < 5) { @@ -632,6 +639,16 @@ void LoRaClass::disableInvertIQ() writeRegister(REG_INVERTIQ2, 0x1d); } +void LoRaClass::enableLowDataRateOptimize() +{ + setLdoFlagForced(true); +} + +void LoRaClass::disableLowDataRateOptimize() +{ + setLdoFlagForced(false); +} + void LoRaClass::setOCP(uint8_t mA) { uint8_t ocpTrim = 27; diff --git a/src/LoRa.h b/src/LoRa.h index bad87da..a7002b4 100644 --- a/src/LoRa.h +++ b/src/LoRa.h @@ -79,6 +79,8 @@ public: void disableCrc(); void enableInvertIQ(); void disableInvertIQ(); + void enableLowDataRateOptimize(); + void disableLowDataRateOptimize(); void setOCP(uint8_t mA); // Over Current Protection control @@ -107,6 +109,7 @@ private: long getSignalBandwidth(); void setLdoFlag(); + void setLdoFlagForced(const boolean); uint8_t readRegister(uint8_t address); void writeRegister(uint8_t address, uint8_t value);