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; return readReg(REG_PALEVEL) & 0x1F;
} }
uint8_t RFM69::getPowerLevel() { // return stored _powerLevel
uint8_t val = readReg(REG_PALEVEL); uint8_t RFM69::getPowerLevel() { return _powerLevel; }
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;
}
// Set TX Output power in dBm: // Set TX Output power in dBm:
// [-18..+13]dBm in RFM69 W/CW // [-18..+13]dBm in RFM69 W/CW
@ -1351,4 +1326,4 @@ void RFM69::listenModeSendBurst(uint8_t targetNode, const void* buffer, uint8_t
setMode(RF69_MODE_STANDBY); setMode(RF69_MODE_STANDBY);
reinitRadio(); reinitRadio();
} }
#endif #endif

View File

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