[Si443x] Added -1 as alias for lowest supported frequency deviation

This commit is contained in:
jgromes 2021-02-13 17:42:13 +01:00
parent f4b2b6d257
commit 4c96b7b7ae

View file

@ -334,28 +334,23 @@ int16_t Si443x::setBitRate(float br) {
} }
int16_t Si443x::setFrequencyDeviation(float freqDev) { int16_t Si443x::setFrequencyDeviation(float freqDev) {
// set frequency deviation to lowest available setting (required for RTTY) // set frequency deviation to lowest available setting (required for digimodes)
if(freqDev == 0.0) { float newFreqDev = freqDev;
int16_t state = _mod->SPIsetRegValue(SI443X_REG_MODULATION_MODE_CONTROL_2, 0x00, 2, 2); if(freqDev < 0.0) {
_mod->SPIwriteRegister(SI443X_REG_FREQUENCY_DEVIATION, 0x00); newFreqDev = 0.625;
if(state == ERR_NONE) {
_freqDev = freqDev;
}
return(state);
} }
RADIOLIB_CHECK_RANGE(freqDev, 0.625, 320.0, ERR_INVALID_FREQUENCY_DEVIATION); RADIOLIB_CHECK_RANGE(newFreqDev, 0.625, 320.0, ERR_INVALID_FREQUENCY_DEVIATION);
// calculate raw frequency deviation value // calculate raw frequency deviation value
uint16_t fdev = (uint16_t)(freqDev / 0.625); uint16_t fdev = (uint16_t)(newFreqDev / 0.625);
// update registers // update registers
int16_t state = _mod->SPIsetRegValue(SI443X_REG_MODULATION_MODE_CONTROL_2, (uint8_t)((fdev & 0x0100) >> 6), 2, 2); int16_t state = _mod->SPIsetRegValue(SI443X_REG_MODULATION_MODE_CONTROL_2, (uint8_t)((fdev & 0x0100) >> 6), 2, 2);
_mod->SPIwriteRegister(SI443X_REG_FREQUENCY_DEVIATION, (uint8_t)(fdev & 0xFF)); _mod->SPIwriteRegister(SI443X_REG_FREQUENCY_DEVIATION, (uint8_t)(fdev & 0xFF));
if(state == ERR_NONE) { if(state == ERR_NONE) {
_freqDev = freqDev; _freqDev = newFreqDev;
} }
return(state); return(state);