[SX126x] Using range check macro

This commit is contained in:
jgromes 2020-03-30 19:31:02 +02:00
parent 08e4c3b13b
commit 7f083bb083
4 changed files with 17 additions and 45 deletions

View file

@ -5,10 +5,7 @@ SX1261::SX1261(Module* mod): SX1262(mod) {
}
int16_t SX1261::setOutputPower(int8_t power) {
// check allowed power range
if (!((power >= -17) && (power <= 14))) {
return(ERR_INVALID_OUTPUT_POWER);
}
RADIOLIB_CHECK_RANGE(power, -17, 14, ERR_INVALID_OUTPUT_POWER);
// get current OCP configuration
uint8_t ocp = 0;

View file

@ -39,10 +39,7 @@ int16_t SX1262::beginFSK(float freq, float br, float freqDev, float rxBw, int8_t
}
int16_t SX1262::setFrequency(float freq, bool calibrate) {
// check frequency range
if((freq < 150.0) || (freq > 960.0)) {
return(ERR_INVALID_FREQUENCY);
}
RADIOLIB_CHECK_RANGE(freq, 150.0, 960.0, ERR_INVALID_FREQUENCY);
int16_t state = ERR_NONE;
@ -74,10 +71,7 @@ int16_t SX1262::setFrequency(float freq, bool calibrate) {
}
int16_t SX1262::setOutputPower(int8_t power) {
// check allowed power range
if (!((power >= -17) && (power <= 22))) {
return(ERR_INVALID_OUTPUT_POWER);
}
RADIOLIB_CHECK_RANGE(power, -17, 22, ERR_INVALID_OUTPUT_POWER);
// get current OCP configuration
uint8_t ocp = 0;

View file

@ -38,10 +38,7 @@ int16_t SX1268::beginFSK(float freq, float br, float freqDev, float rxBw, int8_t
}
int16_t SX1268::setFrequency(float freq, bool calibrate) {
// check frequency range
if((freq < 410.0) || (freq > 810.0)) {
return(ERR_INVALID_FREQUENCY);
}
RADIOLIB_CHECK_RANGE(freq, 410.0, 810.0, ERR_INVALID_FREQUENCY);
int16_t state = ERR_NONE;
@ -67,10 +64,7 @@ int16_t SX1268::setFrequency(float freq, bool calibrate) {
}
int16_t SX1268::setOutputPower(int8_t power) {
// check allowed power range
if(!((power >= -9) && (power <= 22))) {
return(ERR_INVALID_OUTPUT_POWER);
}
RADIOLIB_CHECK_RANGE(power, -9, 22, ERR_INVALID_OUTPUT_POWER);
// get current OCP configuration
uint8_t ocp = 0;

View file

@ -140,7 +140,7 @@ int16_t SX126x::beginFSK(float br, float freqDev, float rxBw, float currentLimit
state = setDio2AsRfSwitch(false);
RADIOLIB_ASSERT(state);
if (useRegulatorLDO) {
if(useRegulatorLDO) {
state = setRegulatorLDO();
} else {
state = setRegulatorDCDC();
@ -580,12 +580,10 @@ int16_t SX126x::setBandwidth(float bw) {
return(ERR_WRONG_MODEM);
}
// ensure byte conversion doesn't overflow:
if(!((bw > 0) && (bw < 510))) {
return(ERR_INVALID_BANDWIDTH);
}
// ensure byte conversion doesn't overflow
RADIOLIB_CHECK_RANGE(bw, 0.0, 510.0, ERR_INVALID_BANDWIDTH);
// check alowed bandwidth values
// check allowed bandwidth values
uint8_t bw_div2 = bw / 2 + 0.01;
switch (bw_div2) {
case 3: // 7.8:
@ -633,10 +631,7 @@ int16_t SX126x::setSpreadingFactor(uint8_t sf) {
return(ERR_WRONG_MODEM);
}
// check allowed spreading factor values
if(!((sf >= 5) && (sf <= 12))) {
return(ERR_INVALID_SPREADING_FACTOR);
}
RADIOLIB_CHECK_RANGE(sf, 5, 12, ERR_INVALID_SPREADING_FACTOR);
// update modulation parameters
_sf = sf;
@ -649,10 +644,7 @@ int16_t SX126x::setCodingRate(uint8_t cr) {
return(ERR_WRONG_MODEM);
}
// check allowed spreading factor values
if(!((cr >= 5) && (cr <= 8))) {
return(ERR_INVALID_CODING_RATE);
}
RADIOLIB_CHECK_RANGE(cr, 5, 8, ERR_INVALID_CODING_RATE);
// update modulation parameters
_cr = cr - 4;
@ -711,10 +703,7 @@ int16_t SX126x::setFrequencyDeviation(float freqDev) {
return(ERR_WRONG_MODEM);
}
// check allowed frequency deviation values
if(!(freqDev <= 200.0)) {
return(ERR_INVALID_FREQUENCY_DEVIATION);
}
RADIOLIB_CHECK_RANGE(freqDev, 0.0, 200.0, ERR_INVALID_FREQUENCY_DEVIATION);
// calculate raw frequency deviation value
uint32_t freqDevRaw = (uint32_t)(((freqDev * 1000.0) * (float)((uint32_t)(1) << 25)) / (SX126X_CRYSTAL_FREQ * 1000000.0));
@ -735,10 +724,7 @@ int16_t SX126x::setBitRate(float br) {
return(ERR_WRONG_MODEM);
}
// check allowed bit rate values
if(!((br >= 0.6) && (br <= 300.0))) {
return(ERR_INVALID_BIT_RATE);
}
RADIOLIB_CHECK_RANGE(br, 0.6, 300.0, ERR_INVALID_BIT_RATE);
// calculate raw bit rate value
uint32_t brRaw = (uint32_t)((SX126X_CRYSTAL_FREQ * 1000000.0 * 32.0) / (br * 1000.0));
@ -1002,12 +988,13 @@ int16_t SX126x::setWhitening(bool enabled, uint16_t initial) {
}
int16_t state = ERR_NONE;
if(enabled != true) {
if(!enabled) {
// disable whitening
_whitening = SX126X_GFSK_WHITENING_OFF;
state = setPacketParamsFSK(_preambleLengthFSK, _crcTypeFSK, _syncWordLength, _addrComp, _whitening, _packetType);
RADIOLIB_ASSERT(state);
} else {
// enable whitening
_whitening = SX126X_GFSK_WHITENING_ON;