revert to working getPowerLevel()

This commit is contained in:
Felix Rusu 2025-02-12 21:20:36 -05:00
parent e038dcfaa8
commit e29316c40e
2 changed files with 5 additions and 31 deletions

View File

@ -290,33 +290,8 @@ uint8_t RFM69::getOutputPower() {
return readReg(REG_PALEVEL) & 0x1F;
}
uint8_t RFM69::getPowerLevel() {
uint8_t val = readReg(REG_PALEVEL);
uint8_t outputPower = getOutputPower();
bool pa0 = (val & 0b10000000) > 0;
bool pa1 = (val & 0b01000000) > 0;
bool pa2 = (val & 0b00100000) > 0;
if (pa0 && !pa1 && !pa2) {
// -18 to 13 dBm range
return -18 + outputPower;
}
if (!pa0 && pa1 && !pa2) {
// -2 to 13 dBm range
return -18 + outputPower;
}
if (!pa0 && pa1 && pa2 && !_isRFM69HW) {
// 2 to 17 dBm range
return -14 + outputPower;
}
if (!pa0 && pa1 && pa2 && _isRFM69HW) {
// 5 to 20 dBm range
return -11 + outputPower;
}
return 255;
}
// return stored _powerLevel
uint8_t RFM69::getPowerLevel() { return _powerLevel; }
// Set TX Output power in dBm:
// [-18..+13]dBm in RFM69 W/CW

View File

@ -232,12 +232,11 @@ class RFM69 {
//void promiscuous(bool onOff=true); // replaced with spyMode()
virtual void setHighPower(bool _isRFM69HW_HCW=true); // has to be called after initialize() for RFM69 HW/HCW
bool isHighPower();
virtual uint8_t getPowerLevel(); // get powerLevel
virtual void setPowerLevel(uint8_t level); // reduce/increase transmit power level
virtual int8_t setPowerDBm(int8_t dBm); // reduce/increase transmit power level, in dBm
double dBm_to_mW(uint8_t dBm); // convert dBm to mW
uint8_t getOutputPower();
uint8_t getPowerLevel(); // get powerLevel
void sleep();
uint8_t readTemperature(uint8_t calFactor=0); // get CMOS temperature (8bit)
void rcCalibration(); // calibrate the internal RC oscillator for use in wide temperature variations - see datasheet section [4.3.5. RC Timer Accuracy]