[RFM9x] Fixed incorrect frequency range applied in FSK mode (#407)
This commit is contained in:
parent
1d42f1a0ff
commit
92682fc5d6
2 changed files with 72 additions and 0 deletions
|
@ -40,6 +40,42 @@ int16_t RFM95::begin(float freq, float bw, uint8_t sf, uint8_t cr, uint8_t syncW
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int16_t RFM95::beginFSK(float freq, float br, float freqDev, float rxBw, int8_t power, uint16_t preambleLength, bool enableOOK) {
|
||||||
|
// execute common part
|
||||||
|
int16_t state = SX127x::beginFSK(RADIOLIB_RFM9X_CHIP_VERSION_OFFICIAL, br, freqDev, rxBw, preambleLength, enableOOK);
|
||||||
|
if(state == RADIOLIB_ERR_CHIP_NOT_FOUND) {
|
||||||
|
// SX127X_REG_VERSION might be set 0x12
|
||||||
|
state = SX127x::beginFSK(RADIOLIB_RFM9X_CHIP_VERSION_UNOFFICIAL, br, freqDev, rxBw, preambleLength, enableOOK);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
} else if(state != RADIOLIB_ERR_NONE) {
|
||||||
|
// some other error
|
||||||
|
return(state);
|
||||||
|
}
|
||||||
|
RADIOLIB_DEBUG_PRINTLN(F("M\tSX1278"));
|
||||||
|
RADIOLIB_DEBUG_PRINTLN(F("M\tRFM95"));
|
||||||
|
|
||||||
|
// configure settings not accessible by API
|
||||||
|
state = configFSK();
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
|
// configure publicly accessible settings
|
||||||
|
state = setFrequency(freq);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
|
state = setOutputPower(power);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
|
if(enableOOK) {
|
||||||
|
state = setDataShapingOOK(RADIOLIB_SHAPING_NONE);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
} else {
|
||||||
|
state = setDataShaping(RADIOLIB_SHAPING_NONE);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(state);
|
||||||
|
}
|
||||||
|
|
||||||
int16_t RFM95::setFrequency(float freq) {
|
int16_t RFM95::setFrequency(float freq) {
|
||||||
RADIOLIB_CHECK_RANGE(freq, 862.0, 1020.0, RADIOLIB_ERR_INVALID_FREQUENCY);
|
RADIOLIB_CHECK_RANGE(freq, 862.0, 1020.0, RADIOLIB_ERR_INVALID_FREQUENCY);
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,42 @@ int16_t RFM96::begin(float freq, float bw, uint8_t sf, uint8_t cr, uint8_t syncW
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int16_t RFM96::beginFSK(float freq, float br, float freqDev, float rxBw, int8_t power, uint16_t preambleLength, bool enableOOK) {
|
||||||
|
// execute common part
|
||||||
|
int16_t state = SX127x::beginFSK(RADIOLIB_RFM9X_CHIP_VERSION_OFFICIAL, br, freqDev, rxBw, preambleLength, enableOOK);
|
||||||
|
if(state == RADIOLIB_ERR_CHIP_NOT_FOUND) {
|
||||||
|
// SX127X_REG_VERSION might be set 0x12
|
||||||
|
state = SX127x::beginFSK(RADIOLIB_RFM9X_CHIP_VERSION_UNOFFICIAL, br, freqDev, rxBw, preambleLength, enableOOK);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
} else if(state != RADIOLIB_ERR_NONE) {
|
||||||
|
// some other error
|
||||||
|
return(state);
|
||||||
|
}
|
||||||
|
RADIOLIB_DEBUG_PRINTLN(F("M\tSX1278"));
|
||||||
|
RADIOLIB_DEBUG_PRINTLN(F("M\tRFM96"));
|
||||||
|
|
||||||
|
// configure settings not accessible by API
|
||||||
|
state = configFSK();
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
|
// configure publicly accessible settings
|
||||||
|
state = setFrequency(freq);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
|
state = setOutputPower(power);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
|
if(enableOOK) {
|
||||||
|
state = setDataShapingOOK(RADIOLIB_SHAPING_NONE);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
} else {
|
||||||
|
state = setDataShaping(RADIOLIB_SHAPING_NONE);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(state);
|
||||||
|
}
|
||||||
|
|
||||||
int16_t RFM96::setFrequency(float freq) {
|
int16_t RFM96::setFrequency(float freq) {
|
||||||
RADIOLIB_CHECK_RANGE(freq, 410.0, 525.0, RADIOLIB_ERR_INVALID_FREQUENCY);
|
RADIOLIB_CHECK_RANGE(freq, 410.0, 525.0, RADIOLIB_ERR_INVALID_FREQUENCY);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue